卷积神经网络的网络结构图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卷积层。在网络角度看,激活层的输出是高相关的;因此在聚合前进行降维,可以得到类似的局部表示性能。

这里,考虑计算性能,我们探索其他形式的卷积因式分解。因为Inception结构是全卷积,每一个激活值对应的每一个权重,都对应一个乘法运算。因此减小计算量意味着减少参数。所以通过解耦和参数,可以加快训练。利用节省下来的计算和内存增加filter-bank大小,来提升网络性能。

1.1分解到更小的卷积

具有较大空间滤波器(例如5×5或7×7)的卷积在计算方面往往不成比例地昂贵。例如,具有n个滤波器的5×5卷积在具有m个滤波器的网格上比具有相同数量的滤波器的3×3卷积的计算量高25/9=2.78倍。当然,5×5滤波器在更前面的层可以捕获更远的单元激活之间、信号之间的依赖关系,因此滤波器几何尺寸的减小带来了很大的表现力。然而,我们可以询问5×5卷积是否可以被具有相同输入尺寸和输出深度的参数较小的多层网络所取代。如果我们放大5×5卷积的计算图,我们看到每个输出看起来像一个小的完全连接的网络,在其输入上滑过5×5的块(见图1)。由于我们正在构建视觉网络,所以通过两层的卷积结构再次利用平移不变性来代替全连接的组件似乎是很自然的:第一层是3×3卷积,第二层是在第一层的3×3输出网格之上的一个全连接层(见图1)。通过在输入激活网格上滑动这个小网络,用两层3×3卷积来替换5×5卷积(比较图2)。

图1.Mini网络替换5×5卷积

图2.Inception模块中每个5×5卷积由两个3×3卷积替换

对于分解的卷积层,使用线性激活还是非线性激活,实验表明,非线性激活性能更好。

1.2. 空间分解为不对称卷积

上述结果表明,大于3×3的卷积滤波器可能不是通常有用的,因为它们总是可以简化为3×3卷积层序列。我们仍然可以问这个问题,是否应该把它们分解成更小的,例如2×2的卷积。然而,通过使用非对称卷积,可以做出甚至比2×2更好的效果,即n×1。例如使用3×1卷积后接一个1×3卷积,相当于以与3×3卷积相同的感受野滑动两层网络(图3)。如果输入和输出滤波器的数量相等,那么对于相同数量的输出滤波器,两层解决方案便宜33%。相比之下,将3×3卷积分解为两个2×2卷积表示仅节省了11%的计算量。

图3.将一个33的卷积拆成13卷积和3*1卷积

在理论上,我们可以进一步论证,可以通过1×n卷积和后面接一个n×1卷积替换任何n×n卷积,并且随着n增长,计算成本节省显著增加(图4)。实际上,我们发现,采用这种分解在前面的层次上不能很好地工作,但是对于中等网格尺寸(在m×m特征图上,其中m范围在12到20之间),其给出了非常好的结果。在这个水平上,通过使用1×7卷积,然后是7×1卷积可以获得非常好的结果。

图4.n×n卷积分解后的Inception模块。

在我们提出的架构中,对17×17的网格我们选择n=7。

2. 利用辅助分类器

Inception V1引入了辅助分类器的概念,以改善非常深的网络的收敛。最初的动机是将有用的梯度推向较低层,使其立即有用,并通过抵抗非常深的网络中的消失梯度问题来提高训练过程中的收敛。有趣的是,我们发现辅助分类器在训练早期并没有导致改善收敛:在两个模型达到高精度之前,有无侧边网络的训练进度看起来几乎相同。接近训练结束,辅助分支网络开始超越没有任何分支的网络的准确性,达到了更高的稳定水平。

另外,Inception V1在网络的不同阶段使用了两个侧分支。移除更下面的辅助分支对网络的最终质量没有任何不利影响。再加上前一段的观察结果,这意味着这些分支有助于演变低级特征很可能是不适当的。相反,我们认为辅助分类器起着正则化项的作用。这是由于如果侧分支是批标准化的(BN)或具有丢弃层(Dropout),则网络的主分类器性能更好。这也为推测BN作为正则化项给出了一个弱支持证据。

3.降低特征图大小

传统上,卷积网络使用一些池化操作来缩减特征图的网格大小。为了避免表示瓶颈,在应用最大池化或平均池化之前,需要扩展网络滤波器的激活维度。例如,开始有一个带有k个滤波器的d×d网格,如果我们想要达到一个带有2k个滤波器的

网格,我们首先需要用2k个滤波器计算步长为1的卷积,然后应用一个额外的池化步骤。这意味着总体计算成本由在较大的网格上使用

次运算的昂贵卷积支配。一种可能性是转换为带有卷积的池化,因此导致

次运算,将计算成本降低为原来的四分之一。然而,由于表示的整体维度下降到

,会导致表示能力较弱的网络(图5),这会产生一个表示瓶颈。我们建议另一种变体,其甚至进一步降低了计算成本,同时消除了表示瓶颈(图6),而不是这样做。我们可以使用两个平行的步长为2的块:P和C。P是一个池化层(平均池化或最大池化)的激活,两者都是步长为2,其滤波器组连接如图6所示。

图5.减少网格尺寸的两种替代方式。

左边的解决方案违反了不引入表示瓶颈的原则,右边的计算量昂贵3倍。

图6.缩减网格尺寸的同时扩展滤波器组的Inception模块。

它不仅廉价并且避免了原则1中提出的表示瓶颈。右侧的图表示相同的解决方案,但是从网格大小而不是运算的角度来看。

Inception-V3模型:

把7x7卷积替换为3个3x3卷积。包含3个Inception部分。第一部分是35x35x288,使用了2个3x3卷积代替了传统的5x5;

