一、CNNs网络架构-基础网络架构

news/2024/11/20 6:30:07/

目录

1.LeNet

2.AlexNet

2.1 激活函数:ReLU

2.2  随机失活:Droupout

2.3 数据扩充:Data augmentation

2.4 局部响应归一化:LRN

2.5 多GPU训练

2.6 论文

3.ZFNet

3.1 网络架构 

3.2 反卷积

3.3 卷积可视化

3.4 ZFNet改进点

3.5 其他发现

3.6 论文

4.LeNet、AlexNet、ZfNet对比

5.参考文章


1.LeNet

LeNet5诞生于1998年,是最早的卷积神经网络之一, 由Yann LeCun完成,被认为是CNN的雏形。在那时候,没有GPU帮助训练模型,甚至CPU的速度也很慢,因此,神经网络模型处理图像时的大量参数并不能通过计算机得到很好的计算,LeNet5通过巧妙的设计,利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别,从此卷积成为图像处理的之中可行方式。

Le Net - 5架构为例,卷积神经网络架构由输入层、卷积层、池化层、FC层和输出层4部分组成。

其中,卷积层和池化层负责对原始图像进行特征提取,全连接层负责对卷积池化提取到的特征进行学习,进一步根据这些特征来判断该输入图片属于哪一个类别。

论文:《Gradient-Based Learning Applied to Document Recognition》

https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=4cccb7c5b2d59bc0b86914340c81b26dd4835140

贡献:第一个CNNs架构;

缺陷:性能和效率较低;

2.AlexNet

2012-ILSVRC冠军,CNNs的一个重大转折点,在此之前,深度学习已经沉寂了将近20年。

AlexNet是第一个深度卷积神经网络架构,通过加深深度和应用众多参数优化策略来增强卷积神经网络的学习能力,在论文中,主要有以下几点贡献:

1)使用了非线性激活函数:ReLU;

2)引入了随机失活:Droupout;

3)使用了数据扩充:Data augmentation;

4)多GPU实现,LRN归一化层的使用;

如下图所示,为AlexNet网络结构:

2.1 激活函数:ReLU

传统的神经网络普遍使用Sigmoid或者tanh等非线性函数作为激活函数,然而它们容易出现梯度弥散或梯度饱和的情况。

在Sigmoid激活函数中,当输入值非常大或非常小的时候,会使值域范围的变化非常小,relu不存在这个缺陷,它在第一象限近似函数:y=x,不会出现值域变化小的问题。relu函数直到现在也是学术界和工业界公认的最好用的激活函数之一,在各个不同领域不同模型下的使用非常之多。如下表所示各类激活函数的表达式:

2.2  随机失活:Droupout

引入Dropout主要是为了防止网络在训练过程中出现的过拟合现象,主要原因包括两个方面:1.数据集太小;2.模型过于复杂,过拟合的本质原因就是数据集与模型在复杂度上不匹配。

在神经网络中Dropout是通过降低模型复杂度来防止过拟合现象的。对于某一层的神经元,通过一定的概率将某些神经元的计算结果乘0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为0),直至训练结束。

Droupout原理可参考以下博文:

深度学习中Dropout原理解析_Microstrong0305的博客-CSDN博客

2.3 数据扩充:Data augmentation

神经网络需要数据驱动,增加数据量不仅可以防止过拟合现象,也可以使网络结构进一步增大、加深。因此,当训练数据有限时,便可以使用一些变换方法将已有的训练数据进行扩充,例如随机裁剪、平移变化、改变颜色、图像反转等。

2.4 局部响应归一化:LRN

Local Response Normalization(LRN)技术主要是深度学习训练时的一种提高准确度的技术方法。LRN一般是在激活、池化后进行的一种处理方法。LRN归一化技术首次在AlexNet模型中提出这个概念。通过实验确实证明它可以提高模型的泛化能力,但是提升的很少,以至于后面不再使用,甚至有人觉得它是一个“伪命题”,因而它饱受争议。现在基本上已经被Batch Normalization代替。

2.5 多GPU训练

