onnx 档案来源:onnx-yolov3
参考资料:
在 Windows 10 上,将 yolov3-tiny.onnx
转换为 Kneron AI dongle (耐能AI加速棒)可用的格式。
使用的耐能 AI 加速棒版本为 KL520。
使用的 Kneron Toolchain Docker Image 版本为 v0.14.1,如下图:
可参考:Kneron Linux Toolchain Manual
已备份到:archive.today
可参考:Install Docker Desktop on Windows
执行指令:
docker pull kneron/toolchain:latest
取得最新的 toolchain 映像档。
参考指令:
docker run --rm -it -v /mnt/docker:/docker_mount kneron/toolchain:latest
记得把 /mnt/docker 换成 yolov3-tiny.onnx
模型档案所在的资料夹,以方便转档时直接取用,建议额外创建一个资料夹,放置 yolov3-tiny.onnx
模型档案。
在 win 10 ,挂载资料夹时,路径要做一些修改。
例如:yolov3-tiny.onnx
模型档案所在的资料夹为C:\Users\p2330\Desktop\yolov3_onnx
要改成 /c/Users/p2330/Desktop/yolov3_onnx
。
C:
改成 /c
, \
改成 /
。
修改指令如下:
docker run --rm -it -v /c/Users/p2330/Desktop/yolov3_onnx:/docker_mount kneron/toolchain:latest
执行结果如下:
如下图,切换到 /docker_mount 目录,可以看到挂载的资料夹内有 yolov3-tiny.onnx
模型档案:
可参考:6 ONNX to ONNX (ONNX optimization)
复制 yolov3-tiny.onnx
到 data1 资料夹。
执行指令:
python /workspace/libs/ONNX_Convertor/optimizer_scripts/onnx2onnx.py yolov3-tiny.onnx -o yolov3-tiny_opt.onnx --add-bn -t
会报错:RuntimeError: Only support opset 11, but got 9
解决方式:因为目前支援的 onnx Opset version 为 11,但 yolov3-tiny.onnx
的 Opset version 为 9,所以需要更新 ONNX version。
可参考:8 ONNX Updater
执行指令:
python /workspace/libs/ONNX_Convertor/optimizer_scripts/onnx1_4to1_6.py yolov3-tiny.onnx yolov3-tiny_up.onnx
得到 yolov3-tiny_up.onnx
更新过的 onnx 档案。
执行指令:
python /workspace/libs/ONNX_Convertor/optimizer_scripts/onnx2onnx.py yolov3-tiny_up.onnx -o yolov3-tiny_opt.onnx --add-bn -t
可以得到 yolov3-tiny_opt.onnx
优化过的 onnx 档案。
可参考:3. Toolchain Scripts Usage 的 3.2 跟 3.6 小节
input_params.json
档案input_params.json
设定如下:
{
"model_info": {
"input_onnx_file": "/data1/yolov3-tiny_opt.onnx",
"model_inputs": [
{
"model_input_name": "input",
"input_image_folder": "/data1/imgs"
}
]
},
"preprocess": {
"img_preprocess_method": "yolo",
"img_channel": "RGB",
"radix": 7,
"keep_aspect_ratio": true,
"pad_mode": 1,
"p_crop": {
"crop_x": 0,
"crop_y": 0,
"crop_w": 0,
"crop_h": 0
}
}
}
imgs 的图片可以到 darknet/data/ 下载 .jpg 图档,作为转档时的图片输入。
记得把 imgs 放在 /data1 底下。
batch_input_params.json
档案batch_input_params.json
设定如下:
{
"encryption": {
"whether_encryption": false,
"encryption mode": 1,
"encryption_key": "0x12345678",
"key_file": "",
"encryption_efuse_key": "0x12345678"
},
"models": [
{
"id": 123,
"version": "1",
"path": "/data1/yolov3-tiny_opt.onnx",
"input_params": "/data1/input_params.json"
}
]
}
models 里面的 id 跟 version 可以依照使用情况自由调整。
做完以上操作後,目录结构如下图:
在 /data1 执行指令:
python /workspace/scripts/fpAnalyserBatchCompile_520.py -t 8
会产生 batch_compile 跟 fpAnalyser 资料夹。
转换後的模型档案为 batch_compile 资料夹内的 models_520.nef
。
可以将 models_520.nef
复制出来在 Kneron Host Lib 官方范例上使用。
>>: [机派X] Day4 - Bash 指令原来如此容易
『不是不是,你啥意思啊,不知道细节,找我参加什麽啊? 』 「我主管说,如果找你的话,我明年有机会加薪...
tags: 铁人赛 Makefile make 概述 碎念时间 昨天我们使用一条长长的指令,把网页跑...
53. Maximum Subarray 接下来我们挑 53. Maximum Subarray ...
“从概念上讲,大多数人在日常生活中都采用了某种形式的威胁建模,甚至没有意识到这一点。” (维基百科)...
接下来我们可以对我们每笔资料向左滑动後,让他可以被删除 func tableView(_ table...