卷积神经网络经典模型架构简介

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客

《PyTorch深度学习与企业级项目实战(人工智能技术丛书)》(宋立桓,宋立林)【摘要 书评 试读】- 京东图书 (jd.com)

ImageNet是一个包含超过1 500万幅手工标记的高分辨率图像的数据库,大约有22 000个类别。ImageNet 项目于2007年由斯坦福大学的华人教授李飞飞创办,目标是收集大量带有标注信息的图片数据供计算机视觉模型训练。ImageNet 拥有 1 500 万幅标注过的高清图片,总共拥有22 000类,其中约有100万幅标注了图片中主要物体的定位边框。

而ILSVRC(ImageNet Large-Scale Visual Recognition Challenge,ImageNet大规模视觉识别挑战赛)成立于2010年,旨在提高大规模目标检测和图像分类的最新技术,ILSVRC作为最具影响力的竞赛,促进了许多经典的卷积神经网络架构的发展,功不可没。ILSVRC使用的数据都来自 ImageNet。

从2010年开始举办的ILSVRC比赛使用ImageNet数据集的一个子集,大概拥有120万幅图片,以及1 000类标注。该比赛一般采用top-5和top-1分类错误率作为模型性能的评测指标。top1是指概率向量中最大的作为预测结果,若分类正确,则为正确;而top5只要概率向量中最大的前5名里有分类正确的,则为正确。

加拿大著名科学家Yann LeCun等人在1998年提出LeNet-5这个经典的卷积神经网络模型(用于手写数字的识别)是深度学习的奠基之作,而2012年的冠军AlexNet网络模型首次将深度学习技术应用到大规模图像分类领域,证明了深度学习技术学习到的特征可以超越手工设计的特征。如图4-14所示,ILSVRC比赛分类项目,2012年冠军AlexNet(top-5错误率为16.4%,8层神经网络)、2014年亚军VGG(top-5错误率为7.3%,19层神经网络)、2014年冠军GoogleNet(top-5错误率为6.7%,22层神经网络)、2015年的冠军ResNet(top-5错误率为3.57%,152层神经网络)。

图4-14

这些经典的卷积神经网络模型及其性能的提升,开启了计算机视觉领域中的深度学习热潮。下面,我们就从LeNet-5模型开始为大家一一介绍这些模型。

4.3.1  LeNet-5[yx1] 

LeNet-5模型是1998年Yann LeCun教授在论文Gradient-based learning applied to document recognition中提出的,是第一个成功应用于手写数字识别问题的卷积神经网络,在那时的技术条件下就能取得低于1%的错误率。因此,LeNet这一卷积神经网络便在当时效力于全美几乎所有的邮政系统,用来识别手写邮政编码进而分拣邮件和包裹。当年美国大多数银行就是用它来识别支票上面的手写数字的,能够达到这种商用的地步,它的准确性可想而知。可以说,LeNet是第一个产生实际商业价值的卷积神经网络,同时也为卷积神经网络以后的发展奠定了坚实的基础。

LeNet-5这个网络虽然很小,但是它包含深度学习的基本模块:卷积层、池化层和全链接层,是其他深度学习模型的基础。这里我们对LeNet-5进行深入分析,同时通过实例分析加深对卷积层和池化层的理解。如图4-15所示,LeNet-5模型各层分别为由卷积层(Convolution Layer)、采样层(Subsampling Layer)、卷积层、采样层、全连接层(Full connection Layer)、全连接层、高斯连接层(Gaussian connections Layer)。从图4-15中可以看到,输入的是一幅手写的英文字母A,随后经过卷积层-下采样-卷积层-下采样-全连接层-全连接层,最终输出该图片属于每个数字的概率,实际测试的时候取最大概率值的索引值为最终预测值。

 图4-15

虽然是一个只有5层的小网络,但却是当之无愧的开创性工作。卷积使得神经网络可以共享权值,一方面减少了参数,另一方面可以学习图像不同位置的局部特征。

4.3.2  AlexNet

