当前位置:网站首页 > R语言数据分析 > 正文

resnet50和resnet18(resnet50和resnet18速度)



文章目录

  • 1.Keras封装实现 LeNet网络-5(1998)
  • 2.Keras封装实现 Alex-Net网络-8(2012)
  • 3.Keras封装实现 ZF-Net网络-8(2013)
  • 4.Keras封装实现 VGG-16网络 (2014)
  • VGG-16网络
  • VGG-19网络 (2014)
  • 5.Keras封装实现 Google-Net网络-22(2014)
  • Inception
  • GoogleNet
  • 6.Keras封装实现 ResNet-50网络-34/50/101/152(2015)
  • 7.Keras封装实现 DenseNet-101网络(2016)
  • DenseNet:
  • DenseNet-B:
  • DenseNet-BC:
  • 总结

以下导入前提可参考:

LeNet-5模型诞生于1998年,是Yann LeCun教授在论文Gradient-based learning applied to document recognition中提出的,它是第一个成功应用于数字识别问题的卷积神经网络,麻雀虽小五脏俱全,它包含了深度学习的基本模块:卷积层,池化层,全连接层。是其他深度学习模型的基础。

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积

C1是卷积层,卷积层的过滤器尺寸大小为55,深度为6,不使用全0补充,步长为1,所以这一层的输出尺寸为32-5+1=28,深度为6。
S2层是一个池化层,这一层的输入是C1层的输出,是一个28286的结点矩阵,过滤器大小为22,步长为2,所以本层的输出为14x14x6
C3层也是一个卷积层,本层的输入矩阵为14x14x6,过滤器大小为5x5,深度为16,不使用全0补充,步长为1,故输出为10x10
16
S4层是一个池化层 ,输入矩阵大小为10x10x16,过滤器大小为2x2,步长为2,故输出矩阵大小为5x5*16
C5层是一个卷积层,过滤器大小为5x5,和全连接层没有区别,这里可看做全连接层。输入为5x5x16矩阵,将其拉直为一个长度为5x5x16的向量,即将一个三维矩阵拉直到一维向量空间中,输出结点为120。
F6层是全连接层 ,输入结点为120个,输出结点为84个
输出层也是全连接层,输入结点为84个,输出节点个数为10。

2012年,AlexNet在ImageNet图像分类任务竞赛中获得冠军,一鸣惊人,从此开创了深度神经网络空前的高潮。论文ImageNet Classification with Deep Convolutional Neural Networks

AlexNet优势在于

