在上一篇文章中,我们介绍了智能图像识别的前置知识,现在我们就具体来了解下图像处理过程。

我们提到卷积神经网络技术是一种深度前馈神经网络,在图片分类、图片检索、目标检测、目标分割、目标跟踪、视频分类、姿态估计等图像视频相关领域中已有很多较为成功的应用。

与普通的神经网络相比,我们知道卷积神经网络有一些特殊的层,也有一些卷积神经网络中特有的专业名词,比如激活函数、全连接层、卷积层、池化层,下面我们就来一一介绍一下。

激活函数的主要作用就是用来加入非线性因素的,以解决线性模型表达能力不足的缺陷,在整个神经网络里起到至关重要的作用。因为在现实中,往往存在非常复杂的线性不可分的情况,比如图中是一个二分类问题,我们要将两类点进行正确的分类会发现这是一个线性不可分的问题,也就是说,在这个平面中,找不到一条直线可以将图中的点完全分开。

而激活函数的作用就是,在所有的隐藏层之间添加一个激活函数,比如sigmoid函数等常见的激活函数,这样输出的就是一个非线性函数了,有了这样的非线性激活函数后,神经网络的表达能力就会更加强大了。

全连接层可以简单地理解为神经网络的一个隐藏层,它包含权重向量W和激活函数。要通过全连接层,首先要将一张图片的数值矩阵进行拉伸,并作为输入乘上权重向量w,再将点乘后的结果作为激活函数的输入,最后激活函数的输出结果便是全连接层的最终结果了。

卷积层与全连接层不同,它保留了输入图像的空间特征,即对图像的矩阵结构不做任何改变。

在卷积层中,有一个概念叫做卷积核(kernel),常简称为卷积,有时也称为滤波器filter。卷积的大小可以在实际需要时自定义其长和宽。在上一章节中,我们通过卷积核对图像处理的介绍,知道了卷积的过程,简单来说:让卷积核在输入图片上依次进行滑动,滑动方向从左到右,从上到下;每滑动一次,卷积核就与其滑窗位置对应的输入图片做一次点积计算并得到一个数值。介绍完了卷积层,接下来我们看看什么是卷积神经网络。

卷积神经网络是由一系列卷积层经过激活来得到的。接下来我们看一种更为通用的卷积形式,在4x4的输入图片周边做1个像素的填充(pad=1),如图所示,步长为1,kernel为2x2的卷积输出的特征层降维。

至此,卷积层的基本运算已介绍完毕,那么卷积神经网络和传统神经网络最大的不同就是kernel,并且卷积层的计算是含有空间信息的。

在卷积神经网络还有一个重要概念就是池化层,池化是对图片进行压缩(降采样)的一种方法,池化的方法有很多,如max pooling、average pooling等。例如,一个4x4的特征层经过池化滤波器filter=2x2,步长stride=2的最大池化操作后可以得到一个2x2的特征层。

池化层对原始特征层的信息进行压缩,是卷积神经网络中很重要的一步。我们在后面会看到绝大多数情况下,卷积层、池化层、激活层三者几乎像一个整体一样常常共同出现。

这些应用处理的模块就像“积木”一样,可以帮助我们构建出卷积神经网络。然而“积木”的排列方法有很多种,如何设计出一个好的网络结构才是关键。

接下来,我们将介绍常见的卷积神经网络结构,从中其实我们可以看到卷积神经网络的发展历程,并从现有的常见CNN结构中获取到构建CNN的一些经验。

首先我们来看下AlexNet,该模型拿到了当年ImageNet竞赛的冠军并因此掀起了一波深度学习的热潮。ImageNet是一个用于图像识别的大型数据库,里面包含了超过1400万张带标记的图片。2010年以来,ImageNet每年举办一次图片分类和物体检测的比赛——ILSVRC。

图片分类比赛中有1000个不同类别的图片,每个类别大约有200~1000张来自不同源的图片。自ImageNet竞赛举办开始,业界便将其视为标准数据集,后续很多优秀的神经网络结构都是从该比赛中诞生的。

回到AlexNet,我们先来看下它的网络结构。AlexNet主要由5个卷积层和3个全连接层组成,最后一个全连接层通过激活函数Softmax,最终产生的结果将作为输入图片在1000个类别上的得分。(因为ILSVRC图片分类比赛有1000个类别)

上图便是以输入一个227x227x3的图像为例,即长和宽均为227个像素的3通道彩色图,第一层卷积的卷积核大小为11x11x3,并且由96个卷积核组成。所有卷积核均以stride步长为4滑过整张227x227x3的图片,根据卷积输出层分辨率计算公式(w+2xpad-kernel)/stride+1可以得到第一个卷积层输出层的分辨率大小为(227+2x0-11)/4+1=55.因此不难得到第一层卷积最终的输出大小为55x55x96.由于卷积层只有卷积核含有神经网络的参数,因此第一层卷积参数总量为(11x11x3)x96=35K。以此类推,我们可以根据AlexNet的网络结构自行推导出对应输出的大小以及相应的参数个数。

我们可以发现,前几个卷积层的计算量很大,但参数量很小,只占Alexnet总参数的很小一部分。这就是卷积层的优点!通过较小的参数量来提取有效的特征。AlexNet是第一个使用卷积神经网络在ILSVRC比赛中获得冠军的网络结构,它有如下几个特点。第一,相比其他的激活函数,ReLU的收敛速度更快,在较深的网络结构中的能力超过sigmoid函数。

第二,AlexNet有超过6000万的参数,虽然ILSVRC比赛含有大量的训练数据,但仍然很难完成对如此庞大参数的完全训练,从而导致严重的过拟合问题,AlexNet很巧妙地对原始图片做随机裁剪,或者进行随机地旋转、平移、缩放等,避免因为原始数据量的大小使得参数众多的CNN陷入过拟合中。以及使用dropout方法,忽略了一些神经元,屏蔽一些权重,使学习出更稳定的特征。