改进卷积神经网络目标检测,提取多尺度的特征信息进行融合,提高目标检测的精度
R-CNN系列是在得到的最后一层特征图上进行特征提取,从而进行目标识别的,
顶层特征在不断地卷积池化过程中可能忽略了小物体的一些信息
只根据顶层特征进行目标识别,不能完整地反映小目标物体的信息。
如果可以结合多层级的特征,就可以大大提高多尺度检测的准确性。
FPN可以广泛地应用在针对小目标物体的检测上
图像金字塔
主要使用人工提取不同尺度的图片的特征
传统的提取多层级特征的方法,多分辨率来解释图像
图片金字塔(a左)上进行特征提取,可以构建出特征金字塔(a右)
问题是运算耗时过大,需要的计算能力较高
SSD(Single Shot Detector)
CNN计算的时候本身就存在多级特征图,且不同层的特征图尺度就不同,形似金字塔结构。
如果利用这个金字塔结构进行目标检测,从网络不同层抽取不同尺度的特征做预测,
不仅没有增加额外的计算工作,也可以利用低层特征。
SSD(Single Shot Detector)就采用了这种方法。
SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3)
FPN算法
把低分辨率、高语义信息的高层特征
和高分辨率、低语义信息的低层特征
进行自上而下的侧边连接,使得所有尺度下的特征都有丰富的语义信息。
卷积神经网络的前向过程(上图左),自上而下过程(上图右)和特征与特征之间的侧边连接。
在前向过程中,特征图的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,将不改变特征图大小的层归为一个阶段,因此每次抽取的特征都是每个阶段的最后一个层的输出,这样就能构成特征金字塔。
自上而下的过程 对 特征图 进行 上采样。使上采样后的特征图有和下一层的特征图相同的大小。
侧边之间的横向连接的过程在下图中展示。
将上采样的结果 和 自下而上生成的特征图进行融合。
将卷积神经网络中生成的 对应层的特征图 进行1×1的卷积操作,
将之与经过 上采样 的 特征图融合,得到一个新的特征图,这个特征图融合了不同层的特征,具有更丰富的信息。
这里1×1的卷积操作目的是改变channels,要求和后一层的channels相同。
在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应,
如此就得到了一个新的特征图。这样一层一层地迭代下去,就可以得到多个新的特征图。
生成的特征图结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。金字塔结构中所有层级共享分类层(回归层)。
上采样、下采样
主要目的
缩小图像(或称为下采样(subsampled)或降采样(downsampled)):符合显示区域大小
放大图像(或称为上采样(upsampling)或图像插值(interpolating)):放大原图像,提高质量
原理
下采样:图像I尺寸为M*N,对其进行s倍下采样,即得到(M/s)*(N/s)尺寸的得分辨率图像,
(s是M和N的公约数),
若是矩阵式图像,s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值:
上采样:图像放大几乎都是采用内插值方法,在像素点之间采用合适的插值算法插入新的元素。
缩放图像(下采样)、放大图像(上采样),采样方式多种。如最近邻插值,双线性插值,均值插值,中值插值等方法