R-CNN
R-CNN首先对图像采取若干提议区域并标注它们的类别和边界框。然后用卷积神经网络对每个提议区域做前向计算抽取特征。之后用每个提议区域的特征预测类别和边界框。
具体来说,由以下4步构成。
- 对输入图像使用选择性搜索来选取多个高质量的提议区域。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域将被标注类别和真实边界框。
- 选取一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向计算输出抽取的提议区域特征。
- 将每个提议区域的特征连同其标注的类别作为一个样本,训练多个支持向量机对目标分类。其中每个SVM用来判断样本是否属于某一个类别。
- 将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实的边界框。
Fast R-CNN
一个主要改进在于只对整个图像做CNN的前向计算。
主要步骤:
- 与R-CNN相比,Fast R-CNN用来提取特征的CNN的输入是整个图像,而不是各个提议区域。而且,这个网络通常会参与训练,即更新模型参数。设输入为一张图像,将CNN的输出的形状记为1 * c * h1 * w1。
- 假设选择性搜索生成n个提议区域。这些形状各异的提议区域在CNN的输出上分别标出形状各异的兴趣区域。这些兴趣区域需要抽取出形状相同的特征(假设高和宽均分别指定为h2和w2)以便于连结后输出。Fast R-CNN引入ROI池化层,将CNN的输出和提议区域作为输入,输出连结后的各个提议区域抽取的特征,形状为 nch2*w2。
- 通过全连接层将输出形状变换为 n*d,其中超参数d取决于模型设计。
- 预测类别时,将全连接层输出的形状再变换为n * q并使用softmax回归。预测边界框时,将全连接层的输出形状变换为 n * 4。也就是说,我们为每个提议区域预测类别和边界框。
Faster R-CNN
Fast R-CNN通常在选择性搜索中生成较多的提议区域,以获得较精确的目标检测结果。Faster R-CNN提出将选择性搜索(Selective Search)替换成区域提议网络(Region Proposal Network),从而减少提议区域的生成数量,并保证目标检测的精度。
与Fast R-CNN相比,只有生成提议区域的方法从Selective Search变成了Region Proposal Network,其他部分保持不变。Region Proposal Network的计算步骤如下:
- 使用填充为1的 3x3 卷积层变换CNN的输出,并将输出通道数记为c。这样,CNN为图像抽取的特征图中的每个单元均得到一个长度为c的新特征。
- 以特征图每个单元为中心,生成多个不同大小和宽高比的锚框并标注它们。
- 用锚框中心单元长度为c的特征分别预测该锚框的二元类别和边界框。
- 使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。最终输出的预测边界框即兴趣区域池化层所需要的提议区域。
RPN是和整个模型一起训练得到的。也就是说,Faster R-CNN的目标函数既包括目标检测中的类别和边界框预测,又包括RPN中锚框的二元类别和边界框预测。最终,RPN能够学习到如何生成高质量的提议区域,从而在减少提议区域数量的情况下也能保证目标检测的精度。
Mask R-CNN
Mask R-CNN将兴趣区域池化层替换成了兴趣区域对齐层,即通过双线性插值来保留特征图上的空间信息,从而更适于像素级预测。兴趣区域对齐层的输出包含了所有兴趣区域的形状相同的特征图。
小结
- R-CNN对图像选取若干提议区域,然后用CNN对每个提议区域做前向计算抽取特征,再用这些特征预测提议区域的类别和边界框。
- Fast R-CNN对R-CNN的一个主要改进在于只对整个图像做CNN的前向计算。它引入了兴趣区域池化层,从而令兴趣区域能够抽取出形状相同的特征。
- Faster R-CNN将Fast R-CNN中的选择性搜索替换成RPN,从而减少提议区域的生成数量,并保证目标检测的精度。
- Mask R-CNN再Faster R-CNN基础上引入一个全卷积网络,从而借助目标的像素级位置进一步提升目标检测的精度。