首页 PaddleSlim 帖子详情
PaddleSlim 训练后 量化yolov3报错
收藏
快速回复
PaddleSlim 问答量化 1895 5
PaddleSlim 训练后 量化yolov3报错
收藏
快速回复
PaddleSlim 问答量化 1895 5
  • 版本、环境信息:
       1)PaddlePaddle版本:a5a8d14414213fadcfcd7dc60c794d1a515a390e 20191216 develop最新(因为1.6.2 release里没有包含 PostTrainingQuantization 类)
       2)系统环境:paddle 提供的docker:latest, python3.5

使用同样的代码,mobilenetv1 和 resnet已经跑通,模型换成yoloV3后报错

----------------------
Error Message Summary:
----------------------
Error: Input(ImgSize) dim[0] and Input(X) dim[0] should be same.
  [Hint: Expected dim_imgsize[0] == dim_x[0], but received dim_imgsize[0]:5 != dim_x[0]:10.] at (/paddle/paddle/fluid/operators/detection/yolo_box_op.cc:48)
  [operator < yolo_box > error]

运行代码

model="xxxx/yolov3_darknet_voc"
python post_training_quantization.py \
    --model_dir=${model} \
    --model_filename="model" \
    --params_filename="params" \
    --data_path=${samples} \
    --save_model_path="easydl_yolov3.int8" \
    --algo="KL" \
    --is_full_quantize=False \
    --batch_size=10 \
    --batch_nums=10 \
    --use_gpu=False \

模型来自 paddle models 官方voc 训练的,在这里我也传了一份 可供验证:
链接: https://pan.baidu.com/s/1-_lksetEE6rxZIxXVGQwFQ 提取码: y9y7

0
收藏
回复
全部评论(5)
时间顺序
AIStudio790966
#2 回复于2019-12

你好。
从你的log信息看是输入的维度不对,尺寸ImgSize和图像X必须对应,第一维必须相等。你查一下,可能ImgSize添加一个维度即可。
另外,建议使用最新的develop编译的whl包,这个接口比较老。目前最新的api接口如下:
image

0
回复
AIStudio790966
#3 回复于2019-12
  • 版本、环境信息:
       1)PaddlePaddle版本:a5a8d14414213fadcfcd7dc60c794d1a515a390e 20191216 develop最新(因为1.6.2 release里没有包含 PostTrainingQuantization 类)
       2)系统环境:paddle 提供的docker:latest, python3.5

使用同样的代码,mobilenetv1 和 resnet已经跑通,模型换成yoloV3后报错

----------------------
Error Message Summary:
----------------------
Error: Input(ImgSize) dim[0] and Input(X) dim[0] should be same.
  [Hint: Expected dim_imgsize[0] == dim_x[0], but received dim_imgsize[0]:5 != dim_x[0]:10.] at (/paddle/paddle/fluid/operators/detection/yolo_box_op.cc:48)
  [operator < yolo_box > error]

运行代码

model="xxxx/yolov3_darknet_voc"
python post_training_quantization.py \
    --model_dir=${model} \
    --model_filename="model" \
    --params_filename="params" \
    --data_path=${samples} \
    --save_model_path="easydl_yolov3.int8" \
    --algo="KL" \
    --is_full_quantize=False \
    --batch_size=10 \
    --batch_nums=10 \
    --use_gpu=False \

模型来自 paddle models 官方voc 训练的,在这里我也传了一份 可供验证:
链接: https://pan.baidu.com/s/1-_lksetEE6rxZIxXVGQwFQ 提取码: y9y7

请问是否还有问题?

0
回复
AIStudio790965
#4 回复于2019-12
  • 版本、环境信息:
       1)PaddlePaddle版本:a5a8d14414213fadcfcd7dc60c794d1a515a390e 20191216 develop最新(因为1.6.2 release里没有包含 PostTrainingQuantization 类)
       2)系统环境:paddle 提供的docker:latest, python3.5

使用同样的代码,mobilenetv1 和 resnet已经跑通,模型换成yoloV3后报错

----------------------
Error Message Summary:
----------------------
Error: Input(ImgSize) dim[0] and Input(X) dim[0] should be same.
  [Hint: Expected dim_imgsize[0] == dim_x[0], but received dim_imgsize[0]:5 != dim_x[0]:10.] at (/paddle/paddle/fluid/operators/detection/yolo_box_op.cc:48)
  [operator < yolo_box > error]

运行代码

model="xxxx/yolov3_darknet_voc"
python post_training_quantization.py \
    --model_dir=${model} \
    --model_filename="model" \
    --params_filename="params" \
    --data_path=${samples} \
    --save_model_path="easydl_yolov3.int8" \
    --algo="KL" \
    --is_full_quantize=False \
    --batch_size=10 \
    --batch_nums=10 \
    --use_gpu=False \

模型来自 paddle models 官方voc 训练的,在这里我也传了一份 可供验证:
链接: https://pan.baidu.com/s/1-_lksetEE6rxZIxXVGQwFQ 提取码: y9y7

请问是否还有问题?

修改了reader之后,报错

2019-12-24 08:49:29,224-INFO: all run batch: 0
2019-12-24 08:49:29,224-INFO: all run batch: 0
2019-12-24 08:49:29,224-INFO: calculate scale factor ...
2019-12-24 08:49:29,224-INFO: calculate scale factor ...
Traceback (most recent call last):
  File "custom_reader/ezdl_post_training_quantization.py", line 66, in <module>
    quantized_program = ptq.quantize()
  File "/usr/local/lib/python2.7/dist-packages/paddle/fluid/contrib/slim/quantization/post_training_quantization.py", line 202, in quantize
    self._calculate_scale_factor()
  File "/usr/local/lib/python2.7/dist-packages/paddle/fluid/contrib/slim/quantization/post_training_quantization.py", line 320, in _calculate_scale_factor
    data = self._sampling_data[var_name]
KeyError: u'yolo_block.1.1.1.conv.weights'
0
回复
AIStudio790965
#5 回复于2019-12

修改reader后可以了,原因是 reader yield的数据必须与inference model一致,且数量好像不能太少?

0
回复
AIStudio790967
#6 回复于2020-01
@chenxiaoyu3

我也遇到这个问题报错,请教一下reader是怎么实现的,谢谢

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户