Hello,
I am trying to build object detector by mask rcnn.
I use “mask_rcnn_coco.h5” model file from model link, and I use this repo to convert .h5 to uff model. It’s ok.
But when I convert from uff to engine file, I have some problem:
[TensorRT] ERROR: UffParser: Validator error: roi_align_mask_trt: Unsupported operation _PyramidROIAlign_TRT
[TensorRT] ERROR: Network must have at least one output
Traceback (most recent call last):
File “convert.py”, line 45, in
main()
File “convert.py”, line 38, in main
with build_engine_uff(uff_model_file) as engine:
AttributeError: enter
convert.py
import tensorrt as trt
class ModelData(object):
MODEL_PATH = "/home/nvidia/sampleUffMaskRCNN/data_05/mrcnn_nchw.uff"
INPUT_NAME = "input_image"
INPUT_SHAPE = (3,1024,1024)
OUTPUT_NAME = ["mrcnn_detection", "mrcnn_mask/Sigmoid"]
DTYPE = trt.float32
TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
def build_engine_uff(model_file):
with trt.Builder(TRT_LOGGER) as builder, builder.create_network() as network, trt.UffParser() as parser:
builder.max_workspace_size = 1 << 20
parser.register_input(ModelData.INPUT_NAME, ModelData.INPUT_SHAPE)
parser.register_output(ModelData.OUTPUT_NAME[0])
parser.register_output(ModelData.OUTPUT_NAME[1])
parser.parse(model_file, network)
return builder.build_cuda_engine(network)
def main():
uff_model_file = ModelData.MODEL_PATH
with build_engine_uff(uff_model_file) as engine:
with open('{}_{}.engine'.format("mask", 'rcnn'), 'wb') as f:
print("writing engine")
f.write(engine.serialize())
if __name__ == '__main__':
main()
How can I fix it?
Many thanks !