经典卷积神经网络(一):LeNet-5和AlexNet

2023-05-16

本节介绍几种广泛使用的典型深层卷积神经网络。

LeNet-5

LeNet-5[LeCun et al., 1998]虽然提出的时间比较早,但是是一个非常成功
的神经网络模型。基于LeNet-5的手写数字识别系统在90年代被美国很多银行
使用,用来识别支票上面的手写数字。

LeNet-5的网络结构如图所示。

不计输入层,LeNet-5共有7层,每一层的结构为:

  1. 输入层:输入图像大小为32 × 32 = 1024。

  2. C1层是卷积层,使用6个5 × 5的滤波器,得到6组大小为28 × 28 = 784的特征映射。因此,C1层的神经元数量为6 × 784 = 4,704,可训练参数
    数量为6 × 25 + 6 = 156,连接数为156 × 784 = 122,304(包括偏置在内,
    下同)。

  3. S2层为汇聚层,采样窗口为2×2,使用平均汇聚,并使用一个非线性函数。神经元个数为6 × 14 × 14 = 1,176,可训练参数数量为6 × (1 + 1) = 12,连接数为6 × 196 × (4 + 1) = 5,880。

  4. C3层为卷积层。LeNet-5中用一个连接表来定义输入和输出特征映射之间
    的依赖关系,如图5.11所示,共使用60个5×5的滤波器,得到16组大小
    为10×10的特征映射。神经元数量为16×100 = 1,600,可训练参数数量为(60 × 25) + 16 = 1,516,连接数为100 × 1,516 = 151,600。
    (如果不使用连接表,则需要
    96个5 × 5的滤波器)。

  5. S4层是一个汇聚层,采样窗口为2 × 2,得到16个5 × 5大小的特征映射,
    可训练参数数量为16 × 2 = 32,连接数为16 × 25 × (4 + 1) = 2000。

  6. C5层是一个卷积层,使用120 × 16 = 1,920个5 × 5的滤波器,得到120
    组大小为1 × 1的特征映射。C5层的神经元数量为120,可训练参数数量
    为1,920 × 25 + 120 = 48,120,连接数为120 × (16 × 25 + 1) = 48,120。

  7. F6层是一个全连接层,有84个神经元,可训练参数数量为84×(120+1) =
    10,164。连接数和可训练参数个数相同,为10,164。

  8. 输出层:输出层由10个欧氏径向基函数(Radial Basis Function,RBF)
    函数组成。这里不再详述。

可以知道,卷积层的每一个输出特征映射都依赖于所有输入特征映射,相当于卷积层的输入和输出特征映射之间是全连接的关系。实际上,这种全连接关系不是必须的。我们可以让每一个输出特征映射都依赖于少数几个输入特征映射。

定义一个连接表(Link Table) T T T 来描述输入和输出特征映射之间的连接关系。如果第 p p p个输出特征映射依赖于第 d d d个输入特征映射,则
T p , d = 1 T_{p,d} = 1 Tp,d=1,否则为0。

Y p = f ( ∑ d , T p , d = 1 W p , d ⊗ X d + b p ) Y^p=f\left(\sum\limits_{d,\\ T_{p,d}=1}W^{p,d}\otimes X^d+b^p\right) Yp=f d,Tp,d=1Wp,dXd+bp
其中 T T T P × D P × D P×D大小的连接表。假设连接表 T T T 的非零个数为 K K K,每个滤波器的
大小为 m × n m × n m×n,那么共需要 K × m × n + P K × m × n + P K×m×n+P 参数。

在LeNet-5中,连接表的基本设定如图所示。C3层的第0-5个特征映射
依赖于S2层的特征映射组的每3个连续子集,第6-11个特征映射依赖于S2层
的特征映射组的每4个连续子集,第12-14个特征映射依赖于S2层的特征映射
的每4个不连续子集,第15个特征映射依赖于S2层的所有特征映射。

论文地址:
http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf

AlexNet

AlexNet[Krizhevsky et al., 2012]是第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的一些技术方法,比如使用GPU进行并行训练,
采用了ReLU作为非线性激活函数,使用Dropout防止过拟合,使用数据增强
来提高模型准确率等。

AlexNet赢得了2012年ImageNet图像分类竞赛的冠军。
AlexNet的结构如图所示,包括5个卷积层、3个全连接层和1个softmax
层。因为网络规模超出了当时的单个GPU的内存限制,AlexNet将网络拆为两半,分别放在两个GPU上,GPU间只在某些层(比如第3层)进行通讯。


AlexNet的具体结构如下:

  1. 输入层,224 × 224 × 3的图像;
  2. 第一个卷积层,使用两个11 × 11 × 3 × 48的卷积核,步长s = 4,零填充
    p = 3,得到两个55 × 55 × 48的特征映射组。
  3. 第一个汇聚层,使用大小为3×3的最大汇聚操作,步长s = 2,得到两个
    27 × 27 × 48的特征映射组。
  4. 第二个卷积层,使用两个 5×5×48×128的卷积核,步长s = 1,零填充
    p = 1,得到两个27 × 27 × 128的特征映射组。
  5. 第二个汇聚层,使用大小为3×3的最大汇聚操作,步长s = 2,得到两个
    13 × 13 × 128的特征映射组。
  6. 第三个卷积层为两个路径的融合,使用一个 3 × 3 × 256 × 384的卷积核,
    步长s = 1,零填充p = 1,得到两个13 × 13 × 192的特征映射组。
  7. 第四个卷积层,使用两个 3 × 3 × 192 × 192的卷积核,步长s = 1,零填
    充p = 1,得到两个13 × 13 × 192的特征映射组。
  8. 第五个卷积层,使用两个 3 × 3 × 192 × 128的卷积核,步长s = 1,零填
    充p = 1,得到两个13 × 13 × 128的特征映射组。
  9. 汇聚层,使用大小为3×3的最大汇聚操作,步长s = 2,得到两个6×6×128
    的特征映射组。
  10. 三个全连接层,神经元数量分别为4096,4096和1000。

Alex-Net是计算机视觉中首个被广泛关注、使用的卷积神经网络,特别是在2012年ImageNet竞赛中以超越第二名10.9个百分点的优异成绩一举夺冠,从而打响了卷积神经网络、乃至深度学习在计算机视觉领域中研究热潮的“第一枪”。

Alex-Net由加拿大多伦多大学的Alex Krizhevsky ,Ilya Sutskever(Hinton的两位博士生)和 提出,网络名“Alex-Net”即取自第一作者。

不过仍需指出 Alex-Net 的几点重大贡献,正因如此,Alex-Net 方可在整个卷积神经网络甚至连接主义机器学习发展进程中占据里程碑式的地位。

1.Alex-Net 首次将卷积神经网络应用于计算机视觉领域的海量图像数据集ImageNet(该数据集共计 1000 类图像,图像总数约 128 多万张),揭示了卷积神经网络拥有强大的学习能力和表示能力。另一方面,海量数据同时也使卷积神经网络免于过拟合。可以说二者相辅相成,缺一不可。自此便引发了深度学习,特别是卷积神经网络在计算机视觉中“井喷”式的研究。

2.利用 GPU 实现网络训练。在上一轮神经网络研究热潮中,由于计算资源发展受限,研究者无法借助更加高效的计算手段 (如 GPU),这也较大程度阻碍了当时神经网络的研究进程。“工欲善其事,必先利其器”,在Alex-Net 中,研究者借助 GPU 从而将原本需数周甚至数月的网络训练过程大大缩短至五到六天。在揭示卷积神经网络强大能力的同时,无疑也大大缩短了深度网络和大型网络模型开发研究的周期与时间成本。缩短了迭代周期,数量繁多、立意新颖的网络模型和应用才能像雨后春笋一般层出不穷。

3.一些训练技巧的引入使“不可为”变“可为”,甚至是“大有可为”。如ReLU 激活函数、局部响应规范化操作、为防止过拟合而采取的数据增广(data augmentation)和随机失活(dropout) 等,这些训练技巧不仅保证了模型性能,更重要的是为后续深度卷积神经网络的构建提供了范本。实际上,此后的卷积神经网络大体都是遵循这一网络构建的基本思路。

论文地址:
https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf


论文复现代码下载:
 
