深度卷积神经网络各种改进结构块汇总

目录
  • 学习前言
  • 1、残差网络
  • 2、不同大小卷积核并行卷积
  • 3、利用(1,x),(x,1)卷积代替(x,x)卷积
  • 4、采用瓶颈(Bottleneck)结构
  • 5、深度可分离卷积
  • 6、改进版深度可分离卷积+残差网络
  • 7、倒转残差(Inverted residuals)结构
  • 8、并行空洞卷积

学习前言

看了好多代码呀,看了后面忘了前面,这个BLOG主要是记录一些神经网络的改进结构,比如残差结构那种,记录下来有助于自己设计一些轻且好的网络。

1、残差网络

这个网络主要源自于Resnet网络,其作用是:

将靠前若干层的某一层数据输出直接跳过多层引入到后面数据层的输入部分。

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

实验表明,残差网络更容易优化,并且能够通过增加相当的深度来提高准确率。

最终可以使得网络越来越深,Resnet152就是一个很深很深的网络。

残差网络的典型结构如下:

2、不同大小卷积核并行卷积

这个结构主要是在Inception网络结构中出现。

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

不同大小卷积核并行卷积的典型结构如下:

3、利用(1,x),(x,1)卷积代替(x,x)卷积

这种结构主要利用在InceptionV3中。

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

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

下图利用1x7的卷积和7x1的卷积代替7x7的卷积。

下图利用1x3的卷积和3x1的卷积代替3x3的卷积。

4、采用瓶颈(Bottleneck)结构

这个结构在Resnet里非常常见,其它网络也有用到。

所谓Bottleneck结构就是首先利用1x1卷积层进行特征压缩,再利用3x3卷积网络进行特征提取,再利用1x1卷积层进行特征扩张。

该结构相比于直接对输入进行3x3卷积减少了许多参数量。

当输入为26,26,512时,直接使用3x3、filter为512的卷积网络的参数量为512x3x3x512=2,359,296‬。

采用Bottleneck结构的话,假设其首先利用1x1、filter为128卷积层进行特征压缩,再利用3x3、filter为128的卷积网络进行特征提取,再利用1x1、filter为512的卷积层进行特征扩张,则参数量为 512×1×1×128 + 128×3×3×128 + 128×1×1×512 =‬ 278,528。

可以看出来确实时下降了很多呀。

5、深度可分离卷积

深度可分离卷积主要在MobileNet模型上应用。

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

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

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

6、改进版深度可分离卷积+残差网络

这种结构主要存在在Xception网络中。

改进版深度可分离卷积就是调换了一下深度可分离的顺序,先进行1x1卷积调整通道,再利用3x3卷积提取特征。

和普通的深度可分离卷积相比,参数量也会有一定的变化。

改进版深度可分离卷积加上残差网络的结构其实和它的名字是一样的,很好理解。

如下图所示:

7、倒转残差(Inverted residuals)结构

在ResNet50里我们认识到一个结构,bottleneck design结构,在3x3网络结构前利用1x1卷积降维,在3x3网络结构后,利用1x1卷积升维,相比直接使用3x3网络卷积效果更好,参数更少,先进行压缩,再进行扩张。

而Inverted residuals结构,在3x3网络结构前利用1x1卷积升维,在3x3网络结构后,利用1x1卷积降维,先进行扩张,再进行压缩。

这种结构主要用在MobilenetV2中。

其主要结构如下:

8、并行空洞卷积

这个结构出现在Deeplabv3语义分割中。

其经过并行的空洞卷积,分别用不同rate的空洞卷积进行特征提取,再进行合并,再进行1x1卷积压缩特征。

空洞卷积可以在不损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息**。如下就是空洞卷积的一个示意图,所谓空洞就是特征点提取的时候会跨像素。

以上就是深度卷积神经网络各种改进结构块汇总的详细内容,更多关于卷积神经网络改进结构块的资料请关注我们其它相关文章!

(0)

