传统的图像特征提取(特征工程)主要是基于各种先验模型,通过提取图像关键点、生成描述子特征数据、进行数据匹配或者机器学习方法对特征数据二分类/多分类实现图像的对象检测与识别。卷积神经网络通过计算机自动提取特征(表示工程)实现图像特征的提取与抽象,通过MLP实现数据的回归与分类。二者提取的特征数据都具不变性特征。
- 迁移不变形
- 尺度不变性
- 辐照度/亮度不变性
CNN为什么能提取到图像特征?关键点在于CNN有两种不同类型的层:
- 卷积层
- 池化层
- 卷积层
卷积层是一系列滤波器组合(filters set),输出结果被称为特征映射,每个feature map都是一个filter在图像上卷积得到的输出。一般情况下都会输出结果加线性修正,对卷积层常用就是ReLU。
这样做的好处是:
- 卷积是一个线性操作,我们需要一个非线性组合,否则两个卷积卷积层还不如一个卷积层
- 两个相反方向的边缘不应该被取消
- 是图像梯度值更加的稀疏、有助于提高反向传播的效果
- 膨胀卷积
通常我们常见的卷积层操作使用的filter都是基于连续邻近像素的,除了这种卷积filter之后另外还有一种卷积filter被称为膨胀卷积,其算子的分布更加的稀疏。
膨胀卷积的好处是在不增加网络总参数的情况下,可以提升每个感受野的尺度大小。
- 1*1卷积
1*1卷积首次用在Network In Network中,在一般情况下卷积是2D的,1*1卷积毫无意义,但是对CNN,卷积层是3D的,1*1卷积反而有了意义。
- 卷积层大小计算
输入w*w的feature map,假设Filter大小F*F,卷积时填充边缘P个像素,卷积步长为s
输出大小
padding='same'
意味着使用填充边缘的方式,输出大小与输入的feature map大小保持不变
padding=‘valid’
意味着不使用边缘填充,及P=0
- 池化层
在卷积层提取到的特征数据不具备空间不变性(尺度和迁移不变形特征),只有通过了池化层之后才会具备空间不变性特征。池化层是针对每个feature map进行池化操作。池化操作的窗口大小可以指定为任意尺寸,主要有两种类型的池化操作。
- 下采样池化(均值池化)
- 大值池化
下采样池化:
对每个窗口大小取均值,然后乘以标量β加上增益偏置b的输出。
最大化池化:
无论是选择哪种池化方式都会输出一个新低分辨率feature map,多数时候这个过程中会包含一定的信息损失,所以卷积神经网络一般通过扩展深度(增加feature map的数量)来补偿。
重叠窗口与稀疏窗口:
进行池化的时候我们如果选择步长=1进行池化,通过这样的池化方式输出的结果称为重叠池化输出,它不利于特征的稀疏生成,重叠窗口池化与均值池化都有这样的缺点,经常采样的是最大值池化,同时不进行窗口重叠,在卷积层保持相同feature map与参数的情况下,最大化池化的结果明显优于重叠池化与均值池化,而且网络的深度越深,两者之间的准确度差异越大。
- 总结
最终卷积神经网络经过池化层操作对单位像素迁移和亮度影响进行了校正,做到了图像的迁移与亮度不变性的特征提取、而且在池化过程中通过不断地降低图像分辨率,构建了图像的多尺度特征,所以还具备尺度空间不变性,完成了图像不变性特征提取工作。