本來就是做機(jī)器視覺的,一直想用上手體驗(yàn)下機(jī)器學(xué)習(xí),但是忙于工作,一直沒得逞,正好借這次試用感受一下,體驗(yàn)下流程。整體主要是跑下流程,體驗(yàn)下機(jī)器學(xué)習(xí),所以很多是借鑒別人的方案。
MAX78000FTHR為快速開發(fā)平臺(tái),幫助工程師利用MAX78000 Arm® Cortex® M4F處理器快速實(shí)施超低功耗、人工智能(AI)方案,器件集成卷積神經(jīng)網(wǎng)絡(luò)加速器。評(píng)估板包括MAX20303 PMIC,用于電池和電源管理。評(píng)估板規(guī)格為0.9in x 2.6in、雙排連接器,兼容Adafruit Feather Wing外設(shè)擴(kuò)展板。評(píng)估板包括各種外設(shè),例如CMOS VGA圖像傳感器、數(shù)字麥克風(fēng)、低功耗立體聲音頻CODEC、1MB QSPI SRAM、micro SD存儲(chǔ)卡連接器、RGB指示LED和按鍵。MAX78000FTHR為概念驗(yàn)證和早期軟件開發(fā)提供經(jīng)過功率優(yōu)化管理的便捷、靈活開發(fā)平臺(tái),加快產(chǎn)品上市。
先來一睹板子真容:
自帶攝像頭,唯一遺憾點(diǎn)就是沒有帶屏幕
基本硬件外設(shè):
然后就是安裝軟件環(huán)境了
Maxim SDK下載
官網(wǎng)地址:https://www.maximintegrated.com/en/design/software-description.html/swpart=SFW0010820A
安裝步驟,基本就下一步,這里稍微留意一下,不用全部安裝,要不費(fèi)時(shí)費(fèi)空間,我們用max78000,只勾選它就可以了,然后就等待安裝完成
安裝完成后就可以搜索欄中找到這全家桶
Eclipse就是調(diào)試編譯下載全覆蓋的UI編程軟件;
Maxim就是輔助下載的軟件;
MinGW就是命令行方式的編譯下載的軟件;
環(huán)境搭建
打開Eclipse
編譯調(diào)試下載
將Maxim通過安卓數(shù)據(jù)線連接到電腦上
電腦端顯示
構(gòu)建項(xiàng)目
鼠標(biāo)右鍵項(xiàng)目,點(diǎn)擊build project
,編譯項(xiàng)目(build)
編譯成功
下載程序
鼠標(biāo)右鍵項(xiàng)目,點(diǎn)擊Debug as
,選擇Debug configurations
(Debug)
選擇GDB Openocd Debugging
下的Helloworld
,點(diǎn)擊Debug
就開始下載程序啦!
板載綠燈一直閃爍,下載成功
預(yù)訓(xùn)練實(shí)現(xiàn)過程
為訓(xùn)練 tinySSD 模型,需要手動(dòng)訪問 http://ufldl.stanford.edu/housenumbers/train 下載數(shù)據(jù)并解壓到對(duì)應(yīng)文件夾 /data/SVHN,后續(xù)執(zhí)行訓(xùn)練腳本 ./scripts/train_svhn_tinierssd.sh
。訓(xùn)練過程的輸出如下圖所示:
Configuring device: MAX78000, simulate=False.
Log file for this run: /home/embed2/maxim/ai8x-training/logs/2022.11.21-214418/2022.11.21-214418.log
{'start_epoch': 25, 'weight_bits': 8, 'shift_quantile': 0.995}
{'multi_box_loss': {'alpha': 2, 'neg_pos_ratio': 3}, 'nms': {'min_score': 0.2, 'max_overlap': 0.3, 'top_k': 20}}
Optimizer Type: <class 'torch.optim.adam.Adam'>
Optimizer Args: {'lr': 0.001, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0.0005, 'amsgrad': False}
訓(xùn)練到最后的結(jié)果:
2022-11-22 01:43:22,884 - ==> Best [mAP: 0.801739 vloss: 5.124822 Sparsity:0.22 Params: 334562 on epoch: 48]
2022-11-22 01:43:22,884 - Saving checkpoint to: logs/2022.11.28-215122/qat_checkpoint.pth.tar
2022-11-22 01:43:22,901 - --- test ---------------------
2022-11-22 01:43:22,902 - 12251 samples (16 per mini-batch)
2022-11-22 01:43:44,156 - Test: [ 200/ 766] Loss 5.123171 mAP 0.775422
2022-11-22 01:43:58,389 - Test: [ 400/ 766] Loss 5.132284 mAP 0.773612
2022-11-22 01:44:12,862 - Test: [ 600/ 766] Loss 5.131513 mAP 0.769577
2022-11-22 01:44:24,824 - Test: [ 766/ 766] Loss 5.132510 mAP 0.767998
2022-11-22 01:44:24,864 - ==> mAP: 0.76800 Loss: 5.133
進(jìn)行量化:
./scripts/quantize_svhn_tinierssd.sh
Configuring device: MAX78000
Converting checkpoint file trained/ai85-svhn-tinierssd-qat8.pth.tar to trained/ai85-svhn-tinierssd-qat8-q.pth.tar
......
實(shí)現(xiàn)效果
按下連接MCU按鈕,上位機(jī)與MCU建立通信。點(diǎn)擊“循環(huán)預(yù)覽”后攝像頭開始循環(huán)捕獲圖片并在上位機(jī)顯示,以便調(diào)整攝像頭位置。點(diǎn)擊“捕獲并識(shí)別當(dāng)前圖像”按鈕,文本框會(huì)輸出當(dāng)前的檢測(cè)結(jié)果,帶有標(biāo)注信息的圖片也會(huì)在右側(cè)顯示。點(diǎn)擊“保存圖片到上位機(jī)”按鈕,程序?qū)⒈4娈?dāng)前捕獲的圖片,可用于小型數(shù)據(jù)集的制作。