脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - 卷积神经网络经典模型及其改进点学习汇总

卷积神经网络经典模型及其改进点学习汇总

2022-12-19 15:16Bubbliiiing Python

这篇文章主要为大家介绍了卷积神经网络经典模型及其改进点学习汇总,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

经典神经网络的改进点

名称 改进点
VGG16 1、使用非常多的3*3卷积串联,利用小卷积代替大卷积,该操作使得其拥有更少的参数量,同时会比单独一个卷积层拥有更多的非线性变换。2、探索了卷积神经网络的深度与其性能之间的关系,成功构建16层网络(还有VGG19的19层网络)。
ResNet50 1、使用残差网络,其可以解决由于网络深度加深而产生的学习效率变低与准确率无法有效提升的问题。2、采用bottleneck design结构,在3x3网络结构前利用1x1卷积降维,在3x3网络结构后,利用1x1卷积升维,相比直接使用3x3网络卷积效果更好,参数更少。
InceptionV3 1、Inception系列通用的改进点是使用不同大小的卷积核,使得存在不同大小的感受野,最后实现拼接达到不同尺度特征的融合。2、利用1x7的卷积和7x1的卷积代替7x7的卷积,这样可以只使用约(1x7 + 7x1) / (7x7) = 28.6%的计算开销;利用1x3的卷积和3x1的卷积代替3x3的卷积,这样可以只使用约(1x3 + 3x1) / (3x3) = 67%的计算开销。
Xception 1、开始采用残差网络,其可以解决由于网络深度加深而产生的学习效率变低与准确率无法有效提升的问题。2、采用SeparableConv2D层,利用深度可分离卷积减少参数量。
MobileNet 1、是一种轻量级的深层神经网络,为一定设备设计。 2、采用depthwise separable convolution结构,3x3卷积核厚度只有一层,然后在输入张量上一层一层地滑动,所以一个卷积核就对应了一个输出通道,当卷积完成后,在利用1x1的卷积调整厚度,实现参数减少。

 

经典神经网络的结构汇总

1、VGG16

卷积神经网络经典模型及其改进点学习汇总

1、一张原始图片被resize到(224,224,3)。

2、conv1两次[3,3]卷积网络,输出的特征层为64,输出为(224,224,64),再2X2最大池化,输出net为(112,112,64)。

3、conv2两次[3,3]卷积网络,输出的特征层为128,输出net为(112,112,128),再2X2最大池化,输出net为(56,56,128)。

4、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(56,56,256),再2X2最大池化,输出net为(28,28,256)。

5、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(28,28,512),再2X2最大池化,输出net为(14,14,512)。

6、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(14,14,512),再2X2最大池化,输出net为(7,7,512)。

7、利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,4096)。共进行两次。

8、利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,1000)。

最后输出的就是每个类的预测。

具体实现代码可以看我的博文神经网络学习VGG16模型的复现及其详解(包含如何预测)

2、ResNet50

ResNet50最大的特点是使用了残差网络。

残差网络的特点是将靠前若干层的某一层数据输出直接跳过多层引入到后面数据层的输入部分。

意味着后面的特征层的内容会有一部分由其前面的某一层线性贡献。

其结构如下:

卷积神经网络经典模型及其改进点学习汇总

ResNet50有两个基本的块,分别名为Conv Block和Identity Block,其中Conv Block输入和输出的维度是不一样的,所以不能连续串联,它的作用是改变网络的维度;

Identity Block输入维度和输出维度相同,可以串联,用于加深网络的。

Conv Block的结构如下:

卷积神经网络经典模型及其改进点学习汇总


Identity Block的结构如下:

卷积神经网络经典模型及其改进点学习汇总

这两个都是残差网络结构。

总的网络结构如下:

卷积神经网络经典模型及其改进点学习汇总

具体实现代码可以看我的博文神经网络学习——ResNet50模型的复现详解

3、InceptionV3

Inception系列的网络的特点是采用不同大小的卷积核,使得存在不同大小的感受野,最后实现拼接达到不同尺度特征的融合。

对于InceptionV3而言,其网络中存在着如下的结构。

这个结构使用不同大小的卷积核对输入进行卷积(这个结构主要在代码中的block1使用)。

卷积神经网络经典模型及其改进点学习汇总


还存在着这样的结构,利用1x7的卷积和7x1的卷积代替7x7的卷积,这样可以只使用约(1x7 + 7x1) / (7x7) = 28.6%的计算开销;

利用1x3的卷积和3x1的卷积代替3x3的卷积,这样可以只使用约(1x3 + 3x1) / (3x3) = 67%的计算开销。

下图利用1x7的卷积和7x1的卷积代替7x7的卷积(这个结构主要在代码中的block2使用)。

卷积神经网络经典模型及其改进点学习汇总


下图利用1x3的卷积和3x1的卷积代替3x3的卷积(这个结构主要在代码中的block3使用)。

卷积神经网络经典模型及其改进点学习汇总


具体实现代码可以看我的博文神经网络学习——InceptionV3模型的复现详解

4、Xception

Xception是谷歌公司继Inception后,提出的InceptionV3的一种改进模型,其改进的主要内容为采用depthwise separable convolution来替换原来Inception v3中的多尺寸卷积核特征响应操作。

在讲Xception模型之前,首先要讲一下什么是depthwise separable convolution(深度可分离卷积块)。

深度可分离卷积块由两个部分组成,分别是深度可分离卷积和1x1普通卷积,深度可分离卷积的卷积核大小一般是3x3的,便于理解的话我们可以把它当作是特征提取,1x1的普通卷积可以完成通道数的调整。

