当前位置: 首页 > news >正文

yolov8检测模型pt转rknn

前言:
步骤是pt转onnx再转rknn。以下有些要点,请看代码备注。

一、pt2onnx.py

importargparseimportcv2importnumpyasnpimportonnxruntimeasortimporttorchfromultralyticsimportYOLO model=YOLO("runs/detect/train3/weights/best.pt")# 导出为 ONNX 格式,并指定保存路径output_path="runs/detect/train3/weights"# 自定义路径# 指定保存目录 特别注意点:opset = 12model.export(format="onnx",save_dir="custom_directory",opset=12)

二、onnx转rknn
onnx2rknn.py
注意点

  1. 准备校准图片
  2. 注意写好对应的相机型号
  3. 此转换过程是在pc端进行的
fromrknn.apiimportRKNNimportos# ===================== 配置(v2.3.2 严格兼容版) =====================ONNX_MODEL="./runs/detect/train3/weights/best.onnx"# 新导出的标准ONNXRKNN_MODEL="./runs/detect/train3/weights/obstacle_det.rknn"TARGET_PLATFORM="rk3588"# 根据你使用的相机型号进行替换CALIB_DIR="./calib_images/"# INT8校准图目录(10-50张同分布图片)CALIB_LIST="./calib_list.txt"# 🔧 必须是.txt文件路径,不能是列表# ===================== 自动生成校准数据集(关键修复) =====================defget_calib_dataset(calib_dir,CALIB_LIST):# 自动遍历文件夹,获取所有图片路径img_ext=[".jpg",".jpeg",".png",".bmp"]calib_data=[]forroot,_,filesinos.walk(calib_dir):forfileinfiles:ifany(file.lower().endswith(ext)forextinimg_ext):calib_data.append(os.path.join(root,file))iflen(calib_dataset)==0:print("❌ calib_images目录下无图片,请放入10-50张校准图")exit(1)# 写入列表文件withopen(OUTPUT_LIST,"w")asf:forpathincalib_dataset:f.write(path+"\n")returnCALIB_LIST# return calib_data# ===================== 初始化RKNN =====================rknn=RKNN(verbose=True)# mean_values长度匹配3通道,删除input_size_list等手动指定参数print("=== 配置RKNN模型(RK3588 v2.3.2兼容) ===")rknn.config(mean_values=[[0,0,0]],std_values=[[255,255,255]],target_platform=TARGET_PLATFORM,quantized_dtype="w8a8",# INT8量化optimization_level=3)# 删除inputs/outputs/input_size_list,让RKNN自动读取ONNX维度print("=== 加载ONNX模型 ===")ret=rknn.load_onnx(model=ONNX_MODEL)ifret!=0:print("❌ 加载ONNX失败")exit(ret)# 自动生成校准数据集,传入build函数print("=== 加载校准图 ===")CALIB_LIST=get_calib_dataset(CALIB_DIR,CALIB_LIST)# ===================== 构建INT8 RKNN模型 =====================print("=== 构建INT8 RKNN模型 ===")ret=rknn.build(do_quantization=True,dataset=CALIB_LIST# 校准图目录)ifret!=0:print("❌ 构建RKNN失败")exit(ret)# ===================== 导出RKNN模型 =====================print("=== 导出RKNN模型 ===")ret=rknn.export_rknn(RKNN_MODEL)ifret!=0:print("❌ 导出RKNN失败")exit(ret)print(f"\n🎉 RK3588专用INT8 RKNN模型生成完成:{RKNN_MODEL}")rknn.release()

三、最终验证步骤

  1. 放图:把 10~50 张图放进 calib_images/
  2. 生成列表:运行上面的生成脚本
  3. 转换:运行 python onnx2rknn.py
  4. 结果:生成 yolov8s_rk3588_int8.rknn
http://www.jsqmd.com/news/648864/

相关文章:

  • BilibiliDown:解锁B站音视频资源的高效智能解析工具
  • Qwen3-0.6B-FP8性能调优教程:vLLM引擎参数(max_model_len, gpu_memory_utilization)详解
  • Pikachu靶场实战:DOM型XSS漏洞攻防解析
  • LIONSIMBA工具箱实战:从P2D模型构建到热耦合仿真的MATLAB全流程解析
  • 如何通过智能温控彻底解决电脑风扇噪音问题?Fan Control实战深度解析
  • 保姆级教程:用ESPHome把ESP32-CAM摄像头变成智能家居监控(含Web端烧录避坑指南)
  • Swift-All效果实测:一键量化模型,显存占用降低75%
  • 2026年比较好的修复/呼市划痕修复优质商家推荐 - 品牌宣传支持者
  • 梯形图转 HEX 51plc 方案 5.6.4.2 版本使用问题探讨
  • Jenkins 2.516.2 + JDK8 实战:老项目CI/CD改造避坑指南(含多版本JDK切换技巧)
  • 从SFT到RL:Flow Matching VLA的强化学习后训练范式演进与实践
  • 【腹腔镜数据集实战】Cholec80+CholecSeg8k+Endoscapes多任务联合建模指南
  • git使用记录
  • HunyuanVideo-Foley私有化部署:基于Docker与GitHub Actions的CI/CD流水线
  • 树莓派Pico实战:有源与无源蜂鸣器的原理、驱动与游戏化应用
  • 从Transformer到SASRec:图解自注意力如何重塑序列推荐系统
  • 别再让仿真跑通宵!手把手教你用Xcelium的-mce和-mcebuild选项榨干服务器CPU
  • 如何添加超链接_a标签href属性详解【详解】
  • Z-Image-Turbo_UI界面效果展示:对比原图与修复图,细节提升肉眼可见
  • 2026年湖州汽车贴膜公司口碑推荐榜:龙膜,湖州汽车贴膜哪家强?专业老牌机构口碑推荐榜与未来趋势解析 - 品牌策略师
  • 忍者像素绘卷惊艳效果:浮雕式UI+硬边阴影+像素橙主色调实拍展示
  • 异常处理机制二:throws
  • 从“硬开关”到“软启动”:深入拆解一个经典12V缓启动电路的每个细节(含仿真文件)
  • Zemax新手别怕!手把手教你用自定义孔径文件模拟双缝干涉(附UDA文件)
  • 2026学生论文降重降AI工具怎么选 高效通关攻略来了
  • 崩坏星穹铁道全自动助手:三月七小助手终极使用指南
  • 用手势控制PPT翻页?基于RealSense D435i的Mediapipe手势识别开发日记
  • AI智能证件照制作工坊环境部署:Docker镜像运行详细说明
  • Nano-Banana GPU显存优化部署:4GB显存跑通专业拆解图生成
  • 手把手教你为Isaac Gym(强化学习环境)在Ubuntu 18.04上配置Vulkan后端(解决GPU渲染问题)