人工智慧在視覺領域有兩類非常常見的任務,一是分類,二是目標檢測。
分類:判斷圖片屬於哪一類別,例如類別為貓或狗。
目標檢測:用於偵測圖片中多個不同目標之位置、數量及尺寸。
在以往的影片教學中,我們講解了如何使用 OpenMV4 Plus 在線訓練神經網絡,以進行不同物件的分類;該系統可即時判斷 OpenMV 視野內的圖像是否為某特定物件(例如:人臉是否佩戴口罩),但無法輸出人臉或口罩的位置座標,亦無法輸出人臉的數量。
由於目標檢測比圖像分類複雜得多,且運算量大得多,因此在微控制器領域極為罕見。OpenMV 的主控 MCU 為 STM32H7;如今,我們在 OpenMV 上新增了一項功能,可在微控制器上執行類似目標檢測的任務,性能表現十分出色。

今日我哋將為大家講解訓練演示實際馬路環境中的交通標誌檢測,檢測本澳實際道路中的交通標誌,例如禁止鳴笛、禁止停車、限速八十等,而非實驗室無干擾環境。
你可於以下網址查閱整個項目內容,所有代碼及模型均包括在內:https://book.openmv.cc/project/traffic-sign.html
眾所周知,實際環境極為複雜,尤其是道路環境,干擾因素眾多。我們利用手機等設備採集實際環境中交通標誌的圖片,並使用本司OpenMV合作夥伴EdgeImpulse在線平台訓練模型,共標註約270張圖片,訓練時間僅需10分鐘;所獲模型的F1分數準確率可達92%,於OpenMV上的運行幀率達每秒10幀,效果極為流暢且準確率亦頗高。
使用者可根據本公司的影片教學,訓練任何欲檢測之目標,例如不同數字、不同水果、不同標誌物、不同零件,甚至任何特定不規則目標等,均可訓練識別出特定目標之數量、座標及物體類別名稱等。
注意:本集影片教學所講解之神經網絡目標點檢測功能,不僅適用於OpenMV4 H7 Plus,亦支援OpenMV4 H7,因已訓練之FOMO目標點檢測模型體積不大、效果優良且僅數十KB;即使OpenMV4 H7之運行記憶體較Plus為小,我們仍可訓練稍小之模型於OpenMV4上運行。
以下為原理之簡介:
OpenMV 上 FOMO 目標點檢測的主要設計決策基於以下理念:許多物件檢測問題實際上並不需要物件的尺寸,而僅需其在影像中的位置。一旦獲知物件的位置,即可執行後續操作,例如 OpenMV 控制小車朝已識別目標移動、無人機定點降落、控制機械臂抓取特定目標物件等。
FOMO模型是EdgeImpulse專為微控制器環境特別設計的一種模型;與常規的目標檢測不同,該模型僅能檢測多個目標的位置及數量,而無法取得其具體尺寸。
FOMO模型的底層原理非常簡單靈活。它首先將圖像分塊,每塊為8×8像素。若圖像解析度為96×96,則形成12×12的單元格;若為360×360,則形成40×40的單元格。然後於每個單元格上獨立執行圖像分類。
與 YOLO V5 或 MobileNet SSD 相比,FOMO 在大量小型物件上的表現優異得多。FOMO 目標點檢測速度比 MobileNet SSD 快 30 倍。
如待檢測物件之尺寸相近,例如所識別標誌物之尺寸大致相若,而非同時包含極大及極小之物件,則FOMO之效果更佳。
OpenMV利用EdgeImpulse線上訓練神經網絡目標點檢測,主要分為以下幾個步驟:採集並上傳圖像數據集、標註目標、訓練、測試模型、部署。
* 收集圖像數據集:針對我們實際需識別環境中的特定物件,進行圖像拍攝與收集。於何種環境中進行識別,即於相同環境中收集實際圖像,確保實際訓練環境與實際檢測環境基本一致,以取得更佳效果。
*標註目標:將我們數據集內每一項待檢測目標以方框標出,並準確對應其名稱,以便後續訓練、檢測目標位置及目標名稱。
*訓練模型:完成標註後,根據我們所設計的卷積神經網絡參數進行模型訓練。
*測試模型:我們根據已訓練好的模型進行測試,若效果欠佳,則相應增加訓練集或調整訓練參數,並繼續訓練,直至獲得滿意的模型。
*部署:我們將訓練好的模型檔案放進 OpenMV 內置的 U 盤內即可運行。
以下為具體操作流程之示範:
01、收集及上載圖像數據集
一、首先,我們登入網站 edgeimpulse.com,選擇「登入」,輸入新建之項目名稱,並選擇「影像」—「分類多個物件」

