从 PyTorch 到 RKNN:一个复杂深度学习模型转换项目的全流程复盘
本文详细记录一次将 PyTorch 模型 (.pth.tar) 转换为 Rockchip 平台专用 RKNN 模型 (.rknn) 的完整流程。涉及环境配置、依赖冲突以及最终的解决方案,希望能为面临类似任务的开发者提供一份详尽的参考。0 前言
0.1 最终目标
源模型: 一个基于 PyTorch、以 ResNet 为骨干网络的检测模型。
目标格式: 适用于 Rockchip RK3576 芯片的 RKNN 2.1 版本模型。
核心需求: 模型需经过 INT8 量化以在嵌入式端达到高性能。
0.2 最终成功的环境配置
经过多次尝试,以下是最终确定的、能够稳定运行所有转换任务的环境版本组合。
基础环境:
Linux (e.g., Ubuntu)
Python: 3.6
核心AI框架:
PyTorch: 1.13.1 (cu117)
TorchVision: 0.14.1
TorchAudio: 0.13.1
模型转换工具:
ONNX: 1.12.0
ONNX Runtime: 1.12.0
RKNN-Toolkit2: 2.3.2
关键依赖库:
NumPy:calibration.lst准备转换脚本 convert_to_rknn.py (内容见下一节)
1.5 执行模型转换
由于系统 PATH 变量可能存在问题,建议使用Python解释器的绝对路径来确保调用正确的环境。
查找您的Python解释器绝对路径
conda create -n rknn_py36_env python=3.6 pip -y(假设输出为 /path/to/your/anaconda3/envs/rknn_py36_env/bin/python)
使用绝对路径运行脚本 (请替换为上一步的实际输出)
conda activate rknn_py36_env成功后,项目目录下会生成最终的 acm_model_256.rknn 文件。
2 模型转换脚本
点击展开查看完整的Python脚本cd ~/your/rknn-toolkit2-v2.3.2-2025-04-09/3 排错历程与问题归纳
错误现象 (Symptom)根本原因 (Root Cause)最终解决方案 (Final Solution)ModuleNotFoundError (e.g., torch, cv2)Conda环境中缺少必需的Python库。在激活的环境中使用 pip install 或 conda install 安装缺失的包。FileNotFoundError (e.g., config.json, 图片, .lst文件)文件路径错误、文件名不匹配、或数据加载代码有缺陷。修正脚本/配置文件中的路径,重命名文件,或修改数据加载器代码以正确拼接扩展名。IndentationError编辑代码时混用了Tab和空格,或意外删除了函数体。使用编辑器的“将缩进转换为空格”功能统一代码格式,或补全缺失的代码。pip安装成功但python找不到模块PATH环境变量配置错误,导致终端优先调用了Conda环境之外的另一个Python解释器。[临时方案]使用Python解释器的绝对路径来执行命令。[根本方案]修改~/.bashrc文件,注释掉错误的PATH设置.Solving environment: failed (Conda错误)底层网络问题(代理/防火墙)导致Conda无法下载或解析包索引;或极其复杂的依赖冲突。[网络]联系管理员配置网络代理。[依赖]彻底重建环境,并采用分步或手动指定所有版本号的方式安装。AttributeError: 'onnx' has no attribute 'mapping'RKNN-Toolkit2代码与过新版的onnx库不兼容。将 onnx 和 onnxruntime 降级到 1.12.0 版本。...requires onnx>=1.16.1, but you have onnx 1.12.0...RKNN-Toolkit2安装元数据与其代码的实际运行要求自相矛盾。安装rknn-toolkit2的.whl文件时,使用 --no-dependencies 参数忽略其错误的依赖检查。RuntimeError: ... no kernel image is available ...PyTorch版本过旧,不兼容新版GPU的计算能力。安装与GPU硬件匹配的、更新的PyTorch GPU版本。A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.xNumPy 2.0 引入了不向后兼容的API改动。将NumPy降级到2.0以下的版本 (pip install numpy" 喜欢鼓捣这些软件,现在用得少,谢谢分享! 感谢,下载保存了 感谢分享,下载保存了,貌似很强大 分享、互助 让互联网精神温暖你我 收藏一下 不知道什么时候能用到 喜欢鼓捣这些软件,现在用得少,谢谢分享! 感谢分享,下载保存了,貌似很强大 感谢,下载保存了 过来提前占个楼 yyds。多谢分享 感谢分享,下载保存了,貌似很强大 前排留名,哈哈哈 感谢发布原创作品,程序园因你更精彩 热心回复! 用心讨论,共获提升! 感谢分享 感谢分享,学习下。 这个有用。 不错,里面软件多更新就更好了
页:
[1]
2