KeyError: 'mrcnn_class_bn1/Reshape_5/shape' while converting to .uff for custom model MaskRCNN in Xavier NX

While using a custom model,during the .h5 to uff conversion,received an error like this.Any help will be highly appreciated !
Thankyou!

P.S - I was able to optimise the pretrained model from GitHub - matterport/Mask_RCNN: Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow in Nvidia Jetson Xavier NX.But When I tried to optimise the custom model I trained,it is showing this error.

Environment

TensorRT Version: 7.1.3.0
Nvidia Driver Version: 32.4.3
CUDA Version: 10.2.89
CUDNN Version: 8.0.0
Operating System + Version: Ubuntu 18.04.5 LTS
Python Version : python3.6
TensorFlow Version : 1.15.2
Jetpack version - 4.4
keras version - 2.1.3

This looks like a Jetson issue, moving into Jetson Xavier NX forum for resolution.

Hi,

Could you share the complete error/log with us?

Thanks.

Hi,
Thank you for your reply.

Please go through the log attached.
log.txt (8.3 KB)

Hi,

I removed ‘mrcnn_class_bn1/Reshape_5/shape’,‘mrcnn_class_bn1/Reshape_5’, ‘mrcnn_class_bn2/Reshape_5/shape’, ‘mrcnn_class_bn2/Reshape_5’, ‘mrcnn_mask_bn1/Reshape_5/shape’, ‘mrcnn_mask_bn1/Reshape_5’, ‘mrcnn_mask_bn2/Reshape_5/shape’, ‘mrcnn_mask_bn1/Reshape_5’, ‘mrcnn_mask_bn2/Reshape_5’,‘mrcnn_mask_bn3/Reshape_5/shape’, ‘mrcnn_mask_bn3/Reshape_5’,‘mrcnn_mask_bn4/Reshape_5/shape’, ‘mrcnn_mask_bn4/Reshape_5’ from config.py .

Then I received this error :

Using output node mrcnn_detection
Using output node mrcnn_mask/Sigmoid
Converting to UFF graph
Traceback (most recent call last):
File “…/…/mrcnn_to_trt_single.py”, line 186, in
main()
File “…/…/mrcnn_to_trt_single.py”, line 143, in main
text=True, list_nodes=list_nodes)
File “…/…/mrcnn_to_trt_single.py”, line 179, in convert_model
debug_mode = False
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/conversion_helpers.py”, line 276, in from_tensorflow_frozen_model
return from_tensorflow(graphdef, output_nodes, preprocessor, **kwargs)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/conversion_helpers.py”, line 225, in from_tensorflow
debug_mode=debug_mode)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py”, line 141, in convert_tf2uff_graph
uff_graph, input_replacements, debug_mode=debug_mode)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py”, line 126, in convert_tf2uff_node
op, name, tf_node, inputs, uff_graph, tf_nodes=tf_nodes, debug_mode=debug_mode)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py”, line 94, in convert_layer
return cls.registry_[op](name, tf_node, inputs, uff_graph, **kwargs)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter_functions.py”, line 337, in convert_reshape
uff_graph.reshape(inputs[0], inputs[1], name)
IndexError: list index out of range

uff version used is 0.6.9

Hi ,
The issue isnt still not solved.I worked around it several times.
I saved the pb file in binary to view the nodes.But since it was too big,I was unable to open.

I edited the config file and I have attached it here.

Once I run the mrcnn_to_trt_single.py script,I am obtaining this error.

P.S : whenever key error was obtaining I removed those layers.That is how I edited the config.py file.

config_edited.py (7.8 KB)

Hi,

Sorry for the late update.

The error shared in the log.txt file (Apr 23) is caused by the incorrect definition in the config.py.
It seems that you try to remove the layer which doesn’t exist in your .pb file.

For the second error shared in Apr 30.
The “list index out of range” error indicates the converter expects two input but you only have one on a certain layer.

To give a further suggestion, would you mind to share the .pb file with us?
Thanks.

Hi ,
It’s okay.
I removed some layers when it showed the key error.I tried opening the .pb in binary to check whether the nodes I removed are the correct ones or not.But since it was a file with large size,it was making my system hang.

I also debugged the converter_functions.py and its only returning one value like you said.

I have attached the .pb file here.

https://drive.google.com/file/d/1M69KtvkNOuUCOrpBU9WELOKGblgSYwta/view?usp=sharing

Hi,
I debugged the error and resolved the issue.After that,I got another error.

DEBUG [/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py:93] For node lambda_3/strided_slice with op StridedSlice, using conversion function: <function convert_strided_slice at 0x7f69d61d08>
Traceback (most recent call last):
File “…/…/mrcnn_to_trt_single.py”, line 186, in
main()
File “…/…/mrcnn_to_trt_single.py”, line 143, in main
text=True, list_nodes=list_nodes)
File “…/…/mrcnn_to_trt_single.py”, line 179, in convert_model
debug_mode = True
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/conversion_helpers.py”, line 276, in from_tensorflow_frozen_model
return from_tensorflow(graphdef, output_nodes, preprocessor, **kwargs)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/conversion_helpers.py”, line 225, in from_tensorflow
debug_mode=debug_mode)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py”, line 141, in convert_tf2uff_graph
uff_graph, input_replacements, debug_mode=debug_mode)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py”, line 126, in convert_tf2uff_node
op, name, tf_node, inputs, uff_graph, tf_nodes=tf_nodes, debug_mode=debug_mode)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter.py”, line 94, in convert_layer
return cls.registry_[op](name, tf_node, inputs, uff_graph, **kwargs)
File “/usr/lib/python3.6/dist-packages/uff/converters/tensorflow/converter_functions.py”, line 619, in convert_strided_slice
raise ValueError(“ellipsis_mask not supported”)
ValueError: ellipsis_mask not supported

I solved this error by changing “lambda_1”: mrcnn_detection_bboxes iof namespace_plugin_map in config.py. Then I was able to obtain the .uff model.

No. nodes: 2171
UFF Output written to mrcnn_nchw_anomalydetect.uff
UFF Text Output written to mrcnn_nchw_anomalydetect.pbtxt

But when I am running the inference,I got this error

05/07/2021-13:11:01] [I] Building and running a GPU inference engine for Mask RCNN
[05/07/2021-13:11:06] [E] [TRT] UffParser: Parser error: mrcnn_class_conv1/convolution: Order size is not matching the number dimensions of TensorRT

Also, I am not sure why the model summary of the model I trained is showing no specific shape of input.

Hi,

Could you enable the .pb file permission so we can check it?
By the way, could you also share the config.py with us?

Thanks.

Hi,
Please share the mail ID such that I can grant access.

I have attached the config.py here.

config_may7_edited.py (7.6 KB)

Thankyou.

There is no update from you for a period, assuming this is not an issue any more.
Hence we are closing this topic. If need further support, please open a new one.
Thanks

Hi,

Could you share the model from private message directly.
Thanks.