在「阿远学长」公众号后台回复:
【论文代码】
即可领取
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典卷积神经网络(一):LeNet-5和AlexNet 的相关文章

  • Android自定义数字键盘

    好久没有写Android的文章了 xff0c 有两三个月多了吧 xff0c 刚开始搞微信小程序 xff0c 后来又开搞ReactNative 现在又兴奋的开搞AI机器学习的东西 xff0c 感觉挺有意思的 xff0c 不过AI与其它的东西相
  • ConstraintLayout基础介绍

    自去年Google I O 大会发布ConstraintLayout至今 xff0c 已有一年多的时间 xff0c 但是并没有普及开来 xff0c 了解过ConstraintLayout布局的人知道 xff0c 它的性能的确提升了不少 在前
  • 嵌入式Linux实战开发之项目总体概述(基于IMX6ULL)

    文章目录 前言 xff08 一 xff09 开发环境 xff08 二 xff09 项目基本概述 xff08 三 xff09 程序框架 xff08 四 xff09 参考资料 前言 现在越来越多的智能设备融入到我们的生活 xff0c 然而 xf
  • Jetson Xavier NX安装opencv3.4.5(小白教程)

    作为小白 xff0c 近期开始上手嵌入式设备Jetson Xavier NX xff0c 系统为Ubuntu 18 04 6 xff0c 而因项目开发环境需要Opencv3 4 5版本 xff0c 预装系统内安装的是Opencv4 1 1
  • tortoisegit安装及实用操作

    TortoiseGit安装及实用操作 TortoiseGit安装TortoiseGit配置TortoiseGit基本操作Git Clone 克隆远程仓库到本地Git Commit 提交改动到本地的版本库Git Push 将本地修改提交到远程
  • linux系统如何开启和关闭core dump

    概述 大多数Linux系统默认开始core dump 我们一方面咱们想要收集信息以提升稳定性 排除故障 xff1b 另外一方面 xff0c 我们又想要限制debug的数据 避免泄漏一些敏感数据 第一个选择适合于研究不稳定的程序的机器 第二个
  • cartographer输出机器人相对地图位姿

    cartographer xff08 0 3 0版本 xff09 中机器人位姿是以tf的格式发布的 cartographer在关于位姿的tf tree为 xff1a map gt odom gt base footprint 其中odom
  • SUMO跟车模型之IDM模型

    IDM 智能交通模型Intelligent Driver Model 优点 xff1a IDM模型的参数数量少 意义明确 xff0c 并且能用统一的模型描述从自由流到完全拥堵流的不同状态 缺点 xff1a 缺乏随机项 xff0c 也就是输入
  • 《Python程序设计与算法基础教程(第二版)》江红 余青松 课后选择题 课后填空题答案

    目录 第一章一 选择题二 填空题 第二章一 选择题二 填空题 第三章一 选择题二 填空题 第四章一 选择题二 填空题 第五章一 选择题二 填空题 第八章一 选择题二 填空题 第一章 一 选择题 Python语言属于 C A 机器语言 B 汇
  • TensorFlow学习(二):变量常量类型

    更新时间 xff1a 2017 2 27 tensorflow 1 0出来了 xff0c API和以前有了一些不一样 xff0c 所以这里把把之前的代码迁移到新的上面去 更新时间 xff1a 2017 5 4 对于一些性质有了新的认识 补充
  • CAN总线的数据校验

    题目来源 有很多网友在QQ上问关于CAN总线上数据需不需要加校验 xff0c 换句话说 xff0c CAN总线支不支持校验 xff0c 我们需要在我们的数据场 xff08 数据域 xff09 加上校验码吗 xff1f 答案是否定的 CAN总
  • TensorFlow中报错 module ‘tensorflow_core._api.v2.train‘ has no attribute ‘GradientDescentOptimize

    原来函数是这样写的 xff1a optimizer 61 tf train GradientDescentOptimizer 报错 xff1a AttributeError module 39 tensorflow core api v2
  • 有趣的黑客网站 | 伪装成黑客高手,像电影黑客一样打字如飞

    当黑客 xff0c 门槛太高 xff1b 装黑客 xff0c 那就太容易了 今天刷知乎的时候无意中看到一个非常神奇的网站 xff0c 能让你瞬间变身成电影中的黑客 xff0c 操作出一系列看起来非常牛逼且装逼的功能 你只管噼里啪啦打字 xf
  • win10共享打印机(连接共享打印机的两种方法,IP地址变化的连接方法)

    一 首先电脑连接打印机 xff0c 把所连接的打印机设置为共享 xff0c 如下图所示 xff1a 先打开电脑设置 xff0c 然后点击设备 打印机和扫描仪 xff0c 打开如下界面 点击管理 打印机属性 xff0c 会出现如下界面 点击共
  • (Python)Pandas reset_index()用法总结

    Pandas是一个数据处理的库 xff0c 今天我们来学习reset index 这个函数的用法 pandas DataFrame reset index 函数作用 xff1a 重置索引或其level 重置数据帧的索引 xff0c 并使用默
  • 用Python批量修改图片名称(后缀)

    当我们需要修改批量即几百幅图片的名称或后缀时 xff0c 如果一个一个图片名称去重命名或是修改的话工作量就会很大 作为一名程序员 xff0c 当然是要通过代码去解决这些繁琐的事情 下面是用python代码来实现批量修改图片名称的代码 xff
  • git基本操作介绍

    简介 本文会简单介绍git的基本操作 这篇文章适合对git的安装 使用 运行环境 工作原理有一定了解的人员阅读 xff1b 对于初学者 xff0c 可以先参考以下文章 xff1a 最新git安装教程 windows系统git安装教程 git
  • Anaconda创建跟别人环境配置一样的虚拟环境(coda env creat -f environment.yml)

    当我们跑别人在github上的代码时 xff0c 往往需要配置跟作者一样的环境 当作者导出自己的环境配置时 xff0c 一般都是 yml文件 xff0c 这时候需要输入命令行来实现配置一模一样的环境 导出的yml文件一般配置如下 xff1a
  • 计算机视觉代码学习

    前言 自从2012年Hinton提出Alexnet以来 xff0c 深度学习 计算机视觉 xff08 CV xff09 就成为一个非常热门的赛道 从学术界到工业界 xff0c 纷纷掀起一股人工智能的浪潮 特别是学术界 xff0c 计算机视觉
  • 如何准备大学生电子设计竞赛

    大学生电子设计竞赛难度中上 xff0c 一般有好几个类型题目可以选择 xff0c 参赛者可以根据自己团队的能力 优势去选择合适自己的题目 xff0c 灵活自主空间较大 参赛的同学们可以在暑假好好学习相关内容 xff0c 把往年的题目拿来练练

