PaddleDetection 加载量化后的模型报错
Created by: lguowang
@百度专家: 我目前在使用PaddleDetection中的模型推理,出现问题: 1.训练yolov3_mobile_v1 完成,并正常导出模型,并能用tools/cpp_infer.py正常生成图片, 2.量化训练yolov3_mobile_v1 完成,量化的模型能正常导出float int 两种模型,但当我把 --model_path设置为./output/mobilenetv11/int 时,出现如下错误: /usr/local/lib64/python3.6/site-packages/paddle/fluid/executor.py:782: UserWarning: The following exception is not an EOF exception. "The following exception is not an EOF exception.") Traceback (most recent call last): File "", line 6, in File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/executor.py", line 783, in run six.reraise(*sys.exc_info()) File "/usr/local/lib/python3.6/site-packages/six.py", line 693, in reraise raise value File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/executor.py", line 778, in run use_program_cache=use_program_cache) File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/executor.py", line 831, in _run_impl use_program_cache=use_program_cache) File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/executor.py", line 905, in _run_program fetch_var_name) paddle.fluid.core_avx.EnforceNotMet:
C++ Call Stacks (More useful to developers):
0 std::string paddle::platform::GetTraceBackString<std::string const&>(std::string const&, char const*, int) 1 paddle::platform::EnforceNotMet::EnforceNotMet(std::string const&, char const*, int) 2 paddle::operators::ConvOp::GetExpectedKernelType(paddle::framework::ExecutionContext const&) const 3 paddle::framework::OperatorWithKernel::ChooseKernel(paddle::framework::RuntimeContext const&, paddle::framework::Scope const&, paddle::platform::Place const&) const 4 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&, paddle::framework::RuntimeContext*) const 5 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&) const 6 paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, paddle::platform::Place const&) 7 paddle::framework::Executor::RunPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, bool, bool, bool) 8 paddle::framework::Executor::Run(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool, std::vector<std::string, std::allocatorstd::string > const&, bool, bool)
Python Call Stacks (More useful to users):
File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/framework.py", line 2525, in append_op attrs=kwargs.get("attrs", None)) File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/layer_helper.py", line 43, in append_op return self.main_program.current_block().append_op(*args, **kwargs) File "/usr/local/lib64/python3.6/site-packages/paddle/fluid/layers/nn.py", line 1405, in conv2d "data_format": data_format, File "/home/lgw/PaddleDetection/ppdet/modeling/backbones/mobilenet.py", line 84, in _conv_norm bias_attr=False) File "/home/lgw/PaddleDetection/ppdet/modeling/backbones/mobilenet.py", line 159, in call input, 3, int(32 * scale), 2, 1, name=self.prefix_name + "conv1") File "/home/lgw/PaddleDetection/ppdet/modeling/architectures/yolov3.py", line 61, in build body_feats = self.backbone(im) File "/home/lgw/PaddleDetection/ppdet/modeling/architectures/yolov3.py", line 162, in test return self.build(feed_vars, mode='test') File "slim_quantization_export_model.py", line 74, in main test_fetches = model.test(feed_vars) File "slim_quantization_export_model.py", line 119, in main()
Error Message Summary:
_Error: input and filter data type should be consistent
[Hint: Expected input_data_type == filter_data_type, but received input_data_type:5 != filter_data_type:21.] at (/paddle/paddle/fluid/operators/conv_op.cc:172)_ [operator < conv2d > error]
########################################## 我的cpp_demo.yml 配置如下:
demo for cpp_infer.py
use_python_inference: true # whether to use python inference mode: fluid # trt_int8, trt_fp16, trt_int8, fluid arch: YOLO # YOLO, SSD, RCNN, RetinaNet min_subgraph_size: 3 # need 3 for YOLO arch
visualize the predicted image
metric: VOC # COCO, VOC draw_threshold: 0.5
Preprocess:
- type: Resize target_size: 608 max_size: 608
- type: Normalize
mean:
- 0.485
- 0.456
- 0.406 std:
- 0.229
- 0.224
- 0.225 is_scale: True
- type: Permute to_bgr: False
- type: PadStride stride: 0 # set 32 on FPN and 128 on RetinaNet