【卷积神经网络】经典网络之 LeNet-5, AlexNet 与 VGG-16

news2025/4/7 17:57:08

随着计算机硬件的升级与性能的提高,运算量已不再是阻碍深度学习发展的难题。卷积神经网络(Convolution Neural Network,CNN)是深度学习中一项代表性的工作,其雏形是 1998 年 LeCun 提出的 LeNet-5 模型。如今,卷积神经网络已被广泛应用于计算机视觉领域。本文主要介绍卷积神经网络中的经典网络,包括 LeNet-5, AlexNet 和 VGG-16.

目录

1 LeNet-5

2 AlexNet

3 VGG-16


1 LeNet-5

        LeNet-5 是经典卷积神经网络之一,1998 年由 Yann LeCun 等人在论文 《Gradient-Based Learning Applied to Document Recognition》中提出。LeNet-5 网络使用了卷积层、池化层和全连接层,实现可以应用于手写体识别的卷积神经网络。

论文链接如下:

《Gradient-Based Learning Applied to Document Recognition》

        LeNet-5 包含 2 个卷积层和 3 个全连接层,包含学习参数的网络层有 5 层,这也是 LeNet-5 名字中 5 的由来。LeNet-5 的输入图像大小是 32 x 32,颜色通道数为 1,这表明 LeNet-5 仅支持输入黑白图像。 

卷积 / 池化操作图像大小 / 神经元个数待训练的参数个数
Input32 × 32 × 1/
Conv15 × 5, s = 128 × 28 × 6150
avg pool12 × 2, s = 214 × 14 × 6/
Conv25 × 5, s = 110 × 10 × 162,400
avg pool22 × 2, s = 25 × 5 × 16/
FC112048,000
FC28410,080
FC3 (Output)10840

        LeNet-5 网络拥有约 6.1 万个待训练的参数,与如今常见的卷积神经网络不同, LeNet-5 激活层使用了 Sigmoid 函数,池化层采用平均池化,另外最后一层的输出使用 RBF 函数处理(而现在常用的处理方法是 Softmax 函数)。

2 AlexNet

        与 LeNet-5 类似,AlexNet 是另一个用于图像识别的经典神经网络。AlexNet 的名字来源于其第一作者 Alex Krizhevsky,于 2012 年 ImageNet 赛事夺冠之后为人们所熟知。AlexNet 沿用了 LeNet-5 的思路,把卷积,池化操作应用于更深层的神经网络中。

论文链接如下:

《ImageNet Classification with Deep Convolutional Neural Networks》

卷积 / 池化操作图像大小 / 神经元个数待训练的参数个数
Input224  × 224  × 3/
Conv111 × 11, s = 455 × 55 × 9634,848
max pool13 × 3, s = 227 × 27 × 96/
Conv25 × 5, p = 1, s = 127 × 27 × 256614,400
max pool23 × 3, s = 213 × 13 × 256/
Conv33 × 3, p = 1, s = 113 × 13 × 384884,736
Conv43 × 3, p = 1, s = 113 × 13 × 3841,327,104
Conv53 × 3, p = 1, s = 113 × 13 × 256884,736
max pool33 × 3, s = 26 × 6 × 256/
FC14,09637,748,736
FC24,09616,777,216
FC3 (Output)1,0004,096,000

        AlexNet 网络拥有约 6200 万个参数,AlexNet 的创新点包括:
(1)使用 ReLU 作为卷积层的激活函数,避免了 Sigmoid 函数在网络层数增加时梯度消失或爆炸问题;
(2)全连接层使用 DropOut 随机失活方式,屏蔽一部分神经元的输出值,避免模型的过拟合;
(3)使用重叠的最大池化。AlexNet 使用最大池化替代此前人们常用的平均池化,避免了平均池化的模糊问题,并且池化的步长比池化核小,使池化输出有一定的重叠,丰富输出特征。

3 VGG-16

        VGG 网络是 Oxford 的 Visual Geometry Group 团队提出,在 2014 年的 ImageNet 赛事中取得亚军。VGG 在 AlexNet 的基础上进一步增加了神经网络的深度,表明当网络层数增加到 16~19 个时可以实现显著改进。

论文链接如下:

《Very Deep Convolutional Networks for Large-Scale Image Recognition》

 

        VGG 网络有两个常见的版本,VGG-16 和 VGG-19,分别对应上图中的模型 D 和模型 E,数字 16 和 19 表示带有待训练权重的网络层数。VGG-16 有 13 个卷积层和 3 个全连接层,VGG-19 比 VGG-16 多 3 个卷积层,有 16 个卷积层和 3 个全连接层。

