目标检测中先验框 anchor的作用

背景

在目标检测中,不论是一阶段还是二阶段检测器,似乎都绕不开一个东西就是anchor。所谓anchor就是预设一组或几组不同尺度不同长宽比的固定参考框,每个参考框负责检测与其交并比大于阈值(预设值0.5或0.7)的目标。在anchor之前,一般是采用 金字塔多尺度+遍历滑窗的机制,耗费时间效果也差强人意。如2016ECCV提出的yolo,或者说是yolov1就采用的是这种全局回归的方法, 难以解决目标的类别不确定、数量不确定、位置不确定、尺度不确定等问题。在yolov2中采用了anchor机制,网络的召回率得到了很好的提升,后续的yolo系列都延续了这一做法。

什么是先验anchor?

YOLO2已经开始采用K-means聚类得到先验框的尺寸,YOLO3延续了这种方法,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框。在COCO数据集这9个先验框是:
(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)。
在最小的13 * 13特征图上(有最大的感受野)应用较大的先验框(116×90),(156×198),(373×326),适合检测较大的对象。
中等的26 * 26特征图上(中等感受野)应用中等的先验框(30×61),(62×45),(59×119),适合检测中等大小的对象。
较大的52 * 52特征图上(较小的感受野)应用较小的先验框(10×13),(16×30),(33×23),适合检测较小的对象。
下图为先验框的直观展示,下图中蓝色框为聚类得到的先验框。黄色框式ground truth,红框是对象中心点所在的网格。实际中特征图中的每个点都会对应3个先验框。

目标检测中先验框 anchor的作用

; 先验anchor如何起作用?

先验框anchor将目标检测转换为这个固定参考框中有没有认识的目标,目标框偏离参考框多远的问题。我们先要给出这些先验框的类别信息,才能让模型学着去预测每个先验框是否对应着一个目标物体。这些先验框中有很多是和图片中我们要检测的目标完全没有交集或者有很小的交集,做法是,设定一个IoU阈值,例如iou=0.5,与图片中目标的iou

我们的模型要预测anchor与目标框的偏移,并且这个偏移会进行某种形式的归一化,这个过程我们称为边界框的编码。
这里我们使用的是与SSD完全一致的编码方法,具体公示表达如下:

模型预测并输出的是这个编码后的偏移量(gcx,gcy,gw,gh),最终只要再依照公式反向进行解码,就可以得到预测的目标框的信息。

目标检测中先验框 anchor的作用

在测试时可能会一个目标多个框的现象,这时采用NMS非极大值抑制。

Original: https://blog.csdn.net/weixin_42762234/article/details/122116018
Author: Sweet Creature
Title: 目标检测中先验框 anchor的作用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/681827/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球