一文总结经典卷积神经网络CNN模型
一般的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卷积跨通道融合特征。
小总结
很好的模型总结图!
一文总结经典卷积神经网络CNN模型相关推荐
- 【经典卷积神经网络CNN模型 之 VGG16Net】模型实验,强烈建议使用GPU来跑,经试验,若使用CPU,普通PC理论上需要超过100小时
声明:仅学习使用~ 建议回顾基础知识: 包含但不限于 [模型实验]几个 经典卷积神经网络CNN模型 回顾:分组卷积–AlexNet,使用3x3卷积核----VGG,使用多种卷积核结构----Googl ...
- 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...
- 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。
在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...
- 【综述】一文读懂卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习 ...
- 一文看懂卷积神经网络CNN的核心
在之前,我总结了关于计算机神经网络与梯度下降的核心,详见下文链接 : 一文看懂计算机神经网络与梯度下降 本文主要会对图像相关的机器学习中最为重要的网络,卷积神经网络作个人的理解分析. 1. 为什么要使 ...
- 卷积神经网络(CNN)模型结构
在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...
- 技术向:一文读懂卷积神经网络CNN
自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet.cuda-convnet2. ...
- 基于卷积神经网络(CNN)模型的垃圾分类设计与实现
本篇博客主要内容如下: 目录 项目背景 数据集介绍 模型构建与训练 结果分析 结果对比分析 项目背景 如何通过垃圾分类管理,最大限度地实现垃圾资源利用,减少垃圾处置量,改善生存环境质量,是当前世界各国 ...
- 经典卷积神经网络(CNN)图像分类算法详解
本文原创,转载请引用 https://blog.csdn.net/dan_teng/article/details/87192430 CNN图像分类网络 一点废话:CNN网络主要特点是使用卷积层,这其 ...
最新文章
- 从今天开始,你就可以通过云“体验”量子计算了!
- 2020-11-28 Latex相关小工具
- 7.使用reserve避免不必要的内存分配
- 【H.264/AVC视频编解码技术】第二章【H264码流分析】
- Android Handler的内存泄露场景分析
- 陌上花开(三维偏序)(cdq分治)
- 物联网IoT终端设备如何选择接入协议——(TCP、UDP、MQTT、CoAP、LwM2M哪个更适合?)
- 计算机搜索栏打字不显示,win7系统电脑使用搜狗输入法打字看不到选字框的解决方法...
- 机器学习小白入门--统计学知识 Z-Value for Proportions
- 股票自动买卖 java_股票如何实现程序化交易和自动交易?
- Android控件浮在最上层的方法
- ubuntu搭建dns服务器
- OL3-Cesium 二三维鼠标事件统一处理
- 为何世界足坛历史射手王是C罗?
- AMD处理器下虚拟机VMware15安装macOS 10.14
- 第19课:如何确认你的转型方向 · 下
- ios版基于微软azure的文字转语音工具
- QQ能上网,但是浏览器打不开网页,怎么办?
- 题目中的英语短语积累
- 蓝桥模拟赛 递增位数 JAVA
热门文章
- gitlab复制project新建项目
- Canvas drawImage在高清屏幕下变模糊,解决方案
- Linux文件解hgc,Linux从实模式到保护模式.pdf
- 君正 Halley6 开发板调试SPI LCD
- HIVE的搭建配置及关联MySQL
- 量子计算磁共振原型机被激光脉冲原型机淘汰
- 如何用虚拟光驱给服务器装系统,怎样用虚拟光驱安装系统
- 已解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“:
- 安徽科技学院 信网学院网络文化节 孙晓楠
- Android8.0 SystemUI 状态栏信号图标