请选择 进入手机版 | 继续访问电脑版
查看: 280|回复: 0

MCXN94x: AI模型替换方法

[复制链接]

该用户从未签到

688

主题

6346

帖子

0

超级版主

Rank: 8Rank: 8

积分
22404
最后登录
2024-12-13
发表于 2024-11-20 15:56:08 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2024-11-20 15:58 编辑

MCXN94x: AI模型替换方法
一、概述
MCXN94x采用了两个高性能的Arm® Cortex®-M33内核,最高运行频率可达150MHz,并集成了eIQ Neutron NPU,特别适合执行MCU上的机器学习任务。NXP为这一系列的MCU提供了丰富的软件开发工具包(SDK)示例,包括但不限于人脸识别、物体检测、Cifar-10图像分类及关键词识别等应用场景。开发者们可以利用这些示例作为起点,学习如何把自己的模型加到项目里去。这篇文章会一步步教大家,在MCUXpresso IDE里,怎么把SDKAI应用的默认模型,换成自己训练的新模型。
    二、开发环境准备  

2.1 硬件准备
开发板: FRDM-MCXN947
2.2软件准备   

MCUXpresso v11.9eIQ Toolkit v1.13.1 SDK_2_16_000_FRDM-MCXN947      
Demo: frdmmcxn947_tflm_label_image   
三、 AI模型替换过程  
3.1 模型准备
本文模型准备过程,使用eIQ软件自带的mnist数据集训练模型,该数据集由大量手写数字的黑白图片组成,导入方式如下图。打开eIQ软件(下载链接为:eIQ® Toolkit| NXP Semiconductors),选择CREATE PROJECT创建项目,并选择Improt dataset选项,进入加载数据集界面。
Picture1.png
然后,选择Tensorflow datasets的Dataset选项中的mnist数据集,进行导入。在加载数据集时,可以在Train Split和Test Split选择测试集和训练集的样本大小。Dataset包含了经典数据集为用户学习和测试提供了十分便利的方式。
Picture2.png
选择基础mobilenet_v1模型,使用mnist数据集进行训练,mobilenet_v1是一种轻量级卷积神经网络,适合在移动端或嵌入式设备上运行。
Picture3.png
选择模型后,进入到模型训练界面,在常用训练参数都在左侧选项栏里,选择合适的参数进行训练模型。其中,常用的参数包括:
Weight Initialization: 模型权重初始化策略,包括Imagenet(即网络预训练权重),随机权重,以及本地权重文件(即加载本地所保存的模型权重文件)。
Input Size:指定模型输入尺寸。
Learning Rate:模型训练学习率,控制每次迭代后模型权重更新速度。
Batch Size:每一次迭代所使用的数据大小。

Epochs ToTrain: 总的训练迭代次数。
Picture4.png
训练完成后,对模型进行量化,并导出为TensorFlow Lite格式模型,命名为mobilenet.tflte。后续模型转换过程中,会使用eIQ软件的MODE TOOL工具把它转换为.h文件格式。
Picture5.png
另外,模型准备过程也可以参考 【新提醒】MCX N947:eIQ基本分类模型训练及部署(文末附视频) - MCX -恩智浦技术社区   方法,通过自己准备的数据集,使用eIQ软件训练模型。
3.2 模型转换
为了在使用模型过程中,使模型文件更加适应SDK应用和不同的编译环境,我们需要把模型. tflite格式转换为.h格式,具体做法如下:

(1)     打开eIQ工具,选择MODEL TOOl工具。
Picture6.png