卷积 / 池化操作图像大小 / 神经元个数待训练的参数个数
Input224 × 224 × 3/
Conv13 × 3, p = 1, s = 1224 × 224 × 641,728
Conv23 × 3, p = 1, s = 1224 × 224  × 6436,864
max pool12 × 2, s = 2112 × 112 × 64/
Conv33 × 3, p = 1, s = 1112 × 112 × 12873,728
Conv43 × 3, p = 1, s = 1112 × 112 × 128147,456
max pool22 × 2, s = 256 × 56 × 128/
Conv53 × 3, p = 1, s = 156 × 56 × 256294,912
Conv63 × 3, p = 1, s = 156 × 56 × 256589,824
Conv73 × 3, p = 1, s = 156 × 56 × 256589,824
max pool32 × 2, s = 228 × 28 × 256/
Conv83 × 3, p = 1, s = 128 × 28 × 5121,179,648
Conv93 × 3, p = 1, s = 128 × 28 × 5122,359,296
Conv103 × 3, p = 1, s = 128 × 28 × 5122,359,296
max pool42 × 2, s = 214 × 14 × 512/
Conv113 × 3, p = 1, s = 114 × 14 × 5122,359,296
Conv123 × 3, p = 1, s = 114 × 14 × 5122,359,296
Conv133 × 3, p = 1, s = 114 × 14 × 5122,359,296
max pool52 × 2, s = 27 × 7 × 512/
FC14,096102,760,448
FC24,09616,777,216
FC3 (Output)1,0004,096,000

        VGG-16 网络拥有约 1.38 亿个参数。它的主要创新之处在于,VGG 使用了多个连续的卷积层,以及尺寸更小的卷积核(3 × 3 大小),替代 AlexNet 中大尺寸的卷积核(11 × 11,5 × 5 等大小),以更好地提取图像的深层特征。

        另外,随着神经网络层数的增加,输出图像的宽高减半,卷积层的输出特征数从最初的 64,增加到 128,256 和 512。

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

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

相关文章

Java后端开发面试题——微服务篇总结

Spring Cloud 5大组件有哪些? 随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 注册中心/配置中心 Nacos 负载均衡 Ribbon 服务调用 Feign 服务保护 sentinel 服务网关 Gateway Ribbon负载均衡策略有哪些 ? RoundRobinRule&…

Selenium 捕获 console logs (Java)

目录 启用日志记录功能 有时候在进行自动化测试的时候控制台输出会帮忙定位问题,所以捕获控制台输出就显得很重要了~ 以下以selenium 4为例: 我们可以使用driver.manage().logs().get(LogType.BROWSER)代码在Selenium中检索日志,该代码将返回…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 5 Signal/States标签页介绍

这一篇我们说下signals和State这两个怎么搞做映射,那首先我们要知道什么是Signal和state,我们看下模型, 在原来的模型里我增加了标红的圆圈处delay模块,这个delay模块就是一个state模块,表示离散的一个状态,这个是个模型的基本概念,后续我有个专栏交接simulink建模,那…

【JVM】运行时数据区域

文章目录 说明程序计数器虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 说明 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直…

CSS scoped 属性的原理

scoped 一、scoped 是什么?二、实现原理 一、scoped 是什么? 在 Vue 组件中,为了使样式私有化(模块化),不对全局造成污染,可以在 style 标签上添加 scoped 属性以表示它的只属于当下的模块&am…

(学习笔记-调度算法)进程调度算法

进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。 当 CPU 空闲时,操作系统就选择内存中标的某个 [就绪状态] 的进程,将其分配给 CPU。 什么时候会发生CPU调度呢?通常有以下情况: 当进程从运行状态转换到等待…

五种 CSS 位置类型以实现更好的布局

在 Web 开发中,CSS(层叠样式表)用于设置网站样式的设置。为了控制网页上元素的布局,使用CSS的position属性。因此,在今天这篇文章中,我们将了解 CSS 位置及其类型。 CSS 位置属性用于控制网页上元素的位置…

【vue3+ts项目】配置eslint校验代码工具,eslint+prettier+stylelint

1、运行好后自动打开浏览器 package.json中 vite后面加上 --open 2、安装eslint npm i eslint -D3、运行 eslint --init 之后,回答一些问题, 自动创建 .eslintrc 配置文件。 npx eslint --init回答问题如下: 使用eslint仅检查语法&…

