深度卷积神经网络基本介绍

    关于深度卷积神经网络的前世今生,就不在此处进行过多的介绍。在此,主要对网络的各个组成部分进行简要介绍:



图1 基本的深度卷积网络结构

       通过图1可知深度卷积神经网络主要是由输入层、卷积层、激活函数、池化层、全连接层和输出层组成。以下将以人脸识别为例对网络的各个组成部分进行简单的介绍:

        输入层:深度卷积网络可直接将图片作为网络的输入,通过训练提取特征,但是为了获得更好的效果,通常需要将图片进行预处理,在人脸识别中,就需要进行人脸检测等处理(MTCNN是一种较好的人脸检测方法)。此外,在样本不足的情况下会需要进行样本增强处理,包括旋转、平移,剪切、增加噪声、颜色变换等。

        卷积层:通过卷积运算实质是对输入进行另一种表示,若将卷积层视为黑盒子,那么我们可以将输出看作是输入的另外一种表示,而整个网络的训练也就是训练出这种表示所需的中间参数。图2为一般神经网络的示意图:


图2 简单神经网络

        图2中w和b即为网络训练所需得到的参数,在卷积层中需要添加激活函数对运算进行非线性化。深度卷积网络将小的神经网络串联起来构成深度神经网络,主要有两种特殊的处理方式:

  1. 采用局部感受野:神经元仅与其相邻的上一层神经元相连接,通过对学习到的局部特征进行组合形成最后的全局特征。
  2. 采用权值共享:同一个卷积核在对不同的局部感受野进行操作时,采用相同的权值参数,能够减少网络运行过程中所需的参数计算量。通过每一层的多个卷积核获得图片的不同特征,不需要特意考虑特征在图片中的具体位置,该处理方式使得其在分析和处理图片任务上具有显著优势


图3 卷积操作示意图


        图3为某个三维图进行卷积处理,同一卷积核对不同输入层进行卷积操作,得到一组输出,多个卷积核得到多少个输出。不同的图层和不同的输入图处理方法相似,中间的卷积运算时一种对参数进行处理的过程,而最后决定分类个数的是最后一层全连接层的个数。如100张图片,大小为32*32,图片为3维,即输入为100*32*32*3,通过大小为3*3的256个卷积核进行边缘补充后计算,输出为100*32*32*256,即在该层的卷积运算仅需对256个卷积核进行共享就可实现卷积操作,大大减少了所需参数。

        卷积运算输入和输出窗口的大小变化为:,其中W为输入的长/宽(输入长宽不一定相等),F为卷积核的大小,P为边缘补充个数,S为步长(卷积间隔个数),如图3中,输入为5*5,卷积核的大小为3*3,边缘补充为1,步长为2,其计算即为N=(5-3+1*2)/2+1,故而输出为3*3。

        vggnet通过实验证明三个3*3的卷积核效果比一个7*7的卷积核效果好,2个3*3的卷积核比一个5*5的网络效果好。此外,resnet提出的残差网络结构能有效的避免网络中参数泛华的问题。

        池化层:是卷积神经网络中的一种对数据进行的特殊处理操作,通过池化处理缩小图片特征尺寸,能有效的去除由上一层的结果作为输入而带来的计算量较大的问题,图4为常使用的池化方法。


图4 平均池化和最大池化

      2*2的池化可以使特征图大小减半,后常采用大小为3*3,步长为2,pad=0的卷积核替换池化层,可实现类似的效果。

      激活函数:网络中卷积操作和池化操作都是线性操作,而生活中的大量样本,在进行分类时并不是线性关系,因而需要在网络中引入非线性元素使得网络能解决非线性问题。常见的激活函数如下:


图5 Relu函数及其改进函数

        全连接层:该层是网络中消耗参数最多的层,若全连接层的输入是4*4*100,全连接层的输出是512,则该层需要4*4*100* 512个参数;而一般的卷积层,若卷积核为4*4,输出为512,则仅需4*4*512个参数。常见的网络会含有两个全连接层,第二个全连接层的输出与分类个数的输出对应,而近期有文献表明,第一个卷积层是可以通过全局平均池化层等替换。

        以上是通过个人学习进行的简要总结,若有不对的地方大家可以指出,期待与大家共同学习进步。


猜你喜欢

转载自blog.csdn.net/wutongyutt/article/details/80496860