由于当时的GPU性能及运算量有限,限制了在其上训练的网络的最大规模。因此作者将模型拆成两部分,分别在两个GPU上进行训练,训练过程中会通过交换feature maps进行两个硬件中子网络的信息交流,大大加快了AlexNet的训练速度。

2.6 论文

论文:《Imagenet classification with deep convolutional neural networks》

https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

贡献:引入了ReLU、Dropout、overlap、Data augmentation、LRN、多GPU计算;

缺陷:卷积核尺寸较大;

3.ZFNet

Zeiler和Fergus提出了一种反卷积神经网络,并在2013年 ILSVRC 图像分类竞赛获得冠军。ZFNet可以看作是在 AlexNet 基础上提出的大型卷积网络。论文中通过可视化的技术解释了为什么卷积神经网络可以在图像分类上表现的如此出色,以及研究了如何优化卷积神经网络。

3.1 网络架构 

如下图所示为ZFNet结构示意图,将一幅(具有3个颜色平面)图像的224 × 224裁剪结果作为输入。这与96个不同的第1层滤波器(红色)进行卷积,每个滤波器大小为7 × 7,在x和y方向上的步长均为2。得到的特征图如下:( i )通过一个修正的线性函数(未显示),( ii )池化的( max在3x3区域内,使用步幅2)和( iii )跨特征图归一化的对比度得到96个不同的55 × 55元素特征图。类似的操作在第2、3、4、5层重复。最后两层全连接,将来自顶层卷积层的特征以向量形式( 6 · 6 · 256 = 9216维)作为输入。最后一层是C - way softmax函数,C为类的个数。所有的滤波器和特征图都是方形的。 

 从上图可以看出,ZFNet改变了 AlexNet 的第一层,即将卷积核的尺寸大小 11x11 变成 7x7,并且将步长 4 变成了 2。

 3.2 反卷积

如下图所示,描绘了内部运行机制,其中左半部分显示反卷积层,右半部分显示卷积层。

反卷积层从下一层重建一个近似版本的卷积特征。对于网络性能的量化可视化,反卷积采用反卷积和去池化操作。值得注意的是,去池化在理论上是无法实现的。作者通过变量开关转换记录每个池化区域中最大值的位置来近似实现去池化。这样的反向映射将卷积层的输出投影回视觉可感知的图像模式,从而在神经元层面解释每一层学习到的内部特征。

3.3 卷积可视化

 作者将卷积核的计算结果(feature maps)映射回原始的像素空间(映射的方法为反卷积,反池化)并进行可视化。并根据可视化结果得出以下结论:

1)CNN输出的特征图有明显的层级区分

2)越靠近输入端,提取的特征所蕴含的语义信息比较少,例如颜色特征,边缘特征,角点特征等等;

3)越靠近输出端,提取的特征所蕴含的语义信息越丰富,例如狗脸,鸟腿等,都属于目标级别的特征。

3.4 ZFNet改进点

ZFNet通过对AelxNet可视化发现,由于第一层的卷积核尺寸过大导致某些特征图失效(失效指的是一些值太大或太小的情况,容易引起网络的数值不稳定性,进而导致梯度消失或爆炸。图中的体现是(a)中的黑白像素块)。

此外,由于第一层的步长过大,导致第二层卷积结果出现棋盘状的伪影(例如(b)中第二小图和倒数第三小图)。因此ZFNet做了对应的改进。即将第一层 11X11步长为4的卷积操作变成 7X7步长为2的卷积。

3.5 其他发现

通过对卷积结果的可视化,论文中还指出了以下几点:

1.网络中对不同特征的学习速度:

low-level的特征(颜色,纹理等)在网络训练的训练前期就可以学习到, 即更容易收敛;high-level的语义特征在网络训练的后期才会逐渐学到。(高级的语义特征,要在低级特征的基础上学习提取才能得到。)

2. 图片平移,缩放,旋转对CNN的影响:

卷积拥有良好的平移不变性、缩放不变性,但不具有良好的旋转不变性。卷积本身计算方法带来的平移不变性和缩放不变性也是脆弱的,大部分也是从数据集中学习到的。因此,深度学习是一种基于数据驱动的算法。

3.遮挡对卷积模型的影响:

