回答

收藏

[评测分享] 【瑞萨AI挑战赛】YOLO模型转换实践:从Darknet到Titan NPU部署格式

#板卡评测 #板卡评测 21 人阅读 | 0 人回复 | 2026-03-14

一、评测思路
在第一阶段完成了数据集制作与 YOLO-Fastest 模型训练之后,本阶段的目标是完成模型格式转换,使训练得到的模型能够最终运行在 Titan  Board 的 NPU 上。
整个转换流程如下:
Darknet (.weights)
        ↓
Keras (.h5)
        ↓
TFLite (.tflite)
        ↓
INT8量化
        ↓
Ruhmi模型
        ↓
Titan NPU部署
本周主要完成两个步骤:
Darknet → TFLite INT8 模型转换
TFLite → Ruhmi MCU 部署模型
这一步是 AI 部署过程中非常关键的环节,因为 MCU 上的 NPU 只能运行特定格式的量化模型。
二、模型训练回顾
在上一阶段中,使用 CPU 训练 YOLO-Fastest 模型:
训练指令:
darknet.exe detector train datasets/voc.data  datasets/yolo-fastest.cfg -dont_show
由于使用 CPU 训练,速度较慢,大约3天训练了10000轮。
训练日志显示:
avg loss ≈ 8
说明模型已经开始收敛,因此暂时保存权重文件:
yolo-fastest_last.weights
随后进入模型转换阶段。
三、Darknet → TFLite 模型转换
1. 准备模型文件
需要准备两个文件:
yolo-fastest.cfg
yolo-fastest_last.weights
将它们复制到:
keras-YOLOv3-model-set
目录中。
2. 运行模型转换脚本
转换代码需要的参数如下:

首先激活 convert 环境:
conda activate convert
进入转换工具目录:
cd /path/to/keras-YOLOv3-model-set
运行转换脚本:
python tools/model_converter/conver2tflite_and_int8.py \
--config_path yolo-fastest.cfg \
--weights_path yolo-fastest_last.weights \
--output_path face.h5 \
--int8_img_path ../Yolo-Fastest/datasets/face/data_1/train/image/ \
--save_tflite_path face_int8.tflite \
-f
脚本会自动完成以下步骤:
读取 Darknet cfg
加载 weights
转换为 Keras 模型
生成 .h5
进行 INT8 量化
输出 .tflite 模型
最终得到:
face_int8.tflite
这个模型已经是 量化后的 TensorFlow Lite 模型。
四、TFLite → Ruhmi 模型转换
Titan Board 的 NPU 不能直接运行 .tflite,
必须转换为Ruhmi MCU 推理 格式。
1. 复制模型
将生成的模型:
face_int8.tflite
复制到:
ruhmi-framework-mcu/models
目录。
2. 运行部署脚本
首先进入 ruhmi 环境:
conda activate ruhmi
进入脚本目录:
cd /path/to/ruhmi-framework-mcu/scripts
运行部署指令:
python mcu_deploy.py --ethos --ref_data ../models/ deploy_qtzed_ethos

该脚本会:
解析 TFLite 计算图
编译 Ethos-U NPU 指令
生成 MCU 推理代码
输出可在 Titan 上运行的模型
最终生成:
NPU可部署模型文件
用于后续 MCU 工程调用。
五、代码解释
1. 参数说明
在转换命令中:
--config_path
YOLO 网络结构配置文件。
--weights_path
训练得到的权重文件。
--output_path
生成的 Keras .h5 模型。
--int8_img_path
量化校准数据集路径。
量化需要真实图像进行统计,否则精度会严重下降。
--save_tflite_path
输出的 TFLite INT8 模型。
2. 为什么需要 INT8 量化
Titan 的 Ethos-U NPU 主要支持:
INT8 推理
量化后:
优点:
推理速度更快
内存占用更小
更适合 MCU 设备
代价:
少量精度损失
3. Ruhmi 的作用
Ruhmi 是 MCU AI 部署工具链,它的作用是:
解析 TFLite 模型
编译 NPU 指令
生成 MCU 可调用代码
因此:TFLite → Ruhmi实际上是:AI模型 → MCU推理程序
六、成果展示
本阶段成功完成:
1. Darknet 模型转换
.weights → .h5 → .tflite
2. INT8量化
生成:
face_int8.tflite

3. NPU部署模型生成
完成:
TFLite → Ruhmi
在ruhmi-framework-mcu/scripts下生成可部署模型⽂件

为 Titan 板卡运行 AI 推理做好准备。
七、本阶段总结
本周主要完成了模型部署前最重要的一步:模型转换。
完成内容包括:
YOLO-Fastest 模型训练
Darknet → TFLite 转换
INT8 量化
Ruhmi MCU 部署模型生成
整个流程验证了:
训练模型能够成功转换
量化流程正确
Titan NPU 部署环境正常
八、下一步计划
下一阶段将进行:
Titan 板卡 AI 推理部署
摄像头图像采集
NPU 推理调用
串口输出检测结果
最终实现Titan Board 实时人脸检测系统。

1.png (600.76 KB, 下载次数: 0)

1.png

2.png (416.43 KB, 下载次数: 0)

2.png

3.png (429.2 KB, 下载次数: 0)

3.png

4.png (465.22 KB, 下载次数: 0)

4.png
分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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