linux中定时器的使用

在Linux中&#xff0c;可以使用timer_create、timer_settime和timer_delete等函数来创建和管理定时器。下面是一个简单的示例程序&#xff0c;演示如何在Linux中使用定时器&#xff1a; #include <stdio.h> #include <stdlib.h> #include <signal.h> #inclu…

Freertos第一课

freertos与裸机的区别 裸机的程序&#xff1a;一般是执行完一个任务后&#xff0c;再执行下一个任务。 freertos的程序&#xff1a;当存在不同优先级时&#xff0c;会把优先级比较高的任务执行完&#xff0c;再执行优先级较低的任务&#xff0c;当存在任务的优先级一样时&…

初步认识OSPF的大致内容(第三课)

1 路由的分类 直连路由&#xff08;Directly Connected Route&#xff09;是指网络拓扑结构中相邻两个网络设备直接相连的路由&#xff0c;也称为直接路由。如果两个设备属于同一IP网络地址&#xff0c;那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择…

根据源码,模拟实现 RabbitMQ - 虚拟主机 + Consume设计 (7)

目录 一、虚拟主机 Consume设计 1.1、承接问题 1.2、具体实现 1.2.1、消费者订阅消息实现思路 1.2.2、消费者描述自己执行任务方式实现思路 1.2.3、消息推送给消费者实现思路 1.2.4、消息确认 一、虚拟主机 Consume设计 1.1、承接问题 前面已经实现了虚拟主机大部分功…

Vim学习(四)——命令使用技巧

命令模式 打开文本默认模式&#xff0c;按**【ESC】**重新进入 【/关键字】&#xff1a;搜索匹配关键字 G&#xff1a;最后一行 gg&#xff1a;第一行 hjkl:左下右上 yy: 复制一行 dd&#xff1a;删除一行 p:粘贴 u: 撤销插入模式 按**【i / a / o】**键均可进入文本编辑模式…

2023年国赛 高教社杯数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

STM32f103c6t6/STM32f103c8t6寄存器开发

目录 资料 寻址区 2区 TIMx RTC WWDG IWDG SPI I2S USART I2C USB全速设备寄存器 bxCAN BKP PWR DAC ADC ​编辑 EXTI ​编辑 GPIO AFIO SDIO DMA CRC RCC FSMC USB_OTG ETH&#xff08;以太网&#xff09; 7区 配置流程 外部中断 硬件中断 例子 点灯 …

【Jenkins】rpm方式安装Jenkins(2.401,jdk版本17)

目录 【Jenkins】rpm方式安装Jenkins 1、主机初始化 2、软件要求 RPM包安装的内容 配置文件说明 3、web操作 【Jenkins】rpm方式安装Jenkins 1、主机初始化 [rootlocalhost ~]# hostname jenkins[rootlocalhost ~]# bash[rootjenkins ~]# systemctl stop firewalld[roo…

Ribbon:使用Ribbon实现负载均衡

Ribbon实现的是实线走的 建立三个数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.25-log : Database - db01 ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQ…

RabbitMQ---基本消息模型

1、 基本消息模型 官方介绍&#xff1a; RabbitMQ是一个消息代理&#xff1a;它接受和转发消息。 你可以把它想象成一个邮局&#xff1a;当你把邮件放在邮箱里时&#xff0c;你可以确定邮差先生最终会把邮件发送给你的收件人。 在这个比喻中&#xff0c;RabbitMQ是邮政信箱&a…

shell脚本——循环语句、sed、函数、数组、免交互expect

目录 循环语句 for while 与 until sed 基本用法 sed脚本格式 函数 注意事项 定义函数和调用函数 脚本中函数的位置 查看函数 删除函数 函数返回值 函数的传参操作 使用函数文件 递归函数 数组 声明数组 数组切片 免交互expect 定义 基本命令 循环语句 …

学习笔记|认识蜂鸣器|控制原理|电磁炉LED实战|逻辑运算|STC32G单片机视频开发教程(冲哥)|第八集(上):蜂鸣器应用

文章目录 1.认识蜂鸣器区别 2.控制原理实现蜂鸣器控制原理 3.蜂鸣器实战应用需求分析代码编写步骤一代码编写及分析test.h的固定模板Tips:提示&#xff1a;“test\test.c(14): error C16: unprintable character 0xA3 skippedTips&#xff1a;“test\test.c(14): warning C137:…