paddle 44 用onnxruntime实现ppyoloe模型的部署(含python和c++版本),支持batchsize

通过正常渠道导出的paddledetection由于内置nms操作,因而无法进行多图推理,正常导出模型部署的代码可以参考paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本),为此对源码深入研究,实现导出的onnx模型同时推理多个图像,并实现python与C++下的多图推理。

1、 修改ppyoloe_head.py

目标检测模型由backbone、neck和head组成,ppyoloe的head在paddledetection源码中为ppyoloe_head.py文件,其head在模型训练与导出时有不同forward路径。在模型导出时默认会boxes解码和nms操作,具体对应的函数为post_process,通过else分支导出的模型会包含nms操作,导致无法支持传入多个图像同时推理(因为nms操作后每个图像的boxes数量都不一致,导致concat操作会失败);只有通过if分支导出的模型,不包含nms才可以正常支持传入多个图像进行推理。为此,需要修改ppyoloe_head.py的代码

def post_process(self, head_outs,<

你可能感兴趣的:(paddlepaddle,paddle,c++,paddledetection)