TTFNet解读

正巧最近CenterNet的作者发布了CenterNet2,趁此机会也读一读这篇之前针对CenterNet训练时间改进的TTFNet。

简介

针对当前目标检测算法的痛点:其实大多数检测器都无法同时做到短的训练时间快的推理速度高的模型精度。为了追求这三者的平衡,TTFNet(Training-Time-Friendly Network,训练时间友好网络)被提了出来,在这个工作中,作者的起点是轻量的head(light-head)、单阶段(single-stage)和anchor-free的设计,这类方法可以保证推理速度较快,继而开始思考如何加快训练时间。回顾前人的方法,可以发现使用更多的训练样本等效于增大batch siz,有助于增大学习率加快训练过程。文中反复出现的encode more training samples的意思其实是采用更多的训练样本点,CenterNet只使用中心点进行目标回归,FCOS则采用GT中所有点进行目标回归,本文则采用高斯核控制参与回归的样本数量,从而引入更多回归样本加速收敛,又避免了FCOS那样的NMS后处理。实验表明,TTFNet获得了很好的训练时间、推理速度和精度的平衡,在获得SOTA精度的同时减少7倍的训练时间,超快版本的TTFNet-18和TTFNet-53超越SSD300和YOLOv3的同时,只需要它们十分之一的训练时间。

  • 论文标题

    Training-Time-Friendly Network for Real-Time Object Detection

  • 论文地址

    http://arxiv.org/abs/1909.00700

  • 论文源码

    https://github.com/ZJULearning/ttfnet

介绍

训练时间、推理速度和模型精度是目标检测领域目前研究的主要方向,但是,很少有工作在这三者间追求一个平衡。直观上看,推理速度快的检测器就应该有更短的训练时间,然而事实往往不是这样,大多数实时检测器比起非实时的检测器需要更长的训练时间。精度往往是我们最关心的,精度高的前提下将检测器分为两种:推理速度慢的和训练时间久的。前者往往有着庞大的head和复杂的后处理,这种设计虽然精度更高收敛更快但是不可避免为推理带来了压力,降低了推理速度,并不适用于实时应用。因此,后者这种简化head和后处理设计同时保持精度的检测器应运而生,CenterNet就是代表方法之一,其推理时间几乎和backbone网络相当。然而,这类推理速度快的网络都不可避免地需要漫长的训练,这也很容易理解,这类模型相对比较简单因而难以训练,需要大量的数据增强和训练调度。举例而言,CenterNet在COCO上需要140轮的训练,而那种推理速度较慢的网络只需要12轮。

因此,TTFNet这篇文章主要关注如何将CenterNet这类网络的训练时间缩短同时保证精度和实时推理的速度。此前的研究表明,batch size越大可以采用更大的学习率,而且大多数情况下两者符合线性关系。而作者注意到,从标注框中编码更多的训练样本的效果是类似于增大batch size的。相比于特征提取的时间,编码特征和损失计算的时间是几乎可以忽略不计的,所以基本上可以在不增加额外开销的情况下安全地获得更快的收敛速度。遗憾的是,CenterNet仅仅使用目标的中心来进行尺寸回归,没有利用目标中心附近的信息,TTFNet作者通过实验证明,就是这个设计导致CenterNet收敛很慢。

为了缩短训练时间,论文提出了一种新的使用高斯核来编码更多训练样本的方法来进行目标的定位和回归,这种策略使得网络可以更好地利用标注框产生更多的监督信号,这给快速收敛提供了保证。具体而言,通过高斯核函数在目标中心周围构造一个子区域,然后从该区域提取密集的采样点作为训练样本点。此外,将高斯概率作为回归样本的权重,来对靠近目标中心的目标赋予更高的权重。之后,作者还提出适当的规范化来利用大框的更多信息且保持小框的信息。论文提出的方法可以减少混淆核低质量样本而不需要任何的其他组件(如FPN),它也不需要位移预测来辅助定位,因此TTFNet是高效的、统一的、直观的。

在这里插入图片描述

整体来看,论文第一次提出了一个训练时间、推理速度和精度平衡良好的检测器,相比CenterNet和其他实时检测器减少了至少7倍的训练时间,并且效果上保证了sota水平。最快版本的TTFNet-18和TTFNet-53可以获得25.9的AP及112的FPS(8卡1080Ti需要1.8小时训练)和32.9的AP及55的FPS(8卡1080Ti需3.1小时训练),这是就作者所知,目前COCO上达到这一精度的最短训练时间。它们training from scratch分别需要19小时和32小时,获得的效果和任何SOTA
相比都不遑多让。

动机

编码更多的训练样本和使用更大的batch size都可以为每一步的更新提供更多的监督信号,加快模型的训练。这里的训练样本指的是依据标注框编码的特征。回顾前人的工作,线性缩放规则于2017年被首次提出,它指的是,一般情况下batch size变为k倍,学习率也需要调整为k倍。而事实上,作者经过公式推导发现,对目标检测而言,训练样本量增加和batch size增加是几乎等效的。

CenterNet作为一种新的anchor-free检测器,推理速度几倍于当前检测器,但是需要长时间的训练,这是因为模型相对简单从而需要大量的数据增强,这些数据增强虽然保证了模型性能的稳步上升但也减缓了模型的收敛速度。作者这里去掉了数据增强并且提高了学习率,得到如下图所示的结果,较大的学习率并不能加快模型的收敛,移除数据增强也导致了性能的急剧下降。发生的原因就是CenterNet只采用一个回归样本点,导致大量信息的丢失,从而需要复杂的数据增强和长时间训练,导致该网络训练上很不友好。

在这里插入图片描述

为了消除CenterNet的这个弊端,作者推断采用一个更好的编码回归样本的策略是必要的。以此为出发点,TTFNet诞生了。

TTFNet

背景

首先回顾一下CenterNet这个方法,它将目标检测视为两部分:中心定位尺寸回归。对于定位问题,它采用和CornerNet一样的高斯核来产生热力图,这种方式可以保证网络在目标的中心附近产生更强力的激活值。对于回归问题,它定义处于目标中心的像素作为训练样本并且直接预测目标的宽高,同时也预测一个偏移(offset)来恢复由于下采样造成的离散化误差。由于网络推理时可以在目标中心点附近产生更强的激活值,因此NMS不是必须的,后处理步骤的计算开销可以忽略不计。

为了消除NMS的需求,因此TTFNet这篇文章的中心定位和CenterNet是类似的,只不过进一步考虑了高斯核中边框的宽高比,这是CenterNet没有考虑的,因此CenterNet的策略是次优的。

而对于尺寸回归,主流的方法是及那个整个标注框内的像素点或者标注框内子框区域内的像素点作为训练样本。作者则认为,应当将整个高斯区域内的所有像素点作为训练样本。此外,基于目标尺寸和高斯概率计算的权重被应用到这些样本上以便于更好的特征提取,整个框架如下图所示,并不需要其他的预测分支来辅助纠错,因此是简单且有效的检测框架。

在这里插入图片描述

训练用高斯核

类似CenterNet,TTFNet对于输入图像会得到两个预测特征 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 S ^ ∈ R N × 4 × H r × W r \hat{S} \in R^{N \times 4 \times \frac{H}{r} \times \frac{W}{r}} S^RN×4×rH×rW,前者用于表明目标中心的位置后者则用来获取关于目标尺寸的信息。其中的 N N N C C C H H H W W W r r r分别表示batch size、类别数目、输入图像的宽和高以及输出缩放比例(下采样率)。实验中设置 C = 80 C=80 C=80 r = 4 r=4 r=4,为了方便叙述后面都不再提及 N N N这个维度,在论文的方法中高斯核既用于定位也用于回归,定义了两个标量 α \alpha α β \beta β分别来控制核的尺寸。

目标定位

假定属于第 c m c_m cm类的第 m m m个标注框,首先它会被线性映射到特征图的尺度上。然后,2D高斯核 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(xx0)22σy2(yy0)2)会被用来生成 H m ∈ R 1 × H r × W r H_{m} \in R^{1 \times \frac{H}{r} \times \frac{W}{r}} HmR1×rH×rW,这里的 σ x = α w 6 , σ y = α h 6 \sigma_{x}=\frac{\alpha w}{6}, \sigma_{y}=\frac{\alpha h}{6} σx=6αw,σy=6αh。最后,通过用 H m H_m Hm进行逐元素最大值求解来更新 H H H上第 c m c_m cm个通道。可以看到,其实 H m H_m Hm的获得依赖于参数 α \alpha α、中心位置 ( x 0 , y 0 ) m (x_0,y_0)_m (x0,y0)m和边框尺寸 ( h , w ) m (h,w)_m (h,w)m。使用取整操作 ( ⌊ x r ⌋ , ⌊ y r ⌋ ) \left(\left\lfloor\frac{x}{r}\right\rfloor,\left\lfloor\frac{y}{r}\right\rfloor\right) (rx,ry)来限制中心像素的位置必然是整数,这和CenterNet一致,这里 α \alpha α被设置为0.54,这并非精心设计的值。

高斯分布的峰值即边框中心的像素,被视为正样本,其他的均为负样本,这里损失采用modified focal loss,它在预测的 H ^ \hat{H} H^和定位目标 H H H之间计算,计算式如下,其中的 α f \alpha_f αf β f \beta_f βf为focal loss和modified focal loss的超参数, M M M代表标注框的数目,论文设置 α f = 2 \alpha_f = 2 αf=2 β f = 4 \beta_f = 4 βf=4

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}{l} \left(1-\hat{H}_{i j c}\right)^{\alpha_{f}} \log \left(\hat{H}_{i j c}\right) \quad \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) \quad \text { else } \end{array}\right. Lloc=M1xyc(1H^ijc)αflog(H^ijc) if Hijc=1(1Hijc)βfH^ijcαflog(1H^ijc) else 

尺寸回归

考虑已经被映射到特征图尺度上的第 m m m个标注框,另一个高斯核被用来产生 S m ∈ R 1 × H r × W r S_{m} \in R^{1 \times \frac{H}{r} \times \frac{W}{r}} SmR1×rH×rW,这个高斯核的参数由 β \beta β控制,若 α \alpha α β \beta β相等,可以使用同一个高斯核。在 S m S_m Sm中的非零部分定义为高斯区域 A m A_m Am,如下图所示,蓝色框代表标注框,下图黑色区域代表样本点,下图是几种选择样本的方式。由于 A m A_m Am始终在第 m m m个标注框内部,因此下文均简称为子区域。

在这里插入图片描述

每个子区域内的像素均被视作回归样本,考虑 A m A_m Am中的一个像素 ( i , j ) (i,j) (i,j)以及下采样率 r r r,回归的目标就是从 ( i r , j r ) (ir,jr) (ir,jr)到第 m m m个标注框的四个边的距离,用一个四维向量表示为 ( 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。在 ( 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 \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, \quad \hat{y}_{2}=j r+\hat{h}_{b} s \end{array} x^1=irw^ls,y^1=jrh^tsx^2=ir+w^rs,y^2=jr+h^bs

上式中的 s s s是一个固定的标量用于增大预测结果以便于优化,在论文中设置 s = 16 s=16 s=16,而且这里的 ( 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)是在图像尺度上而不是特征图尺度上的。若一个像素不在任何子区域中,那么训练时他将被忽略。如果一个像素存在于多个子区域里,那么这是一个有歧义的样本,它的GT为具有最小面积的目标。

考虑预测 S ^ \hat{S} S^和回归目标 S S S,从 S S S中收集训练目标 S ′ ∈ R N r e g × 4 S^{\prime} \in R^{N_{r e g} \times 4} SRNreg×4和相应的预测结果 S ^ ′ ∈ R N r e g × 4 \hat{S}^{\prime} \in R^{N_{r e g} \times 4} S^RNreg×4(来自 S ^ \hat{S} S^),这里的 N r e g N_{reg} Nreg表示回归样本的数目。对这些所有的样本,利用上面的式子解码出预测的边框和相应的标注框,通过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)AmGIoU(B^ij,Bm)×Wij

上式中的 B i j ^ \hat{B_{ij}} Bij^表示预测框 ( x ^ 1 , y ^ 1 , x ^ 2 , y ^ 2 ) i j \left(\hat{x}_{1}, \hat{y}_{1}, \hat{x}_{2}, \hat{y}_{2}\right)_{i j} (x^1,y^1,x^2,y^2)ij,而 B m = ( x 1 , y 1 , x 2 , y 2 ) m B_{m}=\left(x_{1}, y_{1}, x_{2}, y_{2}\right)_{m} Bm=(x1,y1,x2,y2)m表示真实的图像尺度上的第 m m m个标注框。 W i j W_{ij} Wij表示采样权重,用来平衡每个样本对损失的贡献。

继续考虑到目标的尺度变化可能是很大的,大目标也许会产生数千的样本而小目标仅仅会产生非常少量的样本,再依照样本贡献度标准化损失之后,小样本带来的损失是可以忽略不计的,这对检测器在小目标上的性能损害是很大的。因此上述的采样权重 W i j W_{ij} Wij在损失平衡方面尤其重要。假定 ( i , j ) (i,j) (i,j)在第 m m m个标注的子区域 A m A_m Am中, W i j W_{ij} Wij的计算式如下。

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 ) \mathrm{G}_{m}(i, j) Gm(i,j)表示 ( i , j ) (i,j) (i,j)位置处的高斯概率, a m a_m am是第 m m m个标注框的面积。该方案可以很好地利用大目标中包含的更多注释信息,同时保留小目标中的注释信息。它还可以强调目标中心附近的这些样本,减少模糊和低质量样本的影响。

总体损失

讲完最关键的size regression之后,最终的损失如下式所述,它是定位损失和回归损失的加权求和结果,两个收工设计的权重 w l o c w_{loc} wloc w r e g w_{reg} wreg分别是1.0和5.0。

L = w loc  L loc  + w reg  L r e g L=w_{\text {loc }} L_{\text {loc }}+w_{\text {reg }} L_{r e g} L=wloc Lloc +wreg Lreg

总体结构

整个TTFNet的结构与如下图所示,论文中backbone采用ResNet和DarkNet,特征图通过MDCN和上采样层调整到原图的1/4分辨率。这个特征图随后分别进入两个head中,定位head(下图上面分支)用来产生目标中心附近激活值更强的热度图,回归head(下图下面分支)直接预测定位目标中心到边框四个边的距离。由于目标中心是热度图上的局部最大值,因此不需要nms只需要使用最大池化即可定位目标。通过这个方法找到的局部最大值用来产生回归结果,进而完成目标检测。

在这里插入图片描述

TTFNet这种设计高效利用了大尺寸和中等尺寸目标的标注信息,但是受限于小目标信息的确过少,所以作者又通过短路连接将高分辨率低语义信息的特征图传到最后,这些特征图来自stage2、stage3和stage4。

实验

这篇论文进行了大量的消融实验论证论文提出的方法,采用的模型为TTFNet-53。首先验证了回归权重 W i j W_{ij} Wij的重要性,每个标注框产生的样本量是不同的,这点上面已经阐述了,主要是大目标训练样本很多而小目标训练样本很少。不进行任何平衡处理的结果如下表的第一列,结果很差。有个直接的策略就是对标注框的损失按照样本量进行标准化,如第 m m m个标注框有 n m n_m nm个样本,那么损失就乘以权重 1 n m \frac{1}{n_{m}} nm1,这个结果也不是最优的,因为模型丧失了利用大目标更多信息的机会。这个结果是下表的第二列。下标的Sqrt和Log则表示对边框区域面积sqrt和log的结果作为采样权重。最后,采用文中提出的高斯概率配合面积log值作为采样权重获得了最好的效果,如下表最后一列,它能解决上述的其他方法的问题。

在这里插入图片描述

这种高斯核的设计引入回归权重中会优雅且高效地处理低质量或有歧义的样本,这个有歧义的样本指的是定位在重叠区域的样本,而低质量样本指的是远离目标中心的样本。此前已经有不少方法解决这两种问题样本,如centerness分支,高斯核加权的引入可以毫无边缘效应地处理这两种样本,它会在标注框内部产生一个子区域,这个子区域的大小仅受到超参数 β \beta β的控制, β \beta β越大则可以利用更多的信息也会引入更多的上述两种样本。关于 β \beta β的选择,如下表所示。

在这里插入图片描述

实验表明,模型性能差的主要原因是低质量样本,引入高斯核可以有效选择训练样本,因为高斯核区域的样本都是目标高相关的。不同于CenterNet,作者还考虑了高斯核中的box的长宽比。如下图所示,显然,考虑长宽比会带来不小的收益。

在这里插入图片描述

之后,作者研究了短路连接给模型带来的收益(针对小目标),显然,是有效果的,结果如下图所示。

在这里插入图片描述

样本量对学习率的影响,如下表所示,可以发现 β \beta β越大引入样本越多,可以采用更大的学习率,这和使用更大的batch size效果类似。

在这里插入图片描述

下图是traing from scratch的结果,需要更长的训练时间。

在这里插入图片描述

下图则是喜闻乐见的和SOTA的对比,与一些比较新的推理很快的方法对比,精度更高训练耗时更短。

在这里插入图片描述

最后,还和对标的CenterNet进行了对比,如下。

在这里插入图片描述

总结

TTFNet针对CenterNet训练样本不足的问题使用高斯核进行样本选择,是平衡训练时间、推理速度和准确性的优雅而高效的解决方案。理论分析和实验都很详实,是不可多得的好文章。设计的TTFNet大大减少了训练速度,对设备不太充足的研究者是很友好的,也适用于NAS等技术。本文只是做了一些基本的解读,如果我的文章对你有所帮助,欢迎一键三连,你的支持是我不懈创作的动力。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周先森爱吃素

你的鼓励是我坚持创作的不懈动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值