1. anchor box基础
目前,几乎所有流行的通用目标检测方法,如经典的两步方法Faster-RCNN,一步方法SSD和YOLO等,都需要根据经验设计不同尺度(可以看成是物体面积)和高宽比的anchor box(有的方法中叫做default box或prior box)。实际上,anchor box是一系列经过设计的、尺寸不同的物体边框。一般情况下,如果我们需要在模型中某层特征图上检测某个特定尺度的物体,可以先为anchor box固定一个面积 S S S,然后变换anchor box的高宽比,如 1 : 3 , 1 : 2 , 1 : 1 , 2 : 1 , 3 : 1 1:3,1:2,1:1,2:1,3:1 1:3,1:2,1:1,2:1,3:1(一般会增加一个 1 : 1 1:1 1:1的框),从而得到6个尺度的anchor box,最后使用经典的sliding window的方法得到特征图上每个位置的anchor box。如果该层特征图的尺寸为 H × W H \times W H×W,总共会产生 H × W × 6 H \times W \times 6 H×W×6个anchor box。
![](https://i-blog.csdnimg.cn/blog_migrate/a072dc94c70a5248fb2776e7192d34fc.png)
图1.SSD中设计的anchor box。(a) 训练集中物体真实边框(蓝色和红色实线)。(b)考虑到接收域,面积较小的物体在较大的特征图中匹配到相应的anchor box(蓝色虚线)。(c)较大的物体在较小的特征图中匹配到相应的anchor box(红色虚线)。
在模型训练时,对于训练集中某类物体的某个样例,选择一个与其交叉面积(IoU)最大的anchor box作为基准点,这个anchor box的面积和高宽比与待测物体的真实边框最为接近,然后将该物体的真实边框向这个anchor box对齐,也就是计算物体真实边框与这个anchor box边框的偏移量和高宽比,作为模型边框回归分支的学习目标。因此模型对某个物体边框的预测输出是一个4元组 Δ ( c x , c y , w , h ) \Delta(cx, cy, w, h) Δ(cx,cy,w,h)。如图1(c)所示, Δ ( c x , c y ) \Delta(cx, cy) Δ(cx,cy)对应预测目标边框相对某个anchor box边框的偏移量, Δ ( w , h ) \Delta(w, h) Δ(w,h)对应预测目标边框的高和宽相对同一anchor box高和宽的比,从这个4元组的输出很容易反推出物体在原图中的边框尺寸。
通过引入anchor box,一方面,模型学习到的是物体真实边框与对应的anchor box的偏移量,而不是目标物体在图像中的绝对坐标,保证了检测任务的平移不变性;另一方面,通过这种对齐,可以使模型对多尺度物体检测的训练变得容易,因为物体边框对相应anchor box的偏移量的值分布于有限范围内。
然而,anchor box也随之带来一些问题,比如模型的输出变得非常稠密,因为对应特征图中每个anchor box,都要输出一个4元组的位置预测和对应这个位置的物体分类的预测分数( C C C类),这样就会生成 ( C + 4 ) × H × W × 6 (C+4) \times H \times W \times 6 (C+4)×H×W×6个输出。考虑在多个特征图上进行检测,模型的输出会进一步增加。另外,anchor box需要手动设计,涵盖的尺度有限,一般通过对训练集中目标物体边框尺寸的真实值进行聚类得到,这样会造成对一些形变较为严重的物体检测造成困难。
2. FoveaBox
论文网址:https://arxiv.org/abs/1904.03797
2.1 简介
近期,基于anchor-free的目标检测方法重新引起众多研究人员的关注,来自清华大学、字节跳动和宾夕法尼亚大学的研究人员提出了FoveaBox模型。该方法认为,人类视觉系统在识别物体和确定物体边界时,并没有将待检测物体向某些固定的基准点对齐,而是通过眼球中对物体中心感应最敏锐的中央凹(Fovea)结构确定物体位置。因此,该方法使用FoveaBox命名提出的方法。实际上,该方法在一定程度上结合了语义分割的概念,对特征图上每一个点,模型预测其属于某一类物体的概率和相对某个边框的偏移量。
2.2 方法介绍
1)FoveaBox的网络结构如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/239c67e2f3a566fa1193de7707fd654d.png)
图2.FoveaBox网络结构。与其他经典的目标检测框架类似,FoveaBox也是由主干网和两个分支构成,主干网采用的是FPN,两个分支分别预测类别和回归边框。
FoveaBox的主干网借鉴的是经典的FPN。如图3所示,每个用作预测的特征层融合了原始下行网络中该层特征与用作检测用的上行网络中的下一层特征图,也就是每个用作预测的特征图既包含了当前尺度的特征细节,也结合了来自高层的更抽象的context语义信息。
![](https://i-blog.csdnimg.cn/blog_migrate/04371e1222127606c2c1e17b5102f079.png)
图3.FPN主干网网络结构
该方法使用了FPN中的Focal Loss作为分类分支的损失函数。下面作者重点对边框回归的分支做了解释。
2)尺度划分
虽然方法没有引入Anchor box,但是对于多尺度物体的检测,FoveaBox还是运用了一些trick,将物体划分为一些尺度范围(有可能互相重叠)。将P3到P7这5个尺度的特征图上的基础尺度
S
l
S_l
Sl分别定为
32
×
32
32\times32
32×32,
64
×
64
64\times64
64×64,
128
×
128
128\times128
128×128,
256
×
256
256\times256
256×256,
512
×
512
512\times512
512×512个像素,那么每个特征图上覆盖的尺度范围通过一个参数
η
\eta
η来定义,即
[
S
l
/
η
2
,
S
l
⋅
η
2
]
[S_l/\eta^2, S_l \cdot \eta^2]
[Sl/η2,Sl⋅η2]。如果
η
=
2
\eta=\sqrt2
η=2,那么每个尺度范围没有重叠,如果
η
=
2
\eta=2
η=2,则每个尺度范围将有所重叠,那么某些尺度的物体将会在不同的特征图上进行检测。
3)正负样本的选择
FoveaBox需要对特征图上每个点都预测一个分类结果以及并回归边框的偏移量,由于物体真实边框附近的点远离物体中心,或者与背景像素更为接近,如果将其作为正样本,对模型的训练造成困难。因此作者通过一个简单的变换,先通过groundtruh边框得到物体中心在特征图中对应的位置,然后通过一个参数
σ
1
\sigma_1
σ1调节物体高和宽,将用来训练的真实边框位置向物体中心收缩一点,收缩后的边框内部的点作为正样本,然后使用参数
σ
2
\sigma_2
σ2再次调节边框高和宽,使其向外扩展一点,使用扩展边框外部的点作为负样本,这样将两个边框范围内的点忽略掉,增加正负样本之间的判别度。使用
(
x
1
,
y
1
,
x
2
,
y
2
)
(x_1,y_1,x_2,y_2)
(x1,y1,x2,y2)表示物体边框的groundtruth,也就是物体左上和右下角位置,具体的转换公式如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/b701c85c2134a418efd699f641493702.png)
公式(1) 将物体边框groundtruth对应到第l个特征图上的坐标
![](https://i-blog.csdnimg.cn/blog_migrate/5a2861a55663289bc2829a9458ee9934.png)
公式(2) 将物体边框groundtruth进行收缩或者扩展
4)预测边框
模型中回归边框的预测分支,在训练时,将特征图上选为正样本的坐标
(
x
,
y
)
(x,y)
(x,y)首先变换到原图上的坐标,然后得到该坐标与其所属物体样本的groundtruth边框的偏移量。
![](https://i-blog.csdnimg.cn/blog_migrate/399e70dab3c899176b57d32062dd743b.png)
公式(3) 将特征图上属于正样本的点的标本对应到原图上的坐标,并得到与groundtruth的偏移量,最后向尺度因子进行归一化,并使用log函数做一个简单的变换。
将偏移量向尺度因子归一化时, z = S l z=\sqrt S_l z=Sl,按照2)中的分析,这个因子应该选择与目标物体边框面积最接近的尺度。通过调整 η \eta η,可以控制每个特征图覆盖的检测物体的尺度范围。
5)实验结果
![](https://i-blog.csdnimg.cn/blog_migrate/f27a4c84e1f6780b0d631ad81949304c.png)
图4.FoveaBox在COCO数据集上的一些实验结果。其中带颜色的点是某个特征图上类别预测分数较高的点对应到原图中的位置,其中颜色深度代表了分类置信度。
通过图4的可视化结果可以看出,物体中心附近的点分类概率较高,靠近物体边缘的的点分类概率变小,这也就验证了FoveaBox模拟人类眼部中央凹视觉特性的主要思想,即对物体中心点可以产生较强的响应。测试阶段,论文通过分类阈值首先筛选出1000个框,然后使用NMS得到物体最终的边框。
![](https://i-blog.csdnimg.cn/blog_migrate/515e20f1dc1b9868c48700cb367d341e.png)
图5.FoveaBox与state-of-the-art方法对比。
通过图5可以看出,FoveaBox的性能超过了所有一步检测器和大多数的两步检测器,仅比Cascade RCNN性能稍差,但是作者提出,如果将FoveaBox稍加改动,用做提取region proposal的模型,可以进一步提升两步检测器的性能。
6)结论
FoveaBox改变了大多数目标检测模型都要使用的anchor box的现状,大大降低了模型复杂度、减少了模型输出。FoveaBox的主要思想借鉴了语义分割,对物体上的每个点都预测一个分类结果,物体边框通过预测偏移量得到。FoveaBox中还有一些anchor box多尺度的影子,也就是要将物体边框向某个尺度因子归一化,但是毕竟每个特征图只有一个尺度因子,相比经典的基于anchor box的方法,输出量已经大大降低。