在Azure Custom Vision 教學(一)與(二)中,我們測試了 Azure Custom Vision 的 Classification,效果相當不錯,今天我們將測試 Object Detection,要在 MCU 上實現 Object Detection 會因為效能關係,可說是非常困難,目前解決方案就是將運算交給雲端服務,雲端運算可以自己架設,也可以使用各大雲端平台的服務,各有優缺點,當然如果效能足夠,費用合理的情況下,使用技術成熟的雲端服務會比較有保障(Azure、GCP、AWS 等),事不宜遲,就讓我們開始吧!╭(′▽`)╭(′▽`)╯
一、什麼是物件辨識(Object Detection)?
目前人工智慧(AI)在影像辨識領域主要的應用大致分為:「影像分類(image classification)」、「物件偵測(object detection)」、「語義分割(semantic segmentation)」。
- 影像分類:顧名思義就是將影像進行類別篩選,透過深度學習方法辨識圖片屬於哪種分類類別,其主要重點在於一張圖像只包含一種類別,即使該影像內容可能有多個目標物。
- 物件偵測:為一張影像內可以有一或多個目標物,目標物也可以是屬於不同類別,並且可得知此物件在影像中的位置。
- 語義分割:為每個像素進行分類,以達到物件可被精細切割出輪廓,但相同類形物件重疊時會被分在同一類像素而無法正確分割出物件的數量。
二、建立新專案,進入自訂視覺入口網站
小提示
強烈建議使用 Google Chrome 操作,避免發生異常。
1. 參考下圖新增物件辨識(Object Detection)專案
2. 上傳圖片到雲端平台,這次我們一樣使用三個類一個類大約 40 個標籤
- Dinosaur(恐龍) x 40
- Ghost(鬼魂)x 40
- Shark(鯊魚)x 40
3. 將每張圖片每個物件標上標籤,這裡有一點非常方便,在標標籤時系統會輔助辨識物件的邊緣範圍,自動幫你預覽物件邊框,基本上預測得算蠻準確的(也可能是因為背景比較單純)。
三、訓練模型
1. 選取「訓練」(Train)
2. 選擇「快速訓練」
3. 等待訓練完成
4. 整體訓練結果如下,鯊魚準確度偏低,只有 66%
四、實際測試
1. 使用平台中的快速測試模式
2. 使用 REST API 測試,API 會回傳信心度、Bounding Box,但缺點是 API 無法設定信心度門檻,導致回傳所有信心度 Bounding Box,希望這點之後可以改善。
五、小結
以上就是使用 Azure Custom Vision Object Detection,操作方式跟 Classification 功能差不多,標籤有輔助提示這點非常方便,但是 API 無法調整信心度閥值,這點稍微可惜了,HTTPS 發送整體的延遲大約單次 1.5 秒,還算不錯,下次我們將會使用 Object Detection 搭配 Pixel:Bit,實際在 MCU 上使用 Azure 雲端服務,我們下次見~