【Funpack3-4】恩智浦FRDM-MCXN947 基于 eIQ NPU 的机器学习,识别鞋子和帽子
该项目使用了MCXN947,实现了图片分类识别的设计,它的主要功能为:基于MCXN947 和eIQ模型训练软件,在开发板上实现机器学习,人工智能。
标签
Funpack活动
开发板
disk
更新2024-09-09
81
TL;DR
在MCXN947上,使用eIQ训练的模型,进行物体分类识别


各位电子森林网友,好久不见大家好。这期是电子森林第三季第四期的活动,我提交的报告是恩智浦mcxn97基于eIQ的机器学习任务。

image.png

FunPack的活动是电子森林联合得捷发起的,指定时间内完成任务全额退的活动,第三季第四期的板卡是来自NXPFRDM-MCXN947板卡。


自我介绍

我是机器学习和MicroPython的爱好者,在以往的活动者主要是以Python为主要开发语言,在这一期中,我选择的是任务三。使用eIQNPU实现机器学习加速,搭配摄像头模组。向MCU直接发送图像进行识别测试,最终实现。鞋子或者帽子的检测。


为什么选择机器学习的任务?众所周知。现在是万物AI的时代,机器学习也是的重要组成部分。此外,板卡第一板卡出NXP。有强大的品牌背书,第二个同样是,对我来说是比较新奇的是ARM架构。第三点,MCXN947块板卡有众多丰富的接口和外设板卡部分。比如说。神经网络处理单元,以太网口,USB type C,还有看总线接口

2b6670ec087a463ba668c9a7cc4801dd.png


实现逻辑

关于本次任务的实现逻辑。如图所示,

image.png

第一步是训练模型。

第二步,训练好的模型并将代码烧入到开发版

第三步使用。外接摄像头进行识别和验证

 

设计思路

主要包含五大步骤,

image.png

第一是关于素材的选取。AI模型的识别算法离不开大量的图片。

本次任务使用的图片均来自Kaggle。而且是CC0的使用许可

训练部分主要使用NXP官方的eIQ

在代码编辑部分使用官方的MCUXpresso IDE

代码库码库是dm-label-cifar10-images-on-mcxn947

在部署部分,需要修改对应的模型和模型内标签(注意顺序)

在调试部分,因为没有购入显示模块。我选择在串口调试工具中输出识别结果

 

软件清单

image.png

模型训练的eIQ 第二个是MCUXpresso IDE,第三个是ACH Label CIFAR10 image官方应用代码仓库里的示例,

在串口调试工具中我选择了Com Tool

 

实战环节

第一步是准备图片。使用eIQ进行训练时,需要指定文件夹结构,在主要在文件夹中,分为test的和train两个部分,此外,模型的训练对图片数量和质量也有要求。训练图片数量。在右侧图片中,每个分类准备了将近600个图片。

image.png


eIQ 可视化训练模型,

image.png

主要包含以下几个步骤,第一导入图片。第二选择基础模型,第三验证模型第四保存模型。以及最后的量化和转化。

在软件开始页面,我们点击 创建项目,选择 导入数据集,

屏幕截图 2024-07-31 200729.png

在数据集中我们选择第二类。是有结构的文件夹,左上角部分选择我们的文件,此时软件会弹出,要求我们保存了项目名称。

屏幕截图 2024-07-31 200742.png


屏幕截图 2024-07-31 200853.png


开始导入文件,导入后我们可以看到。导入的图片已经分为两个标签,

屏幕截图 2024-07-31 200923.png


屏幕截图 2024-07-31 200934.png

 

选择模型。

我们使用左下角 基础模型 并选择mobile-net-v1 作为我们的模型,

 屏幕截图 2024-07-31 201012.png

开始下一步开始正式训练之前,我们需要修改一些训练参数。在输入尺寸选择128*128*3。建议训练精度在 0.0001开始训练,一般建议训练20-50个迭代,

屏幕截图 2024-07-31 201027.png

我们可以在。左侧栏看到您的LossMetric

屏幕截图 2024-07-31 201326.png

训练结束后,开始验证。

验证结果分为两个方式,一个是矩阵。是柱状图,

屏幕截图 2024-07-31 201504.png


屏幕截图 2024-07-31 201514.png

此时我们会看到,在测试结果中。两个标签的训练,都已经达到了理想的准确度,

 

第三步我们就开始。导出模型,导出模型我们选择TensorFlow Lite,输入数据类型和输出数据类型为int8,

屏幕截图 2024-07-31 201554.png

 

保存并打开模型,

屏幕截图 2024-07-31 202503.png

转化会提示我们可用的转化模块。我们选择最后一项TensorFlow Lite for Neutron作为我们的转化选项。我们选择最后选项进行转化,转化目标选择开发板。mcxn94x保存转化后的模型。

屏幕截图 2024-07-31 202543.png


屏幕截图 2024-07-31 202558.png

转化已经完成。查看我们的保存文件夹,会看到以converted结尾的模型。这也下一步我们需要在代码中使用的模型如

 image.png

IDE中使用模型

第一步引入训练的模型,拷贝模型到对应的目录。

第二修改代码中引用的模型名称,

第二步,修改分类标签。

之后构建和Debug代码,

最后一步通过GUI界面。烧入开发版,

 

我们主要修改的文件在\dm-label-cifar10-images-on-mcxn947\source

image.png

按照顺序修改的模型标签。

屏幕截图 2024-07-31 215614.png

下一步构建项目构建完成后。我们开始把项目刷入我们的开发板板下一步对代码进行检测。

屏幕截图 2024-07-31 215924.png

在任务中,我选择的摄像头模块是ov7670

image.png

烧录之后,可以通电开机运行代码。在终端串口工具中查开始查看识别结果。

微信图片_20240731224551.jpg


image.png

 

image.png



项目总结

通过本次项目,有以下心得想和大家分享,

第一点是开发板MCXN947做工上成。而且在附带包装中还有开发板针脚布局的纸质图,让人印象深刻。

此外,卡板本身结构丰富。CAN总线,USB总线,温度传感器,板载LED灯一应俱全。

第三点是人工智能加分,比较而言NXP开发工具简单易用,很多场景有直观GUI操作。

第四部分,NXPIDEACH中,提供了大量的案例仓库,容易上手了解开发板。

第五点是MicroPython的预支持,让我作为MicroPython的爱好者也感到欣慰。


当然,事情总是不会很完美,在MicroPython支持尚不完备。比如USB模块和网络模块还没有得到支持。

第二点是。开发本身不支持wi-fi连接,当然NXP也提供了大量的外接扩展,也不是之名缺点。第三点硬件规格方面,仍然提升有的空间,


最后谢谢大家,水平有限,如有错漏,欢迎指正。

附件下载
mobilenet_v1-cap_shoes_ptq_converted.tflite
识别模型
团队介绍
人工智能和Python 爱好者
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号