AlexNet在2012年被提交给ImageNet ILSVRC挑战,明显优于第二名。该网络使用更多层数,使用ReLU激活函数和0.5概率的Dropout来对抗过拟合。由于AlexNet相对简单的网络结构和较小的深度,AlexNet在今天仍然广泛使用。

AlexNet是Hinton和他的学生Alex Krizhevsky设计的,是2012年ImageNet比赛的冠军,这是第一个基于CNN的ImageNet冠军,网络比LeNet5更深。

AlexNet包含5个卷积层和3个全连接层,模型示意如图4-16所示。

AlexNet为8层结构,其中前5层为卷积层,后面3层为全连接层。AlexNet引用ReLU激活函数,成功解决了Sigmoid函数在网络较深时的梯度弥散问题;使用最大值池化,避免了平均池化的模糊化效果;并且,池化的步长小于核尺寸,这样使得池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

另外,为提高运行速度和网络运行规模,AlexNet采用双GPU的设计模式,并且规定GPU只能在特定的层进行通信交流。其实就是每一个GPU负责一半的运算处理。实验数据表示,two-GPU方案比只用one-GPU的方案,在准确度上提高了1.7%的top-1和1.2%的top-5。

图4-16

4.3.3  VGG

ILSVRC 2014的第二名是Karen Simonyan和 Andrew Zisserman实现的卷积神经网络,现在称其为VGG,网络结构如图4-17所示。它主要的贡献是揭示出网络深度是算法优良性能的关键点。

图4-17

从图中可以看到,A、A-LRN、B、C、D、E这6种网络结构相似,都是由5层卷积层、3层全连接层组成的,其区别在于每个卷积层的子层数量不同,从A至E依次增加(子层数量从1到4),总的网络深度从11层到19层(添加的层以粗体显示)。例如,上图表格中的con3-128表示使用3×3的卷积核,通道数为128。其中,网络结构D就是著名的VGG16,网络结构E就是著名的VGG19。VGG16是一个16层的神经网络,不包括最大池化层和Softmax层。因此被称为VGG16,而VGG19由19个层组成。

这些网络都遵循一种通用的设计,输入网络的是一个固定大小的224×224的RGB图像,所做的唯一预处理是从每个像素减去基于训练集的平均RGB值。图像通过一系列的卷积层时,全部使用3×3大小的卷积核。每个网络配置都是5个最大池化层,最大池化的窗口大小为2×2,步长为2。卷积层之后是三个全连接(Fully Connected,FC)层,前两层有4 096个通道,第三个层执行的是1 000路ILSVRC分类,因此包含1 000个通道(每个类一个)。最后一层是Softmax层。在A~E所有网络中,全连接层的配置是相同的。所有的隐藏层都使用RelU方法进行校正。

卷积层的宽度(即每一层的通道数)设置得很小,从第一层64开始,按照每过一个最大池化层进行翻倍,直到到达512。例如,conv3-64指的是卷积核大小为3×3,通道数量为64。全部使用3×3的卷积核和2×2的池化核,通过不断加深网络结构来提升性能。网络层数的增长并不会带来参数量上的爆炸,因为参数量主要集中在最后三个全连接层中。VGG虽然网络更深,但比AlexNet收敛得更快,缺点是占用内存较大。

VGG论文的一个主要结论就是深度的增加有益于精度的提升,这个结论堪称经典。连续3个3×3的卷积层(步长1)能获得和一个7×7的卷积层等效的感知域(Receptive Fields),而深度的增加在增加网络的非线性时减少了参数。从VGG之后,大家都倾向于使用连续多个更小的卷积层,甚至分解卷积核(Depthwise Convolution)。

但是,VGG简单地堆叠卷积层,而且卷积核太深(最多达512),特征太多,导致其参数猛增,搜索空间太大,正则化困难,因而其精度也不是最高的,在推理时相当耗时,和GoogLeNet相比性价比十分低。

4.3.4  GoogLeNet

