Facing Errors in Compiling Faster R-CNN (ONNX) with Apache TVM

I am facing an error while compiling the Faster R-CNN model with Apache TVM. I am using the onnx file and then while compilation I see the following error (attached below). There is also another similar error that was posted on the forum which remains unanswered: [Bug][ONNX] Found null pointer node while traversing AST Hoping that this gets resolved. Here’s the code and error snippet. Code: !tvmc compile
–target “llvm”
–input-shapes “images:[1,3,224,224]”
–output faster_rcnn-tvm.tar
/content/faster_rcnn.onnx

Error: Traceback (most recent call last): File “/usr/local/bin/tvmc”, line 8, in sys.exit(main()) File “/usr/local/lib/python3.10/dist-packages/tvm/driver/tvmc/main.py”, line 115, in main sys.exit(_main(sys.argv[1:])) File “/usr/local/lib/python3.10/dist-packages/tvm/driver/tvmc/main.py”, line 103, in _main return args.func(args) File “/usr/local/lib/python3.10/dist-packages/tvm/driver/tvmc/compiler.py”, line 174, in drive_compile tvmc_model = frontends.load_model(args.FILE, args.model_format, args.input_shapes) File “/usr/local/lib/python3.10/dist-packages/tvm/driver/tvmc/frontends.py”, line 476, in load_model mod, params = frontend.load(path, shape_dict, *kwargs) File “/usr/local/lib/python3.10/dist-packages/tvm/driver/tvmc/frontends.py”, line 169, in load return relay.frontend.from_onnx(model, shape=shape_dict, kwargs) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/frontend/onnx.py”, line 6226, in from_onnx mod, params = g.from_onnx(graph, opset) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/frontend/onnx.py”, line 5887, in from_onnx self._construct_nodes(graph) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/frontend/onnx.py”, line 5999, in _construct_nodes op = self._convert_operator(op_name, inputs, attr, self.opset) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/frontend/onnx.py”, line 6110, in _convert_operator sym = convert_map[op_name](inputs, attrs, self._params) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/frontend/onnx.py”, line 1650, in _impl_v11 value = fold_constant(_op.take(inputs[2], _op.const(0))) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/frontend/common.py”, line 511, in fold_constant return _transform.FoldConstantExpr(node, mod) File “/usr/local/lib/python3.10/dist-packages/tvm/relay/transform/transform.py”, line 280, in FoldConstantExpr return _ffi_api.FoldConstantExpr(expr, mod, fold_qnn) File “tvm/_ffi/_cython/./packed_func.pxi”, line 331, in tvm._ffi._cy3.core.PackedFuncBase.call File “tvm/_ffi/_cython/./packed_func.pxi”, line 262, in tvm._ffi._cy3.core.FuncCall File “tvm/_ffi/_cython/./packed_func.pxi”, line 251, in tvm._ffi._cy3.core.FuncCall3 File “tvm/_ffi/_cython/./base.pxi”, line 181, in tvm._ffi._cy3.core.CHECK_CALL tvm._ffi.base.TVMError: Traceback (most recent call last): 8: TVMFuncCall 7: tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::RelayExpr const&, tvm::IRModule const&, bool)>::AssignTypedLambda<tvm::relay::transform::{lambda(tvm::RelayExpr const&, tvm::IRModule const&, bool)#1}>(tvm::relay::transform::{lambda(tvm::RelayExpr const&, tvm::IRModule const&, bool)#1}, std::string)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue)#1}> >::Call(tvm::runtime::PackedFuncObj const, tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue) 6: tvm::relay::transform::FoldConstantExpr(tvm::RelayExpr const&, tvm::IRModule const&, bool) 5: tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&) 4: void tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#1}, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#2}, tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#1}, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#2}>(tvm::RelayExpr, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#1}, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#2})::{lambda(tvm::RelayExpr const&)#1}>(tvm::RelayExpr, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#1}, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#2}, tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#1}, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#2}>(tvm::RelayExpr, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#1}, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::{lambda(tvm::RelayExpr const&)#2})::{lambda(tvm::RelayExpr const&)#1}) [clone .isra.0] 3: tvm::relay::MixedModeMutator::VisitLeaf(tvm::RelayExpr const&) 2: _ZN3tvm5relay16M 1: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&) 0: tvm::relay::ExprFunctor<void (tvm::RelayExpr const&)>::VisitExpr(tvm::RelayExpr const&) [clone .part.0] File “/workspace/tvm/include/tvm/relay/expr_functor.h”, line 92 TVMError:

An error occurred during the execution of TVM. For more information, please see: Handle TVM Errors — tvm 0.16.dev0 documentation

Check failed: (n.defined()) is false: Found null pointer node while traversing AST. The previous pass may have generated invalid data.

Here are some other necessary details:

  1. TVM version: apache-tvm-0.11.1
  2. Hardware and OS: Google Colab CPU, Windows
  3. Using the LLVM IR as target i.e. “llvm” flag while compiling
  4. Model: fasterrcnn_resnet50_fpn from torchvision models
  5. Input shape: (1, 3, 800,800)