視頻講解:
您可以在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