Paddle2ONNX icon indicating copy to clipboard operation
Paddle2ONNX copied to clipboard

导出onnx模型报错

Open phphappy opened this issue 1 year ago • 12 comments

问题描述 印章识别模型导出onnx使用如下命令 paddle2onnx --model_dir ./output/inference/det_r50_seal_0203_all --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ./model_convert/onnx/seal_db++.onnx --enable_onnx_checker True

更多信息 :

  • 用于部署的推理引擎: paddle2onnx 1.2.6 paddleocr 2.7.3 paddlepaddle-gpu 2.6.1.post117

  • 为什么需要转换为ONNX格式: 预训练,自动标注

  • 你的联系方式(Email/Wechat/Phone):

  • [email protected],

  • Wechat:22869750 报错截图 1723102285979

其他信息

phphappy avatar Aug 08 '24 07:08 phphappy

百度这边的解决办法是,将deformable_conv替换为普通卷积然后重新训练。

jiuyuedeyu156 avatar Aug 10 '24 14:08 jiuyuedeyu156

@jiuyuedeyu156 大牛您好,不明白您说的什么意思,我是小白,我是训练印章,导出onnx报错。

phphappy avatar Aug 12 '24 01:08 phphappy

你需要得到印章模型的paddle代码和训练集,然后把代码中deformable_conv算子改成conv2d,在训练集上重新训练,最后导出onnx。我们这边已经试验过了。

jiuyuedeyu156 avatar Aug 12 '24 02:08 jiuyuedeyu156

大佬,再问您一下,deformable_conv、conv2d哪个算子效果比较好?

phphappy avatar Aug 12 '24 10:08 phphappy

deformable_conv这个算子,ONNXRuntime不支持,导出了也没用

Zheng-Bicheng avatar Aug 12 '24 10:08 Zheng-Bicheng

非常感谢各位大佬

phphappy avatar Aug 12 '24 12:08 phphappy

大佬,再问您一下,deformable_conv、conv2d哪个算子效果比较好?

conv2d效果差,会掉几个点

jiuyuedeyu156 avatar Aug 13 '24 01:08 jiuyuedeyu156

@Zheng-Bicheng 大佬,需要改哪个文件哪个地方的代码?小白一枚,PaddleOCR]# find ./ | xargs grep -ri 'deformable_conv'搜索相关关键字也没搜索到。

phphappy avatar Aug 13 '24 09:08 phphappy

image 试下这几个关键词

jiuyuedeyu156 avatar Aug 13 '24 09:08 jiuyuedeyu156

@jiuyuedeyu156 大佬,具体如何修改呢?

phphappy avatar Aug 14 '24 00:08 phphappy

@jiuyuedeyu156 大佬,是需要改/ppdet/modeling/backbones /resnet.py中如下方法吗?

def _conv_norm(self,
               input,
               num_filters,
               filter_size,
               stride=1,
               groups=1,
               act=None,
               name=None,
               dcn_v2=False):
    _name = self.prefix_name + name if self.prefix_name != '' else name
    if not dcn_v2:
        conv = fluid.layers.conv2d(
            input=input,
            num_filters=num_filters,
            filter_size=filter_size,
            stride=stride,
            padding=(filter_size - 1) // 2,
            groups=groups,
            act=None,
            param_attr=ParamAttr(name=_name + "_weights"),
            bias_attr=False,
            name=_name + '.conv2d.output.1')
    else:

phphappy avatar Aug 15 '24 00:08 phphappy

抱歉哈,我是工程的,不清楚怎么改算法细节

jiuyuedeyu156 avatar Aug 15 '24 01:08 jiuyuedeyu156