《Rethinking the Inception Architecture for Computer Vision》笔记

介绍

深度学习在计算机视觉方面取得了很大突破。在2014ILSVRC分类比赛中中,VGG和GoogLeNet取得了优异成绩。卷积网络架构上的改进可以提升计算机视觉各类任务的性能。

VGG以很朴素的方式描述了特征,但有很大的计算量。GoogLeNet中的Inception结构设计的目的就是减少计算量和内存。GoogLeNet中只有5百万参数,是AlexNet的1/12(6千万参数),VGG参数是AlexNet的3倍多。

Inception的计算量小,性能优异。可以把它应用到对计算和显存有严格要求的一些场景中。但是Inception结构的复杂性使得网络难改进。如果只是单纯放大网络,计算量的增加带来的增益会立刻消失。GoogLeNet的论文没有描述清楚决定其多样性设计的因素,使得它难以拓展到新的用例上。如果增大Inception类型模型的容量,如果只是double滤波器组的数量,参数量和计算量将会增大4倍;在许多场景中,不允许这样设计。

下面讲解几个增大卷积网络的原则和优化方法。

通用设计原则

这些原则只是原理性的,基于实验结果。

1、避免表示瓶颈,尤其是在网络的前面。前向传播网络可以看做一个有向无环图,从输入到输出。一般来说,representation size从输入到输出特征应该缓慢减小。理论上来说,不能仅仅通过维度得到信息,因为它已经丢弃了许多重要特征例如相关结构,维度只能代表信息的粗略估计。

2、高维度特征在网络局部处理更加容易。在卷积网络中增加非线性可以解耦合特征,训练更快。

3、空间聚合可以以低纬度嵌入进行,这样不会影响representational power。例如,在进行大尺度卷积(3x3)时,在空间聚合前,先对输入进行降维,这样不会带来严重影响。我们猜测原因为:如果输出是为了空间聚合,那么临近单元的强相关性在降维过程中信息损失会很少。考虑到这些信号容易压缩,降维会加速学习过程。

4、平衡宽度和深度。增加宽度或深度都会带来性能上的提升,两者同时增加带了并行提升,但是要考虑计算资源的合理分配。

分解大的卷积核

GoogLeNet性能优异很大程度在于使用了降维。降维可以看做卷积网络的因式分解。例如1x1卷积层后跟着3x3卷积层。在网络角度看,激活层的输出是高相关的;因此在聚合前进行降维,可以得到类似的局部表示性能。

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

分解为更小的卷积

大的卷积计算量更大,例如filter相同情况下,5x5卷积核比3x3卷积核计算量大25/9=2.78倍。5x5卷积核相比3x3卷积核有广阔“视野”,可以捕捉到更多信息,单纯减小卷积核大小会造成信息损失。是否可以通过多层网络替代5x5卷积。把5x5网络看做全卷积,每个输出是卷积核在输入上滑动;可以通过2层的3x3的全卷积网络替换。如下图:

rethinking_inception_01.jpg

原来的Inception结构:

rethinking_inception_02.jpg

使用2个3x3替换5x5后的Inception结构:

rethinking_inception_03.jpg

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

空间上分解为非对称卷积

大于3x3的卷积层,都可以分解为连续的3x3的卷积层,那么是不是可以分解为更小的卷积核呢?实际上分解为非对称的更好。例如一个3x1卷积,后面跟一个1x3卷积,相当于3x3的卷积。如下图:

rethinking_inception_04.jpg

两层结构计算量减少33%;而2x2卷积代替的话计算量仅仅减少11%。

理论上,nxn卷积可以通过1xn->nx1卷积代替,随着n增大,能减少更多计算量。在实践中,在网络前几层这样的分解效果并不好;但是在中等网络中,有这不错的性能(mxm大的feature map,m介于12到20)。在这等尺寸下,1x7->7x1有着非常好的卷积效果。

使用辅助分类器

GoogLeNet引入了附加分类器,其目的是想把有效梯度传递回去,从而加快训练。我们发现辅助分类器扮演着regularizer的角色;因为当辅助分类器使用了batch-normalized或dropout时,主分类器效果会更好。

降低特征图大小

pooling层用来减小feature map大小。为了避免出现representational bottleneck,在使用pooling前常常增加feature map个数。例如k个dxd的feature map,pooling后为k个 d2×d2 。如果想要得到pooling后有2k个feature map,那么在pooling前面的卷积层卷积核就应该有2k个。前者卷积计算量为 2D2k2 ,而后者为 2(d2)2k2 ,是前者四分之一。这样在representation上会有瓶颈。可以使用另一种方法,降低更多计算量:使用2个模块P和C。P表示pooling,C表示卷积;它们stride都为2。如下图所示:
rethinking_inception_05.jpg

Inception-V2

我们提出Inception-V2模型。结构图下图所示:
rethinking_inception_06.jpg

把7x7卷积替换为3个3x3卷积。包含3个Inception部分。第一部分是35x35x288,使用了2个3x3卷积代替了传统的5x5;第二部分减小了feature map,增多了filters,为17x17x768,使用了nx1->1xn结构;第三部分增多了filter,使用了卷积池化并行结构。网络有42层,但是计算量只有GoogLeNet的2.5倍。