模型确实可以理解图片,找到语义信息最丰富,对识别最关键的特征;而不是仅仅依靠一些颜色,纹理特征去做识别。并且CNN在处理图像的时候是关注局部的高级语义特征,而不是根据图像的全部信息来处理。随着网络层数的深入,遮挡的影响结果也明显减低,这说明深层的网络提取的是语义信息,而不是low-level的空间特征。因此对随机遮挡可以不敏感。

4. ZFNet的调参实验:

ZFNet对AelxNet进行了针对调参的消融实验,发现减少全连接层的参数反而可以提升一点准确率,一定程度证明了全连接层的参数还是太冗余了,即使有dropout。

3.6 论文

论文:《Visualizing and Understanding Convolutional Networks

https://arxiv.org/pdf/1311.2901

贡献:架构可视化;

缺陷:可视化处理会额外消耗性能;

4.LeNet、AlexNet、ZfNet对比

5.参考文章

1.深度学习之图像分类基础:卷积神经网络 - 魔法学院小学弟

2.经典CNN之:LeNet介绍_Sheldon_King的博客-CSDN博客

3. 深度学习之图像分类(二):AlexNet - 魔法学院小学弟

4. 深度学习之图像分类(三):ZFNet - 魔法学院小学弟

5. ZFNet 详细解读_Crayon小鱼干的博客-CSDN博客 

6.论文: A review of convolutional neural network architectures and their optimizations | SpringerLink


http://www.ppmy.cn/news/79406.html

相关文章

C++函数重载

函数重载(Function Overloading)是指在同一个作用域内,可以定义多个具有相同名称但参数列表不同的函数。这样,当调用这些同名函数时,编译器根据提供的参数类型和数量来确定应该调用哪个函数。 函数重载的主要特点包括…

Ubuntu挂载阿里云盘

目录 所需环境安装docker安装rclone获取阿里云盘token 获取docker镜像并运行获取本机IP信息总结rclone配置挂载网盘到本地文件夹开机启动 所需环境 安装docker 使用官方脚本进行全自动安装 curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh安装r…

一文搞清RabbitMQ的部署运维及使用

1.通过docker-compose安装RabbitMQ 1.0 初始化yum和Docker yum update yum install epel-release -y yum clean all yum list yum install docker-io -y1.1 dockerfile FROM rabbitmq:management MAINTAINER LCJ # 添加插件到指定目录 可按照此方式自行扩展其他插件 # ADD .…

R1CS和relaxed R1CS(一)

符号说明 F :有限域 ∘ \circ ∘ : 内积 1. R1CS RlCS定义: ( A , B , C , m , n , l ) (A,B,C,m,n,l) (A,B,C,m,n,l),其中 m 、 n 、 l m、n、l m、n、l为正整数,且 m > l m>l m>l, A , B , C ∈ F m m A,B,C \in F^{m \time…

在flask项目中添加日志记录功能

入口文件中添加以下代码: # 创建日志记录器 logger logging.getLogger(my_logger) logger.setLevel(logging.INFO) # 创建处理程序(普通日志) handler RotatingFileHandler(logs/app.log, encodingutf-8-sig, maxBytes10485760, backupCou…

Vue2+CSS实现一个瀑布流布局案例

在练习代码的时候,看到了携程的首页下方的布局还挺好看 就是一个瀑布流的布局效果,在携程上是一共两列布局,然后每个格子的高度都会根据图片的高度做排布 一开始是想使用flex进行布局,先让每个格子各占百分之49,然后贴…

【算法】算法学习五:加权图 | 狄克斯特拉算法

文章目录 一、加权图二、负权边三、狄克斯特拉算法3.1 理论知识3.2 案例说明3.3 Python代码实现 一、加权图 加权图是指在图的边上赋予了权重(或距离)的图。每条边都带有一个数值,表示该边的权重。这种权重可以表示不同的度量,如…

day18文件上传下载与三层架构思想

servlet文件上传 注意事项:在写了响应后,若后面还需要执行代码,需要添加return; apach的servlet3.0提供了文件上传的功能. **在客户端中的jsp如何上传文件:**使用form标签 使用input标签type的file属性 form表单中的的enctype必须加:使用二进制的方式进行传输,否则不能进行…