资讯详情

手把手教你用eiQ OpenART训练嵌入式视觉模型

📅 2026/9/11 22:13:53 | 华诺云谱 👁 阅读
手把手教你用eiQ OpenART训练嵌入式视觉模型
这个是基于openart plus的模型训练教程我在学习的时候发现网上的教程要么东一个西一个要么比较简略不够详细。所以我就干脆真理了一份教程方便大家也方便自己以后复习留档。部分信息源自16/17/18届智能车竞赛官方教学一部分来自chatGPT。如有错误还感谢各位的指出格式有点乱还请多多包涵本文主要内容及结构本文以嵌入式视觉目标识别系统为研究对象基于 OpenART 嵌入式视觉开发平台设计并实现了一种嵌入式视觉目标识别系统。系统采用“网络下载数据集关键词查找图片数据增广”的方式获取数据集并使用深度学习图像分类识别的识别方法实现对多类别目标的实时识别。本章主要讲模型训练另外两章讲硬件平台信息和理论知识NXP eIQ Toolkit 工具链原理NXP eIQ Toolkit 是恩智浦官方提供的 AI 开发工具链它整合了 TensorFlow、TensorFlow Lite、CMSIS-NN 等框架为嵌入式 AI 应用提供了完整的开发流程。eIQ Toolkit 的核心原理是1.数据预处理:对输入的图像数据进行预处理包括归一化、resize 等操作使其符合模型的输入要求。a)·数据集的分辨率-分辨率太低,resize后细节损失较大-分辨率高,模型运算时间长-开源数据集分辨率比较低,怎么生成高质量数据集b)· 数据集与真实图像数据的差距-数据集角度单一,摄像头的图像可能有一定倾斜度-数据集图像亮度单一,摄像头亮度可能受环境影响-摄像头图像可能存在畸变-摄像头可能抓到的图像不完整c)·解决办法-用摄像头拍照,制作数据集-数据集增广,多角度,不同光线-摄像头加补光处理运行时数据处理2.运行时数据处理· 预处理-摄像头输出图像320*240。需要去掉无关背景,定位输入数据。-将定位的图像resize成模型输入尺寸·后处理-模型预算得出的所有类别的概率列表。需要定位最大值idx来判断当前图像的类别3.迁移学习:利用预训练的轻量级模型如 MobileNetV2作为骨干网络通过迁移学习在自定义数据集上进行微调能够快速训练出高精度的模型同时减少训练数据的需求。3.模型量化:支持 INT8 量化感知训练QAT将模型的权重和激活从 32 位浮点数转换为 8 位整数能够大幅压缩模型大小减少内存占用同时提升推理速度并且几乎不损失模型的精度。4.数据集增广:通过模糊、切片覆盖、高斯噪声、水平翻转、色彩饱和度、旋转、随 机亮度增强等方式增加训练集等效数量减少人工成本增强模型泛化能力。为什么要做增广-实际图像与训练集差距过大-成像受到环境干扰:光照等-运动状态下成像效果不好,旋转,缺失,噪点等-右侧实际采集的图片,与数据集有不小差距怎么做增广·手动拍摄图片扩充数据集-优点:实现简单,模型在实验室环境运行良好。-缺点:工作量巨大无法把所有数据集都重拍一边实验室无法模拟真实环境·基于原始数据集做算法特效处理-优点可以模拟更多的环境影响-elQ增强工具模拟多种特效-工作量小elQ数据增强工具·增强工具:augmentation tool-基于原始数据增强-不增加数据集,缩短训练时间-多种增强特效随机搭配,训练期间灵活配置-特效可视化配置-不污染原始数据模型部署:将训练好的模型转换为 NXP 神经网络协处理器支持的 .nncu 格式能够直接部署到 OpenART Plus 等 NXP 嵌入式平台上实现高效的推理。eIQ Toolkit 提供了图形化的用户界面使得开发者无需深入了解底层的深度学习原理就能够快速完成模型的训练、量化与部署大大降低了嵌入式 AI 应用的开发门槛。数据导入在 eIQ Toolkit 中通过 Import Dataset 功能导入数据集。 选择结构化文件夹模式指定数据集的根目录系统会自动生成标签点击SHUFFLE划分比例为 8:2。 这种自动划分的方式能够保证训练集和测试集的独立性避免数据泄露从而准确评估模型的泛化能力。模型选择选择 MobileNetV2 作为骨干网络其 “倒残差” 结构与深度可分离卷积在精度与计算效率间取得了优异平衡。MobileNetV2 是专为移动和嵌入式设备设计的轻量级卷积神经网络它通过深度可分离卷积将标准卷积分解为深度卷积和逐点卷积大幅减少了计算量和参数数量同时引入了倒残差结构和线性瓶颈进一步提升了模型的精度和效率。模型简介在 NXP eIQ 工具链的嵌入式视觉系统中常用模型主要包括图像分类、目标检测和语义分割三类。1. 分类模型1MobileNetV1MobileNetV1 是一种轻量级卷积神经网络采用**深度可分离卷积Depthwise Separable Convolution**来显著降低计算量和参数规模。该模型结构简单适合资源受限设备但分类精度相对较低。2MobileNetV2MobileNetV2 在 V1 的基础上引入了倒残差结构Inverted Residual和线性瓶颈Linear Bottleneck在保证轻量化的同时显著提高了模型精度是目前嵌入式视觉中应用最广泛的模型之一。3MobileNetV3MobileNetV3 结合了注意力机制SE模块和神经架构搜索NAS技术在精度和效率上进一步优化。但其结构复杂对嵌入式平台的兼容性要求较高。2. 目标检测模型4FPN-SSD MobileNetV2该模型在 MobileNetV2 主干网络基础上结合 SSDSingle Shot Detector和特征金字塔网络FPN能够实现多尺度目标检测适用于复杂场景但计算开销较大。5SSD MobileNetV3该模型以 MobileNetV3 为骨干网络提升检测精度但由于网络结构更加复杂对嵌入式设备资源要求更高。3. 语义分割模型6FCN全卷积网络FCN通过将全连接层替换为卷积层实现像素级分类适用于基础语义分割任务。7U-NetU-Net 采用编码器-解码器结构并通过跳跃连接融合多尺度特征在分割精度上表现优异但模型规模较大。在 eIQ Toolkit 中选择 Base Model 为 mobilenet_v2输入尺寸设置为 128×128。这个输入尺寸是经过权衡的较小的输入尺寸能够减少计算量提升推理速度同时 128×128 的尺寸足够保留图像的关键特征保证模型的识别精度。训练参数设计与取值在 eIQ Toolkit 中训练参数的设置对模型的训练效果和最终性能有着至关重要的影响。本研究对各个训练参数进行了详细的分析并根据实际任务的需求选择了合适的取值接下来会一个一个讲解参数Weight Initialization权重初始化本实验采用 ImageNet 预训练权重imagenet 作为模型初始化方式。其含义是模型在训练开始前已经在大规模数据集ImageNet上学习到通用的图像特征如边缘、纹理、形状等然后再在本数据集上进行微调fine-tuning。采用预训练权重的优点包括加快模型收敛速度提高小数据集上的泛化能力降低训练难度由于本实验数据量约4200张属于中等规模数据集因此使用预训练权重比随机初始化更为合理。并且前期正确率提升也会更快25轮训练集正确率稳定在0.9并且波动幅度小。黄色点为验证集正确率imagenet泛化预训练模型大约为80%Random则是夸张地0%。让我们继续训练在不开数据增强的情况下训练到夸张地180轮这时候可能都过拟合了验证集正确率才到达80%训练集正确率稳定在0.8以上Input Size输入尺寸模型输入设置输入尺寸为128,128,3或96,96,3其中128×128 表示图像分辨率3 表示RGB三通道该参数直接影响模型的计算量和识别精度分辨率越高 → 特征更丰富但计算量增加分辨率越低 → 计算更快但可能丢失细节考虑到本系统最终部署在嵌入式平台OpenART Mini Plus上硬件资源有限镜头QVGA分辨率为320x240而且识别时目标图像不一定能占满整个屏幕。因此选择 96,96,3 作为折中方案在保证识别精度的同时降低计算负担。Learning Rate学习率参数意义学习率控制每次迭代后模型权重的更新速度。学习率过大模型可能会在最优解附近震荡无法收敛学习率过小模型的收敛速度会很慢训练时间会很长甚至可能陷入局部最优解。取值本研究选择 0.0005 的学习率。这个学习率是迁移学习中常用的取值因为我们使用了预训练权重模型的初始权重已经比较接近最优解较小的学习率能够保证模型在微调过程中稳定收敛避免破坏已经学习到的通用特征。同时我们设置了学习率衰减衰减率为 0.95随着训练的进行学习率会逐渐减小使得模型在训练后期能够更加精细地调整权重从而收敛到更优的解。Batch Size批次大小参数意义批次大小指定了每一次迭代所使用的数据样本数量。批次大小越大梯度的估计越准确训练过程越稳定但同时内存占用也会越大训练速度会越慢批次大小越小梯度的噪声越大训练过程越不稳定但内存占用越小训练速度越快。取值本研究选择 16 的批次大小。这个批次大小是根据我们的数据集大小和训练设备的内存资源选择的我们的训练集大约有 4000 张图片16 的批次大小能够保证每次迭代都有足够的样本使得梯度的估计足够准确同时不会占用过多的内存保证训练的效率。Epochs训练轮数参数意义训练轮数指定了整个训练集在模型中训练的次数。训练轮数过少模型还没有充分学习到数据的特征欠拟合训练轮数过多模型会过度拟合训练集的噪声泛化能力下降。取值本研究选择先进行25 的无数据增强训练集增广训练轮数先进行快速学习然后进行50轮数据增强且打开线型学习率保证先快速学习提取特征值后精确微调。通过实验我们发现当训练轮数达到80左右时模型的损失函数已经收敛训练集和测试集的准确率都趋于稳定继续增加训练轮数测试集的准确率不会再提升反而会出现过拟合的现象。因此80轮左右的训练轮数是最优的选择。由于在PC端训练是浮点型的环境而MCU上运行是整数型的运行环境所以在最后还需要5轮的量化模型训练以模拟、学习、适应在MCU上以整数型运行的环境。QAT 量化参数参数意义QATQuantization-Aware Training量化感知训练是一种模型量化技术它在训练过程中模拟量化的误差使得模型能够适应量化后的权重和激活从而在量化后几乎不损失模型的精度。INT8 量化将模型的权重和激活从 32 位浮点数转换为 8 位整数能够大幅压缩模型大小减少内存占用同时提升推理速度。取值本研究启用了 QAT 量化量化训练轮数设置为 5。在完成了 25 轮的浮点数训练后我们进行了 5 轮的量化感知训练让模型适应量化的误差从而保证量化后的模型精度。量化校准样本数量设置为 150这些样本用于校准量化的缩放因子和零点保证量化的精度。数据增强为了提高模型的泛化能力我们使用了数据增强技术对训练集进行扩充。数据增强的方式包括随机旋转、随机亮度调整、随机对比度调整、随机水平翻转等。这些变换能够模拟不同的拍摄角度、光照条件和拍摄方向从而生成更多的训练样本提高模型的鲁棒性。在 eIQ Toolkit 中我们还使用了 eIQ 数据增强工具该工具支持 13 种常用图像处理特效包括模糊、随机亮度增强、旋转、伽马调整等各特效可设置生效概率和参数贴合比赛场景的光照、旋转、畸变等实际情况。使用数据增强工具时我们先基于原始数据集训练出基础模型再在该模型基础上进行增强训练而非从头开始。通过合理选择特效组合模型在实际数据集上的识别准确率可从 49% 提升至 80.6%大幅提升了模型的泛化能力。Alpha模型宽度系数本实验设置Alpha 0.5该参数用于控制模型规模α 1.0 → 标准模型α 1.0 → 轻量模型选择 α0.5 可以显著减少模型参数量使其更适合嵌入式设备运行同时仍保持一定精度。模型训练过程在设置好所有的训练参数后我们点击 Start Training 开始训练模型。训练过程中eIQ Toolkit 提供了丰富的可视化功能能动态展示训练过程中的损失函数和准确率变化支持实时调整训练参数。我们可以实时查看训练集和测试集的准确率曲线观察模型的收敛情况。训练完成后我们可以通过混淆矩阵直观查看模型的分类效果绿色表示正确分类红色表示错误分类便于分析模型的薄弱环节。通过混淆矩阵我们可以发现哪些类别容易混淆从而针对性地调整数据集和训练参数进一步提升模型的精度。模型量化与导出训练完成后我们对模型进行 INT8 量化以适应 OpenART Plus 嵌入式平台的资源限制。在 eIQ Toolkit 中我们选择 Export Model设置量化精度为 INT8输入和输出数据类型均为 int8。量化完成后我们导出模型为 . TensorFlow Lite 格式该格式是 NXP 神经网络协处理器支持的模型格式能够在 OpenART Plus 上实现高效的推理。同时我们还通过 TensorFlow Lite 的模型转换器将训练好的模型转换为 TFLite 格式进一步优化模型的推理性能。TensorFlow Lite 的 .tftite格式具有轻量、高效的特点能够减少模型的存储占用和加载时间。通过 TensorFlow Lite 的模型优我们将 MobileNetV2 模型的大小从原始的 3MB 压缩到 975kb
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。