卷积神经网络(CNN)经典模型分析(一)

news2024/11/15 15:52:28
CNN经典模型分析

🐬 目录:

  • 一、CNN概论
  • 二、model分析
    1. LeNet5
    2. AlexNet
    3. VggNet
    4. GoogleNet
    5. ResNet
  • 三、参考资料

一、CNN概论

在这里插入图片描述

如图所示:人工智能最大,此概念也最先问世;然后是机器学习,出现的稍晚;最后才是深度学习。其中CNN,RNN,GANs,RL是深度学习中非常典型的算法,如下表所示:

Algorithm简介应用场景
CNNCNN擅长图片的处理图片分类、目标定位监测、目标分割、人脸识别、骨骼识别
RNNRNN能有效处理序列数据文本生成、语音识别、机器翻译、生成图像描述、视频标记
GANs通过生成模型和判别模型“博弈”进行学习
RL通过强化高分策略进尝试学习

二、CNN的model分析

2.1 LeNet5

论文: 《Gradient-Based Learning Applied to Document Recognition》
🍀 简介:LeNet-5是一种经典的卷积神经网络结构,于1998年投入实际使用中。该网络最早应用于手写体字符识别应用中。
🍀 结构: LeNet5共包含7层,输入为32×32像素的图片,如下图所示:
在这里插入图片描述

🍀 意义:普遍认为,卷积神经网络的出现开始于LeCun等提出的LeNet网络,可以说LeCun等是CNN的缔造者,而LeNet则是LeCun等创造的CNN经典之作。


2.2 AlexNet

论文: 《ImageNet Classification with Deep Convolutional Neural Networks》

🎄 简介:AlexNet是2012年ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络,分类准确率从传统的70%提升到80%。它是由Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,深度学习开始迅速发展。
🎄 结构: AlexNet使用了8层卷积神经网络,前5层是卷积层,剩下的3层是全连接层

在这里插入图片描述
上图包含了GPU通信的部分。由于当时GPU内存的限制,作者使用两块GPU进行计算,因此分为了上下两部分。但是,以目前GPU的处理能力,单GPU足够了,因此其结构图可以如下所示。
在这里插入图片描述

🎄 意义
(1)首次利用GPU进行网络加速训练。
(2)使用了ReLU激活函数,而不是传统的Sigmoid激活函数以及Tanh激活函数。
(3)使用LRN(Local Response Normalization)局部响应归一化。
(4)在全连接层的前两层中使用了Dropout随机失活神经元操作,以减少过拟合。


2.3 VggNet

论文: 《Very deep convolutional networks for large-scale image recognition》

🌿 简介: VGG在2014年由牛津大学著名研究组VGG(Visual Geometry Group)提出,斩获改年ImageNet竞赛中Localization Task第一名和Classification Task第二名。

🌿 结构: VGG由5层卷积层、3层全连接层、softmax输出层构成,层与层之间使用max-pooing分开,所有隐层的激活函数都采用ReLU函数。VGG的作者认为两个3 × 3的卷积堆叠获得的感受野大小,相当一个5 × 5的卷积;而三个3 * 3卷积的堆叠获取的感受野相当于7 * 7的卷积。

在这里插入图片描述
通常采用VGG - 16作为实验的主网络,其结构如下图所示:

在这里插入图片描述

🌿 意义:
(1)通过堆叠多个3 × 3的卷积核替代大尺度卷积核(减少所需参数)
(2)证明了增加网络的深度能够在一定程度上影响网络的最终性能


2.4 GoogleNet

论文: 《Going deeper with convolutions》

🌵 简介: GoogleNet在2014年由Google团队提出,斩获当前ImageNet竞赛中Classification Task第一名。在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如overfit、梯度消失、梯度爆炸等。与VGGNet模型相比较,GoogleNet模型的网络深度已经达到22层(如果只计算有参数的层,GoogleNet网络有22层,算上池化层有27层)。
,而且在网络架构中引入了Inception单元,从而进一步提升模型整体的性能。虽然深度达到22层,但大小却比AlexNet和VGG小很多。

🌵结构:

(一)Inception结构
(1)Inception module:naive version
Inception Module基本组成结构有四个成分:1 × 1卷积、3 × 3卷积、5 × 5卷积、3 × 3最大池化,最后对四个成分运算结果进行通道上组合,这就是Naive Inception的核心思想:利用不同大小的卷积核实现不同尺度的感知,最后进行融合,可以得到图像更好的表征。
在这里插入图片描述
但是Naive Inception有两个非常严重的问题:
◆ 所有卷积层直接和前一层输入的数据对接,所以卷积层中的计算量会很大
◆ 在模块中使用的最大池化层保留了输入数据的特征图的深度,导致在最后进行合并的时候输出增加

(2) Inception module with dimension reductions

人们在Naive Inception基础上,为了减少参数量来减少计算量,开发了在GoogleNet模型中使用的Inception单元(Inception V1), 这种方法可以看作是一个额外的1 × 1卷积层再加上一个ReLU层。 如下所示:

