书接上篇:[EdgeAI] NXP eIQ 机器学习Toolkit (一):准备篇
在准备篇中,数据集已OK,下面进行Model的建模训练,
首先要选择模型,点击SELECT MODEL:
eIQ 软件提供了两种不同应用的图像Model,包括Classification分类任务和Detection检测任务。
点击其中任一Model,就会进入到 Model Performance 类型选择:
类似大多现有Release的模型type:
我们可以点击左面 选项栏的BaseModel,查看eIQ支持的模型:
可以看到eIQ针对图像分类/检测 Model 是用的 经典的MobileNet/SSD,
这里选择Balance的模型,点进去后,进入Target 目标平台选择,支持 MCU CPU和GPU,NPU
选择目标平台和类型后,进入到模型训练界面:
其中常用的包括:
–> Weight Initialization: 模型权重初始化策略,包括Imagenet(即网络预训练权重),随机权重,以及本地权重文件(即加载本地所保存的模型权重文件)
-> Input Size:指定模型输入尺寸
-> Learning Rate:模型训练学习率,控制每次迭代后模型权重更新速度
Batch Size:每一次迭代所使用的数据大小
-> Epochs ToTrain: 总的训练迭代次数
-> Enable QAT:使能训练中量化
配置好训练参数后,点击 黄色的“START TRAINING” 选项,即可开始训练,并实时更新Train loss曲线和各类参数:
当模型训练达到我们所接受的精度之后,我们就可以点击Stop停止模型训练,然后点击 VALIDATA进行模型的评估和测试,
如果精度一直不达标,可以通过修改各训练参数,或者更新训练数据,再次点击CONTINUE TRAINING继续进行训练:
Validating 需要一段时间:
在Validate 页面可以查看评价指标(Evaluation metrics),
eIQ这里 支持 Confusion Matric 和Per Class Metric:
下图我这次训练后的 Confusion Matric (混淆矩阵)
Per Class Metric(每个类别的准确度):
在选项栏 的validation 配置有Softmax threshold阈值 等:
点开Model Tool可以查看 分析Model具体结构
Model Tool这里 一看就是集成的Netron:
如果评估感觉模型达标,接下来就可以进行导出和部署到 目标设备上,
点击Deploy:
进入导出页面:
这里支持导出为:
导出模型可选的输入输出类型 包括:Float32/Int8/Uint8:
也可以根据需要,针对性的对模型进行Quantized量化
配置好后,点击EXPORT MODEL 即可导出模型文件到本地:
对于保存到本地的模型,可以在Deploy到设备之前,选用PC调用(如python加载)运行试下效果,最后再部署到设备端运行
Edge设备端是需要根据模型的类型以及设备的Lib支持,移植相应的Inference Engine ,加载上面保存的模型,运行输出Prediction结果。
而上面的模型 可见 准确度还差得远,不能使用,所以需要retrain提升精度后,Deploy在设备端才能更好的运行以解决问题。
手头的NXP开发板没有适合跑上面模型的,新板子正在路上。。。
未完待续。。。
一篇读懂系列:
LoRa Mesh系列:
网络安全系列:
嵌入式开发系列:
AI / 机器学习系列: