Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[活動]DevDays Asia 2019 之 Lab Vision AI Dev Kit Workshop

IMG_20190521_130239.jpg
Vision AI Dev Kit Workshop

Vision AI Dev Kit Workshop是DevDaysAsia 2019 第一天的其中一個Lab。

其中官方的介紹如下:

In this lab, you will create, build and deploy your Machine Learning models to our cutting-edge Vision AI Dev Kit and leverage the hardware acceleration powered by Qualcomm QCS603 chipset. You will also be guided to use Microsoft Custom Vision to train your own models.

當初在決定要不要參加這個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)處理。

微軟在這邊的角色是:

  1. 模型建立:可以用微軟的Custom Vision或者Azure Machine Learning的服務來建立
  2. Device管理:透過搭配Azure IoT Hub自動部署模型上去

整個Device的規格如下:


Technical Spec

更多詳細訊息可以參考:

  1. Vision AI Dev Kit的首頁介紹
  2. 官方的使用介紹 - 接下來的lab動作和官方介紹概念是一樣

大概瞭解了Vision AI Dev Kit之後,接下來就是實際的lab了。

以下因爲爲了避免一直打字,所以有時候稱爲Device指的就是Vision AI Dev Kit

Vision AI Dev Kit Workshop

首先,這一場lab因爲機器設備的關係,所以實際上是2個人共用一個裝置

和我一起的大哥人很好,基本上由我操作。

總共有3個東西:

  1. 筆電 - 用來操作lab
  2. Vision AI Dev Kit - 我們IoT設備
  3. 一臺銀幕 - 方便看到Vision AI Dev Kit的内容

IMG_20190521_130239.jpg
整個設備

要做這個lab除了需要Vision AI Dev Kit這個設備之外,還需要:

  1. 有Azure訂閲 - 會需要用來建立Custom Vision的Key以及Azure IoT Hub
  2. Custom Vision - 如果有使用過操作起來會很快

整個的流程架構如圖:

IMG_20190521_132324.jpg
整個的架構圖

這個Lab總共有4個步驟,詳細可以看:https://github.com/devinwong/vision-ai-dev-kit-hol

  1. 操作1:瞭解如何設定Vision AI Dev Kit
  2. 操作2:用Custom Vision訓練一個Classification模型
  3. 操作3:透過USB直接連線到Vision AI Dev Kit - 發現只是一個Linux裝置
  4. 操作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,準備設定裝置:

IMG_20190521_133832.jpg
啟動設定畫面

把Vision AI Dev Kit連接上Azure IoT Hub

按下下一步,會需要設定這一個Device要連到那個WiFi以及一些SSH訊息。這邊的WiFi記得要是可以連外網,因爲要和Azure IoT Hub接上。

按下網頁的下一步會看到這個Device的ID,把這個ID記錄下來,然後按下next

IMG_20190521_133855.jpg
取得Device Id

會自動開啓瀏覽器,然後用有Azure Subscription的帳號登入之後,就可以輸入這個Device的Id

IMG_20190521_134102.jpg
輸入Id的畫面

如果微軟的登入裝置畫面沒有出現,可以透過輸入網址:https://microsoft.com/devicelogin

等到驗證成功了之後,接下來就是要設定這個Device要和哪一個Azure IoT Hub整合在一起。

首先要選擇用哪一個Tenant,然後選擇要用哪一個Azure IoT Hub。


選擇使用那個Azure IoT Hub

理論上可以直接透過設定畫面把Azure IoT Hub建立出來,但是在實際操作的時候,不成功。

所以是先去了Azure Portal,然後建立一個Azure IoT Hub (傳送門

如果接上了,就需要設定這個Device名稱是什麽,我這邊叫做:iot1


設定IoT名稱

再來就是要等 - 這邊取決於網路速度,因爲他會下載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

chrome_2019-05-25_14-10-49.png
匯出模型

匯出之後得到的是一個zip檔案,把這個zip檔案解壓縮出來會得到3個檔案

  1. labels.txt
  2. model.dlc
  3. 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然後點進去。

chrome_2019-05-25_14-18-07.png
找到iot1這個device

再來找到Module:AIVisionDevKitGetStartedModule

chrome_2019-05-25_14-20-22.png
找到module

如果有玩過Azure IoT Edge就知道,另外兩個Module是Azure IoT Hub在管理用。

透過設定Module Identity Twin的方式,把模型換掉:

chrome_2019-05-25_14-21-19.png
Module Identity Twin

ModelUrlLabelUrl以及ConfigUrl改成上傳的那幾個url即可

chrome_2019-05-25_14-21-54.png
調整3個model的網址

記得修改好了之後要按下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,就能夠看到辨別的情況:

辨別情況的log

操作4:用Custom Vision訓練一個Object Detection模型

這邊的訓練和操作2的Classification模型是一樣概念,步驟就是:

  1. 在Custom Vision建立一個Object Detection的專案
  2. 透過訓練,把模型匯出
  3. 把匯出的模型解壓縮之後,上傳到可以public url連到的地方
  4. 在Azure IoT Hub那邊,把module:AIVisionDevKitGetStartedModule裡面的3個模型網址設定為訓練出來的地方
  5. 測試

這個時候做測試,可以發現識別出了工安帽子的地方:


識別出工安帽子的地方

結語

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 - 希望大家都有一點感覺。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus