深度学习笔记(27) 经典卷积网络

深度学习笔记(27) 经典卷积网络


1. 前言

讲了基本构建,比如卷积层、池化层以及全连接层这些组件
事实上,过去几年计算机视觉研究中的大量研究都集中在如何把这些基本构件组合起来
形成有效的卷积神经网络

最直观的方式之一就是去看一些案例
就像很多人通过看别人的代码来学习编程一样
通过研究别人构建有效组件的案例是个不错的办法

实际上在计算机视觉任务中表现良好的神经网络框架往往也适用于其它任务
也就是说,如果有人已经训练或者计算出擅长识别猫、狗、人的神经网络或者神经网络框架
而新的计算机视觉识别任务是构建一个自动驾驶汽车
则完全可以借鉴别人的神经网络框架来解决问题

经典的神经网络结构,分别是LeNet-5AlexNetVGGNet


2. LeNet-5

假设有一张32×32×1的图片
LeNet-5可以识别图中的手写数字,比如像这样手写数字7

LeNet-5是针对灰度图片训练的
所以图片的大小只有32×32×1,使用6个5×5的过滤器,步幅为1
由于使用了6个过滤器,步幅为1,padding为0
输出结果为28×28×6,图像尺寸从32×32缩小到28×28

然后进行平均池化操作,过滤器的宽度为2,步幅为2
图像的尺寸,高度和宽度都缩小了2倍
输出结果是一个14×14×6的图像

这张图片应该不是完全按照比例绘制的
如果严格按照比例绘制,新图像的尺寸应该刚好是原图像的一半
在这里插入图片描述

接下来是卷积层,用一组16个5×5的过滤器,新的输出结果有16个通道

LeNet-5的论文是在1998年撰写的,当时人们并不使用padding,或者总是使用valid卷积
这就是为什么每进行一次卷积,图像的高度和宽度都会缩小
所以这个图像从14到14缩小到了10×10
然后又是池化层,高度和宽度再缩小一半
输出一个5×5×16的图像
将所有数字相乘,乘积是400

下一层是全连接层,在全连接层中,有400个节点,每个节点有120个神经元
这里已有一个全连接层,但有时还会从这400个节点中抽取一部分节点构建另一个全连接层
就像这样,有2个全连接层

最后一步就是利用这84个特征得到最后的输出,
还可以在这里再加一个节点用来预测 y ^ \hat{y} y^ 的值
y ^ \hat{y} y^ 有10个可能的值,对应识别0-9这10个数字

在现在的版本中则使用softmax函数输出十种分类结果
而在当时,输出层使用另一种现在很少用的分类器

相比现代版本,这里得到的神经网络会小一些,只有约6万个参数
而现在经常看到含有一千万到一亿个参数的神经网络
比这大1000倍的神经网络也不在少数

随着网络越来越深,图像的高度和宽度在缩小
从最初的32×32缩到28×28,再到14×14、10×10,最后只有5×5
与此同时,随着网络层次的加深,通道数量一直在增加,从1增加到6个,再到16个

这个神经网络中还有一种模式至今仍然经常用到
就是一个或多个卷积层后面跟着一个池化层
然后又是若干个卷积层再接一个池化层
然后是全连接层
最后是输出
这种排列方式很常用

过去,人们使用sigmoid函数和tanh函数,而不是ReLu函数
经典的LeNet-5网络在池化后进行了非线性函数处理,而不是softmax函数


3. AlexNet

在这里插入图片描述
用一张227×227×3的图片作为输入
第一层使用96个11×11的过滤器,步幅为4
由于步幅是4,因此尺寸缩小到55×55,缩小了4倍左右

然后用一个3×3的过滤器构建最大池化层,f = 3,步幅s为2
卷积层尺寸缩小为27×27×96

接着再执行一个5×5的卷积,padding之后
输出是27×27×276

然后再次进行最大池化,尺寸缩小到13×13
再执行一次same卷积,相同的padding,得到的结果是13×13×384,384个过滤器
再做一次same卷积,最后再进行一次最大池化,尺寸缩小到6×6×256

6×6×256等于9216,将其展开为9216个单元,然后是一些全连接层
最后使用softmax函数输出识别的结果,看它究竟是1000个可能的对象中的哪一个

实际上,这种神经网络与LeNet有很多相似之处,不过AlexNet要大得多
正如前面讲到的LeNet或LeNet-5大约有6万个参数
而AlexNet包含约6000万个参数

当用于训练图像和数据集时,AlexNet能够处理非常相似的基本构造模块
这些模块往往包含着大量的隐藏单元或数据,这一点AlexNet表现出色
另一个原因是它使用了Relu激活函数


4. VGGNet

也叫作VGG-16网络,指这个网络中包含16个卷积层和全连接层,没有那么多超参数
首先用3×3,步幅为1的过滤器构建卷积层,padding参数为same卷积中的参数
然后用一个2×2,步幅为2的过滤器构建最大池化层
因此VGG网络的一大优点是它确实简化了神经网络结构
这是一种只需要专注于构建卷积层的简单网络

在这里插入图片描述
假设要识别这个图像
在最开始的两层用64个3×3的过滤器对输入图像进行卷积,输出是224×224×64

接着还有一层224×224×64,得到这样2个厚度为64的卷积层
意味着用64个过滤器进行了两次卷积
这里采用的都是大小为3×3,步幅为1的过滤器,并且都是采用same卷积
所以就不再把所有的层都画出来了,只用一串数字代表这些网络

接下来创建一个池化层,池化层将输入图像进行压缩
从224×224×64缩小112×112×64

然后又是若干个卷积层,使用128个过滤器,以及一些same卷积
然后进行池化,池化后的是56×56×128

接着再用256个相同的过滤器进行三次卷积操作,然后再池化
然后再卷积三次,再池化
如此进行几轮操作后,将最后得到的7×7×512的特征图进行全连接操作
得到4096个单元
然后进行softmax激活,输出从1000个对象中识别的结果
这种相对一致的网络结构,缺点是需要巨大的训练特征数量,总共包含约1.38亿个参数


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(26) 卷积神经网络
深度学习笔记(25) 池化层
深度学习笔记(24) 卷积层
深度学习笔记(23) 卷积维度
深度学习笔记(22) Padding


谢谢!

氢键H-H CSDN认证博客专家 机器人软件 运动控制 深度学习
一位永远相信美好的事情即将发生,从事自动化机器人软件开发,不忘初心,牢记使命,为实现中华民族伟大复兴而奋斗的社会主义接班人。
©️2020 CSDN 皮肤主题: 我行我“速” 设计师:Amelia_0503 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值