下图为深度可分离卷积块的结构示意图:

卷积神经网络经典模型及其改进点学习汇总


深度可分离卷积块的目的是使用更少的参数来代替普通的3x3卷积。

我们可以进行一下普通卷积和深度可分离卷积块的对比:

假设有一个33大小的卷积层,其输入通道为16、输出通道为32。具体为,32个33大小的卷积核会遍历16个通道中的每个数据,最后可得到所需的32个输出通道,所需参数为163233=4608个。

应用深度可分离卷积,用16个33大小的卷积核分别遍历16通道的数据,得到了16个特征图谱。在融合操作之前,接着用32个11大小的卷积核遍历这16个特征图谱,所需参数为1633+163211=656个。

可以看出来depthwise separable convolution可以减少模型的参数。

通俗地理解深度可分离卷积结构块,就是3x3的卷积核厚度只有一层,然后在输入张量上一层一层地滑动,每一次卷积完生成一个输出通道,当卷积完成后,再利用1x1的卷积调整厚度。

Xception使用的深度可分离卷积块SeparableConv2D也就是先深度可分离卷积再进行1x1卷积。

对于Xception模型而言,其一共可以分为3个flow,分别是Entry flow、Middle flow、Exit flow;

分为14个block,其中Entry flow中有4个、Middle flow中有8个、Exit flow中有2个。

具体结构如下:

卷积神经网络经典模型及其改进点学习汇总


其内部主要结构就是残差卷积网络搭配SeparableConv2D层实现一个个block,在Xception模型中,常见的两个block的结构如下。

这个主要在Entry flow和Exit flow中:

卷积神经网络经典模型及其改进点学习汇总


这个主要在Middle flow中:

卷积神经网络经典模型及其改进点学习汇总


具体实现代码可以看我的博文神经网络学习——Xception模型的复现详解

5、MobileNet

MobileNet模型是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络,其使用的核心思想便是depthwise separable convolution。

对于一个卷积点而言:

假设有一个33大小的卷积层,其输入通道为16、输出通道为32。

具体为,32个33大小的卷积核会遍历16个通道中的每个数据,最后可得到所需的32个输出通道,所需参数为163233=4608个。

应用深度可分离卷积,用16个33大小的卷积核分别遍历16通道的数据,得到了16个特征图谱。在融合操作之前,接着用32个11大小的卷积核遍历这16个特征图谱,所需参数为1633+163211=656个。

可以看出来depthwise separable convolution可以减少模型的参数。

如下这张图就是depthwise separable convolution的结构

卷积神经网络经典模型及其改进点学习汇总


在建立模型的时候,可以使用Keras中的DepthwiseConv2D层实现深度可分离卷积,然后再利用1x1卷积调整channels数。

通俗地理解就是3x3的卷积核厚度只有一层,然后在输入张量上一层一层地滑动,每一次卷积完生成一个输出通道,当卷积完成后,在利用1x1的卷积调整厚度。

如下就是MobileNet的结构,其中Conv dw就是分层卷积,在其之后都会接一个1x1的卷积进行通道处理,

卷积神经网络经典模型及其改进点学习汇总

具体实现代码可以看我的博文神经网络学习——MobileNet模型的复现详解

以上就是卷积神经网络经典模型及其改进点学习汇总的详细内容,更多关于卷积神经网络模型改进的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/weixin_44791964/article/details/102824592

延伸 · 阅读

精彩推荐
  • PythonPython中join函数简单代码示例

    Python中join函数简单代码示例

    这篇文章主要介绍了Python中join函数简单代码示例,具有一定借鉴价值,需要的朋友可以参考下...

    neu_张康3952021-01-03
  • PythonPython with用法实例

    Python with用法实例

    这篇文章主要介绍了Python with用法实例,本文讲解了with语句的几种使用方法和使用场景,需要的朋友可以参考下 ...

    脚本之家2952020-06-05
  • Python基于pykeyboard的用法说明

    基于pykeyboard的用法说明

    这篇文章主要介绍了基于pykeyboard的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    爱飞的大鹏子14502021-09-17
  • Pythonpython字符串格式化函数

    python字符串格式化函数

    这篇文章主要介绍了python字符串格式化函数,主要概述内容有​格式化字符串输出​、三引号、字符串字母处理函数等相关内容,下文详细内容介绍需要的...

    hqx6192022-12-04
  • Pythonpython实现windows壁纸定期更换功能

    python实现windows壁纸定期更换功能

    这篇文章主要为大家详细介绍了python实现windows壁纸定期更换功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    theArcticOcean5742021-05-19
  • Pythonpython实现二分查找算法

    python实现二分查找算法

    这篇文章主要介绍了python如何实现二分查找算法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下。 ...

    流柯2572020-09-19
  • Pythonpython命令行解析之parse_known_args()函数和parse_args()使用区别介绍

    python命令行解析之parse_known_args()函数和parse_args()使用区别介绍

    这篇文章主要介绍了python命令行解析之parse_known_args()函数和parse_args()使用介绍,需要的朋友可以参考下...

    mameng112922021-01-08
  • PythonFastAPI 之自动化测试数据库接口

    FastAPI 之自动化测试数据库接口

    今天的文章分享如下在 FastAPI 框架下,使用 pytest 来自动化测试数据库相关的接口,文章的最后给出全部代码。 ...

    Python七号11202021-12-30