Toybrick

yolov5 onnx轉rknn時 用mmse 做quantized失敗

Stuart

注册会员

积分
165
发表于 2021-9-24 10:37:56    查看: 3848|回复: 6 | [复制链接]    打印 | 显示全部楼层
本帖最后由 Stuart 于 2021-9-24 10:40 编辑

yolov5使用的训练代码取自ultralytics/yolov5 master分支。
环境:PC ubuntu18.04 x86_64
rknn_tool v1.7.0

python3.6.9环境
tensorflow-gpu==1.14.0
torch==1.2.0
onnx==1.6
torchvision == 0.4.0

插入TB-RK1808S0
用yolov5 onnx轉檔rknn時, 設定如下
    rknn.config(reorder_channel='0 1 2',
                mean_values=[[0, 0, 0]],
                std_values=[[255, 255, 255]],
                optimization_level=3,
                target_platform = 'rk1808',
                output_optimize=1,
                quantized_algorithm = 'mmse')
                #mmse_epoch = 1,
                batch_size=1)
                #epochs=1000)
    ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)


當dataset只有一張圖片時,可以正常轉檔
但是超過一張圖片時就會報錯, message 如下

MMSE Quant Step 0:   1%|▌                                           | 2/168 [00:00<00:08, 20.55it/s]
E Catch exception when building RKNN model!
E Traceback (most recent call last):
E   File "rknn/base/RKNNlib/app/medusa/workspace.py", line 485, in rknn.base.RKNNlib.app.medusa.workspace.Workspace.sparse_run
E   File "rknn/base/RKNNlib/RKNN_session.py", line 37, in rknn.base.RKNNlib.RKNN_session.RKNNSession.run
E   File "/home/fw/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 950, in run
E     run_metadata_ptr)
E   File "/home/fw/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1149, in _run
E     str(subfeed_t.get_shape())))
E ValueError: Cannot feed value of shape (1, 320, 640, 3) for Tensor 'Placeholder:0', which has shape '(3, 320, 640, 3)'
E During handling of the above exception, another exception occurred:
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 616, in rknn.api.rknn_base.RKNNBase.build
E   File "rknn/api/rknn_base.py", line 1523, in rknn.api.rknn_base.RKNNBase._quantize2
E   File "rknn/base/RKNNlib/RK_nn.py", line 570, in rknn.base.RKNNlib.RK_nn.RKnn.quantize
E   File "rknn/base/RKNNlib/app/medusa/quantization.py", line 145, in rknn.base.RKNNlib.app.medusa.quantization.Quantization.run
E   File "rknn/base/RKNNlib/app/medusa/quantization.py", line 58, in rknn.base.RKNNlib.app.medusa.quantization.Quantization._run_quantization
E   File "rknn/base/RKNNlib/app/medusa/workspace.py", line 488, in rknn.base.RKNNlib.app.medusa.workspace.Workspace.sparse_run
E   File "rknn/api/rknn_log.py", line 312, in rknn.api.rknn_log.RKNNLog.e
E ValueError: Run layer Slice_Slice_9_215 catch exception: Cannot feed value of shape (1, 320, 640, 3) for Tensor 'Placeholder:0', which has shape '(3, 320, 640, 3)'
Build model failed!




這一段 which has shape '(3, 320, 640, 3) 是因為我放了3張圖片
如果不用mmse , dataset 2000張 都不會出現錯誤,可以正常轉檔

回复

使用道具 举报

bobby_jiang

高级会员

积分
538
发表于 2021-9-24 11:50:16 | 显示全部楼层
slice的这个问题是rknn 的一个bug,后面版本会修复。
回复

使用道具 举报

bobby_jiang

高级会员

积分
538
发表于 2021-9-24 14:08:42 | 显示全部楼层
你们把模型和代码发上来一下
回复

使用道具 举报

Stuart

注册会员

积分
165
 楼主| 发表于 2021-9-27 11:45:50 | 显示全部楼层
本帖最后由 Stuart 于 2021-9-27 11:58 编辑
bobby_jiang 发表于 2021-9-24 14:08
你们把模型和代码发上来一下

代碼
https://github.com/rockchip-linu ... onnx/yolov5/test.py
修改地方如下
anchors = [[10.0, 13.0], [16.0, 30.0], [33.0, 23.0], [30.0, 61.0], [62.0, 45.0], [59.0, 119.0], [116.0, 90.0], [156.0, 198.0], [373.0, 326.0]]

outputs=['357', '459', '521'])
model放在
https://1drv.ms/f/s!AgW-PZWqlkvUgjU4fWatxtet8TKI



回复

使用道具 举报

raul

中级会员

积分
235
发表于 2021-9-29 16:03:48 | 显示全部楼层
Stuart 发表于 2021-9-27 11:45
代碼
https://github.com/rockchip-linu ... onnx/yolov5/test.py
修改地方如下

该问题将在1.7.1版本中解决。
回复

使用道具 举报

Stuart

注册会员

积分
165
 楼主| 发表于 2021-9-30 08:26:00 | 显示全部楼层
raul 发表于 2021-9-29 16:03
该问题将在1.7.1版本中解决。

請問有預計何時發佈嗎?
回复

使用道具 举报

Stuart

注册会员

积分
165
 楼主| 发表于 2021-10-18 08:43:07 | 显示全部楼层
HI
請問有1.7.1版本 有預計何時發布嗎?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表