我使用这个 repo 在 Tensorflow 2.0 中训练了一个 yolov3-tiny 模型:https ://github.com/zzh8829/yolov3-tf2
在推理时,该模型使用两个包裹在 tf-keras lambda 层中的函数进行后处理,它们是:
- yolo_boxes :根据模型输出的偏移量计算实际的盒子坐标
- yolo_nms :使用 tf.image.combined_non_max_suppression 进行非最大抑制
boxes_0 = Lambda(lambda x: yolo_boxes(x, anchors[masks[0]], classes),name='yolo_boxes_0')(output_0)
boxes_1 = Lambda(lambda x: yolo_boxes(x, anchors[masks[1]], classes),name='yolo_boxes_1')(output_1)
outputs = Lambda(lambda x: yolo_nms(x, anchors, masks, classes),name='yolo_nms')((boxes_0[:3], boxes_1[:3]))
我已经创建了这个推理模型的冻结 pb,并将其转换为 ONNX。但我无法弄清楚如何进行。如何为 yolo_boxes 创建 python Tensorrt 插件?我在网上找不到任何 Lambda 层插件的材料,并且如果没有 yolo_boxes 插件,我无法测试 tensorrts 自定义 NMS 插件。