TL;DR
在MCXN947上,使用eIQ训练的模型,进行物体分类识别
各位电子森林网友,好久不见大家好。这期是电子森林第三季第四期的活动,我提交的报告是恩智浦mcxn97基于eIQ的机器学习任务。
FunPack的活动是电子森林联合得捷发起的,指定时间内完成任务全额退的活动,第三季第四期的板卡是来自NXP的FRDM-MCXN947板卡。
自我介绍
我是机器学习和MicroPython的爱好者,在以往的活动者主要是以Python为主要开发语言,在这一期中,我选择的是任务三。使用eIQ,NPU实现机器学习加速,搭配摄像头模组。向MCU直接发送图像进行识别测试,最终实现。鞋子或者帽子的检测。
为什么选择机器学习的任务?众所周知。现在是万物AI的时代,机器学习也是的重要组成部分。此外,板卡第一板卡出NXP。有强大的品牌背书,第二个同样是,对我来说是比较新奇的是ARM架构。第三点,MCXN947块板卡有众多丰富的接口和外设板卡部分。比如说。神经网络处理单元,以太网口,USB type C,还有看总线接口
实现逻辑
关于本次任务的实现逻辑。如图所示,
第一步是训练模型。
第二步,训练好的模型并将代码烧入到开发版
第三步使用。外接摄像头进行识别和验证
设计思路
主要包含五大步骤,
第一是关于素材的选取。AI模型的识别算法离不开大量的图片。
本次任务使用的图片均来自Kaggle。而且是CC0的使用许可
训练部分主要使用NXP官方的eIQ
在代码编辑部分使用官方的MCUXpresso IDE
代码库码库是dm-label-cifar10-images-on-mcxn947
在部署部分,需要修改对应的模型和模型内标签(注意顺序)
在调试部分,因为没有购入显示模块。我选择在串口调试工具中输出识别结果
软件清单
模型训练的eIQ, 第二个是MCUXpresso IDE,第三个是ACH Label CIFAR10 image官方应用代码仓库里的示例,
在串口调试工具中我选择了Com Tool,
实战环节
第一步是准备图片。使用eIQ进行训练时,需要指定文件夹结构,在主要在文件夹中,分为test的和train两个部分,此外,模型的训练对图片数量和质量也有要求。训练图片数量。在右侧图片中,每个分类准备了将近600个图片。
eIQ 可视化训练模型,
主要包含以下几个步骤,第一导入图片。第二选择基础模型,第三验证模型第四保存模型。以及最后的量化和转化。
在软件开始页面,我们点击 创建项目,选择 导入数据集,
在数据集中我们选择第二类。是有结构的文件夹,左上角部分选择我们的文件,此时软件会弹出,要求我们保存了项目名称。
开始导入文件,导入后我们可以看到。导入的图片已经分为两个标签,
选择模型。
我们使用左下角 基础模型 并选择mobile-net-v1 作为我们的模型,
开始下一步开始正式训练之前,我们需要修改一些训练参数。在输入尺寸选择128*128*3。建议训练精度在 0.0001开始训练,一般建议训练20-50个迭代,
我们可以在。左侧栏看到您的Loss和Metric
训练结束后,开始验证。
验证结果分为两个方式,一个是矩阵。是柱状图,
此时我们会看到,在测试结果中。两个标签的训练,都已经达到了理想的准确度,
第三步我们就开始。导出模型,导出模型我们选择TensorFlow Lite,输入数据类型和输出数据类型为int8,
保存并打开模型,
转化会提示我们可用的转化模块。我们选择最后一项TensorFlow Lite for Neutron作为我们的转化选项。我们选择最后选项进行转化,转化目标选择开发板。mcxn94x保存转化后的模型。
转化已经完成。查看我们的保存文件夹,会看到以converted结尾的模型。这也下一步我们需要在代码中使用的模型如
在IDE中使用模型
第一步引入训练的模型,拷贝模型到对应的目录。
第二修改代码中引用的模型名称,
第二步,修改分类标签。
之后构建和Debug代码,
最后一步通过GUI界面。烧入开发版,
我们主要修改的文件在\dm-label-cifar10-images-on-mcxn947\source,
按照顺序修改的模型标签。
下一步构建项目构建完成后。我们开始把项目刷入我们的开发板板下一步对代码进行检测。
在任务中,我选择的摄像头模块是ov7670。
烧录之后,可以通电开机运行代码。在终端串口工具中查开始查看识别结果。
项目总结
通过本次项目,有以下心得想和大家分享,
第一点是开发板MCXN947做工上成。而且在附带包装中还有开发板针脚布局的纸质图,让人印象深刻。
此外,卡板本身结构丰富。CAN总线,USB总线,温度传感器,板载LED灯一应俱全。
第三点是人工智能加分,比较而言NXP开发工具简单易用,很多场景有直观GUI操作。
第四部分,NXP在IDE和ACH中,提供了大量的案例仓库,容易上手了解开发板。
第五点是MicroPython的预支持,让我作为MicroPython的爱好者也感到欣慰。
当然,事情总是不会很完美,在MicroPython支持尚不完备。比如USB模块和网络模块还没有得到支持。
第二点是。开发本身不支持wi-fi连接,当然NXP也提供了大量的外接扩展,也不是之名缺点。第三点硬件规格方面,仍然提升有的空间,
最后谢谢大家,水平有限,如有错漏,欢迎指正。