卷积神经网络(CNN)(上)

卷积神经网络是一种以图像识别为中心,并且在多个领域得到广泛应用的深度学习方法,如目标检测、图像分割、文本分类等。卷积神经网络于1998年由Yann Lecun提出,在2012年的ImageNet挑战赛中,Alex Krizhevsky凭借卷积神经网络AlexNet网络获得远远领先于第二名的成绩,震惊世界。

下面主要介绍空洞卷积、转置卷积与应用于NLP(自然语言处理)任务的二维卷积运算过程。

空洞卷积可以认为是基于普通卷积操作的一种变形,主要用于图像分割。相对于普通卷积而言,空洞卷积通过在卷积核中添加空洞(0元素),从而增大感受野,获取更多的信息。感受野(receptive field)可以理解为在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层区域大小。通俗解释就是特征映射(feature map)上的一个点对应输入图上的区域大小。

转置卷积的主要作用是将特征图放大恢复到原来的尺寸,其与原有的尺寸操作计算方法上并没有差别,而主要区别在于,转置卷积是卷积的反向过程,即卷积操作的输入作为转置卷积的输出,卷积操作的输出作为转置卷积的输入。转置卷积可以保证在尺寸上做到卷积的反向过程,但是内容上并不能保证完全做到卷积的反向过程。

针对自然语言的词嵌入(Embedding)进行二维卷积,是利用卷积神经网络对自然语言进行分类的关键步骤。在NLP中,由于词嵌入层每一行都表示一个词语,即每一个词语都是有一个向量(词向量)表示的,当提取句子中有利于分类的特征时,需要从词语或字符级别提取,也就是说卷积核的宽度应该覆盖完全单个词向量,即二维卷积的卷积核宽度必须等于词向量的维度。

池化操作的一个重要的目的就是对卷积后得到的特征映射进行降维。常用的有最大值池化和平均值池化。

全连接层通常会放在卷积神经网络的最后基层,在整个卷积神经网络中起到“分类器”的作用。在卷积层和全连接层相连接时,需要将卷积层的所有特征映射展开为一个向量,作为全连接网络的输入层,然后与全连接层进行拼接。

下面将对一些经典的卷积神经网络的结构进行介绍,并介绍如何调用已在pytorch中预训练好的网络。

1.LeNet-5网络

LeNet-5卷积网络是提出最早的一类卷积神经网络,其主要用于处理手写字体的识别,并且取得了显著的应用效果。

在LeNet-5中,输入的图像为32*32的灰度图像,经过两个卷积层、两个池化层和两个全连接层,最后连接一个输出层.

LeNet-5网络的第一层使用了6个5*5的卷积核对图像进行卷积运算,且在卷积操作时不适用填补操作,这样这怒地一张32*32的灰度图像会输出6个28*28的特征映射。第二层为池化层,使用2*2的池化核,补偿大小为2,从而将6个28*28的特征映射转化为6个14*14的特征映射,该层主要对数据进行下采样(对一个样值序列间隔取样一次)。第三层为卷积层,有16个大小为5*5的卷积核,同样在卷积操作时不适用填补操作,将6个14*14的特征映射卷积运算后输出16个10*10的特征映射。第四层为池化层,使用大小为2*2的卷积核,步长为2,从而将16个10*10的特征映射转化为16个5*5的特征映射。第五和第六层均为全连接层,且神经元的数量分别为120和84.最后一层为包含10个神经元的输出层。可以使用该神经网络对手写数字进行分类。

由于LeNet-5网络结构比较简单,非常容易实现,所以在pytorch中并没有与训练好的网络进行调用。

2.AlexNet网络

2012年AlexNet卷积神经网络结构被提出,并且以高于第二名10%的准确率在2012届ImageNet图像识别大赛中获得冠军,成功地展示了深度学习算法在计算机视觉领域的为例,使得CNN称为在图像分类上的核心算法模型,引爆了深度神经网络的应用热潮。

AlexNet模型是一个只用8层的卷积神经网络,有5个卷积层,3个全连接层,在每一个卷积层中包含了一个激活函数ReLU(这也是ReLU激活函数的首次应用)以及局部响应归一化(LRN)处理,卷积计算后通过最大值池化层对特征映射进行降维处理。

AlexNet的网络结构在设置之初是通过两个GPU进行训练的,所以其结构中包含两块GPU通信的设计。但是随着计算性能的提升,现在完全可以使用单个GPU进行训练。

AlexNet网络中输入为RGB图像,在图中s=4表示卷积核或者池化核的移动步长为4,在AlexNet中卷积层使用的卷积核从11逐渐减少到3,最后三个卷积层使用的卷积核为3*3,而池化层则使用了大小为3*3,步长为2,有重叠的池化,两个全连接层分别包含4096个神经元,最后的输出层使用softmax分类器,包含1000个神经元。

AlexNet网络在torchvision库的models模块中,已经包含了预训练好的模型,可以直接使用下面的程序进行调用:

import torchvision.models as models
alexnet=models.alexnet()

3.VGG网络结构

VGG深度学习网络由牛津大学(Oxford)计算机视觉组(Visual Geometry Group)于2014年提出,并取得了ILSVRC2014比赛分类项目的第二名。在其发表的文章Very Deep Convolutional Networks for Large-Scale Image Recognition中,一共提出了时钟不同层次的卷积神经网络,分别是11,13,16,19层。

在其中,conv3-64表示使用64个3*3的卷积核,maxpool表示使用2*2的最大值池化层,FC-4096表示具有4096个神经元全连接层。

在提出的多种VGG网络结构中,最常用的VGG网络由两种,分别是VGG16和VGG19。在多种VGG网络结构中,他们最大的差距就是网络深度的不同。

在VGG网络中,通过使用多个较小卷积核(3*3)的卷积层,来代替一个卷积核较大的卷积层。小卷积核是VGG的一个重要特点,VGG作者认为2个3*3的卷积堆叠获得的感受野大小相当于一个5*5的卷积;而3个3*3卷积的堆叠获取到的感受野相当于一个7*7的卷积。使用小卷积核一方面可以减少参数,另一方面相当于进行了更多的非线性映射,可以进一步增加网络的拟合能力。

相比AlexNet使用3*3的池化核,在VGG网络中全部采用2*2的池化核。并且VGG网络中具有更多的特征映射,网络第一层的通道数为64,后面每层都进行了翻倍,最多到512个通道,随着通道数的增加,使得VGG网络能够从数据中提取更多的信息。并且VGG网络具有更深的层数,得到的特征映射更宽。

常用的VGG16和VGG19网络在torchvision中的models模块中,已经包含了预训练好的模型,可以直接使用下面的程序进行调用:
 

import torchvision.models as models
vgg16=models.vgg16()
vgg19=models.vgg19()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mez_Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值