首页 / ai资讯

如何训练一个有效的eIQ基本分类模型

发布时间:2024-08-01 11:46:20

一、概述

eIQ Neutron神经处理单元(NPU)是一种高度可扩展的加速器核心架构,提供ML加速。与传统MCU Kinetis、LPC系列相比,MCX N系列首次集成了恩智浦 eIQ Neutron神经处理单元(NPU),用于机器学习(ML)加速。相比单独的CPU核,eIQ Neutron NPU能够提供高达42倍的机器学习推理性能,MCX N94x每秒可以执行4.8 G次运算,使其能够高效地运行在 MCX CPU和eIQ Neutron NPU上。 eIQPortal它是一个直观的图形用户界面(GUI),简化了ML开发。开发人员可以创建、优化、调试和导出ML模型,以及导入数据集和模型,快速训练并部署神经网络模型和ML工作负载。

在本文中,我们将探讨如何训练一个有效的eIQ基本分类模型,并将其成功部署到MCX N947设备上。

硬件环境:

开发板FRDM-MCXN947

显示屏3.5" TFT LCD(P/N PAR-LCD-S035)

摄像头OV7670

软件环境:

eIQ Portal:eIQ MLSoftware Development Environment | NXP Semiconductors

MCUXpressoIDE v11.9.0

application Code Hub Demo: Label CIFAR10 image

二、基本模型分类训练及部署

主要内容分为三步:模型训练、模型转换和模型部署。

1.数据集准备

数据集为简单演示apple、banana两分类,训练集、测试集比例为8:2,根据eIQ_Toolkit_UG.pdf提到的3.3.2 Structured folders dataset:

文件夹结构如下:

注:数据集需按照以上文件夹格式设置

2. 创建工程及数据集导入eIQ

(1) 打开eIQ Portal工具,点击create project->import dataset:

(2) 以StructuredFolders导入:

(3) 点击“IMPORT”后,选择工程保存路径,点击“保存”:

3.选择base models训练

(1)数据集导入后,点击select model,选择base models,修改input size为128,128,3:

(2)点击start training。注:其他参数根据需要进行设定即可,此处learning rate、batch size、epoch为默认值,此处为演示,训练一轮,用户可以根据需要训练模型达到应用要求。训练完成如下:

如果精度一直不达标,可以通过修改各训练参数,或者更新训练数据,再次点击CONTINUE TRAINING继续进行训练。

4.模型评估VALIDATE

(1) 点击VALIDATE,进入模型评估,设置参数Softmax,input DataType和output Data Type,目前MCXN系列Neutron NPU只支持int8类型,选择Softmax函数的阈值是一个需要综合考虑多种因素的过程,应该根据具体的应用场景和性能目标来决定最合适的阈值,在实际操作中,需要通过多次实验和调整来找到最佳的阈值:

(2).设置完成后,点击VALIDATE,等待生成混淆矩阵,通过混淆矩阵我们可以清晰看出不同类别的分类情况,图中x轴是预测的标签,y轴是实际的标签,可以看到每一张图片预测标签和实际标签的对应情况:

5.模型导出TensorFlow Lite

(1) 点击DEPLOY,设置Export file Type,input Data Type和output Data Type,打开Export Quantized Model,然后点击Export Model:

(2).设置模型保存位置,点击保存:

6.转换TensorFlow Lite for Neutron (.tflite)

(1) 保存完成后,点击open model,可以查看模型结构:

(2) 点击convert,选择TensorFlow Lite for Neutron (.tflite):

(3) 选择Neutron Target,点击convert,设置保存路径即可:

7.将模型部署到Label CIFAR10 image工程

此示例基于机器学习算法,由 MCXN947 提供支持, 它可以标记来自相机的图像,并在LCD底部显示物体的类型。

该模型在数据集CIFAR10上进行训练,它支持 10 类图像:

“飞机”、“汽车”、“鸟”、“猫”、“鹿”、“狗”、“青蛙”、“马”、“船”、“卡车”。

(1) 打开MCUXpresso IDE,从application Code Hub导入Label CIFAR10 image工程:

(2) 选择工程,点击GitHub Link->Next:

(3).设置保存路径,Next->Next->Finish:

(4).导入成功后,点击“source”文件夹->model文件夹,打开model_data.s,将最后通过eiq转换的模型文件复制到model文件下,在model_data.s修改导入模型的名称(转换模型的名称):

注:工程中导入的模型是经过多次训练得到的模型

(5) 点击“source”文件夹->model文件夹->打开labers.h文件,修改labers[ ],标签顺序为eIQ中数据集显示的顺序 :

(6) 编译工程,下载到开发板。

三、实验结果

四、总结

对于希望在MCX N系列边缘设备上实现高效机器学习应用的开发人员来说,掌握这些技术和工具是至关重要的。

通过高效利用eIQ Neutron NPU的强大性能和eIQ Portal的便捷工具,开发人员可以大大简化从模型训练到部署的整个过程。这不仅加速了机器学习应用的开发周期,还提升了应用的性能和可靠性。

作者:王浩 杨聪哲

  • 处理器 处理器 关注

    关注

    68

    文章

    18696

    浏览量

    225596
  • mcu mcu 关注

    关注

    146

    文章

    16394

    浏览量

    346222

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

如有疑问请发送邮件至:bangqikeconnect@gmail.com