区域神经网络R-CNN
使用启发式搜索算法来选择锚框 -> 使用预训练模型来对每个锚框抽取特征 -> 训练一个SVM对类别进行分类 -> 训练一个线性回归模型来预测边缘框偏移
锚框大小不一,如何将不同的锚框统一为一个batch? -> 兴趣区域池化层
兴趣区域(RoI)池化层
给定一个锚框,将锚框均匀分割为n x m块,输出每块中的最大值。因此不管锚框多大,总是输出nm个值。
让每个锚框都可以变为一个形状相同的mini-batch。
Fast RCNN
与原本的RCNN相比,Fast R-CNN用来提取特征的卷积神经网络的输入是整个图像,而不是各个提议区域。Fast RCNN首先使用CNN对整个图片抽取特征得到feature map。
再将使用启发式搜索算法在原图片画出的锚框映射到feature map中。
随后使用Rol池化层对每个锚框生成固定长度的特征。
最后使用全连接层进行分类预测和偏移预测。
Faster R-CNN
使用一个区域提议网络来替代启发式搜索以得到更好的锚框。区域提议网络先粗糙地画出锚框,再将结果输入主网络。
二元类别预测用于预测当前锚框是否是一个高质量地锚框。边界框预测用于计算锚框和边缘框地偏差。
Mask R-CNN
如果有像素级别的标号,使用FCN来利用这些信息。
R-CNN总结
R-CNN是最早也是最有名一类地基于锚框和CNN地目标检测算法。
Fast/Faster R-CNN持续提升性能。
Fasster R-CNN和Mask R-CNN是在追求高精度场景下地常用算法。
单发多框检测SSD(Single Shot Detection)
对每个像素,生成以它为中心的多个锚框。具体方法与上一节相同。
SSD模型
基本网络用于从输入图像中提取特征,因此它可以使用深度卷积神经网络。 单发多框检测论文中选用了在分类层之前截断的VGG现在也常用ResNet替代。我们可以设计基础网络,使它输出的高和宽较大。 这样一来,基于该特征图生成的锚框数量较多,可以用来检测尺寸较小的目标。
接下来的每个多尺度特征块将上一层提供的特征图的高和宽缩小(如减半),并使特征图中每个单元在输入图像上的感受野变得更广阔。
由于接近顶部的多尺度特征图较小,但具有较大的感受野,它们适合检测较少但较大的物体。底部则可以拟合小物体。
简而言之,通过多尺度特征块,单发多框检测生成不同大小的锚框,并通过预测边界框的类别和偏移量来检测大小不同的目标,因此这是一个多尺度目标检测模型。
SSD总结
SSD通过单神经网络检测模型
以每个像素为中心产生多个锚框
在多个段的输出上进行多尺度的检测
YOLO
SSD中的锚框大量重叠,因此浪费了很多计算。YOLO将图片平均分成SxS个锚框,如果一个标注的边界框的中心点落在某个锚框内,则该锚框负责预测这个边界框。每个锚框预测B个边缘框。边界框的预测包括中心点相对于网格左上角的偏移量(x, y),以及边界框的宽(w)和高(h)相对于整个图像的比例。边界框的预测包括中心点相对于网格左上角的偏移量(x, y),以及边界框的宽(w)和高(h)相对于整个图像的比例。每个网格还预测C个类别概率,C是所有可能类别的数量。