本來就是做機器視覺的,一直想用上手體驗下機器學習,但是忙于工作,一直沒得逞,正好借這次試用感受一下,體驗下流程。整體主要是跑下流程,體驗下機器學習,所以很多是借鑒別人的方案。
MAX78000FTHR為快速開發平臺,幫助工程師利用MAX78000 Arm® Cortex® M4F處理器快速實施超低功耗、人工智能(AI)方案,器件集成卷積神經網絡加速器。評估板包括MAX20303 PMIC,用于電池和電源管理。評估板規格為0.9in x 2.6in、雙排連接器,兼容Adafruit Feather Wing外設擴展板。評估板包括各種外設,例如CMOS VGA圖像傳感器、數字麥克風、低功耗立體聲音頻CODEC、1MB QSPI SRAM、micro SD存儲卡連接器、RGB指示LED和按鍵。MAX78000FTHR為概念驗證和早期軟件開發提供經過功率優化管理的便捷、靈活開發平臺,加快產品上市。
先來一睹板子真容:
自帶攝像頭,唯一遺憾點就是沒有帶屏幕
基本硬件外設:
然后就是安裝軟件環境了
Maxim SDK下載
官網地址:https://www.maximintegrated.com/en/design/software-description.html/swpart=SFW0010820A
安裝步驟,基本就下一步,這里稍微留意一下,不用全部安裝,要不費時費空間,我們用max78000,只勾選它就可以了,然后就等待安裝完成
安裝完成后就可以搜索欄中找到這全家桶
Eclipse就是調試編譯下載全覆蓋的UI編程軟件;
Maxim就是輔助下載的軟件;
MinGW就是命令行方式的編譯下載的軟件;
環境搭建
打開Eclipse
編譯調試下載
將Maxim通過安卓數據線連接到電腦上
電腦端顯示
構建項目
鼠標右鍵項目,點擊build project
,編譯項目(build)
編譯成功
下載程序
鼠標右鍵項目,點擊Debug as
,選擇Debug configurations
(Debug)
選擇GDB Openocd Debugging
下的Helloworld
,點擊Debug
就開始下載程序啦!
板載綠燈一直閃爍,下載成功
預訓練實現過程
為訓練 tinySSD 模型,需要手動訪問 http://ufldl.stanford.edu/housenumbers/train 下載數據并解壓到對應文件夾 /data/SVHN,后續執行訓練腳本 ./scripts/train_svhn_tinierssd.sh
。訓練過程的輸出如下圖所示:
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}
訓練到最后的結果:
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
進行量化:
./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
......
實現效果
按下連接MCU按鈕,上位機與MCU建立通信。點擊“循環預覽”后攝像頭開始循環捕獲圖片并在上位機顯示,以便調整攝像頭位置。點擊“捕獲并識別當前圖像”按鈕,文本框會輸出當前的檢測結果,帶有標注信息的圖片也會在右側顯示。點擊“保存圖片到上位機”按鈕,程序將保存當前捕獲的圖片,可用于小型數據集的制作。