1. R-CNN
ps:在计算机视觉中,深度学习之前,分类器用的是SVM
2. 兴趣区域(RoI)池化层
目的是为了让每个锚框都可以变成一个自己想要的形状。
3. Fast RCNN
具体步骤如下:
- 对整张图片用CNN抽特征(ps:不是对锚框抽特征),并且抽特征不需要头,就得到7 x 7或者14 x 14的feature map
- 再用选择性搜索在原始图片中搜索到锚框,再把它映射到CNN的输出,CNN的输出是一个feature map,把原图的锚框在feature map中按比例映射。
- 再用RoI Pooling对每个锚框抽取特征,假设如图中所示,抽取之后变成两个长为4的向量。图中黄色框框区域可以把一张图片(100个锚框)变成一个100 x 4的向量,这里先不管通道数。
- 之后再进入全连接层,(注意这里100是100个样本),做分类预测和锚框预测
比之前R-CNN快的原因:不再是对每一个锚框抽取特征,是对整个图片进行特征抽取。
4. Faster R-CNN
使用一个区域提议网络(Region proposal network)来替代之前的启发式搜索来获得更好的锚框。
具体来说,区域提议网络的计算步骤如下:
-
使用填充为1的的3 x 3卷积层变换卷积神经网络的输出,并将输出通道数记为c。这样,卷积神经网络为图像抽取的特征图中的每个单元均得到一个长度为c的新特征。
-
以特征图的每个像素为中心,生成多个不同大小和宽高比的锚框并标注它们。
-
使用锚框中心单元长度为c的特征,分别预测该锚框的二元类别(含目标还是背景)和边界框。
-
使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。最终输出的预测边界框即是兴趣区域汇聚层所需的提议区域。
5. Mask R-CNN
如果有像素级别的标号,使用FCN来利用这些信息
Mask R-CNN是基于Faster R-CNN修改而来的。 具体来说,Mask R-CNN将兴趣区域汇聚层替换为了 兴趣区域对齐层,使用双线性插值(bilinear interpolation)
来保留特征图上的空间信息,从而更适于像素级预测。 兴趣区域对齐层的输出包含了所有与兴趣区域的形状相同的特征图。 它们不仅被用于预测每个兴趣区域的类别和边界框,还通过额外的全卷积网络预测目标的像素级位置。
RoI Pooling改成了RoI align,因为RoI Pooling对于像素级别不适用,会可能生成像素级的偏移,会导致在边界的地方是预测不准标号的。
RoI align 则是不像之前分割成4、2、2、1,而是直接在中间切开,沿着左右对称的对称轴切开,和上下对称的对称轴切开,这样会存在把一个像素分割的可能,然后再取出一个像素的一小部分。
6. 模型精度比较
从图中可以看出,Faster RCNN精度很高,但是处理很慢。
7. 总结
- R-CNN是最早、也是最有名的一类基于锚框和CNN的目标检测算法
- Faster/Faster R-CNN持续提升性能
- Faster R-CNN和Mask R-CNN是在最求最高精度场景下的常用算法(Mask R-CNN在无人机中应用比较多)