目标检测:TTFNet: Training-Time-Friendly Network for Real-Time Object Detection

笑着哭i 提交于 2021-02-03 08:34:43

 

论文出发点:

当期大多数检测器很难同时取得训练时间短、快速推理快、精度高

 

论文改进点:

(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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!