又发现好货和大家分享~~~ 勿怪 勿打扰 学习用~
Sparse R-CNN 稀疏框架 抛弃了anchor boxes或者reference point等dense概念,直接从a sparse set of learnable proposals出发,没有NMS后处理,整个网络异常干净和简洁,可以看做是一个全新的检测范式。端到端的目标检测。
前目标检测成熟的算法都是基于Dense prior(密集的先验,比如anchors、reference points),但密集的先验存在很多问题:1)会检测出很多相似的结果,需要后处理(比如NMS)来过滤;2)many-to-one label assignment 问题(作者描述为 many-to-one 正负样本分配),猜测意思是我们在设置pred和gt时,一般不是一对一的关系,可能是有多个preds,看看哪个与gt更符合;3)检测结果与先验的关系非常密切(anchors的数量、大小,reference points的密级程度、proposal生成的数量)。
所以,有研究者提出了稀疏RCNN(Sparse R-CNN),一种图像中目标检测的纯稀疏方法。现有的目标检测工作很大程度上依赖于密集的候选目标,如所有H×W的图像特征图网格上预定义的k个anchor boxes。
然而,在新提出的方法中,提供了一套固定的稀疏的学习候选目标,总长度N,给目标检测头进行分类和定位。通过消除H*W*k(多达数十万)手工设计的候选目标到N(例如100)可学习的建议,Sparse R-CNN完全避免了所有与候选目标的设计和多对一的标签分配相关的工作。更重要的是,最终的预测是直接输出的,而没有非极大抑制的后处理。SparseR-CNN证明了准确性、运行时和训练收敛性能,与具有挑战性的COCO数据集上建立的检测器基线相当,例如,在标准3×训练计划中实现45.0AP,并使用ResNet-50FPN模型以22fps的速度运行。
作者是希望新的框架能够激发人们重新思考目标检测器中密集先验的惯例。
不同目标检测pipelines的比较。(a)Dense,HWk候选目标枚举在所有的图像网格上,例如。RetinaNet;(b)Dense-to-Sparse,它们从密集的HWk候选目标中选择一小组N个候选目标,然后通过池化操作提取相应区域内的图像特征,如Faster R-CNN;(c)研究者提出的Sparse R-CNN,直接提供了一小组N个学习的候选目标,这里N远小于HWk。
DenseNet
文章提出的DenseNet(Dense Convolutional Network)主要还是和ResNet及Inception网络做对比,思想上有借鉴,但却是全新的结构,网络结构并不复杂,却非常有效!众所周知,最近一两年卷积神经网络提高效果的方向,要么深(比如ResNet,解决了网络深时候的梯度消失问题)要么宽(比如GoogleNet的Inception),而作者则是从feature入手,通过对feature的极致利用达到更好的效果和更少的参数。主要优化:
- 减轻了vanishing-gradient(梯度消失)
- 加强了feature的传递
- 更有效地利用了feature
- 一定程度上较少了参数数量
在深度学习网络中,随着网络深度的加深,梯度消失问题会愈加明显,目前很多论文都针对这个问题提出了解决方案,比如ResNet,Highway Networks,Stochastic depth,FractalNets等,尽管这些算法的网络结构有差别,但是核心都在于:create short paths from early layers to later layers。那么作者是怎么做呢?延续这个思路,那就是在保证网络中层与层之间最大程度的信息传输的前提下,直接将所有层连接起来!
RetinaNet
提出一个新的损失函数,在解决类别不均衡问题上比之前的方法更有效。损失函数是动态缩放的交叉熵损失,其中缩放因子随着对正确类别的置信度增加而衰减到零(如下图)。直观地说,这个缩放因子可以自动降低训练过程中简单样本的贡献,并快速将模型集中在困难样本上。实验发现,Focal Loss在one-stage检测器上的精确度胜过之前的state-of-art的启发式采样和困难样本挖掘。最后,focal loss的具体公式形式不是关键的,其它的示例可以达到类似的结果。
设计了一个名叫RetinaNet的one-stage对象检测器来说明focalloss的有效性,RetinaNet命名来源于在输入图像上的密集采样。它基于ResNet-101- FPN主干网,以5fps的运行速度下,在COCO test-dev上取得了39.1 AP的成绩,超过目前公开的单一模型在one-stage和two-stage检测器上取得的最好成绩。
新框架
- 数据输入包括an image, a set of proposal boxes and proposal features
- 使用FPN作为Backbone,处理图像
- 下图中的Proposal Boxes: N*4是一组参数,跟backbone没啥关系
- 下图中的proposals features和backbone也没啥关系
Learnable porposal box
- 跟backbone没有什么关系
- 可以看成是物体潜在位置的统计概率
- 训练的时候可以更新参数
Learnable proposal feature
- 跟backbone没有什么关系
- 之前的proposal box是一个比较简洁、却的方法来描述物体,但缺少了很多信息,比如物体的形状与姿态
- proposal feature就是用来表示更多的物体信息。
Dynamic instance interactive head
- 通过proposal boxes以及ROI方法获取每个物体的特征,然后与proposal feature结合得到最终预测结果
- Head的数量与learnable box的数量相同,即head/learnable proposal box/learnable proposal feature一一对应
Sparse R-CNN的两个显著特点就是sparse object candidates和sparse feature interaction,既没有dense的成千上万的candidates,也没有dense的global feature interaction。Sparse R-CNN可以看作是目标检测框架从dense到dense-to-sparse到sparse的一个方向拓展。
实验&可视化
COCO 2017 val set测试结果
COCO 2017 test-dev set
可视化迭代架构中每个阶段的预测框,包括学习到的候选框。学习到的候选框以白色绘制。显示了分类分数超过0.3的预测框。同一候选类的框以相同颜色绘制,学习到的候选框被随机分布在图像上,并一起覆盖整个图像。迭代头逐渐细化边界框位置,删除重复的。
上图显示了converged model的学习到的候选框。这些方框被随机分布在图像上,以覆盖整个图像区域。这保证了在稀疏候选条件下的召回性能。此外,每个阶段的级联头逐渐细化边界框的位置,并删除重复的位置。这就导致了高精度的性能。上图还显示了Sparse R-CNN在罕见场景和人群场景中都表现出稳健的性能。对于罕见场景中的目标,其重复的方框将在几个阶段内被删除。拥挤的场景需要更多的阶段来细化,但最终每个目标都被精确而唯一地检测到。