代码地址:Grid R-CNN
1. 概述
导读:Grid R-CNN将原(Faster R-CNN)中检测框偏移预估的问题转换为网格点预估问题,有了网格点的帮助,检测的性能有了进一步提升。而这篇文章提出的改进主要在原Grid R-CNN的基础上提升速度,同时也提升精度,改进之后的方法叫作Grid R-CNN Plus。其在COCO数据集上基于Res50-FPN获得了40.4%的mAP,超过前一个版本3%,同时推理的时间相差无几(相比Faster R-CNN FPN)。
2. 方法改进
2.1 Grid Point Specific Representation Region
这一部分是Grid R-CNN Plus中最显著的改进点,既是修改了grid point的特征表达,变为网格点的特定表达。由于只有正样本(IOU>0.5)才会被送入Grid branch,该branch的输出叫heatmap,维度是
56
∗
56
56*56
56∗56,heatmap的监督信息就如Figure2中第一行的2个图所示,分别是左上角关键点的监督信息和右中位置关键点的监督信息。

在Grid RCNN算法中,输出的heatmap和监督信息都是
56
∗
56
56*56
56∗56大小,但其实这里面是有冗余的,举个例子,对于左上角关键点的预测,其监督信息中只有1/4左右的区域是有效的(Figure2第一行的第一个图),剩下的3/4区域都不会包含左上角关键点的监督信息,也就是说相关的计算是冗余的,因此完全可以把监督信息的区域缩小到真正有效的区域(Figure2第二行的第一个图),同时将模型的输出heatmap大小也设计成
28
∗
28
28*28
28∗28,这样就能有效减少冗余计算。
将模型的输出heatmap大小设计成 28 ∗ 28 28*28 28∗28实现起来也比较简单:grid branch的输出特征图可以按照关键点进行分组,没有必要一个特征图负责所有关键点的预测。
2.2 LightGrid Head
由于最后的输出尺度降低了一半,那也可以同时将grid branch中的其他特征图分辨率也降低,比如 14 ∗ 14 14*14 14∗14到 7 ∗ 7 7*7 7∗7。具体来说,通过前面的RPN+ROIAlign产生一个固定的feature map分辨率为 14 ∗ 14 14*14 14∗14,接着使用一个步长为2的 3 ∗ 3 3*3 3∗3卷积核,然后再使用7个步长为1的 3 ∗ 3 3*3 3∗3卷积核从而产生 7 ∗ 7 7*7 7∗7分辨率的特征图。紧接着将这个特征分成N组(默认为9),每一组关联一个grid point,接着使用两个组反卷积将特征图尺度变为 28 ∗ 28 28*28 28∗28,这里的group deconvolution可以加速上采样的过程。
另外一个好处是,由于我们对每个grid point的表达进行了归一化,因此他们变得更加closer,导致在特征融合时不需要使用很多的卷积层来覆盖这个间隙。在Plus版本,只使用了一个 5 ∗ 5 5*5 5∗5的depth-wise卷积层来代替原来的3个连续的卷积层。
2.3 Image-acrossSample Strategy
由于grid branch在训练时只使用正样本,所以不同采样batch正样本数量的不同会对于精度产生影响,比如,有些图像的正样本很多,但有些图像的正样本数很少。在Plus版本,作者使用了跨图片的采样策略,具体讲,从两个图片中一共采集192个positive proposal,而不再是每张图片采集96个positive proposal。这样就会使训练更具有鲁棒性以及精度提高。
2.4 NMS Only Once
原来的Grid RCNN需要两次NMS,第一次是proposal的生成,只选择Top 125个样本进行边框矫正,第二次是做最后的classification,作者发现,尽管只是一小部分的proposal,进行80类的NMS还是很慢,所以在Plus版本,直接移除了第二个NMS,同时将第一个NMS的IOU阈值设置为0.3,分类阈值设置为0.03,只选择100个proposal进行进一步的分类和回归。
3. 实验结果

Grid R-CNN Plus通过改进Grid Point Representation、采用LightGrid Head、Image-acrossSample Strategy及NMS优化,提高了检测速度和精度。在COCO数据集上,基于Res50-FPN实现40.4% mAP,同时保持接近原版的推理速度。
5550

被折叠的 条评论
为什么被折叠?