在这里插入图片描述
这里使用1 × 1的卷积主要目的是压缩降维,减少参数量,从而让网络更深、更宽,更好的提取特征,这种思想也称为Pointwise Conv,简称PW。本质上是减少卷积核的层数,然后与输入进行卷积操作,最后用 1 × 1 的卷积扩充到所需维度。论文中提及依赖的原理为:

judiciously reducing dimension wherever the compu-
tational requirements would increase too much otherwise.
This is based on the success of embeddings: even low di-
mensional embeddings might contain a lot of information
about a relatively large image patch.

(二)辅助分类器
根据实验数据,发现神经网络的中间层也具有很强的识别能力,为了利用中间层抽象的特征,在某中间层中添加含有多层的分类器。如下图所示:

在这里插入图片描述
GoogleNet中共添加了两个辅助的softmax分支,作用有两点:
1.为了避免梯度消失,向前传导梯度
2.将中间某一层输出用作分类,起到模型融合作用

最后的损失函数为:

loss = loss_2 + 0.3 × loss_1 + 0.3 × loss_0

(三)GoogleNet模型
GoogleNet网络有22层深(包含pool层,有27层深),结构如下图所示:

在这里插入图片描述
如上图所示,在分类器之前采用《Network in Network》中用AveragePool来代替全连接思想。

🌵意义:

(1)引用Inception结构(融合不同尺度的特征信息)
(2)使用1 × 1的卷积核进行降维以及映射处理
(3)添加两个辅助分类器帮助训练
(4)丢弃全连接层,使用平均池化层(大大减少模型参数)


2.5 ResNet

论文:《Deep Residual Learning for Image Recognition》

🌷 简介: 对浅层网络逐渐叠加layers,模型在训练集和测试集上的性能会变好,因为模型复杂度更高了,表达能力更强了。“退化”指的是,给网络叠加更多的layer后,性能却快速下降的情况,ResNet的提出旨在解决layer增加后,性能退化的问题。ResNet在2015年由微软实验室提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。
🌷 结构:
如果将深层网络的后面若干层学习成恒等映射h(x) = x,那么模型就退化成浅层网络。但是直接去学习这个恒等映射是很困难的,那么就换一种方式,把网络设计成:
H(x) = F(x) + x
只要F(x) = 0就构成了一个恒等映射H(x) = x,这里F(x)为残差。
在这里插入图片描述
Resnet提供了两种方式来解决退化问题:identity mapping以及residual mapping。identity mapping指的是图中“弯线”的剩余部分。如果网络已经达到最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
在这里插入图片描述

🌷 意义:
(1)提出了超深的网络结构(突破1000层)
(2)提出residual模块
(3)使用Batch Normalization加速训练(丢弃dropout)


三、参考资料

一篇文章看懂人工智能、机器学习和深度学习

你不得不了解的深度学习知识(一)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356455.html

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

相关文章