第二部分减小了feature map,增多了filters,为17x17x768,使用了nx1->1xn结构;第三部分增多了filter,使用了卷积池化并行结构。网络有42层,但是计算量只有GoogLeNet的2.5倍。

5,6,7分别对应下面三种结构:

应用在17*17层之上的辅助分类器:

析:因此问题依然存在:如果计算量保持不变,更高的输入分辨率会有多少帮助?

普遍的看法是,使用更高分辨率感受野的模型倾向于导致显著改进的识别性能。为了这个目的我们进行了以下三个实验:

1)步长为2,大小为299×299的感受野和最大池化。

2)步长为1,大小为151×151的感受野和最大池化。

3)步长为1,大小为79×79的感受野和第一层之后没有池化。

所有三个网络具有几乎相同的计算成本。虽然第三个网络稍微便宜一些,但是池化层的成本是无足轻重的(在总成本的1%以内)。

在每种情况下,网络都进行了训练,直到收敛,并在ImageNet ILSVRC 2012分类基准数据集的验证集上衡量其质量。结果如表所示。虽然分辨率较低的网络需要更长时间去训练,但最终结果却与较高分辨率网络的质量相当接近。

当感受野尺寸变化时,识别性能的比较,但计算代价是不变的。但是,如果只是单纯地按照输入分辨率减少网络尺寸,那么网络的性能就会差得多。

总结:

Inception V3网络主要有两方面的改造:一是引入了Factorization into small convolutions的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将77卷积拆成17卷积和71卷积,或者将33卷积拆成13卷积核31卷积。一方面节约了大量参数,加快运算并减轻过拟合,同时增加了一层非线性扩展模型表达能力。论文中指出,这种非对称的卷积结构拆分,其结果比对称地拆分为几个相同的小卷积核效果更明显,可以处理更多、更丰富的空间特征,增加特征多样性。

另一方面,Inception V3优化了Inception Module的结构,现在Inception Module有3535、1717和88三种不同结构。这些Inception Module只在网络的后部出现,前面还是普通的卷积层。并且Inception V3除了在Inception Module中使用分支,还在分支中使用了分支(88的结构中,可以说是Network In Network In Network。

注:博众家之所长,集群英之荟萃。

以上就是卷积神经网络的网络结构图Inception V3的详细内容,更多关于Inception V3卷积结构图的资料请关注我们其它相关文章!

(0)

相关推荐

  • TensorFlow卷积神经网络MNIST数据集实现示例

    这里使用TensorFlow实现一个简单的卷积神经网络,使用的是MNIST数据集.网络结构为:数据输入层–卷积层1–池化层1–卷积层2–池化层2–全连接层1–全连接层2(输出层),这是一个简单但非常有代表性的卷积神经网络. import tensorflow as tf import numpy as np import input_data mnist = input_data.read_data_sets('data/', one_hot=True) print("MNIST ready&q

  • 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

  • TensorFlow卷积神经网络AlexNet实现示例详解

    2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNet,它可以算是LeNet的一种更深更宽的版本.AlexNet以显著的优势赢得了竞争激烈的ILSVRC 2012比赛,top-5的错误率降低至了16.4%,远远领先第二名的26.2%的成绩.AlexNet的出现意义非常重大,它证明了CNN在复杂模型下的有效性,而且使用GPU使得训练在可接受的时间范围内得到结果,让CNN和GPU都大火了一把.AlexNet可以说是神经网络在低谷期后的第一次发声,确立了深

  • python人工智能tensorflow构建卷积神经网络CNN

    目录 简介 隐含层介绍 1.卷积层 2.池化层 3.全连接层 具体实现代码 卷积层.池化层与全连接层实现代码 全部代码 学习神经网络已经有一段时间,从普通的BP神经网络到LSTM长短期记忆网络都有一定的了解,但是从未系统的把整个神经网络的结构记录下来,我相信这些小记录可以帮助我更加深刻的理解神经网络. 简介 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),

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

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

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

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

  • 卷积神经网络的网络结构图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卷积层.在网络

  • Pytorch卷积神经网络resent网络实践

    目录 前言 一.技术介绍 二.实现途径 三.总结 前言 上篇文章,讲了经典卷积神经网络-resnet,这篇文章通过resnet网络,做一些具体的事情. 一.技术介绍 总的来说,第一步首先要加载数据集,对数据进行一些处理,第二步,调整学习率一些参数,训练好resnet网络模型,第三步输入图片或者视频通过训练好的模型,得到结果. 二.实现途径 1.加载数据集,对数据进行处理,加载的图片是(N,C,H,W )对图片进行处理成(C,H,W),通过图片名称获取标签,进行分类. train_paper=r'

  • tensorflow卷积神经Inception V3网络结构代码解析

    目录 前言 1 非Inception Module的普通卷积层 2 三个Inception模块组 3 Auxiliary Logits.全局平均池化.Softmax分类 前言 学习了Inception V3卷积神经网络,总结一下对Inception V3网络结构和主要代码的理解. GoogLeNet对网络中的传统卷积层进行了修改,提出了被称为 Inception 的结构,用于增加网络深度和宽度,提高深度神经网络性能.从Inception V1到Inception V4有4个更新版本,每一版的网络

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

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

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

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

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

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

  • TensorFlow实现卷积神经网络CNN

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

  • tensorflow学习笔记之mnist的卷积神经网络实例

    mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的.但是CNN层数要多一些,网络模型需要自己来构建. 程序比较复杂,我就分成几个部分来叙述. 首先,下载并加载数据: import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=Tru

  • PyTorch上实现卷积神经网络CNN的方法

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

随机推荐