You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MMDetection推理结果中提取坐标/形状并转换格式?

MMDetection检测结果(results)解析与格式转换

一、results格式说明

inference_detector返回的results是一个元组,不同任务下结构略有区别:

  • 目标检测任务:元组仅包含检测框数据,第一个元素是长度等于类别数的列表。每个子列表对应一类的所有检测结果,每一项格式为 [x1, y1, x2, y2, score]:
    • x1, y1:检测框左上角的像素坐标
    • x2, y2:检测框右下角的像素坐标
    • score:该检测结果的置信度(0-1之间)
  • 实例分割任务:元组会多一个掩码数据元素,第二个元素同样是按类别划分的列表,每个子列表对应一类的实例掩码,掩码是二维数组,标记对应像素是否属于该实例

二、提取坐标/形状的示例代码

如果是目标检测任务,提取所有检测框、置信度和类别ID的代码如下:

# 初始化存储变量
all_boxes = []
all_scores = []
all_class_ids = []

# 遍历每个类别的检测结果
for class_id, bboxes in enumerate(results[0]):
    for bbox in bboxes:
        # 拆分坐标和置信度
        x1, y1, x2, y2, score = bbox
        all_boxes.append([x1, y1, x2, y2])
        all_scores.append(float(score))
        all_class_ids.append(class_id)

如果是实例分割任务,提取掩码的逻辑类似,直接遍历results[1]即可。

三、转换为COCO格式的方法

MMDetection内置了工具可以直接把results转成COCO数据集格式:

单张图片结果转换

使用bbox2result(目标检测)或segm2result(实例分割)工具函数,先转成标准格式再导出为JSON:

from mmdet.core.evaluation import bbox2result
import json

# model.CLASSES是模型的类别名称列表,比如['cat', 'dog', ...]
# 如果是实例分割,传入results[1]作为第二个参数
coco_style_result = bbox2result(results[0], model.CLASSES)

# 导出为JSON文件
with open('single_image_coco_result.json', 'w') as f:
    json.dump(coco_style_result, f, indent=4)

批量图片结果转换

如果需要批量处理并生成符合COCO评估要求的JSON(包含图片ID等信息),可以参考MMDetection官方测试脚本的逻辑,结合数据集标注信息来生成,核心还是用上述转换函数来处理单张结果后汇总。


内容的提问来源于stack exchange,提问作者Firok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:30:51