視訊講解:
您可以在B站觀看視訊講解:https://www.bilibili.com/video/av93672532/
或在本站觀看視訊講解:https://www.51azure.cloud/post/2020/3/4/azure-iot-edge41custom-vision
圖文講解:
從本文開始,我們做一個案例介紹,該案例分為3小節介紹。
前邊我們介紹過,IoT Edge的一個主要功能就是可以将雲端的能力擴充到邊緣,本次的案例涉及的内容比較多。
主要的背景是這樣的:
結合最近的社會情況,出現了很多需要檢測是否戴口罩的需求,我們之前曾經有一篇文章介紹了使用Azure Custom Vision提供的AI能力,快速開發出了一個檢測是否戴口罩的模型,并釋出成API供調用。
本案例中,我們将之前訓練好的AI模型,通過Azure IoT Edge 推送到邊緣裝置,這麼做有如下好處:
1. 未必所有的攝像頭都能直接調用API,也不能大規模替換新型攝像頭;
2. 未必所有的檢查點/場所都有良好的網絡,需要離線運作大部分功能;
3. 提供更快(時延更低)的檢測結果傳回;
4. 當我們研發出準确率更高的模型時,可以批量從雲端更新我們部署的邊緣裝置;
本案例分三節内容介紹:
- 将Custom Vision 模型導出成linux 容器;在本地build/run,完成本地測試;
- 準備Azure Container Registry, 将本地Build好的鏡像push到ACR裡;
- 使用IoT Edge将 ACR裡準備好的 鏡像部署到IoT Edge裡,在EDGE裝置上調用本地的算法;
今天主要介紹第一個步驟:
- 将Custom Vision 模型導出成linux 容器;在本地build/run,完成本地測試;
關于Custom Vision識别是否戴口罩的做法,請參照文章《AI 應用之Azure Custom Vision檢測是否戴口罩》
主要注意如下兩個步驟:
建立項目時,Domains 選擇General,這個類型才能導出為容器。
訓練完成後導出成容器,而不是釋出成API:
将導出的壓縮包下載下傳到本地并解壓,得到如下檔案:
在指令提示符裡運作如下指令:
注意,最後的空格+.
docker build -t <your image name> .
編譯過程視網絡情況可能會出現需要重試的情況。
編譯成功,可以通過 docker images 檢視本地的鏡像檔案。
執行如下指令,在本地運作容器:
其中第一個80是本地通路端口,如果您安裝了IIS等占用80端口的程式,則可以更換為其他端口,例如81或82;
docker run -p 127.0.0.1:80:80 -d <your image name>
接下來在浏覽器中通路,驗證容器正常運作:
使用方式如下:
我們在Postman中測試如下:
點選Select Files 上傳一張圖檔,結果如下圖:
案例中Custom Vision 中使用的示例圖檔,來着于網際網路:
https://videos.51azure.cloud/files/Custom-Vision.zip
注意,如果您沒有Global賬号可以申請試用賬号後開通Custom Vision 已完成本項目或在如下連接配接下載下傳作者訓練好的 容器:
https://videos.51azure.cloud/files/SeanYuTestCustomVision.DockerFile.Linux.zip