图像分类回答整张图里有什么,目标检测还要给每个实例定位。一条预测通常包含类别、框和分数。先把框画对,再看模型指标,能省掉很多无效调参。
同一只框可以有三种写法
| 格式 | 含义 | 示例 |
|---|---|---|
xyxy |
左上角、右下角 | (20,10,60,30) |
左上角 xywh |
左上角、宽高 | (20,10,40,20) |
中心 xywh |
中心、宽高 | (40,20,40,20) |
COCO 常用左上角加宽高,YOLO 文本标签常用归一化中心与宽高。宽 100、高 50 的图中,上例归一化中心格式为 (0.4,0.4,0.4,0.4)。
标签还要说明坐标属于原图还是处理后的图。使用 letterbox 时,还原预测需要撤销缩放和补边。建议同时画出原图与变换后的标签,肉眼检查几个批次。
IoU 怎样算
IoU 是交集面积除以并集面积。这篇使用连续坐标,面积为 (x2-x1)*(y2-y1)。遇到含端点的整数像素约定时,先统一格式。
import math
def iou_xyxy(a, b):
for box in (a, b):
if len(box) != 4 or not all(math.isfinite(v) for v in box):
raise ValueError("four finite coordinates required")
if not (box[0] < box[2] and box[1] < box[3]):
raise ValueError("positive width and height required")
iw = max(0., min(a[2], b[2]) - max(a[0], b[0]))
ih = max(0., min(a[3], b[3]) - max(a[1], b[1]))
intersection = iw * ih
area_a = (a[2] - a[0]) * (a[3] - a[1])
area_b = (b[2] - b[0]) * (b[3] - b[1])
return intersection / (area_a + area_b - intersection)
truth = (0., 0., 10., 10.)
assert iou_xyxy(truth, truth) == 1
assert iou_xyxy(truth, (10., 0., 20., 10.)) == 0
assert math.isclose(iou_xyxy(truth, (5., 0., 15., 10.)), 1 / 3)
predictions = [(0.90, (0., 0., 9., 10.)), (0.80, truth)]
used = False
labels = []
for score, box in sorted(predictions, key=lambda item: item[0], reverse=True):
matched = not used and iou_xyxy(box, truth) >= 0.5
labels.append("TP" if matched else "FP")
used = used or matched
assert labels == ["TP", "FP"]
print("IoU and score-ordered duplicate checks passed")
这里高分预测先匹配,占用了唯一真实框,后面的重复预测计为 FP。正式 COCO 评估还处理 crowd、忽略区域和最大检测数,应该调用官方评估器。上面的练习只解释一个普通单框情况。
三个阈值分开记录
分数阈值决定保留哪些候选;NMS 的 IoU 阈值决定抑制哪些高重叠候选;评估 IoU 阈值决定定位是否合格。
NMS 通常按分数保留候选,逐步去掉与已选框重叠太高的预测。检查按类别还是类别无关处理,避免不同类别互相抑制。并列分数在不同实现上可能保留不同框。Torchvision NMS
有些检测器使用其他去重设计,是否需要 NMS 要看具体实现。
AP 的数值要带上条件
AP50 与 COCO 常见主指标不同,后者对 0.50 到 0.95 的十个 IoU 阈值取平均。还应记录类别、面积范围、每图检测数、划分和评估器版本。
先在验证集选择模型、分数阈值和后处理参数,测试集留到最后。漏检多时,回头看小目标、遮挡、标签缺失和缩放还原;误报多时,看重复框、背景与类别混淆。
练习:手画一个真实框与两个预测框,改变预测分数,观察上例 TP/FP 会怎样变化;再给图像增加补边,推导坐标还原公式。
资料:疏锦行计算机视觉专题《目标检测任务》第 5–13 页。几何例子已运行,检测模型尚未训练。
计算机视觉 03:目标检测的框、分数与评估
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法