一個愿意佇立在巨人肩膀上的農民......
?一、paddle轉onnx轉rknn環境搭建
????????paddle轉onnx和onnx轉rknn兩個環境可以分開搭建,也可以搭建在一起。這里選擇分開搭建,先搭建paddle轉onnx。
1.1、創建環境
????????選擇python3.8.13包進行創建環境
conda create --name paddle2rknn libprotobuf python==3.9
1.2、進入環境
????????命令如下:
conda activate paddle2rknn
1.3、RKNN-Toolkit2工具安裝
????????RKNN-Toolkit2是為用戶提供在 PC、Rockchip NPU 平臺上進行模型轉換、推理和性能評估的開發套件,RKNN-Toolkit2適用于RK3566、RK3568、RK3588/RK3588S、RV1103、RV1106等型號的芯片。RKNN-Toolkit2的適配文件可以從下方鏈接獲取:
https://download.csdn.net/download/weixin_41809117/88879019?spm=1001.2014.3001.5503https://download.csdn.net/download/weixin_41809117/88879019?spm=1001.2014.3001.5503
????????下載解壓后這里RKNN-Toolkit2的根目錄為./rknn-toolkit2/packages/。目前提供兩種方式安裝RKNN-Toolkit2:一是通過Python包安裝與管理工具pip進行安裝;二是運行帶完整RKNN-Toolkit2工具包的docker鏡像。本文采用第一種方式。
????????切換到RKNN-Toolkit2根目錄:
cd /home/ub/下載/rknn-toolkit2/rknn-toolkit2/packages/
????????安裝依賴,因為我們環境的python版本是3.10.0,所以這里執行:
pip install -r requirements_cp39-1.6.0.txt
????????安裝RKNN-Toolkit2:
pip install rknn_toolkit2-1.6.0+81f21f4d-cp39-cp39-linux_x86_64.whl
1.4、paddle2onnx工具安裝
????????查看paddle2onnx可安裝版本:
pip index versions paddle2onnx
????????默認安裝的就是最新版本,這里指定1.0.8版本,否則會因為onnx版本版本太高,與RKNN-Toolkit2不兼容:
pip install paddle2onnx==1.0.8
1.5、解決相關依賴問題
????????到此,paddle轉onnx轉rknn環境基本搭建完成,但是還要解決一下包依賴的問題。
??????? 安裝pip依賴查看工具:
pip install pipdeptree
????????查看依賴關系:
pipdeptree -p paddle2onnx
????????根據終端打印的內容進行包的安裝和版本更換。
pip install /*包名*/==/*版本號*/
二、模型轉換
????????Paddle2ONNX 支持將 PaddlePaddle 模型格式轉化到 ONNX 模型格式。通過 ONNX 可以完成將 Paddle 模型到多種推理引擎的部署,包括 TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它對 ONNX 開源格式進行支持的推理引擎或硬件。Paddle2ONNX包可通過如下連接下載:
https://download.csdn.net/download/weixin_41809117/88879464?spm=1001.2014.3001.5503https://download.csdn.net/download/weixin_41809117/88879464?spm=1001.2014.3001.5503
2.1、獲取PaddlePaddle部署模型
????????Paddle2ONNX 在導出模型時,需要傳入部署模型格式,包括兩個文件
????????a).model_name.pdmodel
: 表示模型結構
????????b).model_name.pdiparams
: 表示模型參數 [注意] 這里需要注意,兩個文件其中參數文件后輟為 .pdiparams
,如你的參數文件后輟是 .pdparams
,那說明你的參數是訓練過程中保存的,當前還不是部署模型格式。 部署模型的導出可以參照各個模型套件的導出模型文檔。
2.2、命令行模型轉換
????????指令paddle2onnx相關參數如下表:
參數 | 參數說明 |
---|---|
--model_dir | 配置包含 Paddle 模型的目錄路徑 |
--model_filename | [可選] 配置位于 --model_dir 下存儲網絡結構的文件名 |
--params_filename | [可選] 配置位于 --model_dir 下存儲模型參數的文件名稱 |
--save_file | 指定轉換后的模型保存目錄路徑 |
--opset_version | [可選] 配置轉換為 ONNX 的 OpSet 版本,目前支持 7~16 等多個版本,默認為 9 |
--enable_dev_version | [可選] 是否使用新版本 Paddle2ONNX(推薦使用),默認為 True |
--enable_onnx_checker | [可選] 配置是否檢查導出為 ONNX 模型的正確性, 建議打開此開關, 默認為 False |
--enable_auto_update_opset | [可選] 是否開啟 opset version 自動升級功能,當低版本 opset 無法轉換時,自動選擇更高版本的 opset進行轉換, 默認為 True |
--deploy_backend | [可選] 量化模型部署的推理引擎,支持 onnxruntime、tensorrt 或 others,當選擇 others 時,所有的量化信息存儲于 max_range.txt 文件中,默認為 onnxruntime |
--save_calibration_file | [可選] TensorRT 8.X版本部署量化模型需要讀取的 cache 文件的保存路徑,默認為 calibration.cache |
--version | [可選] 查看 paddle2onnx 版本 |
--external_filename | [可選] 當導出的 ONNX 模型大于 2G 時,需要設置 external data 的存儲路徑,推薦設置為:external_data |
--export_fp16_model | [可選] 是否將導出的 ONNX 的模型轉換為 FP16 格式,并用 ONNXRuntime-GPU 加速推理,默認為 False |
--custom_ops | [可選] 將 Paddle OP 導出為 ONNX 的 Custom OP。 例如:--custom_ops '{"paddle_op":"onnx_op"},默認為 {} |
??????? 模型轉換指令:
paddle2onnx --model_dir models --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 12 --save_file saveonnx/model.onnx --enable_onnx_checker True
??????? 轉換結果在./Paddle2ONNX/saveonnx/model.onnx