OpenVINO双输出模型推理后处理:行人检测框绘制疑问
适配person-detection-0303双输出模型的后处理方案
核心处理逻辑
- 从推理结果中分别提取两个输出Blob:
boxes:形状为(100,5),每个元素对应[x_min, y_min, x_max, y_max, conf]labels:形状为(100,),元素为0(背景)或1(行人)
- 同步遍历两个输出数组,筛选有效检测框:
- 仅保留
labels[i] == 1的条目(行人目标) - 可选:设置置信度阈值(如0.5),保留
boxes[i][4] >= 阈值的条目
- 仅保留
- 按需将归一化坐标转换为图像像素坐标
伪代码示例(Python风格)
# 假设已通过OpenVINO推理得到两个输出结果 boxes = inference_results["boxes"] # shape: (100, 5) labels = inference_results["labels"] # shape: (100,) conf_threshold = 0.5 valid_detections = [] # 遍历所有检测结果 for box, label in zip(boxes, labels): x_min, y_min, x_max, y_max, conf = box # 筛选行人且置信度达标 if label == 1 and conf >= conf_threshold: # 若输入图像尺寸为img_w, img_h,转换为像素坐标 x_min_pix = int(x_min * img_w) y_min_pix = int(y_min * img_h) x_max_pix = int(x_max * img_w) y_max_pix = int(y_max * img_h) valid_detections.append( (x_min_pix, y_min_pix, x_max_pix, y_max_pix, conf) ) # valid_detections即为最终有效行人检测框列表
关键注意点
- 模型输出的坐标是归一化值(范围0-1),需乘以输入图像的实际宽高才能得到像素级坐标
- 置信度阈值可根据业务需求调整,阈值过高易漏检,过低会增加误检
- 若模型输出顺序与描述不符,需对应调整索引位置
内容的提问来源于stack exchange,提问作者bbartling
相关产品推荐
相关产品推荐

