


摘要:為了在高校人才培養過程中融入人工智能的最新知識,開展了人工智能交叉領域師資培訓,本案例以培訓中的物體分類項目為例,介紹了從項目分析、硬件設計、數據集采集與處理、在線訓練生成模型、腳本程序設計以及模型和腳本的運行等內容。
關鍵詞:MaixDuino,標簽,數據集,模型,舵機
一、引言
人工智能已成為引領新一輪科技革命和產業變革的戰略性技術。以此為契機的人工智能及相關技術的發展和應用對于整個人類的生活、社會、經濟和政治都產生重大而深遠的革命性影響,人工智能已成為國家綜合實力與核心競爭力的重要體現。高校各專業教師急需在學生培養過程中融入人工智能的最新知識,并開展人工智能相關研究,人工智能交叉領域師資培訓迫在眉睫[1-2]。
本案例以人工智能培訓中的物體分類項目為例,從項目分析開始介紹構建整個項目的培訓內容,使參訓教師掌握人工智能與嵌入式結合的項目開發與應用,提升專業技能和創新能力[3]。
二、項目分析
1、任務
對4類物體進行分類識別,并根據分類結果控制舵機動作。四類物體示例:box、magiccube、mouse、watch。
2、硬件準備
控制器:MaixDuino
配件:2.4寸屏,G44.2攝像頭
執行機構:舵機*4(180°)
3、過程
采集四類物體的圖片,進行預處理,訓練生成模型,編寫腳本文件,最后將腳本文件、標簽文件、模型文件等拷貝到控制器中運行。
三、項目硬件設計
如圖1所示,控制器的DVPD0-D7引腳與攝像頭的D0-D7引腳直連,控制器的IO40-IO44分別與攝像頭的NC、SCL、RESET、VSYNC、GND引腳直連 ,控制器的IO45-IO47分別與攝像頭的HSYNC、MCLK、PCLK通過阻值為22歐姆的電阻連接。
如圖2所示,控制器的LCDD0-D7引腳與LCD的DB0-DB7引腳直連,控制器的IO36-IO39分別與攝像頭的CS、RST、RS、引腳直連。
如圖3所示,控制器的IO11-IO14分別于四路舵機的輸入信號引腳直連。
四、采集圖片與預處理
1、準備數據集
用手機或其他攝像設備拍攝四類圖片(box,magiccube,mouse,watch),每類圖片不少于40張,將拍攝時高度和寬度分辨率設為相同。以REDMI 10X手機為例,分辨率設為2992×2992像素,每一類圖片拍攝60張。將數據集按類保存為單獨的文件夾, 子目錄的名字為最后生成label的名字。整理后目錄如下:
……>test>box
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg…………56.jpg 57.jpg 58.jpg 59.jpg
……>test>magiccube
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg…………56.jpg 57.jpg 58.jpg 59.jpg
……>test>mouse
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg…………56.jpg 57.jpg 58.jpg 59.jpg
……>test>watch
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg…………56.jpg 57.jpg 58.jpg 59.jpg
其中……>test>mouse的0.jpg圖片見圖4(a)所示。所以共四個分類:?box、?magiccube、mouse和watch,我們也稱之為標簽(label),需要注意的是,分類名(標簽/label)只能使用英文字符和下劃線。
2、圖片預處理
圖片的分辨率十分重要,不管是在采集、訓練還是使用時,都需要十分注意,稍不注意,模型可能就無法使用或者識別精度低。目標分類項目中,Maixhub在線訓練目前支持的分辨率224x224(推薦),其它分辨率將會訓練失敗(使用推薦分辨率識別準確率更高)。
下載轉換工具Image_tool.exe,對文件夾進行處理,工具界面如圖5所示。選擇我們準備好的數據集所在的文件夾,即選擇前述的……>test文件夾即可開始轉換,注意不要選擇子目錄的標簽文件夾(如box)。
轉換后的數據集目錄如下:
……>test_out>box
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg……………56.jpg 57.jpg 58.jpg 59.jpg
……>test_out>magiccube
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg……………56.jpg 57.jpg 58.jpg 59.jpg
……>test_out>mouse
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg……………56.jpg 57.jpg 58.jpg 59.jpg
……>test_out>watch
0.jpg 1.jpg 2.jpg 3.jpg 4.jpg……………56.jpg 57.jpg 58.jpg 59.jpg
可見,與處理前的區別就是test文件夾在名稱后面增加了”_out”后綴。其中……>test_out>mouse的0.jpg圖片見圖4(b)所示,分辨率為224×224像素。將轉換完成后的數據集壓縮成zip文件,在模型訓練的網站上會有用到,數據集壓縮后大小要求不超過20M。
五、訓練生成模型
1、獲取機器碼
下載key_gen固件?key_gen_v1.2.zip,解壓得到key_gen_v1.2.bin文件。然后下載kflash-gui軟件,使用kflash-gui 燒錄key_gen固件。選擇正確的端口,速度設為低速模式,波特率為1500000,如圖6(a)所示,點擊“下載”按鈕稍等即可。
如圖6(b)所示,打開串口終端,選擇正確的端口,波特率設為115200,重啟開發板(按RESET鍵),可以看到打印出的機器碼,其中42cbc**********************b32c4就是對應開發板的32位機器碼。
2、提交訓練任務
打開Maixhub模型訓練平臺(https://www.maixhub.com/ModelTraining),并創建一個任務。機器碼即為前述32位的機器碼,模型類別為模型分類,上傳數據集(test_out.zip文件),進行訓練即可。
訓練完成后,郵箱將會收到訓練完成后的模型。將郵箱收到的鏈接復制到瀏覽器打開,即可下載壓縮包,解壓壓縮后的文件夾目錄如下:
* boot.py: 在 maixpy 上運行的代碼
* *.kmodel 或者 *.smodel: 訓練好的模型文件( smodel 是加密模型 )
* labels.txt: 分類標簽
* startup.jpg: 啟動圖標
* report.jpg: 訓練報告,包括了損失和準確度報告等
* warning.txt: 訓練警告信息,可能有
其中labels.txt的內容為:labels = ["watch", "mouse", "magiccube", "box"]。
如圖7所示,report.jpg展示了訓練和驗證集的模型準確率及損失,可以看到訓練的效果是非常好的。圖8還列出了誤差矩陣(confusionmatrix)[4],由于數據集中的四類圖片(box,magiccube,mouse,watch)均為60張,可見預測全部正確。
六、boot.py腳本程序設計
如圖8 (a)所示,在main中,進行PWM、LCD和舵機的初始化后,如果標簽內容為空,將讀取labels.txt的標簽內容,如果labels.txt文件中也沒有標簽,將報錯。正常情況下將執行try語句,然后釋放模型,如果中間有異常,將拋出異常e。
如圖8 (b)所示,在try語句中,先加載模型,再循環進行運算、控制及顯示。循環體中,用攝像頭拍攝圖片,調用模型計算特征圖,得到每類標簽對應的概率值,將最大概率值及其標簽作為預測結果進行顯示,以及根據結果控制舵機[5]。顯示的內容包括攝像的圖片、運算結果以及運算時間。
舵機動作如圖9(a)所示,根據預測的值判斷拍攝物體具體是哪一類,分別控制4個舵機的動作。圖9(b)繪制了boot.py腳本的入口,將定義標簽后調用main函數,main函數對標簽的判斷見圖8 (a),如果出現異常,將打印異常內容并在LCD上顯示異常,最后清理內存即可。
七、運行模型和腳本
程序編寫完畢后,將之前的模型文件m. kmodel,分類標簽labels.txt,啟動圖標startup.jpg(可選),以及修改過的腳本文件boot.py放到sd卡根目錄后,重啟MaixDuino即可。可以使用uPyLoder軟件進行文件的傳遞,uPyLoder文件傳遞界面如圖10所示。
程序運行時,將在LCD顯示攝像頭采集圖像,并根據采集到的圖片中是否包含box,magiccube,mouse,watch四類圖片,控制4類舵機的動作。
八、總結
在本培訓項目中,包括項目分析、硬件設計、數據集采集與處理、在線訓練生成模型、腳本程序設計以及模型和腳本的運行等內容,項目成果可用于生活中的垃圾分類、工業生產中的瑕疵識別控制等場合。通過完整的過程培訓和演練,使參訓教師掌握人工智能中典型項目的設計、開發和應用,提升專業技能。
參考文獻
[1]潘天君, 歐陽忠明. 人工智能時代的工作與職業培訓:發展趨勢與應對思考——基于《工作與職業培訓的未來》及"云勞動"的解讀[J]. 遠程教育雜志, 2018(1):18-26.
[2]萬占文, 陳宋平. 人工智能時代對教師培訓的幾點思考[J]. 寧夏教育, 2020(6):26-28.
[3]馮建. 人工智能實訓中心構建的研究[J]. 信息記錄材料, 2019, 20(01):85-87.
[4]羅雷. 矩陣回歸模型與方法及其在穩健圖像分類中的應用[D]. 南京理工大學, 2018.
[5]謝堂, 吳居豪, 溫泉河. 基于機器學習的智能垃圾分類箱[J]. 現代計算機(專業版), 2020, 000(012):139-143.
作者簡介:劉敬(1983-),女,河南新鄉人,博士,實驗師,主要研究方向為人工智能
[項目] 教育部2019年第二批產學合作協同育人項目:人工智能交叉領域師資培訓(項目編號:201902312006);寧波市公益項目(項目編號:202002N3139)