faster_rcnn_r50转ONNX部署Triton后dets输出含义咨询
dets字段含义
mmdetection导出的ONNX检测模型的dets字段为检测框输出,结构固定为[检测框数量, 5],维度定义如下:
- 前4位:边界框坐标,格式为
[x1, y1, x2, y2],分别对应检测框左上角、右下角的像素坐标 - 第5位:当前检测框的置信度分数,数值范围为0~1,分数越高说明检测结果置信度越高
输出全为负数/0的原因
该问题和ONNX转换过程的输出结构修改无关,属于部署阶段的常见问题,常见诱因有两个:
- 输入预处理未对齐
mmdetection导出ONNX模型时默认已将预处理逻辑剥离出计算图,要求推理端输入严格对齐训练阶段的预处理规则,你使用的faster_rcnn_r50_fpn模型预处理要求如下:- 原始图片为HWC格式的BGR排列,需要先转换为CHW格式的RGB排列
- 像素值做归一化:按通道分别减去均值
[123.675, 116.28, 103.53],再除以标准差[58.395, 57.12, 57.375] - 尺寸对齐:将图片缩放至导出时指定的608x608尺寸,多余区域的填充方式需要和mmdetection的填充规则一致
如果直接传入未预处理的原始图片,输入数值范围不符合模型预期,就会出现推理结果全为无效值的情况。
- 无效检测框占位
你转换时添加了model.test_cfg.deploy_nms_pre=-1参数,关闭了导出时的前置NMS优化,模型默认输出固定100个检测框,其中置信度低于阈值的无效检测框会被填充为0/负数,仅排在前面的部分为有效检测结果,可以先过滤置信度>0的结果确认是否存在有效输出。
输出结构说明
mmdetection的pytorch2onnx工具不会修改模型的输出结构,导出的labels和dets两个输出完全对齐PyTorch原生推理的输出格式,仅将后处理NMS逻辑嵌入到ONNX计算图中,不存在转换导致的结构变更问题。
内容的提问来源于stack exchange,提问作者Nrepesh Joshi
相关产品推荐
相关产品推荐