二、選擇上載圖像。關於圖像的數據集,可透過以下幾種方式取得:
1. 透過 OpenMV IDE 實時採集圖像。使用 OpenMV IDE 內建的工具——「數據集編輯器」,新建數據集並實時採集圖像,詳情可參閱我們先前發佈的影片教程《物體分類:口罩識別》。

2. 使用經網絡下載之圖片,或以手機實際拍攝之圖片;建議所用圖片之環境與實際檢測環境一致。我們已準備約四百至五百張禁止停車、禁止鳴笛及限速八十等交通標誌之圖像,所有圖像均於實際道路採集;此數據集可於我方 GitHub 及教學網站下載。
02、標註目標
每類別均上載約一百張圖片;圖片上載完成後,須進行圖像標註,標出需識別物件之位置及類別。


03、訓練模型
設定訓練的參數,將解析度更改為128×128,所有設定參數均採用預設值即可,然後按一下「儲存」。

生成特徵,三種顏色分別代表三種標誌。

設定目標檢測訓練參數。訓練輪數預設為60輪,學習率為0.001,驗證集比例為20%,請勾選「啟用數據增強」;遷移學習所用模型可選擇預設的MobileNetV2 0.35或MobileNetV2 0.1。(注意:不可使用SSD,因SSD無法於OpenMV上運行。)
選擇開始訓練。訓練完成後所得之神經網絡模型F1分數為91.2%,我們可儲存目前之版本。

選擇儲存,填寫您的描述,然後選擇「儲存」。

04、部署模型
匯出已訓練的模型檔案。只需匯出library,選擇OpenMV,然後按一下「Build」,即會開始部署及匯出模型。

它會自動下載我們導出的模型,此處即為我們以300張圖片訓練所得之模型,至此整個訓練流程即告完成。

05、執行模型
於OpenMV上運行模型:
連接OpenMV Plus,將已訓練好的三個檔案存入OpenMV內置USB隨身碟,並於OpenMV IDE中開啟ei_object_detection.py檔案。點擊執行,運行結果將顯示於序列終端內。


此功能亦可於 OpenMV4 上運行。由於 OpenMV4 未配備外置 SDRAM,記憶體容量較小,我們可透過縮減模型體積,使其得以於 OpenMV4 上運行。
有兩種方法可縮小模型的體積:
一、降低訓練解析度,將一百二十八乘以一百二十八的解析度改為九十六乘以九十六。
二、修改所採用之遷移學習模型,將 MobileNetV2 0.35 改為 MobileNetV2 0.1。
最後,將訓練完成的新檔案放入OpenMV4中執行即可。
以上即為本司之目標點檢測教學。敬候閣下成果!

基於OpenMV之AI哨兵:重點場所未關自動提醒
自動判斷重點場所門口是否長時間未關閉,並即時發出提醒。

人員越界即觸發警報,OpenMV演繹「安全邊界感」
透過虛擬警戒線識別人員或設備越界行為。

「AI城管」來啦,基於OpenMV構建佔道經營自動識別系統
自動識別佔道經營行為,協助城市日常治理。

煤氣罐亂放?利用OpenMV自動觸發危險預警
自動識別煤氣罐違規擺放位置,提前發現燃氣安全隱患。

帶電作業未佩戴絕緣手套?OpenMV 即刻發出警報!
自動識別作業人員是否佩戴絕緣手套,以輔助安全作業。

採用OpenMV智能攝像頭,實時識別鋁板表面缺陷
線上識別鋁板表面劃痕、凹陷等缺陷,協助品質管控。