


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