GoogLeNet是ILSVRC 2014获奖者,是来自Google的Szegedy等人开发的卷积网络。其主要贡献是开发了一个Inception模块,该模块大大减少了网络中的参数数量。另外,这个论文在卷积神经网络的顶部使用平均池化(Average Pooling)而不是全连接层,从而消除了大量似乎并不重要的参数。GoogLeNet还有几个后续版本,最近的是Inception-v4。

GoogLeNet最吸引人的地方在于它的运行速度非常快,主要原因是它引入了Inception模块的新概念,这使得GoogLeNet更加有效地使用参数,GoogLeNet的参数量比AlexNet少10倍左右。

Inception的结构如图4-18所示。

图4-18

说明如下:

  1. 3×3+1(S)表示该层使用3×3的卷积核,步长为1,使用same填充(Padding)。
  2. 输入被复制4份,然后分别进行不同的卷积或池化操作。
  3. 图4-18中所有的卷积层都使用ReLU激活函数。
  4. 使用不同大小的卷积核就是为了能够在不同尺寸上捕获特征模式。
  5. 由于所有卷积层和池化层都使用了same填充和步长为1的操作,因此输出尺寸与输入尺寸相等。
  6. 最终将4个结果在深度方向上进行拼接。
  7. 使用1×1大小的卷积核是为了增加更多非线性。

GoogLeNet架构如图4-19所示。

说明如下:

  1. 卷积核前面的数字是卷积核或池化核的个数,也就是输出特征图的个数。
  2. GoogLeNet总共包括9个Inception结构(黄色矩形,颜色参见下载资源中的相关图片文件),黄色矩形中的6个数字分别代表Inception结构中卷积层的输出特征图个数。
  3. 所有卷积层都使用ReLU激活函数。
  4. 全局平均池化层输出每个特征图的平均值。

4.3.5  ResNet

深度残差网络(Deep Residual Network,ResNet)的提出是CNN图像史上的一件里程碑事件,如图4-20所示,ResNet在ILSVRC和COCO 2015上的战绩,ResNet取得了5项第一,并又一次刷新了CNN模型在ImageNet上的历史。深度残差网络将另文介绍。

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

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

相关文章

CAS 和 synchronized 的优化过程

