论文下载:
https://msc.berkeley.edu/research/autonomous-vehicle/sparse_rcnn.pdf
论文代码:
https://github.com/PeizeSun/SparseR-CNN
论文摘要:
提出一种纯稀疏(purely sparse)的图像目标检测方法,从图像中提取总长度为N的建议框,用来分类和回归位置,Sparse-RCNN避免对象建议设计(object candidates design)和多到一的标签分配(many-to-one label assignment)。最终的预测是直接输出的,没有NMS(非极大值抑制)后处理。并且性能与在COCO数据集上表现良好的检测器相当。
关于目标检测器的思考:
以往的目标检测器大部分为密集检测器(Dense detector),即建立在密集的建议基础(sliding-windows、anchor-boxes、reference-points)上,被提前预设在图像网格或者特征图网格上,再预测这些建议的分数、偏移,通过IOU(交并比)进行判断,然后通过NMS进行筛选。
小部分为密集-稀疏检测器(Dense-Sparse),首先从密集的建议区域提取比较少(稀疏)的前景框,即区域候选框,然后针对每个区域候选框进行分类和回归位置,从成千上万的候选剔除到少数的前景。
Sparse R-CNN:
左:密集检测器
中:密集-稀疏检测器
右:稀疏检测器
在密集检测器中,HWk候选对象枚举所有图像网格,作者提出的稀疏R-CNN(sparse RCNN),直接提供了一个N个学习对象的小集合建议。这里N < HWk
为了更好的表示物体的一些细节(姿势,形状),引入可学习的建议特征,与Proposal boxes提取的粗糙的ROI信息结合。
输入为一个图像、一组建议框(Proposal Boxes)和建议特征(Proposal Features),后两者是可学习的参数。主干网络提取特征图,将每个建议框和建议特征输入到其专属的dynamic head中,生成目标特征,最后输出分类和定位。
Proposal Boxes与Proposal Features的数量是相等的,即都为N。N为100~300的结果:
用一个固定的可学习的建议框(Proposal Boxes)(N×4)用作区域建议,建议框为0~1的参数,表示归一化的中心坐标、高度、宽度。同时建议框的参数通过反向传播进行更新。
Proposal boxes的初始化设置对最终结果影响很小:
简单来说sparse RCNN采用100组的可学习的建议框(Proposal Boxes)取代以往检测器由锚框(anchor boxes)学习得到的建议框(不需要RPN)。
也不需要复杂后处理和NMS,参考了DETR中的点集预测的做法。
上图为dynamic head的结构,为了更好的提取每个bbox实例的特征,对ROI信息和Proposal feature引入可交互模块(交叉注意力模块)。突出对前景贡献最大的bin(7×7)输出值,影响目标位置和分类预测,如果是背景,bin都没有高输出值。
可以采用transformer中的Multi-head Attention 机制实现交互效果,但实验表明dynamic head的效果更好:
采用类似级联的思想,新生成的建议框和建议特征将作为迭代过程中下一阶段的建议框和建议特征。
在dynamic head 中嵌入(embedding)自我注意力模块(Self-attention module)
作者提出的建议特征可以看作注意力机制(attention mechanism)的实现,用于处理大小为S×S的ROI中的bin。
采用焦损失(focal loss)进行一对一匹配,绕过RCNN家族的多对一匹配:
λ为系数,Lcls为焦损失(focal loss),Lgiou为IoU损失,LL1为L1损失
实验结果:
迭代架构中每个阶段预测框的可视化,包括已学习的提案框,显示分类分数在0.2以上的框,学会的建议框是白色的,同一提案的方框用同样的颜色绘制,学习的建议框随机分布在图像上,并一起覆盖整个图像:
随着阶段数的逐渐增加,6个阶段的性能达到饱和:
与COCO 2017 val set上不同的物体检测器的比较:
COCO va12017上的RetinaNet、Faster RCNN、DETR和Sparse R-CNN的收敛曲线: