通用链路:训练权重 (.pt/.pth)→导出 ONNX→PC 端工具转硬件专属模型→盒子端部署推理→集成视频 / API 服务
一、第一步:训练模型导出标准 ONNX(PC 训练机完成)
主流 YOLOv5/v8/v10、分类、分割模型统一先出 ONNX,固定输入尺寸,关闭动态 shape,方便量化

1.PyTorch (YOLO) 导出命令
# YOLOv8导出,imgsz和后续转换保持一致
yolo export model=自定义训练best.pt format=onnx imgsz=640,640 opset=12 simplify=True
参数:simplify=True简化 onnx 算子、去除冗余节点;opset11~12 适配绝大多数 NPU 转换工具
2. 避坑要点
1. 禁用torch.nn.Upsample(scale_factor=动态值),固定尺寸;
2. 预处理(归一化、resize)尽量写到推理代码,不要嵌入模型,减少转换失败概率。
二、第二步:PC 端模型量化 + 转为芯片专属格式(核心步骤)
方案 1:瑞芯微 RK3588/RK1828 盒子(生成.rknn)
工具:RKNN-Toolkit2(x86 电脑安装)
1. 安装环境
pip install rknn-toolkit2
2. 极简转换 Python 代码
from rknn.api import RKNN
rknn = RKNN()
# 加载onnx
rknn.load_onnx('best.onnx')
# 配置:RK3588、INT8量化
rknn.config(target_platform='rk3588',quantized_dtype='asymmetric_quantized-u8')
rknn.build(do_quantization=True,dataset='./calib.txt')#校准数据集(20~100张图片)
rknn.export_rknn('custom.rknn')
rknn.release()
输出:custom.rknn(NPU 加速模型,体积≈原浮点 1/4,提速 2~4 倍)
方案 2:算能 BM1684X/BM1688 盒子(生成.bmodel)
工具:TPU-MLIR + sophon-model(x86 Ubuntu)
# ONNX转INT8 bmodel
sophon-model --mode convert --model best.onnx --output custom.bmodel --target BM1684X --qtype INT8
输出custom.bmodel,为算能 TPU 原生推理格式
方案 3:英伟达 Jetson 盒子
ONNX→TensorRT(.engine):trtexec --onnx=best.onnx --fp16 --saveEngine=best.engine
三、第三步:模型 + 推理程序上传边缘盒子
1. 盒子环境准备(Linux 系统,ARM aarch64)
RK 盒子:预装librknnrt.soNPU 运行库;算能盒子预装sophon-sailSDK(默认路径/opt/sophon/)
上传方式:
①SSH scp 传输:scp custom.rknn root@盒子IP:/root/model/
②U 盘拷贝、samba 共享
2. 盒子端 2 种推理运行方式
方式 A:Python 快速调试(最快落地,验证模型)
RK3588 Python 示例
from rknn.api import RKNN
rknn=RKNN()
rknn.load_rknn('./custom.rknn')
rknn.init_runtime()#绑定NPU
# 读取图片预处理→推理→解析检测框
BM1684X Python 示例(sail 库)
import sophon.sail as sail
handle = sail.Handle(0)
engine = sail.Engine(handle,"custom.bmodel",0)
# 输入图像numpy数组推理
out = engine.process("images",[img_np])
方式 B:C++ 编译成品程序(量产商用)
1. PC 交叉编译 aarch64 可执行文件;
2. 编译产物 + 模型一起传到盒子,./detect ./custom.rknn直接运行。
四、第四步:业务集成(摄像头接入 + HTTP 接口)
1. 视频流接入:FFmpeg/OpenCV 读取 RTSP 摄像头→帧预处理→送入模型推理;
2. 对外 API:用 FastAPI/Flask 封装推理接口,盒子开启 http 服务,后端平台调用;
3. 容器部署(可选):打包 Docker 镜像,docker run一键启动算法服务,方便批量盒子统一部署。
五、常见优化 & 报错处理
1. 量化后精度暴跌:补充校准数据集、改用 FP16 量化、部分层强制浮点;
2. 转换 onnx 报错:用onnx-simplifier精简模型pip install onnx-simplifier && python -m onnxsim best.onnx sim_best.onnx;
3. 盒子 NPU 跑不满:固定输入分辨率、开启多 batch 推理、调整 NPU 内存分配(BM 系列专用内存修改工具)。
六、轻量化一键部署(无代码快速上线)
盒子预装推理管理平台(万物纵横 DA 系列边缘盒配套管理系统):
1. 后台上传 ONNX,平台自动云端转 rknn/bmodel;
2. 页面选择模型→绑定摄像头通道→一键启用智能识别。
需求留言: