Grid RCNN Plus 算法笔记
Posted AI之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grid RCNN Plus 算法笔记相关的知识,希望对你有一定的参考价值。
论文:Grid R-CNN Plus: Faster and Better
论文链接:https://arxiv.org/abs/1906.05688
代码链接:https://github.com/STVIR/Grid-R-CNN
代码链接2:https://github.com/open-mmlab/mmdetection
这篇技术文章要介绍的Grid RCNN Plus算法是Grid RCNN算法的加速版,关于Grid RCNN算法的解读可以参考博客:Grid RCNN算法笔记。因为Grid RCNN是在Faster RCNN算法上做的改进,虽然效果提升明显,但是增加的计算量也较大,因此才有了Grid RCNN Plus,在保持甚至更优于Grid RCNN算法效果的同时达到Faster RCNN的速度。
Grid RCNN Plus算法比较有意思的点在于Figure2。我们知道Grid RCNN算法是基于关键点检测来预测目标框的位置的,用于检测关键点的支路叫grid branch,这条支路的输出叫heatmap,维度是56×56,heatmap的监督信息就如Figure2中第一行的2个图所示,分别是左上角关键点的监督信息和右中位置关键点的监督信息。在Grid RCNN算法中,输出的heatmap和监督信息都是56×56大小,但其实这里面是有冗余的,举个例子,对于左上角关键点的预测,其监督信息中只有1/4左右的区域是有效的(Figure2第一行的第一个图),剩下的3/4区域都不会包含左上角关键点的监督信息,也就是说相关的计算是冗余的,因此完全可以把监督信息的区域缩小到真正有效的区域(Figure2第二行的第一个图),同时将模型的输出heatmap大小也设计成28×28,这样就能有效减少冗余计算。
将模型的输出heatmap大小设计成28×28实现起来也比较简单:grid branch的输出特征图可以按照关键点进行分组,没有必要一个特征图负责所有关键点的预测,这部分和RFCN算法针对Faster RCNN算法的改进有异曲同工之妙,RFCN算法主要解决的是Faster RCNN中RoI重复计算的问题,Grid RCNN Plus主要主要解决的是Grid RCNN中稀疏的计算。
具体来说,RoI的大小还是保持14×14,和Grid RCNN算法一样,但是Grid RCNN Plus的Grid branch会通过修改后的一系列卷积层,最终输出9组特征图,特征图的维度是7×7(这里维度减小是减少计算量的关键),每组特征图用来指定每个关键点(grid);最后同样通过2个反卷积层得到28×28大小的输出heatmap,表示关键点在每个位置的置信度。监督信息上,将原本Grid RCNN的56×56大小的监督信息裁剪出9个大小为28×28的监督信息,这样就完成了grid分支的训练。
另外还有3个优化点简单说下,分别是:1、在得到14×14大小的RoI特征后,先将特征维度减少一半(变成14×14),减少后续的计算量。2、grid分支的正样本数量以一个批次的所有图像为基础做限定,而不是对每张图像做限定,这样每个批次的正样本数量相对稳定一些,有利于训练的稳定。3、通过降低RPN网络的NMS阈值,将重复样本尽可能在RPN输出region proposal时解决,从而去掉检测网络的NMS操作,进一步加速。
最后的实验结果如Table1所示,和Grid RCNN相比,Grid RCNN Plus的主要改进还是体现在速度上。
以上是关于Grid RCNN Plus 算法笔记的主要内容,如果未能解决你的问题,请参考以下文章