相关推荐

  • 使用pytorch提取卷积神经网络的特征图可视化

    目录 前言 1. 效果图 2. 完整代码 3. 代码说明 4. 可视化梯度,feature 总结 前言 文章中的代码是参考基于Pytorch的特征图提取编写的代码本身很简单这里只做简单的描述. 1. 效果图 先看效果图(第一张是原图,后面的都是相应的特征图,这里使用的网络是resnet50,需要注意的是下面图片显示的特征图是经过放大后的图,原图是比较小的图,因为太小不利于我们观察): 2. 完整代码 import os import torch import torchvision as tv

  • 卷积神经网络的网络结构图Inception V3

    目录 1.基于大滤波器尺寸分解卷积 1.1分解到更小的卷积 1.2. 空间分解为不对称卷积 2. 利用辅助分类器 3.降低特征图大小 Inception-V3模型: 总结: <Rethinking the Inception Architecture for Computer Vision> 2015,Google,Inception V3 1.基于大滤波器尺寸分解卷积 GoogLeNet性能优异很大程度在于使用了降维.降维可以看做卷积网络的因式分解.例如1x1卷积层后跟着3x3卷积层.在网络

  • Python卷积神经网络图片分类框架详解分析

    [人工智能项目]卷积神经网络图片分类框架 本次硬核分享当时做图片分类的工作,主要是整理了一个图片分类的框架,如果想换模型,引入新模型,在config中修改即可.那么走起来瓷!!! 整体结构 config 在config文件夹下的config.py中主要定义数据集的位置,训练轮数,batch_size以及本次选用的模型. # 定义训练集和测试集的路径 train_data_path = "./data/train/" train_anno_path = "./data/trai

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

    目录 经典神经网络的改进点 经典神经网络的结构汇总 1.VGG16 2.ResNet50 3.InceptionV3 4.Xception 5.MobileNet 经典神经网络的改进点 名称 改进点 VGG16 1.使用非常多的3*3卷积串联,利用小卷积代替大卷积,该操作使得其拥有更少的参数量,同时会比单独一个卷积层拥有更多的非线性变换.2.探索了卷积神经网络的深度与其性能之间的关系,成功构建16层网络(还有VGG19的19层网络). ResNet50 1.使用残差网络,其可以解决由于网络深度加

  • Python深度学习之实现卷积神经网络

    一.卷积神经网络 Yann LeCun 和Yoshua Bengio在1995年引入了卷积神经网络,也称为卷积网络或CNN.CNN是一种特殊的多层神经网络,用于处理具有明显网格状拓扑的数据.其网络的基础基于称为卷积的数学运算. 卷积神经网络(CNN)的类型 以下是一些不同类型的CNN: 1D CNN:1D CNN 的输入和输出数据是二维的.一维CNN大多用于时间序列. 2D CNNN:2D CNN的输入和输出数据是三维的.我们通常将其用于图像数据问题. 3D CNNN:3D CNN的输入和输出数

  • 深度卷积神经网络各种改进结构块汇总

    目录 学习前言 1.残差网络 2.不同大小卷积核并行卷积 3.利用(1,x),(x,1)卷积代替(x,x)卷积 4.采用瓶颈(Bottleneck)结构 5.深度可分离卷积 6.改进版深度可分离卷积+残差网络 7.倒转残差(Inverted residuals)结构 8.并行空洞卷积 学习前言 看了好多代码呀,看了后面忘了前面,这个BLOG主要是记录一些神经网络的改进结构,比如残差结构那种,记录下来有助于自己设计一些轻且好的网络. 1.残差网络 这个网络主要源自于Resnet网络,其作用是: 将

  • Python编程pytorch深度卷积神经网络AlexNet详解

    目录 容量控制和预处理 读取数据集 2012年,AlexNet横空出世.它首次证明了学习到的特征可以超越手工设计的特征.它一举打破了计算机视觉研究的现状.AlexNet使用了8层卷积神经网络,并以很大的优势赢得了2012年的ImageNet图像识别挑战赛. 下图展示了从LeNet(左)到AlexNet(right)的架构. AlexNet和LeNet的设计理念非常相似,但也有如下区别: AlexNet比相对较小的LeNet5要深得多. AlexNet使用ReLU而不是sigmoid作为其激活函数

  • TensorFlow深度学习之卷积神经网络CNN

    一.卷积神经网络的概述 卷积神经网络(ConvolutionalNeural Network,CNN)最初是为解决图像识别等问题设计的,CNN现在的应用已经不限于图像和视频,也可用于时间序列信号,比如音频信号和文本数据等.CNN作为一个深度学习架构被提出的最初诉求是降低对图像数据预处理的要求,避免复杂的特征工程.在卷积神经网络中,第一个卷积层会直接接受图像像素级的输入,每一层卷积(滤波器)都会提取数据中最有效的特征,这种方法可以提取到图像中最基础的特征,而后再进行组合和抽象形成更高阶的特征,因此

  • Python深度学习神经网络残差块

    目录 ResNet模型 训练模型 ResNet沿用VGG完整的KaTeX parse error: Undefined control sequence: \time at position 2: 3\̲t̲i̲m̲e̲3卷积层设计.残差块里首先有2个相同输出通道数的KaTeX parse error: Undefined control sequence: \time at position 2: 3\̲t̲i̲m̲e̲3卷积层.每个卷积层后接一个批量归一化层和ReLU激活函数.然后我们通过跨

  • Python深度学习pytorch卷积神经网络LeNet

    目录 LeNet 模型训练 在本节中,我们将介绍LeNet,它是最早发布的卷积神经网络之一.这个模型是由AT&T贝尔实验室的研究院Yann LeCun在1989年提出的(并以其命名),目的是识别手写数字.当时,LeNet取得了与支持向量机性能相媲美的成果,成为监督学习的主流方法.LeNet被广泛用于自动取款机中,帮助识别处理支票的数字. LeNet 总体来看,LeNet(LeNet-5)由两个部分组成: 卷积编码器: 由两个卷积层组成 全连接层密集快: 由三个全连接层组成 每个卷积块中的基本单元

  • TensorFlow深度学习另一种程序风格实现卷积神经网络

    import tensorflow as tf import numpy as np import input_data mnist = input_data.read_data_sets('data/', one_hot=True) print("MNIST ready") n_input = 784 # 28*28的灰度图,像素个数784 n_output = 10 # 是10分类问题 # 权重项 weights = { # conv1,参数[3, 3, 1, 32]分别指定了fi

  • Pytorch深度学习经典卷积神经网络resnet模块训练

    目录 前言 一.resnet 二.resnet网络结构 三.resnet18 1.导包 2.残差模块 2.通道数翻倍残差模块 3.rensnet18模块 4.数据测试 5.损失函数,优化器 6.加载数据集,数据增强 7.训练数据 8.保存模型 9.加载测试集数据,进行模型测试 四.resnet深层对比 前言 随着深度学习的不断发展,从开山之作Alexnet到VGG,网络结构不断优化,但是在VGG网络研究过程中,人们发现随着网络深度的不断提高,准确率却没有得到提高,如图所示: 人们觉得深度学习到此

随机推荐