卷积神经网络(CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。其在图像目标识别中有着十分广泛的应用。本节将会对卷积的基本概念以及卷积神经网络的应用进行简要介绍。
4.1 卷积基本概念
卷积概念最早是用于计算两个事件的概率密度函数而提出的,以该问题为例:把两个骰子都抛出去,求点数加起来为 t 的概率是多少?
对于此问题,我们可以采用第一个筛子的概率函数g为模板,分别对第二个筛子的概率函数进行逐步相乘,提取出符合题目要求的组合,作为最终的概率,用公式表达如下:
f(1)g(3)+ f(2)g(2)+ f(3)g(1)
卷积即为用一个概率模板对目标进行逐步相乘,最终求和的过程,用表达式的形式表现如下:
在数字图像处理领域中,该概率函数g常常被称作滤波器。通过特定的模板g,给与每个像素周围不同点不同的权重,来达到图像的一些特征的提取,如边缘特征、图像梯度等。
4.2 卷积神经网络的常用概念
每个图像中都包含了大量的数据,在计算的过程中如果采用了传统的全连接网络,会使得链接权过多,难算难收敛,同时可能进入局部极小值,也容易产生过拟合问题,因此对于图像的学习,我们就需要提出一种新的解决方式,即局部连接网络,每次在计算的过程中只有一部分权值连接,将部分输入和权值卷积。其计算过程包含了如下概念:
填充:
在图像卷积的过程中,如上图,在卷积中心的周围,会将对应的概率进行相乘求和,然而在图像边界进行运算时,边缘的概率的数据会产生缺失,因此我们需要将这些概率进行填补,这一过程即称为填充。也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用 0 或者复制边界像素来进行填充。如下图:
步长:
步长指的是卷积神经网络中卷积核每次移动的距离,如以下5x5的图像,通过步长为2的3x3的卷积核卷积后变为2x2的矩阵。
多通道卷积:
在我们实际处理图像时,往往是同时包含R、G、B三个通道色彩的高维数据,此时仅仅通过平面卷积核已经无法完成高纬信息的提取,此时需要将卷积核也扩充为多维的形式,即多通道卷积。
实际上,对于一些复杂的网络结构,其卷积核往往由很多个组成,为了能够统一输出,此时卷积核的维数往往会随着输入而增高,也就产生了更高维的卷积结构。
池化:
仅仅通过卷积,我们就获取了大量的特征数据,然而过多的数据会为我们的计算带来很大的负担,因此就需要一种手段来突出我们计算出来的特征,简化数据的同时尽可能的保留特征,池化就是担任了这一工作。
池化有多种类型,包括平均值池化、最大值池化,其基本思想为使用局部统计特征,如均值或最大值,来解决特征过多问题。在池化时,我们需要给定池化的窗口大小,然后每个窗口提取出对应的特征值,来简化数据量。
4.3 常用卷积滤波器
通过不同的滤波器,可以提取图像中不同的特征,的到不同效果的图像,本章介绍一些常用滤波器。
4.3.1 均值滤波
平均滤波即将区域内像素值平均,其滤波器模板见下图:
从滤波器构造形式不难看出,其原理为取区域内所有为1的像素位置的均值。具有与之相似结构的还有加权平均滤波,在平均滤波的基础上赋予了不同像素权重,以达到不同的效果,其模板如下:
我们常见的高斯模板就属于加权平均滤波。通过这几种平均滤波器,能够使图像变模糊,同时清除离散的噪点
4.3.2 边缘检测算子
通过赋予滤波器不同的权重,我们可以提取出图像的不同特征,边缘检测算子就是用于提取图像的边缘特征而设置的一些滤波器,下文将对一些典型的滤波器进行介绍:
Prewitt算子卷积核:
Prewitt算子有多种滤波器形式,用于提取图像的横向或纵向边缘,从其构造形式(见下图)不难发现,其基本原理是将水平方向或垂直方向的像素进行差分运算,使得边界突变的纹理特征被突出,从而获得图像的横纵向边缘信息。
Sobel算子卷积核:
Sobel算子的构造与Prewitt算子有着较高的相似性,在其基础上,赋予了水平方向像素更高的权重,距离卷积核中心像素越近的像素点拥有更高的地位,这一改动使得边缘信息在提取的过程中有更好的线性。其基本原理为像素在x及y方向的导数,通过导数的形式获得权重,构造滤波器:
Sobel算子能根据色彩的梯度变化,提取出色彩的边界信息,及轮廓信息,类似相关的算子还有Canny算子、Laplace算子等。
Log算子卷积核:
Log算子也是通过图像梯度的方式建立的一种图像滤波器,从其构造形式可以看出,其能同时检测各向的梯度变换,而不是像Sobel算子针对横纵向梯度采取不同的算子进行检测: