DenseNet(麋集连接卷积神经网络,Densely Connected Convolutional Networks)是一种深度卷积神经网络布局,由 Gao Huang 等人于 2017 年提出。它的基本思路与 ResNet(残差网络)一致,但 DenseNet 通过建立前面全部层与背面层的麋集连接来实现更高效的特性传递和重用。
麋集连接:在 DenseNet 中,每一层都从前面的全部层获取输入,形成了大量的连接。与传统卷积神经网络相比,DenseNet 中的连接数目要多很多。这种麋集连接有助于加强特性传递和重用,进步网络的性能。
减轻梯度消失:由于麋集连接的存在,梯度在反向流传过程中能够更好地传递,从而缓解了梯度消失问题。这有助于进步模型的训练效果和收敛速度。
特性重用:DenseNet 通过级联(Concatenation)方式将各层的特性映射传递给后续层,使得后续层可以利用前面层的特性。这有助于进步网络的泛化能力,同时减少了参数数目。
布局紧凑:DenseNet 网络由多个麋集块(Dense Block)组成,每个麋集块内部包含多个层。这种布局使得网络在保持较高性能的同时,具有较少的参数和计算量。
批量归一化(Batch Normalization,BN):将每个特性映射除以一个 batch 内的均值,再乘以一个归一化参数,有助于加快网络的训练过程。
激活函数(ReLU):使用 Rectified Linear Unit(ReLU)作为激活函数,可以进步梯度流传的服从,加快网络的收敛速度。
3x3 卷积核:DenseNet 中的卷积层采用 3x3 的卷积核,能够在一定程度上低落特性图的维度,减少计算量。
过渡层(Transition Layer):在相邻的麋集块之间,DenseNet 采用了 1x1 卷积和 2x2 匀称池化操纵,以低落特性图的维度和尺寸。这有助于网络在训练过程中更高效地利用计算资源。
瓶颈层(Bottleneck Layers):在 DenseNet-B(Bottleneck)版本中,网络在 BN-ReLu-33 卷积之前增长了 BN-ReLu-11 卷积操纵,以减少特性图的尺寸。这有助于进步网络的性能和稳定性。
总之,DenseNet 通过麋集连接、梯度消失的缓解、特性重用和紧凑的布局等创新点,实现了在较少参数的环境下得到良好性能的目标。在许多计算机视觉使命中,DenseNet 都取得了明显的成果,成为深度学习领域的经典网络之一。
Introduction
卷积神经网络(CNN)是一种呆板学习算法,广泛应用于图像和视觉物体辨认领域。在已往的20多年中,CNN发展迅速,网络的深度不断增长,从最初的5层到现在已经超过100层。然而,随着网络层数的增长,信息在多个层之间传递时大概会消失,导致辨认效果降落。为此,近几年研究者提出了一些解决方案。
其中,ResNets (残差网络)和Highway Networks通过超过层之间的“跳跃连接”来解决信息消失问题。Stochastic depth则通过在训练过程中随机忽略部分层来收缩网络深度,以得到更好的信息和梯度流动。FractalNets则通过组合多个具有不同卷积块数目的并行层序列来构建更深的网络,同时保持许多短路径。
总之,这些方法都旨在创建从早期层到后续层的短路径,以保持信息和梯度的良好流动,并进步网络的性能。这些算法的发展对于深度学习模型的训练和优化具有紧张意义,也在一定程度上推动了人工智能领域的发展。
在这篇论文中,作者提出了一种名为DenseNet的新型卷积神经网络布局,以解决传统网络中信息流动不畅的问题。DenseNet的核心头脑是在网络的每一层之间建立直接连接,从而保证最大化层与层之间的信息传递。
具体而言,DenseNet中的每一层与全部前面的层直接相连,并从它们那边得到额外的输入。为了保持正向传递的性质,每层还将自己的特性图传递给全部后续的层。这种麋集的连接模式可以有效地促进信息和梯度的流动,避免信息在深层网络中丢失。相比之下,传统的网络布局通常只有局部连接或者通过汇总操纵将特性图举行归并。具体如下如所示:
根据上图,每一层都直接连接到前面全部的层,并从它们那边得到额外的输入。每层还将自己的特性图传递给全部后续的层,从而实现信息和梯度的全面传递,避免信息在深层网络中丢失。相比传统的局部连接或者汇总操纵,这种麋集连接模式可以更有效地提取特性信息。
在ResNet这样的卷积神经网络中,许多层对最终的结果贡献较小,乃至可以在训练过程中随机丢弃一些层而不会对性能产生明显影响。这使得ResNet的状态更类似于循环神经网络(RNN),其中每一层都依靠于前一层的输出。
相比之下,DenseNet的架构将网络中的信息和必要保留的信息明确地域分开来。DenseNet的每一层都比力窄,比方每层只有12个滤波器,仅向网络中的“共同知识”中添加一小组特性图,并保持其他特性图稳定。这意味着每一层都对网络的团体特性有所贡献,并且最终的分类器是基于网络中全部特性图的综合决策。
换句话说,ResNet中的每一层都有自己的权重,导致参数数目很大,而DenseNet通过共享特性图和限制每层的宽度,减少了参数数目。这种设计使得DenseNet能够更有效地利用计算资源,并且更好地保留和传递特性信息。
DenseNets
ResNets:传统前馈神经网络中,利用L-1的输出作为L层的输入,其中Hl表现Batch Normalization、ReLU、Conv等操纵,公式如下:
在ResNets中添加了一个跳跃连接,使用恒等函数绕过非线性变换,如下所示:
在ResNet中,跳过连接使用求和操纵将恒等函数的输出与H`的输出相加。尽管这种布局允许梯度直接通过恒等函数流传,但求和操纵大概会引入额外的噪声或冲突,影响网络中信息的流动。
这种求和操纵大概会导致梯度流传时出现较大的变化,从而影响网络的训练和收敛性能。为相识决这个问题,后续的研究提出了一些改进方法,如使用加权求和或引入注意力机制来均衡恒等函数和H`的输出。
尽管存在一些信息流动上的限制,但ResNet的优势仍然在于它解决了深度网络中的梯度消失和表现能力有限的问题,并取得了明显的性能改进。这种布局已经被广泛应用于计算机视觉使命,取得了在图像辨认和目标检测等基准使命上的开始进表现。
Dense connectivity.为了进一步改善层之间的信息流动,提出了一种不同的连接模式:引入了从任何层到全部后续层的直接连接,图1示意图形式说明白DenseNet的布局。在L层会将从0~L-1的输出作为L层的输入,如下所示:
Composite function。将三个符合函数归并形成一个H()函数,包罗了bath normalization(BN)、ReLU、和3*3的Conv。
Pooling layers。特性映射的大小变化时,DenseNet中所使用的串联操纵是不可行的。为相识决这个问题,DenseNet中使用了过渡层(Transition layer),将网络分成多个麋集连接的块(Dense Block)来举行处理。这些过渡层包罗一个批量归一化层和一个1×1卷积层,以及一个2×2的匀称池化层,来改变特性映射的大小。如下图所示:
Growth rate。当我们训练神经网络时,每一层都负责学习和提取输入数据的特性。传统的神经网络架构中,每一层只能访问前一层的输出,并且每一层产生的特性图数目是固定的。然而,在DenseNet中,每一层都与之前全部层连接在一起,这意味着每一层可以直接访问并利用之前全部层的输出。
具体来说,如果我们用H'表现每一层产生的功能函数,它会天生k个特性图。那么第t层将有k0 + k × (t-1)个输入特性图,其中k0是输入层的通道数。这种设计使得DenseNet可以具有非常窄的层,即每一层产生的特性图数目相对较少,比方只有k=12个。相比于传统的网络架构,DenseNet的层可以更加窄,因为它们可以从之前的层中获取更多的信息。
DenseNet中的增长率(growth rate)被定义为每一层所添加的新特性图的数目,即参数k。增长率控制了每一层向全局状态中贡献了多少新信息。全局状态可以被看作是整个网络的“团体知识”,它由之前全部层的特性图组成。每一层都向全局状态中添加自己产生的k个特性图,从而更新全局状态,并向后续层提供更多信息。这种方式使得每一层都能够访问并利用整个网络的知识,有助于进步网络的表达能力和正确性。
与传统的网络架构相比,DenseNet的特殊连接方式还带来了服从上的优势。由于每一层都可以直接访问之前全部层的输出,不必要在每一层之间复制数据。这样一来,DenseNet可以更加高效地利用内存和计算资源。
总之,DenseNet通过麋集连接的方式,使每一层可以直接访问之前全部层的输出,从而有效地利用全局知识和特性。增长率控制了每一层对全局状态的贡献,使得网络可以具有非常窄的层,同时仍然能够得到优秀的性能。这种设计不仅进步了网络的正确性,还进步了网络的服从和计算资源的利用率。
Bottleneck layers. 为了进一步进步计算服从,DenseNet还引入了一个名为“瓶颈层”的设计。在每个3×3卷积层之前,DenseNet添加了一个1×1卷积层,并使用BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)的布局来处理输入。这种设计的目标是在减少网络参数和计算量的同时,最大限度地保留特性信息。在DenseNet中,每个1×1卷积层会产生4k个特性图。总之,DenseNet通过麋集连接的方式并结合瓶颈层设计,使得神经网络既具有高正确性,同时又能够更加高效地利用计算资源。
Compression。DenseNet-C通过引入转换层(transition layer)来进一步减小模型的规模和计算复杂度。转换层位于两个麋集块之间,其作用是将前一个麋集块的输出特性图的数目低落为一个较小的值。具体来说,转换层会根据一个称为压缩因子(compression factor)的参数θ来控制输出特性图的数目。当θ小于1时,输出特性图的数目会减少,从而低落模型的规模和计算复杂度。
比方,如果一个麋集块包含m个特性图,而压缩因子θ设置为0.5,那么转换层将会天生0.5m个输出特性图。这样一来,整个网络中的特性图数目就会明显减少,使得模型更加紧凑,计算服从更高。
我们将θ<1的DenseNet称为DenseNet-C,并在我们的实验中将θ设置为0.5。当同时使用θ<1的瓶颈和转换层时,我们将模型称为DenseNet-BC。
Implementation Details。在我们的实验中,除了ImageNet数据集外,我们使用的DenseNet布局包含三个麋集块,每个麋集块中的层数相等。在输入图像进入第一个麋集块之前,我们对其举行了一个输出通道为16(或者对于DenseNet-BC来说是增长率的两倍)的卷积操纵。对于卷积层的核大小为3×3,我们在输入的每一侧都举行了一个像素的零填充,以保持特性图的大小稳定。我们使用1×1的卷积层后接2×2的匀称池化作为两个连续麋集块之间的过渡层。在末了一个麋集块竣事时,我们执行了全局匀称池化操纵,然后连接一个softmax分类器。三个麋集块中的特性图大小分别为32×32、16×16和8×8。我们对基本的DenseNet布局举行了实验,并尝试了配置参数为{L = 40, k = 12},{L = 100, k = 12}和{L = 100, k = 24}的环境。对于DenseNet-BC,我们评估了配置参数为{L = 100, k = 12},{L = 250, k = 24}和{L = 190, k = 40}的网络。这些配置参数将影响网络的深度(L)和增长率(k),进而影响网络的性能和复杂度。
在我们对ImageNet数据集的实验中,我们使用了一个具有4个麋集块的DenseNet-BC布局,并对224×224的输入图像举行处理。初始卷积层由尺寸为7×7、步长为2的2k个卷积组成;全部其他层中的特性图数目也是根据k的设定而确定的。我们在ImageNet数据集上使用的确切网络配置如表1所示。
Experiments
作者在多个基准数据集上举行了实证,展示了DenseNet的有效性,并与开始进的架构举行了比力,特别是与ResNet及其变体举行了比力。
CIFAR数据集是由32×32像素的彩色天然图像组成的。CIFAR-10(C10)包含来自10个种别的图像,而CIFAR-100(C100)包含来自100个种别的图像。训练集和测试集分别包含50,000张和10,000张图像,我们将5,000张训练图像作为验证集。我们采用了一个标准的数据增强方案(镜像/平移),这在这两个数据集中被广泛使用。我们在数据集名称背面加上一个“+”表现这种数据增强方案(比方C10+)。在预处理方面,我们使用通道均值和标准差对数据举行归一化。在最终运行中,我们使用全部的50,000张训练图像,并在训练竣事时报告最终的测试错误率。
SVHN数据集包含32x32像素的彩色数字图像。训练集中有73,257张图像,测试集中有26,032张图像,尚有531,131张图像用于额外的训练。按照通常的做法,我们在没有举行任何数据增强的环境下使用全部的训练数据,并从训练集中分割出包含6,000张图像的验证集。我们选择在训练期间具有最低验证错误率的模型,并报告测试错误率。我们依照[42]的方法,将像素值除以255,使其处于[0,1]范围内。
ImageNet是ILSVRC 2012分类数据集,包含了1.2百万张用于训练的图像和5万张用于验证的图像,来自于1,000个种别。我们采用了与[8, 11, 12]中相同的数据增强方案来训练图像,并在测试时应用单一裁剪或10个裁剪,尺寸为224×224。按照[11, 12, 13]的方法,我们报告验证集上的分类错误率。
下图是作者在上述数据集中训练的结果展示。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |