论文出发点:
当期大多数检测器很难同时取得训练时间短、快速推理快、精度高。
论文改进点:
(1)TTFNet 采用了 light-head + single-stage + anchor-free 的设计,用以保持高速推理。
(2)TTFNet 引入一种利用高斯核对训练样本进行编码的新方法。因为作者观察到:从注释框中编码更多的训练样本与增加批处理大小具有相似的作用,这有助于扩大学习速率和加速训练过程。
(3)此外,为了更好地利用信息,TTFNet 还采用了主动样本权重。
网络分类:
第一类:依赖 heavy-head 或者 complex post-processing,可以取得较高的精度和较快的收敛速度,但会导致推理速度的降低;
第二类:简化 detection head 或者 post-processing,目的是精度高、推理快,但由于网络的简化,使其严重依赖 data-augmentation 以及 long-time schedule,导致需要较长的训练周期。
第一类通常需要12epochs, 而centernet需要14epochs.
CenterNet 收敛速度慢分析:在做尺寸回归时,只关注了对象中心点的一个sample,忽略了中心点附近的sample。
缩短训练时间:
提出利用高斯核生成高质量训练样本的新方法。
(1)它允许网络更好地利用带注释的框来产生更多的监督信号,这为快速收敛提供了基础。具体来说,通过核构造目标中心周围的子区域,然后从该区域密集抽取训练样本。
(2)将高斯概率作为样本的权重来强调那些靠近目标中心的样本,并进一步应用适当的归一化来利用大box提供的更多信息,保留小box给出的信息。
该方法可以在不需要多尺度特征的情况下,减轻anchor-free探测器中常见的难以处理的模糊性。此外,它不需要任何偏移预测来帮助纠正结果,这是有效的,统一的,直观的。
本文算法背景:
CenterNet:将目标检测任务分为两个子任务——中心定位和大小回归。
对于定位,采用了CornerNet中的高斯核生成热图,使网络在目标中心附近产生更高激活值。
对于回归,将对象中心像素点作为训练样本,直接预测对象的高度和宽度。同时,预测了偏移量,以恢复由输出步长引起的离散化误差。
由于在目标中心附近的激活值比较高,所以耗时的NMS可以被其他开销较小的组件所替代。
TTFNET:
对于定位:作者采用了类似的定位策略。,以便消除NMS。同时,进一步考虑了box的长宽比,因为不考虑box长宽比的CenterNet策略显然是次优的。
对于回归:主流方法将整个box中的像素或box的子矩形区域作为训练样本。作者建议将高斯区域内的所有像素作为训练样本。此外,利用目标大小和高斯概率计算出的权值对这些样本进行加权,以更好地利用信息。
高斯核训练:
对于一幅图像,TTFNet会输出预测结果:N:batch_size, C:类别数, r:下采样倍数, H/r, W/r:特征数长宽
,
H:预测目标中心可能的位置, S:预测目标的尺寸信息
Object Localization:
假定第m个GT box属于C类,根据下采样倍数,将其线性映射到特征图尺寸上。然后采用高斯核Km生成Hm
显然,Hm取决于参数α, GT box的中心(x0, y0), 以及box的尺寸(h,w)。网络设置 α=0.54 , 作者提到,这个数值并未精心设计。
由于下采样后,物体中心点可能位于像素之间,所以使用([x/r], [y/r])向下采样,强制中心点数值是整数,类似于CenterNet。
最后:对Hm使用像素最大值对H中的第Cm类通道进行更新。
高斯分布的山峰,也就是box的中心,选作positive sample, 其余的作为negtive sample.
Size Regression:
同样采用高斯核,kernel size 是参数β控制, 如果参数α和参数β相同的话,可以用容一个高斯核了。
TTFNet采用的Figure3中的d方式,黑色部分,文中称之为: Gaussian-area A。
area A中的每个pixel位置都会用于回归尺寸信息,这点就和上面提到的CenterNet是不相同的。
给定area A中的一个位置(i,j)和下采样倍数r。那么该点映射回原图的坐标位置是(i*r, j*r)。
TTFNet定义的回归目标,即尺寸回归的真值:点(i*r, j*r)到GT box四个边的距离(wl,ht,wr,hb)。
TTFNet实际的预测是:其中s是固定值,默认为16,设置这么大的好处是预测值可以很小,这样网络波动就会小,更容易收敛。需要注意的是,下面的x1,x2,y1,y2均是原图上的坐标值。
如果像素点不属于area A,那么训练时不参与训练,直接忽略。如果像素点属于多个高斯分布,约定其属于面积比较小的那个目标。
回归loss使用GIOU:
Bij表示的预测值:
Bm表示的真值:
Wij:表示的sample的权重,用于平衡每个样本对loss的贡献
由于大目标的产生的area A比较大,产生的sample 也比较多,而小目标就比较少,可能sample就几个。如果简单的归一化的话,那可能小目标的sample做出的loss就被淹没掉了。
所以,这里就显示出Wij的作用了。
其中:Gm表示(i,j)点高斯核生成的概率值, am表示box的面积值 。
文中提到该方案:可以很好地利用大对象中包含的更多注释信息,并保留小对象的注释信息。它还可以强调这些靠近物体中心的样本,减少模糊样本以及低质量样本的影响。
【这里我有点没有想清楚,大目标的log(am)数值依然是比小目标log(am)要大的,即使该数值相近,但抽样的sample数量差距巨大,所以log(am)并不能起到平衡的作用啊,有明白的帮忙提点一下】
total loss: wloc = 1, wreg = 0.5
来源:oschina
链接:https://my.oschina.net/u/4286781/blog/4942879