大家在很多地方都可以看到嵌入式AI的概念,但是到實際的上手和開發過程中,不完善的工具鏈和復雜的開發流程都是嵌入式工程師或者AI算法工程師很大的阻礙。
而基于STM32H7的OpenMV機器視覺模組和云端AI平臺Edge Impulse合作,就很好的打通了從數據收集、打標,NN模型訓練、優化到部署的整個流程。
去年4月份我們的新品OpenMV4 H7 Plus上市啦,今天我來給大家介紹一下OpenMV4 H7 Plus的新功能——利用EdgeImpulse在線網站自行訓練神經網絡進行分類識別。
在本教程中,你將使用機器學習來構建一個識別系統,該系統可通過OpenMV4 H7 Plus智能攝像頭識別人臉是否佩戴口罩,即實現影像分類。
EdgeImpulse是一個為嵌入式設備提供在線訓練神經網絡模型服務的網站,它是我們OpenMV的合作伙伴,同時也均為ST意法半導體的官方合作伙伴。目前EdgeImpulse對我們OpenMV用戶是免費開放的,OpenMV用戶可以免費的使用EdgeImpulse在線訓練適用于OpenMV的神經網絡模型。
為嵌入式設備OpenMV增加神經網絡,可實現區分盜獵者和大象、對工廠生產線進行質量控制、讓遙控模型車自行駕駛等功能。
在本教程中,你將學習如何收集圖像建立一個高質量的數據集,如何應用遷移學習訓練神經網絡,以及如何將系統部署到OpenMV。
你可以在以下地址查看整個項目內容,所有代碼和模型都包括在內:https://book.openmv.cc/project/mask.html
使用EdgeImpulse在線訓練適用于OpenMV的神經網絡模型主要分為以下四個步驟:數據集采集、上傳、訓練以及部署。
01 采集數據集
在本教程中,我們會構建一個可以區分人臉是否佩戴口罩的模型。當然你也可以選擇分類其他物品。為實現機器學習模型的運作,你需要收集戴口罩和不帶口罩兩種人臉的大量示例圖像。在訓練時,這些示例圖像就用來做模型的區分練習。
我們需要利用OpenMV IDE來采集我們的數據集,采集圖像的步驟如下:
* 創建兩個分類:
打開OpenMV IDE菜單欄的“工具”,選擇“數據集編輯器”,單擊“新建數據集”,然后新建一個文件夾并打開,在數據集里面再新建兩個文件夾分別命名為mask(用來保存戴口罩的人臉的照片)和face(用來保存不戴口罩的人臉的照片)。
新建數據集
創建分類文件夾
* 用OpenMV采集圖像
首先我們連接OpenMV,點擊IDE里面的“連接”,點擊“運行”,Framebuffer幀緩沖區中可以看到OpenMV實時的圖像,點擊左側菜單欄中的照片的按鈕,OpenMV就會自動的保存這張圖片,這就是數據集里面的一個數據。
首先我們要保存的是戴了口罩的人臉,點一下照片的按鈕,IDE下側就會拍攝一張照片,它會自動命名為00000,然后下一張是00001,以此類推。
用OpenMV分別采集200張戴口罩(男女各100張)和200張不戴口罩(男女各占100張)的人臉的照片。
用OopenMV采集男生戴口罩的圖像
用OopenMV采集女生戴口罩的圖像
* 注意:要確保采集到各種角度的照片,保證我們訓練學習的多樣化。
* 如果采集的過程中發現某張圖片采集得不夠完美的話,可以右鍵此圖片點擊刪除。
02 上傳
使用OpenMV采集完圖像以后,你需要注冊賬號登錄EdgeImpulse官網(https://edgeimpulse.com/)開始上傳圖像,上傳圖像的步驟:
* 在EdgeImpulse上新建一個項目,點擊“keys”,選擇“API Key”并復制“API Key”。通過API Key實現OpenMV IDE和Edge Impulse的連通。
* 選擇OpenMV IDE上方菜單欄的“工具”——“數據編輯器”——“Export”——“上傳”——“通過API Key上傳”,復制“API Key”上傳即可。
上傳時數據將自動劃分為訓練集和測試集,我們默認選擇比例為“80%和20%”即可。我們一共采集了400多張人臉圖片,其中80%的Training Date就是默認你80%的數據用來訓練,剩余的20%用作測試集。
用OpenMV上傳數據集
將數據集上傳到EdgeImpulse上
03 訓練數據集
數據集準備就緒,你就可以在EdgeImpulse網站界面中訓練數據集了。
* 配置處理模塊:
首先選擇“Impulse Design”,配置處理模塊:
* 設置默認的圖像長寬為“96 x 96”;
* 選擇“圖像Images”模塊,表示我們是對圖像進行分類訓練(你也可以用EdgeImpulse分類聲音、視頻等);
* 選擇“遷移學習(圖像)Transfer Learning (Images)”,設置學習的模型;
選擇“保存Save impulse”,顯示Successfully就是配置成功了。
配置處理模塊
* 圖像預處理:
單擊左側菜單中的“圖像Image”,將顏色格式設置為“RGB”,然后點擊“Save”。
* 接下來選擇“生成特征Generate features”來啟動流程,將對400多張數據進行圖像預處理,右側會顯示完整數據集的3D可視化。
特征資源管理器將數據集中的數據進行可視化處理。
在特征資源管理器中分離良好的集群更便于機器學習模型學習。
* 配置遷移學習模型
單擊左側菜單中的“遷移學習Transfer learning”,設置的參數全部選擇默認的就可以,也可以根據需求來更改參數:
1.將訓練周期數Number of training cycles設置默認為10
2.將學習率Learning rate設置為0.0005
3.可以勾選也可以不勾選“數據增強Data augmentation”
4.將最低置信度Minimum confidence rating默認設置為0.8。
點擊“開始訓練Start training”,訓練的過程大概4到5分鐘左右。
模型訓練完成后,你可以查看準確度、混淆矩陣confusion matrix和預期設備性能。
訓練完成后的表現
* 測試模型:
訓練完成后,我們將使用測試數據來檢驗模型。
選擇“模型測試Model testing”,勾選“樣本名稱Sample name”旁的復選框,點擊“分類選擇Classify selected”。這里顯示的準確度達到了97%,就一個數據甚少的模型而言實屬難得。
發現顯示紅色的這一張圖片是不確定的,點擊這張圖片右側的三個點,選擇“顯示分類 Show classification”,你就會進入“實時分類”的界面,里面包含文件的更多細節。這個界面將幫助你確定圖片分類錯誤的原因。
一個無法分類的圖片(因為其最高數值仍低于0.8的閾值)
如果數據在所有已知的集群(戴口罩/不戴口罩)之外,這可能是與以前看到的任何分類都不匹配的數據——可能是由于頭發遮住了大半的人臉。
04 在OpenMV上運行模型
完成了訓練設計、模型訓練和模型驗證的步驟,你就可以將這個模型導出到你的OpenMV,選擇“OpenMV”,選擇“Build”進行生成,它自動生成了3個文件:
* trained.tflite 訓練好的神經網絡模型
* labels.txt 兩個分類標簽(face和mask)
* ei_image_classification.py 是OpenMV上面要運行的代碼
連接OpenMV IDE,把這3個文件保存到OpenMV內置的Flash里面。將ei_image_classification.py文件在OpenMV IDE中打開,可以看到我們剛剛在EdgeImpulse里面生成的代碼。點擊運行,在串行終端里面會顯示運行的結果。
識別戴口罩的人臉
識別不戴口罩的人臉
好啦,你已經成功地為OpenMV增加自行訓練神經網絡的功能了。
期待你的成果!
責任編輯:lq
-
神經網絡
+關注
關注
42文章
4785瀏覽量
101275 -
數據集
+關注
關注
4文章
1210瀏覽量
24862 -
智能攝像頭
+關注
關注
0文章
84瀏覽量
14944
原文標題:OpenMV4 Plus使用Edge Impulse自行訓練神經網絡進行口罩識別
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論