YOLOv26 ONNX → RKNN 转换实践(RK3588)
在上一篇文章中,我们已经成功获取并验证了 YOLOv26 特调版 ONNX 模型 在 RK3588 上的推理流程参考:《Yolov26 在 RK3588 上的 RKNN ONNX 部署实践(C++)》。
本文将重点介绍 如何将 ONNX 模型转换为 RKNN 模型,包含量化数据集的准备、ONNX→RKNN 转换脚本以及实际调用示例。
一、量化数据集的创建
RKNN 在进行 INT8 / UINT8 量化时,需要提供一份 代表性数据集(Calibration Dataset)。该数据集用于统计激活分布,对最终精度影响较大。
本文采用从原始图片数据集中 随机抽取最多 400 张 JPG 图片 的方式,生成 RKNN 所需的数据集目录与 dataset.txt 文件。
1. 脚本说明
- 随机抽取图片,避免数据分布过于集中
- 自动创建
datasets/xxx/目录 - 生成与 RKNN 要求一致的相对路径
txt文件
2. 创建量化数据集脚本(create_rk_dataset.py)
#!/usr/bin/env python
# coding=utf-8
"""
Create calibration dataset for RKNN quantization
"""
import os
import random
import shutil
from pathlib import Path
# 原始图片路径
data_path = "/data/DATA/images"
# RKNN 数据集输出路径
rk_data_path = f"datasets/{
Path(data_path).parent.stem}"
# 清理旧文件
if os.path.exists(f"{
rk_data_path}.txt"):
os.remove(f"{
rk_data_path}.txt")
if os.path.exists(rk_data_path):
shutil.rmtree(rk_data_path)
os.makedirs(rk_data_path, exist_ok=True)
# 获取 JPG 文件列表
image_files = [f for f in os.listdir(data_path) if f.endswith('.jpg')]
print(f"找到 {
len(image_files)} 张 JPG 图片")
# 最多抽取 400 张
num_files =

&spm=1001.2101.3001.5002&articleId=157246259&d=1&t=3&u=5a7ab2604d3e4a669f7b3b311ee009ce)
1129

被折叠的 条评论
为什么被折叠?



