I have trained (via transfer learning) a Mask R-CNN Benchmark, and have converted it to ONNX successfully (via https://github.com/BowenBao/maskrcnn-benchmark/tree/onnx_stage_mrcnn) but I am having trouble running the OpenVINO model optimiser on it.
Running the command from here works for the pretrained sample model given, but not on mine. The first set of errors I had were due to node IDs being out of bounds since my model has fewer classes than COCO (I'm running on 5 + background), so I went through the two graphs manually and found the corresponding IDs for all the nodes mentioned in mask_rcnn.json. Now when I run it I get:
[ WARNING ] Please set `version` attribute for node 1108 with type=<UNKNOWN> [ WARNING ] Please set `version` attribute for node 1406 with type=<UNKNOWN> [ WARNING ] Please set `version` attribute for node 1704 with type=<UNKNOWN> [ WARNING ] Please set `version` attribute for node 2002 with type=<UNKNOWN> [ WARNING ] Please set `version` attribute for node 2300 with type=<UNKNOWN> [ ERROR ] List of operations that cannot be converted to Inference Engine IR: [ ERROR ] NonZero (5) [ ERROR ] 1108 [ ERROR ] 1406 [ ERROR ] 1704 [ ERROR ] 2002 [ ERROR ] 2300 [ ERROR ] Part of the nodes was not converted to IR. Stopped.
I've checked the sample model which converts ok and that contains NonZero operations, so why is it having problems with this one? Is there anything else I need to do to get it to convert properly?
The model you trained contains multiple NonZero operations which are not supported for conversion over to IR. You can find the list of officially supported ONNX operations here https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_Supported_Frameworks_Layers.html#o...
In that case you might want to take a look at this Github thread where the same topic being discussed along with some potential workaround methods provided.
Hope this helped.
Best regards, Max.