上一篇([30]Confusion Matrix - 用來衡量Classifier Model的方式 Precision和Recall)介紹了Confusion Matrix并且如何使用Precision和Recall這兩個指標來衡量一個Classifier Model的好壞。
這一篇又回到了Custom Vision。在Custom Vision Train好的Model是否能夠拿來離線和或者別的應用例如app裡面使用呢?
Custom Vision有提供匯出Model的功能,這篇將對這個部分介紹。
如何匯出Model?
首先,進入到customvision.ai要匯出的Project裡面,然後切換到Performance這個tab。
可以看到有一個Export
的按鈕:
不過可以看到目前按鈕是灰色的無法按下,滑鼠移動過去有説明原因。
還記得在一開始建立Project的時候,有詢問一個問題,也就是目前這個Training要使用那個Domain。在選項裏面有幾個是由括弧Compact。只有屬於Compact的才能夠被匯出。
還記得之前建立的時候,選擇的是General,也因爲這樣所以無法匯出。
因此要調整一下,透過右上角的齒輪icon進入設定畫面,然後調整Domains為General (compact):
調整好了之後,需要重新train一次,因此按下Train
。
這個時候在回到Performance
下面,多出了一個Iteration 3,這個版本可以看到Domain換成了General (compact)并且Export
可以按了:
匯出格式的選擇
點下Export
會一個畫面pop up出來,裡面有不同的格式可以選擇,總共有:
- coreML:iOS 上面可以用的Model
- TensorFlow: android 上面可以使用的Model
- ONNX:微軟和Facebook想要推廣的一種開放的格式 - 詳細下篇介紹
- Docker File:這個可以搭配 Azure IoT Edge,Azure Function和Azure ML使用
依照不同的使用目的,選擇匯出不同的格式。
ONNX這個是微軟和Facebook在推動的一種格式,下一篇介紹。
這邊介紹Docker File版本。
使用Docker File版本
Docker File版本從本質上面來說不是一種格式,因爲這個Docker File的裡面其實跑的是TensorFlow的Model。
不過Docker File的好處是要在Local跑很方便并且可以很容易整合到Azure IoT Edge(這個很有意思,未來有機會在開另外一個系列介紹)和Azure ML裡面。
這邊分兩個步奏來做:
- 建立Docker Image
- 執行測試
建立Docker Image
要使用很容易,點下Docker file版本,可以選擇要用Windows還是Linux的Image,選擇好了之後第一次點Export
會有個進度條在跑,跑完了要再點一次Export
才會能夠下載一個zip檔案:
這邊我將使用Linux的Image版本,把下載下來的zip解壓縮出來之後長的是這樣:
DockerFile
,預設第一行是FROM python
,改成FROM python:3.6
,要不然Image會build不起來。
開啓powershell,然後移動到那個資料夾下面然後輸入指令:docker build -t customvision-hotelbot .
稍等一會安裝好了之後,在輸入指令:docker image ls,會看到剛剛建立出來的image:
執行測試
接下來就是把這個image run起來,使用指令:docker run -p 127.0.0.1:80:80 -d --rm customvision-hotelbot
這時候到瀏覽器輸入localhost
,會看到:CustomVision.ai model host harness
這個時候可以使用Postman:
- 選擇
POST
,然後網址輸入localhost/url
- 切換到
Body
- 選擇
raw
,然後内容格式是application/json
- 輸入内容:
{"url":"https://tse3.mm.bing.net/th?id=OIP.HQGKG0hVIp6A9g9XK16ldAHaJy&pid=Api"}
- 這邊格式和Computer Vision的OCR一樣,可以自己換圖片網址 - 送出之後,可以檢查返回結果,可以看到識別出是sprite = 判斷正確
ReadMe.txt
這個檔案。
結語
這一篇介紹了如何把Custom Vision Train好的Model匯出來,然後使用Docker File版本建立出一個Tensorflow的api服務可以離線使用。
匯出這個功能非常的方便,因爲就算不懂程式或者不懂任何Machine Learning的知識,但是可以透過Custom Vision直覺的UI操作方式Train好一個Classifier Model然後用匯出 的方式讓不同的程序可以使用這個Model。
在選擇匯出的時候有出現一個ONNX的格式,這個格式有點特別,因爲是微軟和Facebook聯合在推動的一種Model的Open格式。
因此,下一篇([32]Cognitive Service語音服務相關介紹 - ONNX在另外一篇介紹)將對這個ONNX做一些介紹,并且看看如何用Window ML來run這個Model。