Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩

一、Azure Custom Vision

筆者曾經介紹過 Teachable Machine 線上模型訓練工具,可以訓練影像分類的模型。但如果初學者想要訓練物件偵測模型,則筆者則推薦使用 Azure Custom Vision 了! 做為微軟 Azure 雲端服務旗下的一員,強大的功能與整合能力自然是不在話下,它允許開發人員訓練自己的機器學習模型,包括常見的影像分類 Image Classification 與物件檢測 Object Detection 等模型。而 Azure Custom Vision 的主要特點包括:可以使用自己的影像資料集訓練模型、無需機器學習專業知識也可以建立和部署自己的模型、提供免費且容易使用的網頁操作介面等。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
微軟 Custom Vision 服務網站(圖片取自 customvision.ai

二、怎麼玩?

前往 CustomVision.ai 網頁登入微軟帳號,由於 Custom Vision 隸屬於 Azure 旗下服務,第一次使用需先開通 Azure 雲端服務帳號。開通 Azure 雖需要預先登錄信用卡帳號,但若僅是使用免費額度則完全不會被扣到任何款項,若是沒有信用卡的學生族群,則可以使用其提供的學生方案。完成相應的程序後就能進入到 Custom Vision 的開發者後台,並看到專案列表。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
Custom Vision 開發者後台

點選「NEW Project」建立新專案,彈出的對話視窗需要填入專案名稱(Name)、說明(Description)與資源(Resource)等設定,若是剛開始使用 Azure 服務的開發者是沒有任何資源可以選擇,必須要建立一個新的資源。所謂資源簡單講就是要設定一個用量方案,以 Custom Vision 來說有免費方案(F0)與標準付費方案(S0)可以選擇,其主要差異在訓練模型的運算時間與呼叫 API 的次數與頻率等,詳細差異可以在官方文件中查閱。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
F0 與 S0 方案主要差異

在資源建立的設定項目類型(Kind)選擇 CustomVision.Tarining 作為訓練模型使用(註:若後續要使用雲端推論則需要另外建立一個 CustomVision.Prediction 資源方案),由於並非所有 Azure 伺服器都提供 Custom Vision 服務,夥伴們可以選擇離台灣較近東日本(Japan East) 或是東南亞(Southeast Asia)伺服器位置,費用方案可以選擇免費的 F0 進行試用。所建立的資源項目日後也都可以在 Azure 的控制台中進行修改或刪減。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
資源建立的參考範例

資源建立完成回到建立專案的設定對話框,填入對應的名稱、說明與資源後,下方會彈出可以選擇的專案類型,筆者將以 Object Detection 物件偵測模型為範例。而應用領域(Domain) 除非是有剛好能適用的類型如商標(Logo)或是產品貨架(product on Shelves),其餘一律選擇通用型模型 General [A1] 或是 General (Compact)。筆者建議選擇 Compact 模型,除了可以佈署模型在雲端之外,也可以另外匯出作為本地端模型使用。具體各類型差異細節也可以參考官方文件說明。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
專案建立的參考範例

專案建立完成後將會自動轉跳到該專案頁面中,上方三個欄位「Training Images」, 「Performance」,「Predictions」提示了 Custom Vision 訓練模型的三階段,第一步就是要將影像上傳到專案中並且進行標註。所有要被標記物件的影像建議至少要有 30 個,並且每張上傳的影像檔案大小不得超過 6MB。本次範例中筆者拍攝了數十張的照片,涵蓋 Linkit7697、Pico、TTGO、MKR Zero、AMB 82 五種不同的開發板,將訓練一個模型可以偵測這些開發板。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩

上傳影像完成後,接著就是逐一標記各個物件,這方面 Custom Vision 介面還蠻人性化的,當滑鼠游標移動到可能的物件上,都會自動彈出預選的虛線框,可以直接點選進行標註,若有差異之處再微調方框位置與大小即可。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
逐一標記各個物件

三、訓練與驗證

將各影像標記完成後,可以點選右上方綠色齒輪圖示的「Train」按鈕進行訓練。訓練的類型分為快速訓練「Quick Training」與高階訓練「Advanced Training」,資料量體不大的情況下選擇快速訓練即可,雖然上面顯示預計會花費一小時的時間進行訓練,但實際上不見得會用掉那麼多時間,推測是當模型停止收斂後就會終止訓練了。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
標記完所有資料後進行訓練

訓練完成後的模型可以在 Performance 頁面去觀看此模型的精準度與 mAP 等數據,以此來評估模型是否合用或是要重新訓練。點選上方「Publish」按鈕可將此模型佈署到雲端,但前提須要有 Prediction 資源,若沒有可以再到 Azure 控制台進行設定。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩

佈署後點選「Prediction URL」的按鈕會彈出如下圖的對話視窗,上面會顯示如何透過上傳圖片或是網址的方式呼叫此模型進行預測,預測完的結果會以 JSON 格式回傳。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩

若要快速的進行測試,可以點選右上角「Quick Test」上傳圖片或給定網址進行預測,可以直接在網頁上預覽結果。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
Quick test 測試

四、使用雲端模型

筆者準備一段範例程式,將本地端的圖片丟到 Azure Custom Vision 上執行辨識,讀者需要依據自己專案修改幾個地方:

  • YOUR_ENDPOINT_URL – API 的網址前段,包含 https:// 開頭至 azure.com 結尾
  • YOUR_PREDICTION_KEY – API 金鑰
  • YOUR_IMAGE_PATH – 要上傳的本地端圖片路徑
  • YOUR_PROJECT_ID – 專案ID,可在專案設定中查找
  • YOUR_ITERATION_NAME – 模型迭代(訓練)的名稱,通常為 Iteration1, Iteration2, … 名稱類推

筆者故意將眾多開發板堆疊擺放並拍攝測試照片,使用上述程式碼執行 Custom Vision 遠端預測的結果如下圖。可以看到對於被覆蓋區域較多的 AMB82 已經無法被偵測到,而稍微覆蓋的 TTGO 還有 55% 的信心度。而 PICO 與 Linkit7697 因為兩者顏色大小相仿,造成模型將 PICO 誤判為 Linkit7697,此外整體而言的效果算是還不錯。由於筆者準備的訓練資料僅達到 Custom Vision 要求的低標(每物件 30 張影像),且故意挑選大小顏色相近的物體做訓練,若增加資料量提高多樣性應能有效改善。

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩
使用 prediction API 執行雲端模型

除了使用雲端辨識模型之外,若專案類型是選擇「General (Compact)」,可以在 ,「Performance」頁面中點選「Export」匯出模型檔。支援的模型格式包含 CoreML、 TensorFlow (包含Lite)、ONNX 甚至 OpenVINO 的 IR 檔等,這些常見的模型,對於要執行邊緣 Edge AI 運算的 Maker 也能夠使用!

Maker 玩 AI 系列(九):Azure Custom Vision - AutoML 物件偵測輕鬆玩

五、小結-麻瓜也適用的 AutoML 工具

作為一個 AutoML 的工具,Custom Vision 提供了親民的網頁操作介面,對於想要訓練客製化物件偵測模型的 Maker 來說,不需要知道太多深度學習的 know how,就能自動訓練出相當不錯的模型!除了能一鍵佈署到雲端上,透過 API 執行神經網路運算,甚至可以下載到電腦或是樹莓派等系統上使用,非常適合小規模的 AI 影像專案或是 Maker 的 Side Project 使用!😄