论文:AutoAssign: Differentiable Label Assignment for Dense Object Detection
时间及出处:2020
1. Motivation
针对现有label assignment所存在的问题,提出新的解决方法:AutoAssign
- unaware of object appearance or only partially dynamic(1)FCOS以落入某个GT框中心区域的anchor point作为正样本,原因是处于物体中心区域的anchor point一般会出现在物体上,并且其感受野更适合覆盖整个物体,所以通常会输出更高的置信度。
(2)FCOS的中心区域的半径是固定的,不会随着物体的大小而改变,这是不合理的;在实际场景中,有些种类的物体的中心区域并不会包含很多的物体区域(如上图所示),并且中心区域也可能不包含最具代表性的区域(如,human),所以固定大小的中心区域是有局限性的,判断anchor point是否为正样本应该是object appearance-aware(如,AutoAssign) - Spatial and scale are tackled respectively, lack of joint / unified paradigm
这种固定的label assignment(如,RetinaNet, FCOS等)可能无法合适地判定样本的正负性。于是,出现了以下多种动态的label assignment:
(1)动态地调整anchor的形状:Guided Anchoring, MetaAnchor
(2)在spatial层面动态分配:FreeAnchor, ATSS, Learning from noisy anchors
(3)在scale层面动态分配:FSAF
现有的dynamic label assignment存在1个问题:只考虑label assignment的其中1个层面,没有同时考虑两个层面,不能算完全地自适应label assignment。AutoAssign就是来解决此问题的。
- tons of hyper-parameters to tune
hyper-parameters:anchors, IoU thresholds, top-k or scale ranges. AutoAssign没有这些超参数。
2. AutoAssign
2.1 overview
- 以FCOS为baseline,直接在每层特征图上的每个位置输出类别概率和边界框预测量
2.2 Center Weighting
1. motivation
- 由于物体的形状符合某个规律的,并不是杂乱无章的,正样本的weighting map也会符合某种分布,由先验可知,物体的中心被标记为正样本的概率是最大的,距离物体中心越远的anchor point,其被标记为正样本的概率就越低,我们将这种分布称为center prior,这种利用先验分布来初始化weighting map的方法称为“热启动”,热启动能保证训练初始阶段的稳定性。如果没有热启动,网络将由随机分布开始学习,网络在训练初期可能会不稳定。
- 用center prior来限制物体的分布会存在一个问题,来自不同类别的物体具有不同的分布,所以为了让center prior更好地拟合不同分布,center prior不应该是固定的,而应该是可学习的,于是提出了center weighting使得center prior可以自动地拟合来自不同类别的分布。
2. 原理
- 最常见的center prior是高斯分布,由于只涉及在
x
−
y
x-y
x−y轴移动,所以引入的是二维高斯分布,并且不同类别应具有不同的分布,所以center prior的形式如下:
其中, d ⃗ \vec{d} d表示原图上落入GT框内的某一个位置相对于GT框中心坐标的二维偏移量(正负均可); μ ⃗ \vec{\mu} μ、 σ ⃗ \vec{\sigma} σ是可学习的参数,分别表示高斯分布的均值和标准差,两者的维度是 ( K , 2 ) (K,2) (K,2), K K K是类别总数,所以每一个类别均对应一个高斯分布。 - 实际上, μ ⃗ \vec{\mu} μ是每一类高斯分布中心,控制着原始高斯分布中心(即GT框中心)的偏移量,而 σ ⃗ \vec{\sigma} σ表示的是每一类高斯分布的分散性,其控制着距离高斯分布中心的各个anchor point成为正样本的概率。
- 由于同类物体的GT框也可以有不同的scale和aspect ratios,所以将其应用到FPN的各个输出特征图上前,使用与各层相对应的下采样率进行规范化。
- 高斯分布是在原图上学习,然后下采样至不同特征图上的。
2.3 Confidence Weighting
1. motivation
- 特征图的某个位置 i i i的输出值表示:该位置存在某类物体的概率 P i ( c l s ∣ θ ) P_i(cls\mid \theta) Pi(cls∣θ),其中, θ \theta θ是网络参数。对于正样本的weighting maps,为了找到合适的正样本,我们应该考虑GT框内所有anchor point,但一般情况下物体不会覆盖GT框内的所有位置,并且只输出 K K K个类别的weighting maps,背景类并没有对应的weighting map,所以,考虑过多的背景类anchor point,会影响weighting map的性能。
- 就像RPN和YOLO那样,可以引入objectness表示该位置是否存在物体,在训练标签只有GT框,这不像图像分割那样,每个像素具有类别,所以得到objectness的训练标签。注意:RPN和YOLO是通过anchor box与GT框的IoU来间接得到objectness的训练标签。为解决这个问题,AutoAssign引入了Implicit-Objectness。
2. classification confidence
对于所有特征图的GT框包含的anchor point集合
S
n
S_n
Sn的每一个位置
i
i
i,其输出的classification confidence
P
i
(
c
l
s
∣
θ
)
=
P
i
(
c
l
s
∣
o
b
j
,
θ
)
P
i
(
o
b
j
∣
θ
)
P_i(cls\mid \theta)=P_i(cls\mid obj, \theta)P_i(obj\mid \theta)
Pi(cls∣θ)=Pi(cls∣obj,θ)Pi(obj∣θ)其中,
P
i
(
o
b
j
∣
θ
)
P_i(obj\mid \theta)
Pi(obj∣θ)就是implicit-objectness,表示该anchor point为前景类的概率,
P
i
(
c
l
s
∣
o
b
j
,
θ
)
P_i(cls\mid obj, \theta)
Pi(cls∣obj,θ)表示给定某个物体,该物体为某一类的概率。
3. joint confidence modeling
目标检测包括分类和回归,现在已经得到类别概率
P
i
(
c
l
s
∣
θ
)
P_i(cls\mid \theta)
Pi(cls∣θ),可以用二元交叉熵损失来构造分类损失
L
i
c
l
s
(
θ
)
=
−
l
o
g
(
P
i
(
c
l
s
∣
θ
)
)
L_i^{cls}(\theta)=-log\left(P_i(cls\mid \theta)\right)
Licls(θ)=−log(Pi(cls∣θ))但是,到目前为止,还没有做label assignment,何来正负样本呢?在回答此问题前,先思考以下问题:
- 为什么需要做label assignment?实际上,label assignment就是要定义正负样本,构造训练标签,进而构造损失函数,也就是说,label assignment的结果是体现在损失函数上的。AutoAssign就是通过自动地构造损失函数,实现自适应label assignment的,具体地说就是,先粗略地判定样本的正负性,再通过给样本损失添加一个自适应权重,实现自动构造损失函数,最终实现自适应label assignment,这是AutoAssign最核心的思想。
为构造损失函数,先用FCOS最初的label assignment方法,粗略判定样本的正负性:
- 将每个物体assign给所有的特征层
- 对于每个特征层,将落入GT框内的anchor point作为正样本,其类别为GT框的类别,并负责预测该GT框。如果anchor point落入两个GT框的重叠区域,则该anchor point负责预测面积小的GT框。
- 对于每个特征层,将不落入任何GT框的anchor point均为负样本。
因此,有了正负样本,就可以计算分类损失
L
i
c
l
s
(
θ
)
L_i^{cls}(\theta)
Licls(θ)和定位损失
L
i
l
o
c
(
θ
)
L_i^{loc}(\theta)
Liloc(θ),总损失函数
L
i
(
θ
)
=
L
i
c
l
s
(
θ
)
+
λ
L
i
l
o
c
(
θ
)
L_i(\theta)=L_i^{cls}(\theta)+\lambda L_i^{loc}(\theta)
Li(θ)=Licls(θ)+λLiloc(θ)
为了得到confidence maps,可以将总损失转换成置信度,即
那么confidence map
P
i
(
θ
)
P_i(\theta)
Pi(θ)同时描述了位置
i
i
i的分类性能和定位性能。
4. weighting function
对confidence map
P
i
(
θ
)
P_i(\theta)
Pi(θ)进行转换成权重,则转换函数为
C
(
P
i
)
=
e
P
i
(
θ
)
τ
C(P_i)= e^\frac{P_i(\theta)}{\tau}
C(Pi)=eτPi(θ)其中,论文中令
τ
=
1
/
3
\tau=1/3
τ=1/3。
P
i
(
θ
)
P_i(\theta)
Pi(θ)的取值范围是
[
0
,
1
]
[0,1]
[0,1],为什么不直接以
P
i
(
θ
)
P_i(\theta)
Pi(θ)作为权重呢?
- 后续可以看到,对于原先粗略定义的负样本,其权重固定为1,因为我们可以非常确定地将其定义为负样本,无需做调整,而对于GT框内的正样本,如果其输出的概率 P i ( θ ) → 0 P_i(\theta)\to0 Pi(θ)→0,那么其成为负样本的概率就越大,所以需要用指数函数,设置其权重接近于1。那是不是可以直接令 C ( P i ) = P i ( θ ) + 1 C(P_i)= P_i(\theta)+1 C(Pi)=Pi(θ)+1来实现呢?
- 对于GT框内的正样本,如果其概率值越大,我们使用指数函数后可以迅速增大其权重。
5. positive weight maps
正如之前所说,热启动可以保证训练初期的稳定性,所以对于positive weight map,可以用调整后的高斯分布
G
(
d
⃗
i
)
G(\vec{d}_i)
G(di)作为先验指导,对于位置
i
∈
S
n
i\in S_n
i∈Sn, positive weight:
w
i
+
=
C
(
P
i
)
G
(
d
⃗
i
)
∑
j
∈
S
n
C
(
P
j
)
G
(
d
⃗
j
)
w_i^+=\frac{C(P_i)G(\vec{d}_i)}{\sum_{j\in S_n}C(P_j)G(\vec{d}_j) }
wi+=∑j∈SnC(Pj)G(dj)C(Pi)G(di)注意:每个特征层的每个类别均对应一个
C
(
P
i
)
C(P_i)
C(Pi)和
G
(
d
⃗
i
)
G(\vec{d}_i)
G(di)。
6. negative weight maps
对于GT框内的所有预先定义的正样本中,其中有一些是false positive,对于这些false positive,仍然采用定位损失进行边界框预测,为此,利用IoU引入negative weight maps
w
i
−
=
1
−
f
(
i
o
u
i
)
w_i^-=1-f(iou_i)
wi−=1−f(ioui)其中,
f
(
i
o
u
i
)
=
1
/
(
1
−
i
o
u
i
)
f(iou_i)=1/(1-iou_i)
f(ioui)=1/(1−ioui),
i
o
u
i
iou_i
ioui表示位置
i
i
i的预测边界框与所有GT框的IoU的最大值。另外
f
(
i
o
u
i
)
f(iou_i)
f(ioui)会被归一化至
[
0
,
1
]
[0,1]
[0,1]。For all locations outside bounding boxes,
w
i
−
w_i^-
wi− is set to 1 because they are backgrounds for sure.
- 当 i o u i → 0 iou_i\to0 ioui→0, w i − → 1 w_i^-\to1 wi−→1,表明其为负样本的概率越大。
- 当 i o u i → 1 iou_i\to1 ioui→1,归一化后的 f ( i o u i ) → 1 f(iou_i)\to1 f(ioui)→1, w i − → 0 w_i^-\to0 wi−→0,表明其为负样本的概率越小。
6. total loss function
总损失函数为:
- N N N:输入图像的物体总数
- S n S_n Sn:所有特征层中,位于物体 n n n边界框内的所有位置的集合
- S S S:所有特征层中所有位置的集合
- P i + P_i^+ Pi+:confidence maps P i ( θ ) P_i(\theta) Pi(θ)
- P i − P_i^- Pi−:类别概率 P i ( c l s ∣ θ ) P_i(cls\mid \theta) Pi(cls∣θ),不包含位置置信度
损失函数的含义:
- 位于GT框内的预定义正样本,包含第一项的positive loss和第二项的negative loss,并且正样本权重 w i + w_i^+ wi+和负样本权重 w i − w_i^- wi−均通过网络学习得到。
- 位于所有GT框外的预定义负样本,只包含第二项的negative loss,并且负样本权重 w i − ≡ 1 w_i^-\equiv1 wi−≡1。
- 该损失函数符合一般的目标检测损失函数,即,负样本只用于分类,正样本同时用于分类和回归。
- 具体地,负样本的loss为Focal loss,边界框损失为GIoU loss。
3. 实验
1. 验证center weighting的有效性
-
center weighting的可视化结果如下所示,由于不同特征层具有不同的下采样率,所以下采样后结果是不一样的,对于尺寸最小的 P 7 P_7 P7,下采样后只有较少的中心区域有较高的置信度,那么可视化后,其重点区域将比较大,同样的 P 3 P_3 P3的重点区域比较小,但其更能反映原始的分布。
-
下图所示的两种类别的物体的高斯分布的中心均非常接近GT框中心点,重点区域也接近圆形,这似乎表明center weighting不起作用(起明显作用时表现出高斯分布的中心会偏移,且圆形可能变成椭圆),其实真正原因是:这两类物体的形状比较接近正方形,又由于数量较多,实际上已经可以看成标准正态分布了。
-
对于以下两种长条形的物体,可以看出center weighting确实是起作用了
-
为定量说明center weighting的有效性,作者在整个算法设计完成后做了以下实验:
(1)none表示不使用center prior和center weighting,此时 A P AP AP非常低
(2)fixed表示使用固定的center prior,但不使用center weighting,此时 A P AP AP明显提升,验证了center prior的有效性。
(3)shared表示使用center prior和center weighting,但不同类别的物体共享一个高斯分布,此时 A P AP AP反而下降了,原因是:由于大部分类别的物体的宽高比是接近1:1的,使用了center weighting后,高斯分布趋向于拟合这些物体,所以对于特殊宽高比的类别拟合更差了,最终这些类别的 A P AP AP就下降了。
(4)category表示使用center prior和center weighting,且不同类别的物体对应不同高斯分布,这时,特殊宽高比的类别的 A P AP AP均有所提升,表明了center weighting的有效性。但是,为什么 A P AP AP与(2)(3)差别不大?因为大部分类别的物体的宽高比是接近1:1的,由于数量多,可以看成标准正态分布,此时center weighting过多改变原先的正态分布。
2. 验证confidence weighting的有效性
confidence weighting的可视化结果
- confidence weighting会自动着为每一个物体选择合适的特征层,并且为每个物体选择最合适的位置作为正样本。可以看出,一个物体可以同时assign给2个相邻的特征层,这与FoveaBox的实验结果是一致的。
confidence weighting中各个构件的分析
- P ( c l s ) P(cls) P(cls)-only表示只使用 P ( c l s ) P(cls) P(cls)来构造confidence map P i ( θ ) P_i(\theta) Pi(θ); P ( l o c ) P(loc) P(loc)-only表示只使用 P ( l o c ) P(loc) P(loc)来构造confidence map P i ( θ ) P_i(\theta) Pi(θ)。 P ( c l s ) P(cls) P(cls)-only由于缺失定位信息,对confidence map不是一种完全描述,所以 A P AP AP较低;而 P ( l o c ) P(loc) P(loc)-only虽然只用到了定位信息,但由于center weighting可作为一种粗略的分类信息(对比上图,center weighting和confidence weighting的可视化结果相近),所以 A P AP AP较高。
- no-obj表示没有使用objectness来构造 P ( c l s ) P(cls) P(cls),其 A P AP AP相比于AutoAssign的40.5%有所下降
- explicit-obj表示使用如YOLO这种显式的objectness
最终性能
- 不使用多尺度训练和多尺度预测, A P AP AP为48.3%
- 只使用多尺度训练, A P AP AP为49.5%
- 同时使用多尺度训练和多尺度预测,
A
P
AP
AP为52.1%