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

news/2024/12/2 16:48:36/
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.ppmy.cn/news/26218.html

相关文章

智慧工地安全着装识别检测算法 python

智慧工地安全着装识别检测算法通过pythonopencv网络模型AI视频分析技术,人员安全着装识别检测算法对现场物体的不安全状态以及人员的不安全行为(不按要求着装)进行自动实时分析。由于Python 较为简单,一般无法进行复杂的后端搭建&…

【Linux】进程状态

文章目录1. 阻塞1. 举例2. 为什么要阻塞?3.操作系统层面上如何理解进程等待某种资源就绪呢?资源进程4. 总结2.挂起3.Linux进程状态1. R状态进程只要是R状态,就一定是在CPU运行吗?证明当前进程运行状态生成程序查看进程2. S休眠状态…

常用聚类算法分析

1. 什么是聚类 1.1. 聚类的定义 聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起…

【日刻一诗】

日刻一诗 1)LeetCode总结(线性表)_链表类 2)LeetCode总结(线性表)_栈队列类 3)LeetCode总结(线性表)_滑动窗口 4)LeetCode总结(线性表&#x…

华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 热点网络统计 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 查找单入口空闲区域 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 好朋友 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 找出同班小朋友 | 备考思路,刷题要点…

前端工程师leetcode算法面试必备-简单的二叉树

一、前言 本难度的题目主要考察二叉树的基本概念和操作。 1、基本概念 树是计算机科学中经常用到的一种非线性数据结构,以分层的形式存储数据。二叉树是一种特殊的树结构,每个节点最多有两个子树,通常子树被称作“左子树”和“右子树”。 …

《MySQL学习》 MySQL优化器选择如何选择索引

一.优化器的选择逻辑 建表语句 CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),KEY a (a),KEY b (b) ) ENGINEInnoDB;往表中插入10W条数据 delimiter ;; create procedure idata() begindeclare i in…

JUC并发编程 Ⅳ -- 共享模型之无锁

文章目录CAS 与 volatile问题引入代码分析volatile为什么无锁效率高CAS特点原子整数原子引用ABA 问题及解决原子数组原子(字段)更新器原子累加器UnsafeUnsafe CAS 操作管程即 monitor 是阻塞式的悲观锁实现并发控制,本文我们将通过非阻塞式的乐观锁的来实现并发控制…