一、CNNs网络架构-基础网络架构(LeNet、AlexNet、ZFNet)

news2024/11/26 4:53:38

目录

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.coloradmin.cn/o/578490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Integer源码

介绍 Integer是int类型的包装类,继承自Number抽象类,实现了Comparable接口。提供了一些处理int类型的方法,比如int到String类型的转换方法或String类型到int类型的转换方法,当然也包含与其他类型之间的转换方法。 Comparable提供…

3ds MAX 基本体建模,长方体、圆柱体和球体

3ds MAX基本页面如下: 生成新的几何体在右侧: 选择生成的对象类型即可,以下为例子: 1、长方体建模 选择建立的对象类型为长方形 在 任意一个窗口绘制,鼠标滑动 这里选择左上角的俯视图 松开鼠标后,可以…

单片机GD32F303RCT6 (Macos环境)开发 (二十九)—— GD32通过蓝牙透传模块 IAP升级

GD32通过蓝牙透传模块 IAP升级 1、思路 上一节手机App可以通过HC-08模块控制mcu的开锁,关锁的动作,那么我们是不是可以将mcu的升级文件通过hc-08模块发送给gd32,完成gd32程序的自升级呢? 2、命令协议 蓝牙透传模块每次只能发2…

Selenium的使用

一、基础 1、特点 selenium 是web中基于UI的自动化测试工具,它支持多平台、多语言、多浏览器,还有丰富的API。 2、原理 自动化脚本代码会创建一个http请求发送给浏览器驱动进行解析,浏览器驱动会操控浏览器执行测试,浏览器接着…

AirServer电脑通用版下载及使用教程

AirServer 是一款功能十分强大的投屏软件,支持并适用于 Windows和Mac。AirServer 是接收方,而不是发送方。 AirServer 只允许您接收镜像或流媒体内容,反之则不行。AirServer虽然功能十分强大,但是整体操作和使用都十分简单&#x…

如何在华为OD机试中获得满分?Java实现【知识图谱新词挖掘1】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

【STL】list的模拟实现

目录 前言 结构解析 默认成员函数 构造函数 拷贝构造 赋值重载 析构函数 迭代器 const迭代器 数据修改 insert erase 尾插尾删头插头删 容量查询 源码 前言 🍉list之所以摆脱了单链表尾插麻烦,只能单向访问等缺点,正是因为其…

日常 - HttpURLConnection 网络请求 TLS 1.2

文章目录 环境前言HTTPS 请求流程服务端支持JDK 验证资源 环境 JDK 8 Hutool 4.5.1 前言 应供应商 DD 的 TLS 版本升级通知,企业版接口升级后 TLS 1.0 及 1.1 版本请求将无法连接,仅支持 TLS 1.2 及以上版本的客户端发起请求。 当前项目使用 Hutool …

有序表2:跳表

跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。 它采用随机技术决定链表中哪些节点应增加向前指针以及在该节点…

找不到“SqlServer”模块-- 在此计算机上找不到任何 SQL Server cmdlet。

https://github.com/PowerShell/PowerShell/releases/tag/v7.2.2SQL Server Management Studio 18 启动触发器报错 标题: 找不到“SqlServer”模块 --------------- 在此计算机上找不到任何 SQL Server cmdlet。 在 https://powershellgallery.com/packages/SqlServer 上获取“…

PyTorch深度学习实战(1)——神经网络与模型训练过程详解

PyTorch深度学习实战(1)——神经网络与模型训练过程详解 0. 前言1. 传统机器学习与人工智能2. 人工神经网络基础2.1 人工神经网络组成2.2 神经网络的训练 3. 前向传播3.1 计算隐藏层值3.2 执行非线性激活3.3 计算输出层值3.4 计算损失值3.5 实现前向传播…

Linux——应用层之序列号与反序列化

TCP协议通讯流程 tcp是面向连接的通信协议,在通信之前,需要进行3次握手,来进行连接的建立。 当tcp在断开连接的时候,需要释放连接,4次挥手 服务器初始化: 调用socket, 创建文件描述符; 调用bind, 将当前的文件描述符和ip/port绑定在一起; 如果这个端口已经被其他进程占用了…

【机器学习】9种回归算法及实例总结,建议学习收藏

我相信很多人跟我一样,学习机器学习和数据科学的第一个算法是线性回归,它简单易懂。由于其功能有限,它不太可能成为工作中的最佳选择。大多数情况下,线性回归被用作基线模型来评估和比较研究中的新方法。 在处理实际问题时&#…

VirtualBox安装增强功能

在刚安装完的VisualBox中,默认屏幕是固定设置的,不会根据实际的窗口大小做自适应,这时候我们需要【安装增强功能】,然后打开【自动调整显示大小】,就可以实现虚拟机中屏幕自适应。 本教程的软件环境如下: 宿…

数据结构: 第四章 串

文章目录 一、串的定义和实现1.1串的定义和基本操作1.1.1串的定义1.1.2串的基本操作1.1.3小结 1.2串的存储结构1.2.1顺序存储1.2.2链式存储1.2.3基于顺序存储实现基本操作1.2.4小结 二、串的模式匹配2.1什么是字符串的模式匹配2.2朴素模式匹配算法2.3KMP算法2.4求next数组2.5KM…

python+django协同过滤算法的美食O2O外卖点餐系统vue

当然使用的数据库是mysql。尽管没有面向对象的数据库的作用强大,但是在Python开发上还是比较的灵活和方便的。系统功能主要介绍以下几点: 本外卖点餐系统主要包括二大功能模块,即用户功能模块和管理员功能模块。 (1)管…

Linux上安装jdk Tomcat mysql redis

1.安装JDk 1.1这里使用xshell中xfxp进行文件的上传,将jdk二进制包上传到Linux服务器上 下载地址:Java Downloads | Oracle 或者这里有下载好的安装包:链接:https://pan.baidu.com/s/1ZSJxBDzDaTwCH2IG-d2Gig 提取码:…

dubbo 3.2.0 consumer bean初始化及服务发现简记

consumer bean初始化 以spring 如下配置<dubbo:reference id"versionConsumerBean" interface"org.apache.dubbo.samples.version.api.VersionService" version"*"/>为例&#xff0c;先使用spring 的初始化&#xff0c;核心代码 try {fin…

EDR(端点、端点检测与响应中心、可视化展现)

EDR基本原理与框架 EDR定义 端点检测和响应是一种主动式端点安全解决方案&#xff0c;通过记录终端与网络事件&#xff08;例如用户&#xff0c;文件&#xff0c;进程&#xff0c;注册表&#xff0c;内存和网络事件&#xff09;&#xff0c;并将这些信息本地存储在端点或集中数…

C#,码海拾贝(26)——求解“一般带状线性方程组banded linear equations”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…