Training-Time-Friendly Network for Real-Time Object Detection论文笔记
(一)Title
论文地址:https://arxiv.org/abs/1909.00700
代码地址:https://github.com/ZJULearning/ttfnet
前言:Light-head,anchor-free,single-stage,TTFNet,作者在文中不断提及encode training samples plays a similar role as increasing the batch size指的是(CenterNet中仅仅使用中心点进行目标回归,而在FCOS中使用Ground Truth中的所有点进行回归,这里通过引入高斯核来借助 β \beta β参数控制回归样本的数量),同时避免了FCOS中需要使用NMS的后处理过程,实验过程比较详实,真的是一篇好文章,弱弱的说一句:好羡慕这种GPUx8的硬件资源啊
(二)Summary
为了取得训练时间、推理速度以及精度之间的平衡,作者提出了Training-Time-Friendly Network(TTFNet),这篇工作中,本文从light-head,single-stage以及anchor-free设计出发,使能更快的推理速度,然后本文重点在于缩短训练时间。
作者观察到
encoding more Training samples from annotated boxes plays a similar role as increasing batch size, which helps enlarge the learning rate and accelerate the training process
因此,在本文中引入了Gaussian kernels 来encode 训练samples,除此之外,为了更好地利用信息,作者设计了初始样本权重(initiative sample weights)
性能表现
TTFNet在平衡训练时间、推理速度和准确性方面具有很大的优势,与以前的实时检测器相比,它将训练时间减少了7倍以上,同时保持了最先进的性能。TTFNet-18和TTFNet-53的性能分别超过SSD300和YOLOv3,并且训练时间上大大减小。
低AP版本:TTFNet-18 and TTFNet-53 can achieve 25.9 AP / 112 FPS only after 1.8 hours and 32.9 AP / 55 FPS after 3.1 hours of training on 8 GTX 1080Ti
中AP版本: TTFNet-18 and TTFNet-53 can achieve 30.3 AP / 113 FPS after 19 hours and 36.2 AP /55 FPS after 32 hours when training from scratch
高AP版本:the long-training version of TTFNet-53 can achieve 39.3 AP /57 FPS after 31 hours of training.
作者方法的优势
- 使用高斯核编码训练样本,使得网络能够更快地收敛
- 能够在不引入其他组件,比如FPN的基础上,降低ambiguous 以及low-quality的样本
- 不需要any offset predictions来矫正结果
本文的主要贡献
- 验证batchsize大小和由annotated boxes产生的encoded samples数量之间的相似性。此外,还说明了CenterNet收敛慢的原因。
- 使用高斯核来产生用于定位以及size regression的training samples
- 使用我们方法训练的检测器能够在保证AP精度的前提下,减少训练时间。
- 对于计算资源有限的研究人员来说(手动@自己),很友好。
(三)Research Object
作者希望在CenterNet架构上改进CenterNet仅仅使用中心点进行box回归的做法,同时利用实验验证了FCOS中引入Ground Truth中的所有样本进行回归会引入大量的ambiguous以及low-quality的样本。因此在回归分支引入了Gaussian Kernel,增加了用于回归的样本数量(可以通过 β \beta β进行调节数量)
(四)Problem Statement
作者基于CenterNet,在回归box时,作者认为由于CenterNet进行回归时仅仅使用中心点的那些目标是次优的选择,同时作者借助了FCOS是使用Ground Truth回归所有样本的思想,这里作者想到使用高斯核来选择回归样本,一方面可以增加回归的信息量,提升检测精度,同时作者指出这样有增加batch size的效果,可以使用更大的学习率以及有更短的训练时间。并且没有引入FCOS中耗时的NMS后处理过程,使得Inference时间减小。
(五)Method
5.1 CenterNet的回顾
CenterNet将目标检测任务分成两个部分:
- center Localization
- size regression
定位上,采用Gaussian核去预测heat-map,这个heat-map能够使网络在接近物体中心的位置有更高的激活输出。
回归上,定义中心点的那个pixel作为训练样本,直接预测目标的宽和高,
预测离散化误差,CenterNet还预测偏移以恢复由输出步幅引起的离散化误差。
None NMS,在推理中在对象中心附近产生更高的activations,因此耗时的NMS可以用开销可以忽略不计的其他组件来代替。
5.2 TTFNet
整体设计
模型的整体框架说明
作者在实验中使用ResNet以及Darknet作为backbone,通过backbone提取的特征被上采样到原始图像 1 4 \frac{1}{4} 41分辨率上,这个是通过Modulated Deformable Convolution(MDCN)以及上采样层实现的,在MDCN层之后是跟着Batch Normalization以及ReLU的。
向上采样的特征然后分别通过两个不同的目标。Localization head在靠近物体中心的位置产生high activate,而regression head直接预测从这些位置到盒子四边的距离。由于Object中心对应于feature map上的局部最大值,因此我们可以借助2D max-pooling抑制非最大值。然后我们使用局部最大值的位置来收集回归结果。最终得到检测结果.
作者提升小目标检测的方法
我们的方法有效地利用了large and medium-sized objects中的annotation信息,但是,对于小目标,则包含了较少的信息,为了提升小目标的检测性能,作者增加了shortcut connections在backbone的stage 2、3和4的特征,并且每个shortcut connections由3 × 3卷积层实现。对于stage 2、3和4,层的数目被设置为3、2和1,并且除了shortcut connections中的最后一层之外,每个层后面都跟着一个ReLu函数
Notations
给定一张图片,利用网络分别预测物体中心在什么位置
H
^
∈
R
N
×
C
×
H
r
×
W
r
\hat{H} \in R^{N \times C \times \frac{H}{r} \times \frac{W}{r}}
H^∈RN×C×rH×rW和回归box size的向量
S
^
∈
R
N
×
4
×
H
˙
r
×
W
r
\hat{S} \in R^{N \times 4 \times \frac{\dot{H}}{r} \times \frac{W}{r}}
S^∈RN×4×rH˙×rW,其中
N
N
N表示batch size,
C
=
80
C=80
C=80表示类别数,
H
H
H表示输入图像的高,
W
W
W表示输入图像的宽,
r
=
4
r=4
r=4表示输出的步长,在后面的叙述中,省略了batch size
N
N
N,在我们的方法中,在分类和回归时同时使用高斯核,并通过
α
\alpha
α和
β
\beta
β控制高斯核的尺寸。
5.2.1 在目标定位上
假设一张图上有M个annotated box,其中第m个标注box属于 c m c_m cm类别,二维的高斯核:
K m ( x , y ) = exp ( − ( x − x 0 ) 2 2 σ x 2 − ( y − y 0 ) 2 2 σ y 2 ) \mathbf{K}_m(x,y) = \exp \left(-\frac{\left(x-x_{0}\right)^{2}}{2 \sigma_{x}^{2}}-\frac{\left(y-y_{0}\right)^{2}}{2 \sigma_{y}^{2}}\right) Km(x,y)=exp(−2σx2(x−x0)2−2σy2(y−y0)2)
其中 σ x = α w 6 , σ y = α h 6 \sigma_{x}=\frac{\alpha w}{6}, \sigma_{y}=\frac{\alpha h}{6} σx=6αw,σy=6αh
博主从We use ( ⌊ x r ⌋ , ⌊ y r ⌋ ) \left(\left\lfloor\frac{x}{r}\right\rfloor,\left\lfloor\frac{y}{r}\right\rfloor\right) (⌊rx⌋,⌊ry⌋) to force the center to be in the pixel as in CenterNet.推断上面的 x , y x,y x,y是在原始输入图像size ( H × W ) (H \times W) (H×W)一个级别上的,此时 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)表示原始输入图像上的lable bounding box的中心点,box size ( h , w ) (h,w) (h,w)也是在输入图像级别上的。
此时我发现了两个问题:
- 作者在文中提出使用 K m ( x , y ) \mathbf{K}_m(x,y) Km(x,y)产生 H m ∈ R 1 × H r × W r H_m \in R^{1 \times \frac{H}{r} \times \frac{W}{r}} Hm∈R1×rH×rW,博主发现这个在尺度上不对应啊?我们 ( x , y ) (x,y) (x,y)在输入图像size上的话,那么输出的2D高斯核的size应该是 H × W H \times W H×W尺度的?
- 作者提到使用 α \alpha α和 β \beta β控制核的大小,在这里我们仅仅看到了 α \alpha α?实际上 β \beta β在回归的高斯核函数中使用了
从上面的高斯核中我们可以发现,高斯核的情况主要由annotated box中心点的坐标 ( x 0 , y 0 ) m (x_0,y_0)_m (x0,y0)m,box的size ( h , w ) m (h,w)_m (h,w)m以及 α \alpha α决定的,这里作者说 α = 0.54 \alpha = 0.54 α=0.54没有经过仔细的Abalation。
利用高斯核生成 H m H_m Hm之后,怎么从 H m H_m Hm变换到我们物体中心位置的输出Ground Truth H H H上呢?
我们可以初始化 H H H为全zero,接着从上面第m个box属于 c m c_m cm中,我们可以令H的第c_m个通道和 H m H_m Hm做一个element-wise的最大化。这样我们可以将所有annotated box表示在网络输出特征图 H ^ \hat H H^对应的Ground Truth H H H上了
在中心点的正样本中,我们仅仅将高斯分布的峰值看成是正样本,也就是盒中心的像素,其他任何像素都看成是负样本(这样的话,我觉得我们没有必要在分类分支计算这个高斯核,因为我们仅仅用到样本中心点,并没有涉及到高斯核非零非1的其他位置)
那么现在我们有了网络的预测输出 H ^ \hat H H^,以及对应的网络的目标 H H H,此时我们的损失定义为:
损失使用Focal Loss
L l o c = 1 M ∑ x y c { ( 1 − H ^ i j c ) α f log ( H ^ i j c ) if H i j c = 1 ( 1 − H i j c ) β f H ^ i j c α f log ( 1 − H ^ i j c ) else L_{l o c}=\frac{1}{M} \sum_{x y c}\left\{\begin{array}{lr} \left(1-\hat{H}_{i j c}\right)^{\alpha_{f}} \log \left(\hat{H}_{i j c}\right) & \text { if } H_{i j c}=1 \\ \left(1-H_{i j c}\right)^{\beta_{f}} \hat{H}_{i j c}^{\alpha_{f}} \log \left(1-\hat{H}_{i j c}\right) & \text { else } \end{array}\right. Lloc=M1xyc∑⎩⎨⎧(1−H^ijc)αflog(H^ijc)(1−Hijc)βfH^ijcαflog(1−H^ijc) if Hijc=1 else
其中 α f = 2 \alpha_f=2 αf=2和 β f = 4 \beta_f=4 βf=4为focal loss的超参数,关于这两个超参数的作用,可以查看我之前的Focal Loss由来讲解博客
5.2.2 在box size回归上
跟Object Localization 中相同,我们假设一张图上有M个annotated box,其中第m个标注box,采用另一个高斯核产生 S m ∈ R 1 × H r × W r S_m \in R^{1 \times \frac{H}{r}\times \frac{W}{r}} Sm∈R1×rH×rW,这里的高斯核是通过 β \beta β来控制的,我们节省计算,作者这里令 α = β \alpha = \beta α=β,这里有一个疑问是: S m S_m Sm是如何产生的呢?,高斯核全为正值,那么为什么 S m S_m Sm会存在着值为0区域呢?在 S m S_m Sm高斯核的非零区域我们计作 A m A_m Am,这里的 A m A_m Am常常在m-box中,如下图所示,注意:这里 A m A_m Am表示是的特征图
上图应该表示的是两个annotated box,以及相对应的正样本,只不过在文中的正样本是带有权重的,在 A m A_m Am中的每一个样本都是回归样本,需要用到回归box当中
网络是如何进行box回归的?
在 A m A_m Am特征图上,某一个非零位置 ( i , j ) (i,j) (i,j),我们先将其变换到输入图像大小上,得到 ( i r , j r ) (ir,jr) (ir,jr),其中 r r r表示步长,此时我们可以在输入图像上计算, ( i r , j r ) (ir,jr) (ir,jr)到annotated box四个边的距离分别为 ( w l , h t , w r , h b ) i j m \left(w_{l}, h_{t}, w_{r}, h_{b}\right)_{i j}^{m} (wl,ht,wr,hb)ijm
这里又有一个问题是我们网络的回归目标是什么?
博主觉得这里应该是和FCOS相同,使用 ( w l , h t , w r , h b ) i j m \left(w_{l}, h_{t}, w_{r}, h_{b}\right)_{i j}^{m} (wl,ht,wr,hb)ijm作为网络的输出,然后为了计算损失,需要将网络输出变换到 ( x ^ 1 , y ^ 1 , x ^ 2 , y ^ 2 ) \left(\hat{x}_{1}, \hat{y}_{1}, \hat{x}_{2}, \hat{y}_{2}\right) (x^1,y^1,x^2,y^2)上,变换的过程为:
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 (3) \begin{array}{l} \hat{x}_{1}=i r-\hat{w}_{l} s, \hat{y}_{1}=j r-\hat{h}_{t} s \\ \hat{x}_{2}=i r+\hat{w}_{r} s, \hat{y}_{2}=j r+\hat{h}_{b} s \tag 3 \end{array} x^1=ir−w^ls,y^1=jr−h^tsx^2=ir+w^rs,y^2=jr+h^bs(3)
其中 s s s仅仅是一个固定的标量,这里是为了扩大预测结果,以便于优化,这里 s s s的值设置为16
如何解决 A m A_m Am出现区域重叠的问题呢?
可以利用FCOS的解决思路,我们先回归到那个面积较小的box上
如何计算回归损失呢?
我们网络预测回归为 S ^ ∈ R N × 4 × H ˙ r × W r \hat{S} \in R^{N \times 4 \times \frac{\dot{H}}{r} \times \frac{W}{r}} S^∈RN×4×rH˙×rW,网络预测回归对应的真值 S ′ ^ ∈ R N × 4 × H ˙ r × W r \hat{S^{'}} \in R^{N \times 4 \times \frac{\dot{H}}{r} \times \frac{W}{r}} S′^∈RN×4×rH˙×rW,这里 S S S应该是对应着 ( w l , h t , w r , h b ) i j m s \frac {\left(w_{l}, h_{t}, w_{r}, h_{b}\right)_{i j}^{m}}{s} s(wl,ht,wr,hb)ijm, S ^ \hat S S^应该是对应着 ( w ^ l , h ^ t , w ^ r , h ^ b ) i j m \left(\hat w_{l}, \hat h_{t}, \hat w_{r}, \hat h_{b}\right)_{i j}^{m} (w^l,h^t,w^r,h^b)ijm(因为没有看代码,这里是博主个人观点),我们对 S S S和 S ^ \hat {S} S^进行维度变换,并去掉pixel not contained in any sub-areas,得到 S ′ ∈ R N r e g × 4 S^{\prime} \in R^{N_{r e g} \times 4} S′∈RNreg×4以及 S ^ ′ ∈ R N r e g × 4 \hat S^{\prime} \in R^{N_{r e g} \times 4} S^′∈RNreg×4,其中 N r e g N_{reg} Nreg表示回归样本的总量,接着利用 ( 3 ) (3) (3)式将 S ^ ′ \hat S^{\prime} S^′中的4个向量 ( w ^ l , h ^ t , w ^ r , h ^ b ) \left(\hat w_{l}, \hat h_{t}, \hat w_{r}, \hat h_{b}\right) (w^l,h^t,w^r,h^b)变换到 ( x ^ 1 , y ^ 1 , x ^ 2 , y ^ 2 ) \left(\hat{x}_{1}, \hat{y}_{1}, \hat{x}_{2}, \hat{y}_{2}\right) (x^1,y^1,x^2,y^2)上,同理将 S ′ S^{'} S′也变换到 x 1 , y 1 , x 2 . y 2 x_1,y_1,x_2.y_2 x1,y1,x2.y2的这种形式上,接着使GIoU计算损失
L r e g = 1 N r e g ∑ ( i , j ) ∈ A m GIoU ( B ^ i j , B m ) × W i j L_{r e g}=\frac{1}{N_{r e g}} \sum_{(i, j) \in A_{m}} \operatorname{GIoU}\left(\hat{B}_{i j}, B_{m}\right) \times W_{i j} Lreg=Nreg1(i,j)∈Am∑GIoU(B^ij,Bm)×Wij
其中 B ^ i , j \hat B_{i,j} B^i,j表示的是detected box ( x ^ 1 , y ^ 1 , x ^ 2 , y ^ 2 ) i , j (\hat x_1,\hat y_1,\hat x_2,\hat y_2)_{i,j} (x^1,y^1,x^2,y^2)i,j, B m B_m Bm表示第m个annotated box在输入图像size上 ( x 1 , y 1 , x 2 , y 2 ) m (x_1,y_1,x_2,y_2)_m (x1,y1,x2,y2)m, W i , j W_{i,j} Wi,j表示采样权重,
如何看待大小目标的区别?
由于大物体可能产生数千个样本,而小物体可能只产生几个样本。将所有样本贡献的损失归一化后,小物体贡献的损失甚至可以忽略不计,这将损害对小物体的检测性能。
作者这里采取的方法是使用 W i , j W_{i,j} Wi,j进行损失的一个平衡
W i j = { log ( a m ) × G m ( i , j ) ∑ ( x , y ) ∈ A m G m ( x , y ) ( i , j ) ∈ A m 0 ( i , j ) ∉ A W_{i j}=\left\{\begin{array}{ll} \log \left(a_{m}\right) \times \frac{\mathrm{G}_{m}(i, j)}{\sum_{(x, y) \in A_{m}} \mathrm{G}_{m}(x, y)} & (i, j) \in A_{m} \\ 0 & (i, j) \notin A \end{array}\right. Wij={log(am)×∑(x,y)∈AmGm(x,y)Gm(i,j)0(i,j)∈Am(i,j)∈/A
其中 G m ( i , j ) G_m(i,j) Gm(i,j)表示在 ( i , j ) (i,j) (i,j)位置的高斯概率, a m a_m am表示第m个box的面积,这里我感到奇怪的是为什么乘上 l o g ( a m ) log(a_m) log(am)呢?也就说面积越大,我们越看重它的损失吗?那么我们是不是就更不容易回归小目标了?
总损失情况
L
=
w
l
o
c
L
l
o
c
+
w
r
e
g
L
r
e
g
L=w_{l o c} L_{l o c}+w_{r e g} L_{r e g}
L=wlocLloc+wregLreg,其中
w
l
o
c
=
1.0
w_{loc}=1.0
wloc=1.0,
w
r
e
g
=
5.0
w_{reg} = 5.0
wreg=5.0
(六)Experiment
6.1 实验细节
- 数据集:使用MS COCO 2017 benchmark,使用Train split(115K images)用于训练,我们的report performance 是基于验证集Val split(5K images)
- 使用ResNet和DarknNet作为实验的backbone
- 将图片resize到512*512。并且不保持长宽比
- 除非采用长时间训练策略,否则我们在训练中仅仅使用随机翻转进行数据增强
- 我们使用unfrozen BN但是冻结all parameters of stem and stage 1 in the backbone。
- 对于ResNet来说,初始的学习率为0.016,对于DarkNet,我们的初始学习率为0.015
- mini-batch size的大小为96,学习率在epoch 18 和epoch 22分别下降10倍
- 网络使用SGD训练了24个epoch
- 超快的训练版本,训练schedule减半
- 对长时间训练版本,训练时间增加了5倍(120个epochs),权重衰减和动量分别设置在0.0004和0.9,至于网络中的bias参数,它们的权重衰减设置为0,并且学习率翻倍。
- warm-up在前500个steps使用
- 初始backbone网络使用在ImageNet上的预训练权重
- 实验基于开源的detection toolbox mmdetection,使用8块1080Ti
6.2 Ablation Study
我们在Ablation study中使用super-fast TTNet-53,在COCO 5K-val上进行AP的计算,Inference 时间通过1台GTX 1080Ti来进行计算。
回归权重
W
i
,
j
W_{i,j}
Wi,j
对上面5组实验进行说明,
首先是第一组,从下文的描述中,博主认为该组实验采取的损失函数为:
L r e g = 1 N r e g ∑ ( i , j ) ∈ A m GIoU ( B ^ i j , B m ) L_{r e g}=\frac{1}{N_{r e g}} \sum_{(i, j) \in A_{m}} \operatorname{GIoU}\left(\hat{B}_{i j}, B_{m}\right) Lreg=Nreg1(i,j)∈Am∑GIoU(B^ij,Bm)
该损失函数没有考虑大小目标产生的回归样本数量之间的差异,大物体产生的样本数是小物体的几百倍,然后同时除以一张图中回归的总样本数 N r e g N_{reg} Nreg使得小目标在损失中的贡献被缩小了若干倍。
接着是第二组,博主认为这里作者采取的损失函数应该是
L r e g = ∑ ( i , j ) ∈ A m 1 n m GIoU ( B ^ i j , B m ) L_{r e g}= \sum_{(i, j) \in A_{m}} \frac{1}{n_{m}}\operatorname{GIoU}\left(\hat{B}_{i j}, B_{m}\right) Lreg=(i,j)∈Am∑nm1GIoU(B^ij,Bm)
其中 n m n_m nm表示第m个annotated box B m B_m Bm对应的回归样本数,这样我们将大样本的损失和小样本的损失通过均值归一化到一样的程度上,使得大小样本达到平衡,不过作者指出这样处理会导致次优的结果,因为它失去了利用large boxes包含更多信息的机会。
接着第三组,博主认为作者这里采取的损失函数应该是
L r e g = 1 N r e g ∑ ( i , j ) ∈ A m GIoU ( B ^ i j , B m ) × W i j L_{r e g}=\frac{1}{N_{r e g}} \sum_{(i, j) \in A_{m}} \operatorname{GIoU}\left(\hat{B}_{i j}, B_{m}\right) \times W_{i j} Lreg=Nreg1(i,j)∈Am∑GIoU(B^ij,Bm)×Wij
其中 W i j = { a m ( i , j ) ∈ A m 0 ( i , j ) ∉ A W_{i j}=\left\{\begin{array}{ll} \sqrt {a_{m}} & (i, j) \in A_{m} \\ 0 & (i, j) \notin A \end{array}\right. Wij={am0(i,j)∈Am(i,j)∈/A
第四组中,权重 W i j = { log a m ( i , j ) ∈ A m 0 ( i , j ) ∉ A W_{i j}=\left\{\begin{array}{ll} \log {a_{m}} & (i, j) \in A_{m} \\ 0 & (i, j) \notin A \end{array}\right. Wij={logam0(i,j)∈Am(i,j)∈/A
第五组中,权重为: W i j = { a m × G m ( i , j ) ∑ ( x , y ) ∈ A m G m ( x , y ) ( i , j ) ∈ A m 0 ( i , j ) ∉ A W_{i j}=\left\{\begin{array}{ll} \sqrt {a_{m}} \times \frac{\mathrm{G}_{m}(i, j)}{\sum_{(x, y) \in A_{m}} \mathrm{G}_{m}(x, y)} & (i, j) \in A_{m} \\ 0 & (i, j) \notin A \end{array}\right. Wij={am×∑(x,y)∈AmGm(x,y)Gm(i,j)0(i,j)∈Am(i,j)∈/A
第六组中,权重为 W i j = { log ( a m ) × G m ( i , j ) ∑ ( x , y ) ∈ A m G m ( x , y ) ( i , j ) ∈ A m 0 ( i , j ) ∉ A W_{i j}=\left\{\begin{array}{ll} \log \left(a_{m}\right) \times \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 \end{array}\right. Wij={log(am)×∑(x,y)∈AmGm(x,y)Gm(i,j)0(i,j)∈Am(i,j)∈/A
通过Ablation 实验对比出各种损失函数的差异。
我们在回归权重中引入高斯概率,可以更优雅、更有效地降低ambiguous样本和low-quality样本的影响。ambiguous样本是指位于重叠区域的样本,low-quality样本是指远离物体中心的样本
在回归目标中引入高斯核
我们的高斯设计可以减少两种类型的样本(ambigous 以及 low-quality样本),而没有任何副作用。它在box内部产生一个sub-area,sub-area的相对大小受超参数β的影响。较大的β利用了更多带注释的信息,但也带来了更多ambiguous样本和low-quality的样本
当 β = 0 \beta=0 β=0时,仅仅是box center作为回归的样本,和CenterNet相同,当 β = 1 \beta=1 β=1时rectangle box中所有的样本都会被看成是训练样本,
对于 β \beta β的Ablation实验,从中我们可以看到随着 β \beta β的增加,我们能够利用到更多的信息,从而使得AP值增加,但是随着 β \beta β的持续增加,包含了更多的ambiguous样本以及low-quality的样本,使得AP下降,这里的疑问是class-aware regression指的是什么?这个地方不知道作者是怎么安排这组实验的
从上图中可以看出,利用高斯核来生成回归samples能够比中心点以及矩形子区域获得更好的效果
在高斯核中考虑box的长宽比
博主认为这里长宽比应该是在高斯核的方差中,那么这组实验中我感到奇怪的一点是:当没有使用高斯核时,是如何使用长宽比的?
Shortcut Connection
skip connection的步数是没有经过仔细的选择的
作者前文提到的更大学习率的设计
为了验证batch size大小和由annotated encode(其实就是回归的样本数)的训练样本数量之间的相似性,我们通过改变β和学习率来进行实验。如上表所示,我们可以观察到更大的β保证了更大的学习速率和更好的性能。此外,β越小,趋势越明显,因为ambiguous和low-quality样本越少。换句话说,有更多的样本就像扩大batch size一样,有助于进一步提高学习率。
从头开始训练,不加载Pre-train参数
从头开始训练收敛的会慢一些,需要更长的训练时间
和State-of-art的比较
我们训练时间很短,并且在推理时间上和FCOS相比要短很多
使用相同backbone上,TTFnet和CenterNet的比较
注:我们注意到,CenterNet为DLA34使用了专门定制的上采样层。为了在使用DLA34时比较CenterNet和TTFNet,我们用CenterNet中的层替换了TTFNet中的上采样层,因此我们对网络结构的更改不能应用(这里不是非常清楚作者指的是什么)。
(七)Conclusion
训练样本越多,学习速度越快,并提出了一种利用高斯核进行训练的新方法。它是平衡训练时间、推理速度和准确性的优雅而高效的解决方案。
(八)Notes
8.1 CenterNet中存在的问题
CenterNet在Inference时间上大大减少,几乎和backbone网络消耗的时间差不多了,
- 但是需要很长的训练时间,这是因为due to the simplification, making them heavily dependent on the data augmentation and long training schedule. 这使得CenterNet花费在训练上的时间相当长,需要140个epoch在MS COCO数据集上
- 此外,作者在论文中之处,CenterNet仅仅关注对象的中心进行size regression,失去了利用对象中心附近的information,这是导致CenterNet收敛慢的一个原因。
作者在训练CenterNet中发现的问题:
- 较大的学习率不能帮助CenterNet较快地收敛,并且移除augmentations会导致糟糕的性能
作者分析原因是:CenterNet中仅仅编码了在对象中心的单个回归样本
8.2 batchsize和学习率之间的关系
batchsize越大,可以采用更大的学习率,并且在大多数情况下,两者是呈线性关系的。作者在文中不断提及encode training samples plays a similar role as increasing the batch size,两者都可以为每一个training step提供更多的supervised signals
在论文Accurate, large minibatch SGD: training imagenet in 1 hour中指出,如果batch size乘上了k,那么学习率也应该乘上k,除非网络发生了较大的改变,
8.3 作者提出的利用Gaussian Kernel去编码训练样本是什么?
作者通过Gaussian kernel编码训练样本,使得网络能够更好地利用上annotated boxes产生更多的监督信息,帮助网络实现更快地收敛。
更具体地来说,就是利用kernel构造了围绕着物体中心的一个sub-area,,然后从这个区域中提取dense training samples。高斯概率被视为回归样本的权重,以强调对象中心附近的那些样本
8.4 作者论文的动机启发是什么?
首先,作者受到论文Accurate, large minibatch SGD: training imagenet in 1 hour的启发,注意到增加batch size 能够给每一个training step提供更多的有监督信息,同时在学习率上也可以提升,从而能够实现更快地训练。
接着作者借助SGD形式化说明了,论文中提及的大多数情况下,batch size的增加,意味着可以使用更大的学习率,两者之间是呈近似线性关系的,下面则是说明的过程:
首先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} \nabla l\left(x, w_{t}\right) wt+1=wt−ηn1x∈B∑∇l(x,wt)
其中 w w w表示网络的权重, B B B表示训练集的mini-batch采样,其中 n = ∣ B ∣ n= |B| n=∣B∣表示mini-batch的大小, η \eta η表示学习率。 l ( x , w t ) l(x, w_{t}) l(x,wt)表示损失函数,接着假设一张图像 x x x包含很多的annotated boxes,这些boxes被编码成训练samples s ∈ S x s \in S_x s∈Sx, m x = ∣ S x ∣ m_x = |S_x| mx=∣Sx∣表示一张图像中所有的samples总数。
这样的话我们整体损失就可以分别计算图片中每一个samples的损失,再取平均值(不太清楚这里为什么不取和,直接这样表示的话,是不是说的是每一个经过编码后的sample s都和之前的x是相同量级的?还是怎么安排的),将 ∇ l ( x , w t ) \nabla l\left(x, w_{t}\right) ∇l(x,wt)用 1 m x ∑ s ∈ S x ∇ l ( s , w t ) \frac{1}{m_{x}} \sum_{s \in S_{x}} \nabla l\left(s, w_{t}\right) mx1∑s∈Sx∇l(s,wt)进行替换,得到如下的表达式:
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}} \nabla l\left(s, w_{t}\right) wt+1=wt−ηn1x∈B∑mx1s∈Sx∑∇l(s,wt)
这里我有两个疑问:
- m x m_x mx的数量和图像 x x x中的bounding boxes数量相同吗?
- 作者是如何利用annotated bounding boxes产生training samples s s s的?
当假设mini-batch B B B中的每一张图片 x x x中 m x m_x mx(the number of samples produced by all the boxes in image x x x)相同时,即 m x = m ( ∀ x ∈ B ) m_x= m (\forall x \in B) mx=m(∀x∈B),那么此时我们可以进一步对上式进行化简,由 ∑ x ∈ B 1 m x ∑ s ∈ S x ∇ l ( s , w t ) = 1 m ∑ x ∈ B ∑ s ∈ S x ∇ l ( s , w t ) = 1 m ∑ s ∈ B ∇ l ( s , w t ) \sum_{x \in B} \frac{1}{m_{x}} \sum_{s \in S_{x}} \nabla l\left(s, w_{t}\right) = \frac{1}{m}\sum_{x \in B} \sum_{s \in S_{x}} \nabla l\left(s, w_{t}\right) = \frac{1}{m} \sum_{s \in B} \nabla l\left(s, w_{t}\right) ∑x∈Bmx1∑s∈Sx∇l(s,wt)=m1∑x∈B∑s∈Sx∇l(s,wt)=m1∑s∈B∇l(s,wt)得到:
w t + 1 = w t − η 1 n m ∑ s ∈ B ∇ l ( s , w t ) w_{t+1}=w_{t}-\eta \frac{1}{n m} \sum_{s \in B} \nabla l\left(s, w_{t}\right) wt+1=wt−ηnm1s∈B∑∇l(s,wt)
我们对上式以Batch size大小为 B j B_j Bj执行k次迭代,假定每一次迭代对应的batch size大小即 n = ∣ B ∣ n = |B| n=∣B∣相同,同时使用学习率为 η \eta η,得到下式:
w t + k = w t − η 1 n m [ ∑ s ∈ B 0 ∇ l ( s , w t ) + ∑ s ∈ B 1 ∇ l ( s , w t + 1 ) + . . . + ∑ s ∈ B k − 1 ∇ l ( s , w t + k − 1 ) ] w_{t+k}=w_{t}-\eta \frac{1}{n m} [\sum_{s \in B_0} \nabla l\left(s, w_{t}\right) +\sum_{s \in B_1} \nabla l\left(s, w_{t+1}\right)+...+\sum_{s \in B_{k-1}} \nabla l\left(s, w_{t+k-1}\right)] wt+k=wt−ηnm1[s∈B0∑∇l(s,wt)+s∈B1∑∇l(s,wt+1)+...+s∈Bk−1∑∇l(s,wt+k−1)]
当假设 ∇ l ( x , w t ) ≈ ∇ l ( x , w t + j ) , ∀ j < k \nabla l\left(x, w_{t}\right) \approx \nabla l\left(x, w_{t+j}\right),\forall j<k ∇l(x,wt)≈∇l(x,wt+j),∀j<k,那么上式中,我们再假设k次迭代的mini-batch中没有交集,则上式可以表示为:
w t + k = w t − η 1 n m ∑ s ∈ ∪ j ∈ [ 0 , k ) B j ∇ l ( s , w t ) (1) w_{t+k}=w_{t}-\eta \frac{1}{n m} \sum_{s \in \cup_{j \in[0, k)} B_{j}} \nabla l\left(s, w_{t}\right)\tag {1} wt+k=wt−ηnm1s∈∪j∈[0,k)Bj∑∇l(s,wt)(1)
当我们执行batch size为 k ∣ B ∣ = k n k|B| = kn k∣B∣=kn时,执行一次更新,学习率对应为 η n e w \eta_{new} ηnew,此时进行一次参数更新得到的结果为:
w t + 1 = w t − η n e w 1 k n m ∑ s ∈ ∪ j ∈ [ 0 , k ) B j ∇ l ( s , w t ) (2) w_{t+1}=w_{t}-\eta_{new} \frac{1}{k n m} \sum_{s \in \cup_{j \in[0, k)} B_{j}} \nabla l\left(s, w_{t}\right)\tag {2} wt+1=wt−ηnewknm1s∈∪j∈[0,k)Bj∑∇l(s,wt)(2)
从 ( 1 ) (1) (1)式和 ( 2 ) (2) (2)式的对应中,我们可以发现如果想要 w t + k = w t + 1 w_{t+k} = w_{t+1} wt+k=wt+1,我们采取的学习率 η n e w = k η \eta_{new} = k\eta ηnew=kη,是一个线性关系。
这里很关键的是
作者是通过encoded samples 来实现batch size的增加的,用原文的话是when the number of encoded training samples in each mini-batch is multiplied by k,博主认为这里作者应该可以控制编码训练样本的数量,从而达到和增加batch size一样的效果
不过由于编码好的训练样本 s ∈ S x s \in S_x s∈Sx存在着较强的相关性,因此,在学习率增加上面不能太大,因此作者这里的学习率 η e n c o d e = l η \eta_{encode} = l \eta ηencode=lη,其中 1 ≤ l ≤ k 1 \leq l \leq k 1≤l≤k
作者通过对CenterNet实验发现了:CenterNet中仅仅encode对象中心的回归样本。导致学习率增加不能够加快收敛速度。
基于提升学习率以及CenterNet中存在的编码回归样本的问题,作者有了本文。
别人咋想的论文呢?
8.5 相比于CenterNet 作者的改动有哪些?
- 在中心点定位上和CenterNet使用相同的定位方法,此外,作者考虑了在Gaussian核中box的长宽比
- 主流方法将整个box中的所有像素或者box的sub-rectangle区域看成训练样本,我们是将高斯区域中的所有样本看成训练样本。
- 通过Object size以及Gaussian 概率计算权重,并且不需要额外的预测来矫正error,更加简单高效。