1.使用了非线性激活函数ReLU(如果不是很了解激活函数,可以参考我的另一篇博客 激活函数Activation Function,并验证其效果在较深的网络超过Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。

2.提出了LRN(Local Response Normalization),局部响应归一化,LRN一般用在激活和池化函数后,对局部神经元的活动创建竞争机制,使其中响应比较大对值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

3.使用CUDA加速深度神经卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。

4.在CNN中使用重叠的最大池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

5.使用数据增广(data agumentation)和Dropout防止过拟合。【数据增广】随机地从的原始图像中截取大小的区域,相当于增加了2048倍的数据量;【Dropout】AlexNet在后面的三个全连接层中使用Dropout,随机忽略一部分神经元,以避免模型过拟合。

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_02

  1. 第一层输入图像规格为227x227x3,过滤器(卷积核)大小为11x11,深度为96,步长为4,则卷积后的输出为55x55x96,分成两组,进行池化运算处理,过滤器大小为3x3,步长为2,池化后的每组输出为27x27x48
  2. 第二层的输入为27x27x96,分成两组,为27x27x48,填充为2,过滤器大小为5x5,深度为128,步长为1,则每组卷积后的输出为27x27x128;然后进行池化运算,过滤器大小为3x3,步长为2,则池化后的每组输出为13x13x128
  3. 第三层两组中每组的输入为13x13x128,填充为1,过滤器尺寸为3x3,深度为192,步长为1,卷积后输出为13x13x192。在C3这里做了通道的合并,也就是一种串联操作,所以一个卷积核卷积的不再是单张显卡上的图像,而是两张显卡的图像串在一起之后的图像,所以卷积核的厚度为256,这也是为什么图上会画两个3x3x128的卷积核。
  4. 第四层两组中每组的输入为13x13x192,填充为1,过滤器尺寸为33,深度为192,步长为1,卷积后输出为13x13x192
  5. 第五层输入为上层的两组13x13x192,填充为1,过滤器大小为3x3,深度为128,步长为1,卷积后的输出为13x13x128;然后进行池化处理,过滤器大小为3x3,步长为2,则池化后的每组输出为6x6x128
  6. 第六层为全连接层,上一层总共的输出为6x6x256,所以这一层的输入为6x6x256,采用6x6x256尺寸的过滤器对输入数据进行卷积运算,每个过滤器对输入数据进行卷积运算生成一个结果,通过一个神经元输出,设置4096个过滤器,所以输出结果为4096
  7. 第六层的4096个数据与第七层的4096个神经元进行全连接
  8. 第八层的输入为4096,输出为1000(类别数目)
    下面的代码运行在一块GPU上

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_03

Unpooling:在卷积神经网络中,最大池化是不可逆的,作者采用近似的实现,使用一组转换变量switch 记录每个池化区域最大值的位置。在反池化的时候,将最大值返回到其所应该在的位置,其他位置用0补充。

Rectification:反卷积的时候也同样利用ReLU激活函数

Filtering:解卷积网络中利用卷积网络中相同的filter的转置应用到Rectified Unpooled Maps。也就是对filter进行水平方向和垂直方向的翻转。

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_04

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_05

cpu上resnet快还是yolov5快 resnet18和resnet50区别_池化_06

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_07

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_08

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_09

提高深度神经网络性能最直接的办法是增加它们尺寸,不仅仅包括深度(网络层数),还包括它的宽度,即每一层的单元个数。但是这种简单直接的解决方法存在两个重大的缺点,更大的网络意味着更多的参数,使得网络更加容易过拟合,而且还会导致计算资源的增大。经过多方面的思量,考虑到将稀疏矩阵聚类成相对稠密子空间来倾向于对稀疏矩阵的优化,因而提出inception结构。Google Inception Net是一个大家族,包括:

Inception v1结构(GoogLeNet): 论文为Going deeper with ConvolutionsGoogleNet为ILSVRC 2014比赛中的第一名,提出了Inception Module结构

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_10

Inception V2结构: 论文Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift Inception V2结构用两个33的卷积替代55的大卷机,提出了Batch Normalization(简称BN)正则化方法

Inception V2 其实在网络上没有什么改动,只是在输入的时候增加了batch_normal,所以他的论文名字也是叫batch_normal,加了这个以后训练起来收敛更快,学习起来自然更高效,可以减少dropout的使用。

其实也是个很简单的正则化处理,这样保证出现过的最大值为1,最小值为0,所有输出保证在0~1之间。

把55的卷积改成了两个33的卷积串联,它说一个55的卷积看起来像是一个55的全连接,所以干脆用两个3*3的卷积,第一层是卷积,第二层相当于全连接,这样可以增加网络的深度,并且减少了很多参数。

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_11

cpu上resnet快还是yolov5快 resnet18和resnet50区别_池化_12

Inception v3结构: 论文Rethinking the Inception Architecture for Computer Vision Inception V3 网络主要有两方面的改造:一是引入Factorization into small convolutions的思想,将较大的二维卷积拆分成两个较小的一维卷积,二是优化了Inception Module结构。

inception V3把googlenet里一些77的卷积变成了17和71的两层串联,33的也一样,变成了13和31,这样加速了计算,还增加了网络的非线性,减小过拟合的概率。另外,网络的输入从224改成了299.

Inception v4结构: 论文Inception-ResNet and the Impact of Residual Connections on learning Inception v4结构主要结合了微软的ResNet。

inception v4实际上是把原来的inception加上了resnet的方法,从一个节点能够跳过一些节点直接连入之后的一些节点,并且残差也跟着过去一个。
另外就是V4把一个先11再33那步换成了先33再11.
论文说引入resnet不是用来提高深度,进而提高准确度的,只是用来提高速度的。

Inception架构的主要思想是考虑怎样用容易获得密集组件近似覆盖卷积视觉网络的最优稀疏结构。Inception模型的基本结构如下,在多个不同尺寸的卷积核上同时进行卷积运算后再进行聚合,并使用1x1的卷积进行降维减少计算成本。 Inception Module使用了3中不同尺寸的卷积和1个最大池化,增加了网络对不同尺度的适应性。传统的卷集层的输入数据只和一种尺寸的卷积核进行运算,输出固定维度的特征数据(例如128),而在Inception模块中,输入和多个尺寸的卷积核(1x1,3x3和5x5)分别进行卷积运算,然后再聚合,输出的128特征中包括1x1卷积核的a1个输出特征,3x3卷积核的a2 个输出特征和5x5卷积核的a3个输出特征, (a1+a2+a3=128) 。Inception结构将相关性强的特征汇聚在一起,同样是128个输出特征,Inception得到的特征“冗余”的信息比较少,所以收敛速度就会更快。

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_13

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_14

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_15

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_16

Inception v4结构 将Inception Module与Residual connection相结合,加速训练速度并提升性能。下面节介绍的是ResNet网络。

论文Deep Residual Learning for Image Recognition
随着网络的加深,出现了训练集准确率下降,错误率上升的现象,就是所谓的“退化”问题。按理说更深的模型不应当比它浅的模型产生更高的错误率,这不是由于过拟合产生的,而是由于模型复杂时,SGD的优化变得更加困难,导致模型达不到好的学习效果。ResNet就是针对这个问题应运而生的。
ResNet,深度残差网络,基本思想是引入了能够跳过一层或多层的“shortcut connection”,如下图所示,即图中的“弯弯的弧线”。ResNet中提出了两种mapping:一种是identity mapping,另一种是residual mapping。最后的输出为y=F(x)+x,顾名思义,identity mapping指的是自身,也就是x,而residual mapping,残差,指的就是y-x=F(x)。这个简单的加法并不会给网络增加额外的参数和计算量,同时却能够大大增加模型的训练速度,提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_17

cpu上resnet快还是yolov5快 resnet18和resnet50区别_池化_18

cpu上resnet快还是yolov5快 resnet18和resnet50区别_池化_19

cpu上resnet快还是yolov5快 resnet18和resnet50区别_卷积_20

cpu上resnet快还是yolov5快 resnet18和resnet50区别_ide_21

文章同时提出了DenseNet,DenseNet-B,DenseNet-BC三种结构,具体区别如下:

Dense Block模块:BN+Relu+Conv(3*3)+dropout

transition layer模块:BN+Relu+Conv(11)(filternum:m)+dropout+Pooling(22)

Dense Block模块:BN+Relu+Conv(11)(filternum:4K)+dropout+BN+Relu+Conv(33)+dropout

transition layer模块:BN+Relu+Conv(11)(filternum:m)+dropout+Pooling(22)

Dense Block模块:BN+Relu+Conv(11)(filternum:4K)+dropout+BN+Relu+Conv(33)+dropout

transition layer模块:BN+Relu+Conv(11)(filternum:θm,其中0<θ<1,文章取θ=0.5) +dropout +Pooling(22)

其中,DenseNet-B在原始DenseNet的基础上,加入Bottleneck layers, 主要是在Dense Block模块中加入了1*1卷积,使得将每一个layer输入的feature map都降为到4k的维度,大大的减少了计算量。

解决在Dense Block模块中每一层layer输入的feature maps随着层数增加而增大,则需要加入Bottleneck 模块,降维feature maps到4k维

DenseNet-BC在DenseNet-B的基础上,在transitionlayer模块中加入了压缩率θ参数,论文中将θ设置为0.5,这样通过1*1卷积,将上一个Dense Block模块的输出feature map维度减少一半。

LeNet是第一个成功应用于手写字体识别的卷积神经网络 ALexNet展示了卷积神经网络的强大性能,开创了卷积神经网络空前的高潮
ZFNet通过可视化展示了卷积神经网络各层的功能和作用
VGG采用堆积的小卷积核替代采用大的卷积核,堆叠的小卷积核的卷积层等同于单个的大卷积核的卷积层,不仅能够增加决策函数的判别性还能减少参数量
GoogleNet增加了卷积神经网络的宽度,在多个不同尺寸的卷积核上进行卷积后再聚合,并使用1*1卷积降维减少参数量
ResNet解决了网络模型的退化问题,允许神经网络更深

到此这篇resnet50和resnet18(resnet50和resnet18速度)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • redhat操作系统(redhat操作系统安装步骤)2025-02-22 13:54:04
  • expatrio客服(expatrio客服邮箱)2025-02-22 13:54:04
  • 华为ensp模拟器怎么使用(ensp模拟器hybrid)2025-02-22 13:54:04
  • lvcreate命令参数(lvresize命令)2025-02-22 13:54:04
  • ifstream获取文件长度(ifstream 读文件)2025-02-22 13:54:04
  • swagger2关闭配置(swagger怎么配置)2025-02-22 13:54:04
  • Oracle查看锁表记录(oracle如何看锁表)2025-02-22 13:54:04
  • uchar是什么意思(uchar j什么意思)2025-02-22 13:54:04
  • srore的名词(irregular名词)2025-02-22 13:54:04
  • pointnet论文解读(pointpillars论文)2025-02-22 13:54:04
  • 全屏图片