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