论文:Training-Time-Friendly Network for Real-Time Object Detection
论文链接:https://arxiv.org/pdf/1909.00700.pdf
代码链接: https://github.com/ZJULearning/ttfnet
文章目录
经典的 anchor-free 目标检测算法 FCOS 和 CenterNet 自提出以来,受到了业界广泛的关注,围绕其算法改进也层出不穷,本篇介绍的TTFNet就是其一,它改进了CenterNet,提出了一种利用高斯核对训练样本进行编码的方法,取得了更好的准确率和训练速度。
1 为什么提出 TTFNet?
本文旨在提高模型训练收敛速度,在CenterNet
基础上做了进一步改进。
提高模型训练速度有2种潜在方式:(1) 增大学习率;(2) 减少使用数据增强,如果直接使用这两个方法一般会存在问题,增大学习率可能导致训练发散,而减少使用数据增强容易使模型过拟合。所以接下来的问题是:
做什么样的改进可以增大学习率而不影响模型性能?
使用 SGD
优化器,网络权重更新方式为:
w
t
+
1
=
w
t
−
η
1
n
∑
x
∈
B
▽
l
(
x
,
w
t
)
w_{t+1}=w_t-\eta\frac{1}{n}\sum_{x\in B} \bigtriangledown l(x,w_t)
wt+1=wt−ηn1x∈B∑▽l(x,wt)
式中,
w
w
w为网络权重,
n
n
n为 batchsize
,
η
\eta
η为学习率,
l
(
x
,
w
)
l(x,w)
l(x,w)为损失函数,
B
B
B 为 minbatch sample
从上式可以看出,如果要增大
η
\eta
η,需要调大batchsize
,根据 Linear Scaling Rule
,见参考文献[1],如果使用
k
k
k 倍的 batchsize
,则学习率可以增大到
k
k
k 倍。
所以增大 n n n,就可以使用大的学习率,但是带来的问题是对硬件显存要求会大大增加。
有什么样的方法克服上述问题?
对于目标检测任务而言,训练样本指的的是bbox
样本。一张图片可能有多个检测目标,即对应多个bbox,所以网络权重更新可以进一步表达为:
w
t
+
1
=
w
t
−
η
1
n
∑
x
∈
B
1
m
x
∑
s
∈
S
x
▽
l
(
s
,
w
t
)
w_{t+1}=w_t-\eta\frac{1}{n}\sum_{x\in B}\frac{1}{m_x} \sum_{s\in S_x}\bigtriangledown l(s,w_t)
wt+1=wt−ηn1x∈B∑mx1s∈Sx∑▽l(s,wt)
式中,
m
x
m_x
mx指每张图片中bbox
数量。
如果每张图片里的bbox数量相同,都为
m
m
m,则上式可以简化为:
w
t
+
1
=
w
t
−
η
1
m
n
∑
x
∈
B
▽
l
(
s
,
w
t
)
w_{t+1}=w_t-\eta\frac{1}{mn}\sum_{x\in B}\bigtriangledown l(s,w_t)
wt+1=wt−ηmn1x∈B∑▽l(s,wt)
所以增加目标的 encoder bbox
数量
m
m
m 也能达到同样的效果。
如何增加 encoder bbox 数量?
一个 bbox 矩形框可以有如下3种定义方式:
(1) 采用2个对角点,bbox可以用4个参数描述 ( x 1 x_1 x1 , y 1 y_1 y1 , x 2 x_2 x2 , y 2 y_2 y2);
(2) 采用一个中心点和宽高尺寸,bbox用4个参数描述 ( x c x_c xc , y c y_c yc , w w w , h h h);
(3) 采用一个源点和其与4条边的距离,bbox用6个参数描述 ( x o x_o xo , y o y_o yo , l l l , r r r, t t t , b b b);
其中前两个定义方式是唯一的,而第三个的表达是不唯一的,不同的 ( x o x_o xo , y o y_o yo) 对应着不同的 ( l l l , r r r , t t t , b b b)。
所以只要使用方式3就能对一个目标encoder
出多个bbox
,基于上述思考,本文的 TTFNet
就诞生了!
2 TTFNet 网络架构
- 输入端 — 输入端表示输入的图片。该网络的输入图像大小 W W W 和 H H H分别512和512。
- 基准网络 — 基准网络用来提取图片特征。论文分别试验了ResNet 和 DarkNet。
- Head输出端 — Head用来完成目标检测结果的输出。输出端的分支有3个,分别为 heatmap、offset和size,对应的输出尺度为( W / R W/R W/R, H / R H/R H/R, C C C)、( W / R W/R W/R, H / R H/R H/R, 2 2 2) 和( W / R W/R W/R, H / R H/R H/R, 2 2 2),其中 R R R 为 stride,论文中取4, C C C 为目标种类。
3 TTFNet 实现细节
目标检测可以分为两部分:中心定位和尺寸回归,下面分别介绍:
3.1 TTFNet 如何中心定位?
假定属于
c
m
c_m
cm 类的第
m
m
m 个GT bbox
,其边框位置和尺寸为 (
x
x
x,
y
y
y,
h
h
h,
w
w
w):
step1:将边框线性映射到特征图的尺度上,映射后的边框为: ( ⌊ x r ⌋ \lfloor \frac {x}{r}\rfloor ⌊rx⌋, ⌊ y r ⌋ \lfloor \frac {y}{r}\rfloor ⌊ry⌋, h r \frac {h}{r} rh, w r \frac {w} {r} rw)= ( x 0 x_0 x0, y 0 y_0 y0, h 0 h_0 h0, w 0 w_0 w0) ,其中 ⌊ ⌋ \lfloor \rfloor ⌊⌋为取整操作,来限制中心像素的位置必然是整数。
step2:使用2D高斯核将GT bbox中心位置分散到热力图
H
m
∈
R
1
×
H
r
×
W
r
H_m\in R^{1× \frac{H}{r}× \frac{W}{r}}
Hm∈R1×rH×rW上,高斯核为:
K
m
(
x
,
y
)
=
e
x
p
(
−
(
x
−
x
0
)
2
2
σ
x
2
−
(
y
−
y
0
)
2
2
σ
y
2
)
K_m(x,y)=exp\left(-\frac{(x-x_0)^2}{2\sigma^2_x}-\frac{(y-y_0)^2}{2\sigma^2_y} \right)
Km(x,y)=exp(−2σx2(x−x0)2−2σy2(y−y0)2)
式中:
σ
x
=
α
w
0
/
6
\sigma_x=\alpha w_0/6
σx=αw0/6 ,
σ
y
=
α
h
0
/
6
\sigma_y=\alpha h_0/6
σy=αh0/6,这里
α
\alpha
α 被设置成 0.54。
相比CenterNet
的高斯kernnel
,TTFNet
的高斯kernnel
进一步考虑了GT bbox
的宽高比,如下图所示:
根据标签生成的目标位置热力图作为target
,网络的位置分支输出
H
^
∈
R
C
×
H
r
×
W
r
\hat H\in R^{C× \frac{H}{r}× \frac{W}{r}}
H^∈RC×rH×rW,位置损失函数如下:
L
l
o
c
=
−
1
M
∑
x
y
c
{
(
1
−
H
^
i
j
c
)
α
⋅
l
o
g
(
H
^
i
j
c
)
H
i
j
c
=
1
(
1
−
H
i
j
c
)
β
f
⋅
(
H
^
i
j
c
)
α
f
⋅
l
o
g
(
1
−
H
^
i
j
c
)
o
t
h
e
r
w
i
s
e
L_{loc}=-\frac{1}{M}\sum_{xyc} \begin{cases} (1-\hat H_{ijc})^{\alpha}\cdot log(\hat H_{ijc}) & H_{ijc}=1\\ (1-H_{ijc})^{\beta_f}\cdot (\hat H_{ijc})^{\alpha_f} \cdot log(1-\hat H_{ijc}) & otherwise\\ \end{cases} \\
Lloc=−M1xyc∑{(1−H^ijc)α⋅log(H^ijc)(1−Hijc)βf⋅(H^ijc)αf⋅log(1−H^ijc)Hijc=1otherwise
与CeterNet的关键点损失类似,详细的解释请见博客: 目标检测——CenterNet (CVPR2019) 论文详解。
3.2 TTFNet 如何尺寸回归?
在目标bbox区域内,类似的使用高斯 kernnel
生成热力图
S
m
∈
R
1
×
H
r
×
W
r
S_m\in R^{1× \frac{H}{r}× \frac{W}{r}}
Sm∈R1×rH×rW,其中高斯kernnel
为:
K
m
(
x
,
y
)
=
e
x
p
(
−
(
x
−
x
0
)
2
2
σ
x
2
−
(
y
−
y
0
)
2
2
σ
y
2
)
K_m(x,y)=exp\left(-\frac{(x-x_0)^2}{2\sigma^2_x}-\frac{(y-y_0)^2}{2\sigma^2_y} \right)
Km(x,y)=exp(−2σx2(x−x0)2−2σy2(y−y0)2)
式中:
σ
x
=
β
w
/
6
\sigma_x=\beta w/6
σx=βw/6 ,
σ
y
=
β
h
/
6
\sigma_y=\beta h/6
σy=βh/6
在
S
m
S_m
Sm 中的非零部分定义为高斯区域
A
m
A_m
Am,TTFNet
采取下图方式 d 将整个高斯区域内的所有像素点作为训练样本
考虑
A
m
A_m
Am中的一个像素
(
i
,
j
)
(i,j)
(i,j)以及下采样率
r
r
r,回归的目标就是从 (
i
r
ir
ir,
j
r
jr
jr) 到第
m
m
m 个标注框的四个边的距离,用一个四维向量表示为
(
w
l
,
h
t
,
w
r
,
h
b
)
i
j
m
(w_l,h_t,w_r,h_b)^m_{ij}
(wl,ht,wr,hb)ijm,在
(
i
,
j
)
(i,j)
(i,j)处的预测框则表示如下:
x
^
1
=
i
r
−
w
^
l
s
,
y
^
1
=
j
r
−
h
^
t
s
x
^
2
=
i
r
+
w
^
r
s
,
y
^
2
=
j
r
+
h
^
b
s
\hat x_1=ir-\hat w_ls,\hat y_1=jr-\hat h_ts\\ \hat x_2=ir+\hat w_rs,\hat y_2=jr+\hat h_bs\\
x^1=ir−w^ls,y^1=jr−h^tsx^2=ir+w^rs,y^2=jr+h^bs
这里的
(
x
^
1
,
y
^
1
,
x
^
2
,
y
^
2
)
(\hat x_1,\hat y_1,\hat x_2,\hat y_2)
(x^1,y^1,x^2,y^2) 是在图像尺度上而不是特征图尺度上的, 尺寸回归分支的损失通过GIOU
计算:
L
r
e
g
=
1
N
r
e
g
∑
(
i
,
j
)
∈
A
m
G
I
O
U
(
B
^
i
j
,
B
m
)
×
W
i
j
L_{reg}=\frac {1}{N_{reg}}\sum _{(i,j)\in A_m}GIOU(\hat B_{ij},B_m)×W_{ij}
Lreg=Nreg1(i,j)∈Am∑GIOU(B^ij,Bm)×Wij
式中:
N
r
e
g
N_{reg}
Nreg为回归样本的数量;
B
^
i
j
\hat B_{ij}
B^ij表示预测框
(
x
^
1
,
y
^
1
,
x
^
2
,
y
^
2
)
i
j
(\hat x_1,\hat y_1,\hat x_2,\hat y_2)_{ij}
(x^1,y^1,x^2,y^2)ij;
B
m
\ B_m
Bm表示预测框
(
x
1
,
y
1
,
x
2
,
y
2
)
m
(x_1,y_1,x_2,y_2)_m
(x1,y1,x2,y2)m表示真实图像尺度上的第
m
m
m个标注框;
W
i
j
W_{ij}
Wij表示采样权重,用来平衡每个样本对损失的贡献,
W
i
j
W_{ij}
Wij公式如下:
W
i
j
=
{
l
o
g
(
a
m
)
×
G
m
(
i
,
j
)
∑
(
x
,
y
)
∈
A
m
G
m
(
x
,
y
)
(
i
,
j
)
∈
A
m
0
(
i
,
j
)
∉
A
m
W_{ij}= \begin{cases} log(a_m)×\frac{G_m(i,j)}{\sum_{(x,y)\in A_m}G_m(x,y)} & (i,j) \in A_m\\ 0 & (i,j) \notin A_m \end{cases}
Wij={log(am)×∑(x,y)∈AmGm(x,y)Gm(i,j)0(i,j)∈Am(i,j)∈/Am
式中:
G
m
(
i
,
j
)
G_m(i,j)
Gm(i,j)表示
(
i
,
j
)
(i,j)
(i,j)位置处的高斯概率,
a
m
a_m
am表示第
m
m
m个标注框的面积。
3.3 如何理解 W i j W_{ij} Wij 的设计
目标的尺度变化可能是很大的,大目标产生的正样本多,而小目标仅产生少量的样本,所以需要平衡大目标和小目标的正样本数差异,对于处于高斯区域内的像素点,由上式可知其权重可以进一步表达成:
W
i
j
=
l
o
g
(
a
m
)
∑
(
x
,
y
)
∈
A
m
G
m
(
x
,
y
)
×
G
m
(
i
,
j
)
=
K
×
G
m
(
i
,
j
)
W_{ij}=\frac {log(a_m)}{\sum_{(x,y)\in A_m}G_m(x,y)}×G_m(i,j)=K×G_m(i,j)
Wij=∑(x,y)∈AmGm(x,y)log(am)×Gm(i,j)=K×Gm(i,j)
从上式可见,
W
i
j
W_{ij}
Wij相当于是对
G
m
(
i
,
j
)
G_m(i,j)
Gm(i,j)乘以一个系数
K
K
K,大目标
K
K
K系数小于小目标系数,所以相当于提高了小目标的样本权重。
3.4 Loss设计
TTFNet
总体 loss
是定位损失和回归损失的加权求和结果,两个权重
w
l
o
c
w_{loc}
wloc和
w
r
e
g
w_{reg}
wreg分别是1.0和5.0:
L = w l o c L l o c + w r e g L r e g L=w_{loc}L_{loc}+w_{reg}L_{reg} L=wlocLloc+wregLreg
4 TTFNet性能效果
下表中比较了TTFNet
与其他模型的性能,其中TT
表示训练时间,TTFNet
的AP
超过了SSD
、YOLOV3
和CenterNet
,同时训练时间缩短了10倍多。
5 总结
TTFNet
论文的主要贡献包括以下几点:
- 融合了经典的
anchor-free
算法的经验:CenterNet
和FCOS
,其中心定位借鉴了CenterNet
, 尺寸回归借鉴了FCOS
,同时改进了大小目标的权重平衡; FFTNet
提出的减少训练时间的思路可以扩展应用到其他目标检测模型上。
6 参考
[1] [Goyal et al. 2017] Goyal, P.; Dollar, P.; Girshick, R. B.; Noordhuis, ´ P.; Wesolowski, L.; Kyrola, A.; Tulloch, A.; Jia, Y.; and He, K. 2017. Accurate, large minibatch SGD: training imagenet in 1 hour. CoRR abs/1706.02677.