🍉 目录 CAS 的实现 CAS 的工作原理 优化过程 CAS 的应用 1) 实现原子类 2)实现自旋锁 CAS 的 ABA 问题 synchronized 的 原理 synchronized 基本特点 加锁工作过程 其他优化操作 1. 锁消除 2. 锁粗化 CAS(Compare-And-Swap&…

2024ICPC网络赛第一场

A 最终答案与中国队能力值的排名有关&#xff0c;具体每个情况手推一下&#xff0c;用 if else 即可通过。 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(0);int t, a[40];cin >> t;while (t--) {int num 0;f…

Arduino IDE离线配置第三方库文件-ESP32开发板

简洁版可以使用uget等&#xff0c;将文件下载到对应文件夹下&#xff0c;然后安装。 esp32之arduino配置下载提速 录屏 Arduino IDE离线配置第三方库文件ESP32 资源 Linux https://download.csdn.net/download/ZhangRelay/89749063 第三方开发板 非默认支持的开发板 linu…

Ubuntu24.04部署docker

1、更新软件 apt update 2、安装curl apt install apt-transport-https curl 3、导入阿里云GPG秘钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 4、添加Docker阿里云仓库到Ubuntu 24.04的…

Python编码系列—Python适配器模式:无缝集成的桥梁

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

LLM - 理解 多模态大语言模型 (MLLM) 的指令微调与相关技术 (四)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142063880 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 完备(F…

如何看待IBM中国研发部裁员

如何看待IBM中国研发部裁员&#xff1f; 近日&#xff0c;IBM中国宣布撤出在华两大研发中心&#xff0c;引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展&#xff0c;也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下&#xff1a;1.3csv转换为excel代码如下&#xff1a; 由于excel文件在数学建模数据处理当中的局限性&#xff0c;我们通常把excel文件转换为csv文件来处理&#xff0c;下面是相关的代码&a…

Java算法总结

文章目录 一、链表相关1.1 从尾到头打印单链表[要求 方式1&#xff1a;反向遍历。方式2&#xff1a;Stack栈]1.2 josephu问题&#xff08;使用带尾指针的循环链表&#xff09; 二、动态规划2.1 斐波那契数列 2022.4.182.2 青蛙上台阶 2022.4.18 三、位运算符3.1 二进制中1的个数…

统信服务器操作系统【d版字符系统升级到dde图形化】配置方法

统信服务器操作系统d版本上由字符系统升级到 dde 桌面系统的过程 文章目录 一、准备环境二、功能描述安装步骤1. lightdm 安装2. dde 安装 一、准备环境 适用版本&#xff1a;■UOS服务器操作系统d版 适用架构&#xff1a;■ARM64、AMD64、MIPS64 网络&#xff1a;连接互联网…

kettle 数据库迁移 使用分页原理实现 数据库mysql

使用 kettle 9.0 先修改配置文件: C:\Users\xx\.kettle 新增如下配置,解决mysql 空字符串 自动转 null bug KETTLE_EMPTY_STRING_DIFFERS_FROM_NULLY git地址: GitHub - 2292011451/kettle_tool 第一步: 先把要迁移的表进行读取,循环查询每个表的最大数量以及页数,追加到…

linux文件系统权限详解

注:目录的执行权限代表是否可以进入。 一、文件权限控制对文件的访问: 可以针对文件所属用户、所属组和其他用户可以设置不同的权限 权限具有优先级。user权限覆盖group权限,后者覆盖other权限。 有三种权限类别:读取、写入和执行 读权限:对文件:可读取文件…

VS Code 配置 C/C++ 编程运行环境(保姆级教程)

文章目录 一、软件下载1. 下载 VS Code 安装工具 2. 下载 MinGW-W64二、安装 VS Code三、安装 MinGW-W64 及配置环境变量四、配置 VS Code 的 C/C 编程运行环境1. 汉化 VS Code&#xff08;选做&#xff09;2. 安装 C/C 扩展包 五、测试 VS Code 的 C/C 编程环境1. 创建代码文件…

hku-mars雷达相机时间同步方案-软件驱动(MID360与海康MV-CB060-10UMUC-S)

hku-mars雷达相机时间同步方案-软件驱动 hku的方案在硬件和软件方面都做了工作&#xff0c;所以才会实现相机帧和雷达帧的完全对齐。硬件方面的设置请参考上一期。 港大的同步结果&#xff1a; hku-mars雷达相机时间同步方案-硬件&#xff08;MID360与海康MV-CB060-10UMUC-S&…

窗口嵌入桌面背景层(vb.net,高考倒计时特供版)

开发思路 根据系统生成高考倒计时的具体时间&#xff0c;附加江苏省省统考的时间生成算法&#xff0c;并且用户可以根据实际情况调整前后30天&#xff0c;具有丰富多彩的图片库和强大的自定义功能&#xff0c;效果图见P3 目前程序处于正式版的1.4版本&#xff0c;本程序由本作…

【HarmonyOS】鸿蒙头像上传-(编辑个人信息页- 头像上传)+实时数据更新

#效果图 #思路 ##步骤&#xff1a; ###一、利用picker api选择1张图片 实例化选择器参数(使用new PhotoSelectOptions())实例化图片选择器 (使用newPhotoViewPicker() )调用图片选择器的select方法传入选择器参数完成图片选取获得结果 利用picker api选择1张图片 async sele…

[Redis] Redis中的Hash类型和List类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key&#xff0c;也就是defaultZone不支持snake-c…

【PCB工艺】如何实现PCB板层间的互连

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言①、什么是通孔②、通孔是怎样产生的③、通孔种类④、盘中孔⑤、设计建议 前言 送给大学毕业后找不到奋斗方向的你…

C++函数在库中的地址

本文讲述C如何直接调用动态库dll或者so中的函数。 首先我们准备一个被调用库&#xff0c;这个库里面有两个函数&#xff0c;分别是C98 与 C11 下的&#xff0c;名称是run2和run1。 被调用库 相关介绍请看之前的文章《函数指针与库之间的通信讲解》。 //dll_ex_im.h #ifndef…