Vision AI Dev Kit Workshop是DevDaysAsia 2019 第一天的其中一個Lab。
其中官方的介紹如下:
當初在決定要不要參加這個lab的時候有點猶豫 - 因爲看到裡面提到Custom Vision - 而Custom Vision還算有點熟悉所以有點猶豫。
不過最後還是因爲好奇Vision AI Dev Kit是什麽,因此參加了。
最後結果還是蠻好玩的,這篇給大家參考一下都做了什麽。
什麽是Vision AI Dev Kit
既然最初參加的原因是因爲想要瞭解Vision AI Dev Kit,因此首先要來看看這個是一個什麽東西。
Vision AI Dev Kit是微軟和Qualcomm合作推出的一個IoT Device。
這個Device透過硬體加速的方式,讓執行AI模型變得更加容易,最後這個設備變成一個IoT的Device讓有些運算可以直接在邊緣計算(Edge Computing)處理。
微軟在這邊的角色是:
- 模型建立:可以用微軟的Custom Vision或者Azure Machine Learning的服務來建立
- Device管理:透過搭配Azure IoT Hub自動部署模型上去
整個Device的規格如下:
更多詳細訊息可以參考:
- Vision AI Dev Kit的首頁介紹
- 官方的使用介紹 - 接下來的lab動作和官方介紹概念是一樣
大概瞭解了Vision AI Dev Kit之後,接下來就是實際的lab了。
Vision AI Dev Kit Workshop
首先,這一場lab因爲機器設備的關係,所以實際上是2個人共用一個裝置。
和我一起的大哥人很好,基本上由我操作。
總共有3個東西:
- 筆電 - 用來操作lab
- Vision AI Dev Kit - 我們IoT設備
- 一臺銀幕 - 方便看到Vision AI Dev Kit的内容
要做這個lab除了需要Vision AI Dev Kit這個設備之外,還需要:
- 有Azure訂閲 - 會需要用來建立Custom Vision的Key以及Azure IoT Hub
- Custom Vision - 如果有使用過操作起來會很快
整個的流程架構如圖:
這個Lab總共有4個步驟,詳細可以看:https://github.com/devinwong/vision-ai-dev-kit-hol:
- 操作1:瞭解如何設定Vision AI Dev Kit
- 操作2:用Custom Vision訓練一個Classification模型
- 操作3:透過USB直接連線到Vision AI Dev Kit - 發現只是一個Linux裝置
- 操作4:用Custom Vision訓練一個Object Detection模型
這個Lab 4個操作都做完了 - 也有機會協助了旁邊幾個同學,來看看整個操作時如何。
操作1:瞭解如何設定Vision AI Dev Kit
- 筆電連上Vision AI Dev Kit
首先要把Device透過USB和筆電連上,這個目的是讓Device供電啟動成功。
在Device的底部可以看到Device的名稱,這個時候筆電開啓WiFI搜索那個Device名稱的SSID然後連線上去即可。可能的SSID會像是:
MSIOT_BD097D
連上Device的WiFI之後,網頁應該會自動開啓http://setupaicamera.ms,準備設定裝置:
- 把Vision AI Dev Kit連接上Azure IoT Hub
按下下一步,會需要設定這一個Device要連到那個WiFi以及一些SSH訊息。這邊的WiFi記得要是可以連外網,因爲要和Azure IoT Hub接上。
按下網頁的下一步會看到這個Device的ID,把這個ID記錄下來,然後按下next
會自動開啓瀏覽器,然後用有Azure Subscription的帳號登入之後,就可以輸入這個Device的Id
如果微軟的登入裝置畫面沒有出現,可以透過輸入網址:https://microsoft.com/devicelogin等到驗證成功了之後,接下來就是要設定這個Device要和哪一個Azure IoT Hub整合在一起。
首先要選擇用哪一個Tenant,然後選擇要用哪一個Azure IoT Hub。
理論上可以直接透過設定畫面把Azure IoT Hub建立出來,但是在實際操作的時候,不成功。
所以是先去了Azure Portal,然後建立一個Azure IoT Hub (傳送門
如果接上了,就需要設定這個Device名稱是什麽,我這邊叫做:
iot1
再來就是要等 - 這邊取決於網路速度,因爲他會下載Docker Image,主要目的就是和Azure IoT Hub接上
如果好了,銀幕會直接出現畫面 - 這個就是Device的camera看到的東西
同時,從設定的網頁會看到一段
rtsp
網址,這個串流位置也可以透過用一些工具例如PotPlayer直接播放看到camera看到的内容。
操作2:用Custom Vision訓練一個Classification模型
連上設備之後,接下來就是要訓練模型。
- 用Custom Vision訓練Classification Model - 識別是否有帶上工安帽
接下來用Custom Vision訓練出Classification Model。
在建立專案的時候,記得匯出要選擇:
Vision AI Dev Kit
詳細怎麽訓練,這邊就不介紹了,有興趣看我另外一篇: Custom Vision - 自己的Model自己Train 建立圖片的分類模型模型訓練好了之後,就可以把模型匯出成爲
Vision AI Dev Kit
匯出之後得到的是一個zip檔案,把這個zip檔案解壓縮出來會得到3個檔案:
- labels.txt
- model.dlc
- va-snpe-engine-library_config.json
- 把訓練出來的模型上傳到Azure Storage - 或者任意可以有public url的地方
訓練出來解壓縮出來的3個檔案需要上傳到一個有publi連線的地方。
可以用Azure Storage或者其他地方 - 最後的結果是3個public url分別代表可以取得這三個檔案的位置。
- 把訓練模型發佈到Device裡面
由於Device已經在Azure IoT Hub接上,因此可以透過Azure IoT Hub把模型publish上去。
首先,在Azure IoT Hub上面找到Iot Edge這個選項,然後找到
iot1
這個device然後點進去。再來找到Module:
AIVisionDevKitGetStartedModule
如果有玩過Azure IoT Edge就知道,另外兩個Module是Azure IoT Hub在管理用。透過設定
Module Identity Twin
的方式,把模型換掉:把
ModelUrl
、LabelUrl
以及ConfigUrl
改成上傳的那幾個url即可記得修改好了之後要按下save。
- 測試模型
稍等一段時間之後,看到畫面出現
NoHardHat
- Classification訓練的時候,沒有工安帽子的Tag名稱把工安帽子戴上之後,文字變成了
HardHat
- Classification訓練的時候,有工安帽子的Tag名稱。
操作3:透過USB直接連線到Vision AI Dev Kit - 發現只是一個Linux裝置
接下來,透過usb連線到device那臺機器:
- adb devices
- 這個指令可以列出目前那些設備有連線:
- adb shell
- 透過這個指令就可以連到Device裡面,接下來就可以透過下一些linux指令來控制這個device。
- 在device執行操作
-
既然進入了device,就可以下一些指令來看一下log,例如:
docker logs -f AIVisionDevKitGetStartedModule
,就能夠看到辨別的情況:
操作4:用Custom Vision訓練一個Object Detection模型
這邊的訓練和操作2的Classification模型是一樣概念,步驟就是:
- 在Custom Vision建立一個Object Detection的專案
- 透過訓練,把模型匯出
- 把匯出的模型解壓縮之後,上傳到可以public url連到的地方
- 在Azure IoT Hub那邊,把module:
AIVisionDevKitGetStartedModule
裡面的3個模型網址設定為訓練出來的地方 - 測試
這個時候做測試,可以發現識別出了工安帽子的地方:
結語
Vision AI Dev Kit其實就是一個IoT的Device。
與微軟有深度合作讓接上Azure IoT Hub做管理變得容易,然後也可以用Custom Vision ai做簡單的訓練,如果要自己控制就要用Azure Machine Lerning的服務。
以前我也有玩過Azure IoT Hub,一般的Device都是用VM來模擬,有點假。所以透過Vision AI Dev Kit感覺更有真實感覺。
不過Vision AI Dev Kit也有缺點,他的識別區域不是整個看到的畫面,大概中間70%左右才有辦法識別,兩邊就沒有辦法 - 不知道算不算缺點。
在來Vision AI Dev Kit感覺應該也不便宜 - 這個lab倒是沒有提到,所以估計自己買來玩的幾率應該不高。
要做完完整的Lab,需要對Azure幾個服務都熟悉。這次有機會都做完,因此有幸幫助了一些學院,順便置入一下我的部落格XD。
也因爲這樣,在第二天有學員來攤位找我聊技術(其實就是我這個偽資料科學家嘴炮微軟在建立模型這塊提供什麽服務XD)。
因此,感覺這次Lab還蠻不錯。
以上,就是這一次的lab - 希望大家都有一點感覺。