本来就是做机器视觉的,一直想用上手体验下机器学习,但是忙于工作,一直没得逞,正好借这次试用感受一下,体验下流程。整体主要是跑下流程,体验下机器学习,所以很多是借鉴别人的方案。
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建立通信。点击“循环预览”后摄像头开始循环捕获图片并在上位机显示,以便调整摄像头位置。点击“捕获并识别当前图像”按钮,文本框会输出当前的检测结果,带有标注信息的图片也会在右侧显示。点击“保存图片到上位机”按钮,程序将保存当前捕获的图片,可用于小型数据集的制作。