通过平滑标签正则化模型

输入 x ,模型计算得到类别为k的概率

p(k|x)=exp(zk)Ki=1exp(zi)

假设真实分布为 q(k) ,交叉熵损失函数

l=k=1Klog(p(k))q(k)

最小化交叉熵等价最大化似然函数。交叉熵函数对逻辑输出求导

lzk=p(k)q(k)

假设 q(k)=δk,y ,当 k=y 时, δk,y=1 ,当 ky 时, δk,y=0 。实际中,优化时,对于逻辑输出,使得达到 zyzk,ky 。这样会导致两个问题,1、over-fitting;2、使得损失函数对逻辑输出的导数差异变大,降低了模型的适应能力。导致这两个问题的原因在于模型对于结果预测太过自信。

为了避免模型过于自信,引入一个独立于样本分布的变量 u(k)

q(k|x)=(1ϵ)δk,y+ϵu(k)

实验中使用均匀分布代替 u(k) ,即 u(k)=1K 。训练集为ImageNet的实验中, K=1000,ϵ=0.1

训练方法

batch-size=32,epoch=100。SGD+momentum,momentum=0.9。使用RMSProp,decay=0.9, ϵ=0.1 ,效果达到最好。lr=0.045,每2个epoch,衰减0.94。梯度最大阈值=2.0.

低分辨率图像的识别

对于低分辨有图像,使用“高分辨率”receptive field。实践中:1、减小前2个卷积层的stride,2、去掉第一个pooling层。

实验结果

单模型,single crop得到的结果
rethinking_inception_07.jpg

### 回答1: Inception 架构是一种用于计算机视觉的神经网络架构,它通过使用不同尺寸的卷积核来捕捉图像中的不同级别特征。近年来,研究者们对 Inception 架构进行了重新思考,提出了许多改进版本,如 Inception-v2 和 Inception-v3。这些改进版本通过更深层次的网络结构、更高效的卷积层、更强大的正则化方法等来增强模型的性能。 ### 回答2: "重新思考计算机视觉中的Inception架构"是指对计算机视觉中的Inception架构进行反思和重新设计的过程。 在计算机视觉中,深度学习网络被广泛应用于图像分类、物体检测和语义分割等任务。Inception架构是一种流行的深度学习架构之一,它的特点是使用了一系列不同尺寸的卷积核和Inception模块,以提取不同尺度下的图像特征。 然而,随着计算机视觉任务的不断发展和挑战的出现,人们开始重新思考和改进Inception架构。对Inception架构的重新思考主要包括以下几个方面: 首先,针对Inception架构中的参数数量过多和计算复杂度高的问题,人们提出了一些改进方法。例如,通过降低Inception模块中卷积核的维度和参数数量,可以减少计算量,提高网络的训练和推理效率。 其次,人们提出了一些新的模块和网络结构,以解决Inception架构在某些任务上的性能限制。例如,ResNet和DenseNet等网络结构通过引入残差连接和稠密连接,解决了深度网络中的梯度消失和信息丢失问题。 此外,人们还关注如何将Inception架构与其他架构进行融合,以进一步提升计算机视觉任务的性能。例如,人们将Inception架构与注意力机制相结合,以提高目标检测和图像分割的准确性。 总之,"重新思考计算机视觉中的Inception架构"是一个不断演进的过程。通过反思和优化Inception架构,人们可以提高计算机视觉任务的性能、准确性和效率,推动计算机视觉领域的发展。 ### 回答3: 重新思考计算机视觉中的初始架构(rethinking the inception architecture for computer vision)是指对计算机视觉模型中的初始网络架构进行重新思考和改进。 计算机视觉是人工智能领域中的一个重要分支,它致力于让计算机能够像人一样理解和处理图像和视频。而计算机视觉模型的架构对于模型的性能和效果具有很大的影响。 Inception架构是一种经典的计算机视觉模型架构,最早由谷歌在2014年提出。它通过使用多尺度的卷积层和并行结构来提高模型的性能和效果。然而,随着技术的发展和需求的变化,原始的Inception架构可能存在一些限制和缺陷。 重新思考Inception架构意味着我们需要针对当前的计算机视觉任务和要求,重新设计和改进Inception架构。有几个方面可以考虑: 首先,我们可以通过引入更先进的卷积技术和结构来改善模型的性能。例如,可以使用Dilated Convolution(空洞卷积)来增加感受野,或者使用Depthwise Separable Convolution(分离卷积)来减少参数量和计算量。 其次,我们可以将其他经典和有效的架构和思想与Inception架构相结合,以进一步提升性能。例如,可以引入残差连接(Residual Connection)来加快训练速度和提高模型的泛化能力。 此外,我们还可以针对具体的计算机视觉任务,对Inception架构进行特定的优化。例如,对于目标检测任务,可以加入适应性池化层(Adaptive Pooling Layer)来获得更好的位置和尺度信息。 总之,重新思考Inception架构是一个不断改进和优化计算机视觉模型的过程。通过结合新的技术、思想和任务需求,我们可以进一步提高计算机视觉模型的性能和效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值