卷积神经网络实现(卷积神经网络计算)
2014年,牛津大学计算机视觉集团(Visual Geometry Group )与谷歌深度卷积神经网络(Google DeepMind )的研究员一起开发了新的深度卷积神经网络) VGGNet,ILS VRVR
可以把VGG看成是深度版的AlexNet,整个网络是卷积层和所有连接层重叠的。 与AlexNet不同,VGG中使用了小尺寸的卷积核(3333 )。
VGG的特征
结构简洁,下图的VGG-19的网络结构 )。
相比之下,前面介绍的网络结构图,有赏心悦目的感觉吗? 整体结构只有3333的卷积层,连续的卷积层之后被池化层分隔。 层数很多,但很简洁。
小的卷积核和连续的卷积层VGG都使用3333的卷积核,使用连续的多个卷积层。 这样做的好处是使用连续的多个小卷积核(3333 )代替一个大卷积核) )例如) 5555 )。 使用小卷积核的问题是其感受野必然变小。 因此,在VGG中,使用连续的3333卷积核,增大感受野。 VGG认为连续的两个3333卷积核代替了一个5555卷积核,连续的三个3333代替了一个7777。
卷积核的参数少。 3个3333的卷积核参数为33=2733=27,而1个7777的卷积核参数为77=4977=49。 由于每个卷积层都有非线性激活函数,因此在多个卷积层中添加了非线性映射。 小池化核表示2222通道数更多、特征度更宽的每个通道一个FeatureMap,更多通道表示更丰富的图像特征。 VGG网络一层的频道数为64,每后一层增加一倍,最多为512个频道,频道数增加,可以提取更多的信息。 层数更深时,用连续的小卷积核代替大卷积核,网络深度更深,边缘填充。 卷积过程不会降低图像大小。 只使用小的池化单元,缩小图像的大小。 全连接卷积(测试阶段)这也是VGG的特征之一。 在网络测试阶段,将训练阶段的三个全部连接替换为三个卷积。 由于测试得到的全体积网络没有全连接的限制,所以在测试阶段能够接收任意宽度或高度的输入是重要的。 如本节第一幅图所示,输入图像为224x224x3。 如果以下三层都是全连接,在测试阶段,测试图像必须全部放大缩小到224x224x3,才能满足下一个全连接层输入数的要求,测试工作的开展很不方便。 全连接卷积的置换过程如下。 )。
例如,为了将7751277512层与4096个神经元层完全连接,将7751277512层置换为通道数4096,将卷积核置换为1111卷积。
这个“全连接卷积”的想法是VGG的作者参考了OverFeat的工作想法,例如下图是OverFeat将全连接转换为卷积后,可以以任意分辨率(整个图)计算卷积,因此需要重新缩放原图
VGG网络结构
虽然VGG网络与AlexNet相比占有相当多的层数,但是其结构相当简单。
VGG的输入为22422432242243的图像对图像进行平均值的预处理,按像素减去通过训练集计算出的RGB平均值。 网络使用连续的小卷积核(3333 )进行连续卷积,以卷积的固定步骤为1,在图像的边缘填充1个像素,从而保持卷积后的图像分辨率恒定。 连续的卷积层后面是池化层,导致图像分辨率下降。 空间池化由五个最大池化层完成,这些层位于几个卷积层之后。 并非所有的卷积层之后都将进行最大池化。 在22像素窗口中进行最大池化,步长为2。 在卷积层之后,紧接着有三个全部连接层,前两个分别有4096个通道,第三个是输出层输出1000的分类。 的隐层激活函数都是ReLU使用1111的卷积核,为了增加非线性激活函数的个数,且不影响卷积层的感受野。 由于没有使用局部归一化,作者发现局部归一化不能提高网络的性能。 VGG论文主要为了研究网络深度对其分类精度的影响,按照上述描述设计了规则,作者对不同深度的网络结构进行了实验
8b70914?from=pc">所有网络结构都遵从上面提到的设计规则,并且仅是深度不同,也就是卷积层的个数不同:从网络A中的11个加权层(8个卷积层和3个FC层)到网络E中的19个加权层(16个卷积层和3个FC层)。卷积层的宽度(通道数)相当小,从第一层中的64开始,然后在每个最大池化层之后增加2倍,直到达到512。
上图给出了各个深度的卷积层使用的卷积核大小以及通道的个数。最后的D,E网络就是大名鼎鼎的VGG-16和VGG-19了。
AlexNet仅仅只有8层,其可训练的参数就达到了60M,VGG系列的参数就更恐怖了,如下图(单位是百万)
由于参数大多数集中在后面三个全连接层,所以虽然网络的深度不同,全连接层确实相同的,其参数区别倒不是特别的大。
VGG训练与测试
论文首先将训练图像缩放到最小边长度的方形,设缩放后的训练图像的尺寸为S×SS×S。网络训练时对训练图像进行随机裁剪,裁剪尺寸为网络的输入尺寸224×224224×224。如果S=224S=224,则输入网络的图像就是整个训练图像;如果S>224S>224,则随机裁剪训练图像包含目标的部分。
对于训练集图像的尺寸设置,论文中使用了两种方法:
固定尺寸训练,设置S=256S=256和S=384S=384多尺度训练,每个训练图像从一定范围内[Smin,Smax],(Smin=256,Smax=512)[Smin,Smax],(Smin=256,Smax=512)进行随机采样。由于图像中的目标可能具有不同的大小,因此在训练期间考虑到这一点是有益的。这也可以看作是通过尺度抖动进行训练集增强,其中单个模型被训练在一定尺度范围内识别对象。网络性能评估
单尺度评估,测试图像固定尺度。结果如下表评估结论
在训练时,可以使用多尺度抖动的训练图像,其精度好于固定尺寸的训练集。测试时,使用多裁剪和密集评估(卷积层替换全连接层)像结合的方法Keras实现
依照VGG的设计原则,只使用小尺寸的3×33×3卷积核以及2×22×2的池化单元,实现一个小型的网络模型。
最终输出10分类,应用于CIFAR10,表现如下:
小编的这篇文章不知道有多少想学人工智能神经网络的人看的懂!但是我觉得我写的已经够清楚的了。
如果看不懂或者看了这篇文章还想继续深入学习的你可以关注小编来私信我。小编一定会解决你们的问题,让你在人工智能的这条道路上越走越远。
【人工智能】