(2)     选择Open Model功能,然后选择训练的mobilenet.tflte模型,Open打开。
Picture7.png
(3)     打开模型后,如下图所示,模型输入要求为128*128*3的三通道像素图像数据,并有多个层组成。然后,选择TensorFlow Lite for Neutron(.tflite)进行模型转换。
Picture8.png
(4)     在出现的对话框中,选择 mcxn94x 作为目标,然后在自定义选项字段中输入:dump-header-file-output;dump-header-file-input ,输入这两个选项将生成转换后的模型和输入模型的 C 数组。此外,请确保正在使用 MCU_SDK_2.16.0 。单击Convert转换并将转换后的文件并保存。
Picture9.png
(5)     完成上步,将得到 mobilenet.h,mobilenet_converted.h 两个.h模型头文件。mobilenet.h模型用于在MCU运行,mobilenet _converted.h 用于NPU运行。本文使用mobilenet_converted.h模型进行AI应用模型替换实验,感兴趣研究者可以比较两个模型在MCXN94x上的性能。
Picture10.png
3.3 模型替换  (1) AI应用加载
使用MCUXpresso IDE加载AI应用能够使用SDK和Code Hub两种方式,本文以使用SDK方式导入AI应用进行演示。加载SDK中 AI应用方式如下图,打开MCUXpresso IDE,导入SDK_2_16_000_FRDM-MCXN947 ,选择MCXN947,单击next。
Picture11.png
然后,选择eiq_examples例程中的tflm_label_image 应用,此AI应用能够实现多种图像的分类。

另外,eiq_examples例程中mpp_camera_persondetect_view_tflm和mpp_camera_ultraface_view_tflm为人脸识别应用;tflm_cifar10为cifar10分类应用;mpp_camera_mobilenet_view_tflm为摄像头图像识别应用;tflm_kws为关键词识别应用;mpp_camera_view为摄像头图像捕获应用。
Picture12.png
下图为导入工程后的目录,其中model目录下存放模型相关文件,model_data.h包含了默认模型数据,model_cifamet_ops_npu.cpp包含了算子操作内容。Image_data.h包含了图片数据数据,并以数组格式存放在image_data[]中。labels.h包含了模型数据标签。
Picture13.png
(2)替换模型.h文件
添加mobilenet_converted.h文件到工程model目录下。在打开的工程中,默认模型以数组形式存放在model_date.h中,需要在model.cpp中注释掉#include “model_date.h”,然后添加训练的#include “mobilenet_converted.h”文件。
Picture14.png
(3)替换模型描述信息
在默认模型头文件中包含了一些模型信息,这些信息描述了该模型将需要多少内存,并描述了该模型使用的一些标准化值,打开 model_data.h(此示例的默认模型),找到以下图片中的红框代码部分并复制它。
Picture15.png

在 mobilenet_converted.h中,注释mode_date[]数组上方的默认 #define。把上一步复制的model_data.h的代码放到mobilenet_converted.h中,修改前后如下图。
Picture16.png
(4) 算子替换
算子是执行特定计算任务的小型程序或函数,比如卷积、激活、池化等。不同的模型结构不同,使用的算子也有所不同。mobilenet_converted.h文件顶部生成有使用的算子,需要把这些内容添加到model_mobilenet_ops_npu.cpp文件中。
Picture17.png

在model_mobilenet_ops_npu.cpp文件中,注释掉默认模型的算子内容,添加mobilenet_converted.h文件中的模型算子。
Picture18.png
(5) 更改标签和静态图片数据
找到labels.h文件,添加与训练模型对应的数据标签。
Picture19.png
frdmmcxn947_tflm_label_image工程中,图片以静态数组方式储存在image_data[]中,在测试模型过程中修改这些数据为自己的图片数据。
Picture20.png
(6)编译下载
首先,编译工程。
Picture21.png

接下来,将编译成功的程序下载至FRDM-MCXN947开发板,并按照下图所示运行程序。本文中,我们用“0”和“1”的手写数字图片数据替换了默认数据,以展示数字识别的效果。
Picture22.png
     四、总结
       本文档着重介绍了如何利用eIQMCUXpresso IDE软件,在使用SDK中的eiq_examples AI应用时,将默认模型替换为用户自己训练的模型。同时,文档还详细说明了eIQ中自带数据集的导入流程,旨在帮助大家更好地学习AIMCU的相关知识。







回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-12-14 04:51 , Processed in 0.110120 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表