Convert deform_conv2d to ONNX

I would like to convert models with deform_conv2d to ONNX format, but currently it’s only defined in torchvision: https://github.com/pytorch/vision/blob/master/torchvision/ops/deform_conv.py

So i add code to torchvision like this:

    @parse_args('v', 'v', 'v', 'v', 'is', 'is', 'is')
    def deform_conv(g, input, offset, weight, bias, stride, padding, dilation):
        return g.op('DeformConv', input, offset, weight, stride, padding, dilation)

    from torch.onnx import register_custom_op_symbolic
    register_custom_op_symbolic('torchvision::nms', symbolic_multi_label_nms, _onnx_opset_version)
    register_custom_op_symbolic('torchvision::roi_align', roi_align, _onnx_opset_version)
    register_custom_op_symbolic('torchvision::roi_pool', roi_pool, _onnx_opset_version)
    register_custom_op_symbolic('torchvision::deform_conv', deform_conv, _onnx_opset_version)

However, it does not work. Could you suggest me any idea to fix. What is the purpose of g.op()?

3 Likes