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

【图书推荐】《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上的历史。深度残差网络将另文介绍。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis——常用数据类型List

目录 List列表常用命令lpushlpushxrpushrpushlrangelpoprpoplindexlinsertllenlremltrim key start stoplset 阻塞版本命令blpopbrpop list的编码方式list的应用 List列表 Redis中的list相当于数组,或者 顺序表,一些常用的操作可以通过下面这张图来理解…

ubuntu 遇到的一些问题及解决办法

一、“E: 无法定位软件包” 产生该问题的安全提示原因有很多。如网络链接问题、apt 源过期了。 解决方法: 1. 备份 /etc/apt/sources.list 文件 cp /etc/apt/sources.list /etc/apt/sources.list.old 2. 打开文件 gedit /etc/apt/sources.list 3. 添加清华源…

PHP一键约课高效健身智能健身管理系统小程序源码

一键约课,高效健身 —— 智能健身管理系统让健康触手可及 🏋️‍♀️ 告别繁琐,一键开启健身之旅 你还在为每次去健身房前的繁琐预约流程而烦恼吗?现在有了“一键约课高效健身智能健身管理系统”,所有问题都迎刃而解…

SaaS化多租户实现的两种方法

SaaS化多租户实现的两种方法 SaaS系统的定义 SaaS,全称为Software-as-a-Service(软件即服务),是一种基于云计算的软件交付模式。而SaaS系统,即是通过这种模式提供给用户的软件系统。即多租户系统,每个租户…

Leetcode Hot 100刷题记录 -Day15(螺旋矩阵)

螺旋矩阵 问题描述: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输…

WebGL系列教程七(二维及三维旋转、平移、缩放)

目录 1 前言2 二维2.1 平移2.2 旋转2.3 缩放 3 三维3.1 平移3.2 旋转3.2.1 绕 X X X 轴旋转3.2.2 绕 Y Y Y 轴旋转3.2.3 绕 Z Z Z 轴旋转3.2.4 绕任意轴旋转 3.3 缩放 4 WebGL中怎么实现旋转、平移、缩放4.1 声明顶点着色器和片元着色器4.2 计算旋转矩阵4.3 绘制立方体并进行…

基于Matlab的模拟答题卡识别阅卷可以识别指定答题卡的各个部分-界面

识别指定答题卡的各个部分-界面-如学号,准考证号,客观题答案,主观题分数等用户可以在Excel中自行设置标准答案,并对六十题客观题进行批改,并显示分数。 项目介绍 本项目旨在开发一个基于MATLAB的答题卡识别阅卷系统&a…

认识泛型和包装类

认识泛型和包装类 包装类基本数据类型和对应的包装类装箱和拆箱自动装箱和自动拆箱 什么是泛型引出泛型语法 泛型类的使用语法示例类型推导 裸类型(Raw Type)说明 泛型如何编译的擦除机制 泛型的上界语法示例复杂示例 泛型方法定义方法示例使用类型推导和不用类型推导静态的泛型…

IO模型---BIO、NIO、IO多路复用、AIO详解

本篇将想给详细解释一下什么是BIO、NIO、IO多路复用以及AIO~ 同步的阻塞(BIO)和非阻塞(NIO)的区别 BIO:线程发来IO请求后,一直阻塞着IO线程,需要缓冲区这边数据准备好之后,才会进行下一步的操作。 举个🌰&#xff1…

UE5学习笔记21-武器的射击功能

一、创建C类 创建武器子弹的类,创建生产武器子弹的类,创建弹壳的类,生产武器子弹的类的父类是武器的类 创建后如图,ProjectileMyWeapon类(产生子弹的类)继承自weapon类,Projectile(子弹的类),Casing(弹壳声…

如何使用QT完成记事本程序的UI界面布局

每日QT技巧查询表-CSDN博客 会持续更新记事本编写的全部过程,关注不迷路 一、相关控件 ①水平和垂直布局 ②按键 ③文本框 ④水平弹簧 ⑤标签 ⑥Widget 二、控件使用方法 1、PushButton 拖出三个按键,并对其进行命名,两处地方命名可以不一…

【Echarts】vue3打开echarts的正确方式

ECharts 是一个功能强大、灵活易用的数据可视化工具,适用于商业报表、数据分析、科研教育等多种场景。那么该如何优雅的使用Echarts呢? 这里以vue3为例。 安装echarts pnpm i echarts封装公用方法 // ts-nocheck import * as echarts from echarts; // 我们这里借…

C++:入门基础

一.C参考文档 https://legacy.cplusplus.com/reference/ https://zh.cppreference.com/w/cpp https://en.cppreference.com/w/ 二.C的第一个程序 #include <iostream> using namespace std;int main() {cout << "Hello world!" << en…

无人机PX4飞控ROS应用层开发:MAVROS 功能包介绍与飞控消息汇总(一)

概述 这个软件包提供了针对各种自动驾驶仪(如PX4,Ardupilot)使用 MAVLink 通信协议的通信驱动程序。 此外&#xff0c;它还提供了用于地面控制站&#xff08;例如 QGroundControl&#xff09;的 UDP MAVLink 桥接功能。 通常与PX4的offboard模式联合使用 Offboard控制背后的想…

单机docker-compose部署minio

单机多副本docker-compose部署minio 简单介绍 如果服务器有限可以单机挂载多硬盘实现多副本容错&#xff08;生产不推荐&#xff09; 部署好的文件状态 有两个重要文件 docker-compose.yaml和nginx.conf docker-compose.yaml是docker部署容器的配置信息包括4个minio和1个ng…

c中 int 和 unsigned int

c语言中&#xff0c;char、short、int、int64以及unsigned char、unsigned short、unsigned int、unsigned int64等等类型都可以表示整数。但是他们表示整数的位数不同&#xff0c;比如&#xff1a;char/unisigned char表示8位整数&#xff1b; short/unsigned short表示16位整…

菜鸟入门Docker

初始Docker Docker的概念 Docker的用途 DOcke的安装 Docker架构 配置Docker镜像加速器 Docker常用命令 Docker服务相关的命令。 Docker镜像相关的命令 Docker容器相关的命令 容器的数据卷 数据卷的概念和作用 配置数据卷 Docker应用部署 Docker部署mysql Docker…

Unity同时启动多个Editor

HardLinkShellExt tool https://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html 作用&#xff1a; 1.网络Online项目方便调试&#xff0c;MMO项目 2.方便发布不同平台的包&#xff0c;快速开发测试 使用方法&#xff1a;

easy-es动态索引支持

背景 很多项目目前都引入了es&#xff0c;由于es弥补了mysql存储及搜索查询的局限性&#xff0c;随着技术的不断迭代&#xff0c;原生的es客户端使用比较繁琐不直观&#xff0c;上手代价有点大&#xff0c;所以easy-es框架就面世了&#xff0c;学习成本很低&#xff0c;有空大…

【Gateway】Gateway Filter Factories

Predicate决定了请求由哪一个路由处理,如果在请求处理前后需要加一些逻辑,这就是Filter(过滤器)的作用范围了.Filter分为两种类型:Pre类型和Post类型 滤器的两种类型 Pre 类型过滤器: 执行时机: 在请求被转发到后端服务之前执行。作用: 可以用来执行鉴权、限流、请求日志记录、…