随机推荐

  • 聊聊ChatGPT

    ChatGPT 这几周科技圈最火的当属ChatGPT xff0c 自媒体中十篇有九篇都是关于ChatGPT的 ChatGPT上可知天文 xff0c 下可知地理 xff0c 还可写论文 搞代 写小说 xff0c 可谓 全能型选手 自从去年11
  • 修改简历有用吗

    看情况 xff0c 一般都是很有用哒 xff01 简历修改会突出你的重点和优点 xff0c 优化你的简历内容 xff0c 让面试官一眼看到简历就被吸引了 xff01 如以上图片所示
  • 运行Python时出现SyntaxError: EOL while scanning string literal解决方法

    当运行Python时 xff0c 出行SyntaxError EOL while scanning string literal 一般是语法出现错误 xff0c 看一下是不是哪里忘记添加符号或是分号 xff1a 这些没打
  • 数据结构选择练习题(有解析)

    前言 已经到期末了 xff0c 昨天进行了一次马原考试 xff0c 那时候挺紧张的 xff0c 那时候虽然写完了试卷 xff0c 但是有4道题是乱写的 xff0c 因为我刚好没有背 xff0c 希望不会挂科吧 然后今天呢 xff0c 就开始
  • 论文阅读_异常检测综述

    英文题目 xff1a Anomaly Detection A Survey 中文题目 xff1a 异常检测综述 论文地址 xff1a https readpaper com paper 2122646361 领域 xff1a 异常检测 发表
  • 解决Mybatis-Plus分页插件无效

    1 导入依赖 span class token tag span class token tag span class token punctuation lt span dependencies span span class token
  • 一、FreeRTOS任务调度相关函数详解

    文章目录 1 FreeRTOS任务调度及相关函数分析1 1 任务创建过程分析1 1 1 任务创建函数分析1 1 2 任务初始化函数分析1 1 3 任务堆栈初始化分析1 1 4 添加任务到就绪列表 1 2 任务删除过程分析1 3 任务挂起过程
  • linux的exit和_exit

    进程退出 退出一个进程有多种方式 xff1a 正常退出 xff1a 在main函数里return 在进程里面调用exit exit 在进程的最后一个子线程调用pthread exit 异常退出 xff1a 被信号 xff08 9 15 xf
  • 三、任务切换之PendSV异常

    文章目录 PendSV异常1 没有PendSV异常的任务切换2 有PendSV异常的任务切换2 1 系统调用引起的任务切换2 2 systick中断引起任务切换2 3 PendSV异常处理函数2 4 寻找下一个要运行的任务2 5 时间片调度
  • Cortex-M系列中断和异常(一)

    文章目录 1 中断与异常1 1 异常的类型1 2 异常及中断的管理1 2 1 中断的一般使用方法 1 3 优先级的定义1 4 向量表和向量表的重定义1 4 1 向量表重定向的应用场景 1 5 中断输入和挂起行为1 5 1 中断请求的类型 1
  • Cortex-M系列中断和异常(三)

    文章目录 Cortex M系列中断和异常1 1 SCB中的寄存器1 1 1 中断控制和状态寄存器 xff08 SCB gt ICSR xff09 1 1 2 向量表偏移寄存器 xff08 SCB gt VTOR xff09 1 1 3 应用
  • Cortex-M系列中断和异常(四)

    文章目录 1 中断及异常的注意事项1 1 中断及异常的优先级配置1 2 中断与栈空间的关系1 3 向量表重定向情况1 4 软件中断1 5 ARM架构及中断 2 函数调用与异常处理的过程2 1 函数调用过程2 2 异常处理过程2 2 1 栈帧
  • Cortex-M芯片低功耗开发

    文章目录 芯片的低功耗1 1 低功耗的测量数据1 2 低功耗的系统特性1 3 低功耗的系统需求1 3 1 Cortex M3和Cortex M4处理器的低功耗特点 1 4 低功耗系统特性1 4 1 休眠模式1 4 2 系统控制寄存器 xff
  • Keil 启动文件详解

    文章目录 1 启动文件详解1 1 启动文件的主要任务1 2 启动文件中的汇编指令1 3 启动代码讲解1 3 1 栈的初始化1 3 2 堆的初始化1 3 3 向量表初始化1 3 4 复位程序1 3 5 中断服务程序1 3 6 用户堆栈初始化
  • TiveC微控制器基础练习1.1源码

    基础练习1 1 软件延时实现LED闪烁 硬件描述 LED2 蓝色 PF0 LED3 绿色 PA4 LED4 红色 PD6 使用这个引脚 注意事项 引脚PF0和PD7比较特殊 默认是保护的 要重新编程操作的话 需要先解锁 小技巧 通过SysC
  • git-lfs filter-process: git-lfs: command not found

    最初是认为网络不稳定 xff0c 或者git版本过低 开始自己的git版本是1 20 xff0c 后续升级为1 32仍旧存在这个问题 之后安装了git lfs xff0c 问题解决 不知道为什么其他同事没有出现该问题 brew instal
  • gazebo和rviz有具体的区别吗?哪个更好用?

    文章来源 xff1a 企鹅号 古月居 https www zhihu com question 268658280 answer 340190866 简单来讲 xff0c 两者的主要功能不同 xff0c 没办法比较哪个更好用 xff0c 如
  • Ubuntu下好用的录屏和视频格式转换工具

    xff08 1 xff09 Ubuntu录屏工具 kazam 安装 sudo apt get install kazam 安装完之后 xff0c 命令行中输入 xff1a kazam 就可以启动工具了 xff0c 可以看到工具界面如下 xf
  • linux的fork和vfork

    fork和vfork 区别 fork函数和vfork函数都可以用来创建一个子进程 他们有什么区别呢 xff1f 首先是fork xff1a 内核会给子进程分配虚拟内存空间和id xff0c 但不会分配物理内存子进程一开始是共享父进程的物理空
  • 经典卷积神经网络(一):LeNet-5和AlexNet

    本节介绍几种广泛使用的典型深层卷积神经网络 LeNet 5 LeNet 5 LeCun et al 1998 虽然提出的时间比较早 xff0c 但是是一个非常成功 的神经网络模型 基于LeNet 5的手写数字识别系统在90年代被美国很多银行