Python编程自动化办公案例(2)

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.前期代码 二.实现批量读取 1.os库 2.实现思路 (1&#…

VBA提高篇_ 22 事件处理

文章目录1.事件编程2.常用工作簿事件名称与对应处理过程名称示例3. 事件编程的步骤4.工作簿事件4.1 Open4.2 BeforeClose4.3 NewSheet5.工作表事件6.变量和过程函数的作用域1.事件编程 写在事件发生地(对应工作簿或工作表) 2.常用工作簿事…

22 pandas字符串操作

文章目录字符串对象方法cat和指定字符串进行拼接查看数据不指定参数,所有姓名拼接不指定参数,所有姓名拼接添加分隔符添加数据遇到空值时合并split按照指定字符串分隔partition 按照指定字符串分割get 获取指定位置的字符,只能获取1个slice 获…

LeetCode题目笔记——6362. 合并两个二维数组 - 求和法

文章目录题目描述题目链接题目难度——简单方法一:常规双指针遍历代码/Python方法二:字典\哈希表代码/Python总结题目描述 给你两个 二维 整数数组 nums1 和 nums2. nums1[i] [idi, vali] 表示编号为 idi 的数字对应的值等于 vali 。nums2[i] [idi, …

Flutter-Widget-学习笔记

Widget 是整个视图描述的基础。 参考:https://docs.flutter.dev/resources/architectural-overview Widget 到底是什么呢? Widget 是 Flutter 功能的抽象描述,是视图的配置信息,同样也是数据的映射,是 Flutter 开发框…

2023年美赛C题Wordle预测问题二建模及Python代码详细讲解

更新时间:2023-2-19 相关链接 (1)2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 (2)2023年美赛C题Wordle预测问题二建模及Python代码详细讲解 (3)2023年美赛C题Wordle预测问题三、四…

【Python】进制、计算机中的单位、编码、数据类型、索引、字符串切片、字符串的功能方法

一、进制计算机中底层所有的数据都是以 010101 的形式存在(图片、文本、视频等)。二进制八进制十进制(也就是我们熟知的阿拉伯数字)十六进制进制转换v1 bin(25) # 十进制转换为二进制 print(v1) # "0b11001"v2 oct(23…

【数据结构】顺序表:随机访问的速度快到飞起

👑专栏内容:数据结构⛪个人主页:子夜的星的主页💕座右铭:日拱一卒,功不唐捐 文章目录一、前言二、线性表三、顺序表1、定义2、静态顺序表3、动态顺序表4、接口实现Ⅰ、初始化Ⅱ、销毁Ⅲ、增容Ⅳ、插入Ⅴ、删…

中国各省人力资本测算就业人员受教育程度构成(2000-2021年)

数据来源:自主整理 时间跨度:2000-2021年 区域范围:全国各省 指标说明: 人力资本测算公式:(小学*6初中*9高中*12大专及以上*16)/六岁及以上人口 参考文献: [1]罗仁福, 刘承芳,…

Python pandas「原有或者新建」Excel中「追加新或者新建」sheet

1.pandas原有Excel中追加新sheet 使用Pandas库,我们可以轻松将数据追加到现有的Excel工作簿中的新工作表中。以下是追加新工作表的简单步骤: 读取现有的Excel文件 使用Pandas库中的read_excel()函数读取现有的Excel文件。指定Excel文件的路径和文件名&a…

多模态机器学习入门Tutorial on MultiModal Machine Learning——第一堂课个人学习内容

文章目录课程记录核心技术Core Technical Challengesrepresentation表示alignment对齐转换translationFusion融合co-learning共同学习总结Course Syllabus教学大纲个人总结第一周的安排相关连接课程记录 这部分是自己看视频,然后截屏,记录下来的这部分的…

C生万物 | 模拟实现库函数strcpy之梅开n度

文章目录【梅开一度】:观察库函数strcpy()的实现【梅开二度】:模仿实现strcpy()【梅开三度】:优化简练代码【梅开四度】:assert()断言拦截【梅开五度】:const修饰常量指针【梅开六度】:还可以有返回值哦&am…

如何使用linux服务器多核跑程序和unhashable type: ‘list‘报错的解决方案

问题描述 在使用服务器多核跑程序的时候,需要把核心的程序抽取出来,然后提供迭代参数。然后就可以使用多核去跑程序了。但是在执行的过程中报错如下: Exception has occurred: TypeError unhashable type: list File "/home/LIST_208…

【机器学习 深度学习】通俗讲解集成学习算法

目录:集成学习一、机器学习中的集成学习1.1 定义1.2 分类器(Classifier)1.2.1 决策树分类器1.2.2 朴素贝叶斯分类器1.2.3 AdaBoost算法1.2.4 支持向量机1.2.5 K近邻算法1.3 集成学习方法1.3.1 自助聚合(Bagging)1.3.2 提升法(Boosting)1.3.2.1 自适应adaboost1.3.3 …

【C语言编译器】02 Windows下 7 种C语言IDE的使用(万字长文警告,含Visual Studio多个版本)

目录一、Visual Studio1.1 VS 20101.2 VS 20151.21 简介1.22 使用1.3 VS 20171.31 简介1.32 使用1.4 VS 20191.41 简介1.42 使用1.5 VS 20221.6 VS 安全函数问题1.7 VS “无法查找或打开PDB文件” 问题二、CLion2.1 CLion简介及安装2.2 使用CLion编写C程序三、Dev C3.1 Dev C简…

【ubuntu 22.04不识别ch340串口】

这个真是挺无语的,发现国内厂商普遍对开源环境不感兴趣,ch340官方linux驱动好像被厂家忘了,现在放出来的驱动还是上古内核版本: 于是,驱动居然要用户自己编译安装。。还好网上有不少大神:链接,…

一起学 pixijs(3):Sprite

大家好,我是前端西瓜哥。今天来学习 pixijs 的 Sprite。 Sprite pixijs 的 Sprite 类用于将一些纹理(Texture)渲染到屏幕上。 Sprite 直译为 “精灵”,是游戏开发中常见的术语,就是将一个角色的多个动作放到一个图片…

零基础小白如何学会Java?

Java作为目前使用最广泛的编程语言,自身在常见的企业级业务应用程序以及Android应用程序等方面都有突出的表现。作为跨平台语言,具有安全性、易用性、通用性等特点,被特意设计用于互联网的分布式环境。 对于很多喜欢代码的小伙伴来说Java都是…

音乐播放器-- 以及数据库数据存储

运行环境 : java1.8 数据库以及代码编写工具 : sqlserver -- mysql 也可以 工具 eclipse 编码gbk窗体 : Swing使用了jaudiotagger 进行了音乐处理 图片展示 ----- 空闲时间 做出来玩的项目 部分功能还没有完善 完善了的功能 音乐 /// 主页 &a…

SheetJS的部分操作

成文时间:2023年2月18日 使用版本:"xlsx": "^0.18.5" 碎碎念: 有错请指正。 这个库自说自话升级到0.19。旧版的文档我记得当时是直接写在github的README上。 我不太会使用github,现在我不知道去哪里可以找到…