赞
踩
密集连接的卷积网络
传统上为了加强CNN模型的表达能力有两种可行的办法,一是将CNN层数增加,变得越来越深;二则是将单层CNN的conv filters数目增加,变得越来越宽。但这两种都会导致训练参数的倍增,从而滑向overfitting的深渊。
后来Resnet等网络中关于identity mapping的引入,使得我们进一步意识到有效的CNN网络结构设计可以在网络训练参数一定的情况下达到一定的优良性能。
Resnet中通过使用skip learning可有效地将前面layers产生的activation maps传递给后面的layers使用,极大地规避了前向的参数爆炸(exploding)及后向的参数消失(vanishing)等问题。而在DenseNet中,作者进一步考虑加强CNN网络前面layers与后面layers之间的关联,从而设计出了DenseNet网络,以更充分地将后端layers处理得到的feature信息有效地为后面layers所复用,进而使得网络随着层数的增加,逐步在保有原来已得全局feature信息的基础上对其不断增加新的后面layers所产生的features信息。它的设计被实验证明可以有效地复用各layers之间的feature map计算,从而减少每层需用的训练参数。
DenseNet的网络结构则可描述为:Xl = Hl([X0, X1, …, Xl-1])。其中[X0, X1,…,Xl-1]分别表示与lth layer feature map size相同的前面若干个layers所生成的feature maps集合。
参考链接: https://www.jianshu.com/p/59bb32202353
最近的工作表明,如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则可以进行更深入,更准确和有效的训练。在本文中,我们接受了这一观察,并介绍了密集卷积网络(DenseNet),该网络以前馈方式将每一层连接到其他每一层。**具有L层的传统卷积网络具有L(L+1)/2个连接(每层与其后续层之间有一个连接),而我们的网络具有L个直接连接。**对于每一层,所有先前层的特征图都用作输入,而其自身的特征图则用作所有后续层的输入。 **DenseNets具有几个引人注目的优点:它们减轻了消失梯度的问题,增强了特征传播,鼓励了特征重用,并大大减少了参数数量。**我们在四个竞争激烈的对象识别基准测试任务(CIFAR-10,CIFAR-100,SVHN和ImageNet)上评估了我们提出的体系结构。 DenseNets在大多数方面都比最新技术有了显着改进,同时需要较少的计算来实现高性能。代码和预训练模型可在以下位置获得https://github.com/liuzhuang13/DenseNet.
卷积神经网络(CNN)已成为视觉对象识别的主要机器学习方法。 尽管它们最初是在20多年前引入的[18],但计算机硬件和网络结构的改进才使真正的深度CNN训练成为可能。 最初的LeNet5 [19]由5层组成,VGG具有19层[29],仅去年的高速公路网[34]和残差网络(ResNets)[11]才突破了100层障碍。
随着CNN越来越深入,出现了一个新的研究问题:随着有关输入或渐变的信息穿过许多层,当到达网络的末端(或起点)时,它可能消失并“洗掉”。 最近的许多出版物都解决了这一问题或相关问题。 ResNets [11]和Highway Networks [34]通过身份连接将信号从一层旁路到另一层。 随机深度[13]通过在训练过程中随机放置各层来缩短ResNets,以提供更好的信息和梯度流。 FractalNets [17]反复将几个并行层序列与不同数量的卷积块组合在一起,以获得较大的标称深度,同时保持网络中的许多短路径。 尽管这些不同的方法在网络拓扑和培训过程方面有所不同,但是它们都具有一个关键特征:它们创建了从早期层到后续层的短路径。
在本文中,我们提出了一种架构,该架构将这种见解提炼为简单的连通性模式:为了确保网络中各层之间的最大信息流,我们将所有层(具有匹配的特征图大小)直接相互连接。为了保留前馈特性,每个层都从所有先前的层中获取其他输入,并将其自身的特征图传递给所有后续层。图1示意性地说明了这种布局。至关重要的是,与ResNets相比,我们永远不会在将特征传递到图层之前通过求和来组合特征。相反,我们通过串联功能来组合它们。因此,“第l层具有”输入,由所有前面的卷积块的特征图组成。它自己的特征图将传递到所有L-′后续层。这将在L层网络中引入L(L + 1)/ 2个连接,而不是像传统体系结构那样仅引入L个。由于其密集的连接模式,我们将这种方法称为密集卷积网络(DenseNet)。
这种密集的连接模式的可能与直觉相反的效果是,与传统的卷积网络相比,它需要的参数更少,因为不需要重新学习冗余的特征图。可以将传统的前馈体系结构视为具有状态的算法,该状态会逐层传递。每一层都从其上一层读取状态并写入下一层,它不仅改变状态,还传递需要保留的信息。 ResNets [11]通过附加身份转换使信息保存变得明确。ResNets[13]的最新变化表明,许多层的贡献很小,实际上在训练过程中可以随意丢弃。这使得ResNet的状态类似于(展开的)递归神经网络[21],但是ResNet的参数数量实质上更大,因为每一层都有其自己的权重。我们提出的DenseNet体系结构明确区分了添加到网络中的信息和保留的信息。DenseNet层非常狭窄(例如,每层12个过滤器),仅向网络的“集体知识”添加少量特征图集网络并保持其余特征图不变-最终分类器根据网络中的所有特征图做出决定。
**除了更好的参数效率外,DenseNets的一大优势是它们改善了整个网络中的信息流和梯度,这使得它们易于训练。**每层都可以直接从损耗函数和原始输入信号访问梯度,从而导致隐式的深度监控[20]。这有助于训练更深层次的网络体系结构。此外,我们还观察到密集的连接具有正则化效果,从而减少了训练集大小较小的任务的过度拟合。
我们在四个竞争激烈的基准数据集(CIFAR-10,CIFAR-100,SVHN和ImageNet)上评估DenseNet。 与具有可比精度的现有算法相比,我们的模型通常需要更少的参数。此外,在大多数基准测试任务上,我们的性能明显优于当前最新的结果。
自从最初发现以来,对网络体系结构的探索一直是神经网络研究的一部分。最近神经网络流行度的复苏也使这一研究领域复兴。随着现代网络中层数的增加,扩大了架构之间的差异,并激发了对不同连通性模式的探索和对旧研究思想的重新审视。
在1980年代的神经网络文献中,已经研究了类似于我们提出的密集网络布局的级联结构[3]。他们的开拓性工作专注于以逐层方式训练的完全连接的多层感知器。最近,提出了使用间歇梯度下降训练的全连接级联网络[40]。尽管此方法对小型数据集有效,但仅可扩展到具有数百个参数的网络。在[9,23,31,41]中,发现通过跳过连接在CNN中使用多级功能对于各种视觉任务都是有效的。与我们的工作平行,[1]推导了具有与我们类似的跨层连接的网络的纯理论框架。
高速公路网络[34]是最早提供可有效训练具有100多个层的端到端网络的方法的体系结构之一。通过使用旁路和选通单元,可以毫无困难地优化具有数百层的公路网。旁路路径被认为是简化这些非常深层网络训练的关键因素。 ResNets [11]进一步支持了这一点,其中纯身份映射用作旁路路径。 ResNets在许多具有挑战性的图像识别,定位和检测任务(例如ImageNet和COCO对象检测)中取得了令人印象深刻的创纪录性能[11]。最近,提出了随机深度作为成功训练1202层ResNet的一种方法[13]。随机深度可通过在训练过程中随机放置各层来改善对深度残差网络的训练。这表明可能并不需要所有的层,并突显了深度(残留)网络中存在大量冗余。我们的论文在某种程度上受到了这一观察的启发。具有预激活功能的ResNets还可以训练具有> 1000层的最新网络[12]。
使网络更深的正交方法(例如借助跳过连接)是增加网络宽度。 GoogLeNet [36,37]使用“盗版模块”,将不同大小的过滤器生成的特征图连接起来。在[38]中,提出了具有广泛广义残差块的ResNets的变体。实际上,只要深度足够,只需增加ResNets每层中的过滤器数量就可以改善其性能[42]。 FractalNets还使用广泛的网络结构在多个数据集上取得了竞争性结果[17]。
DenseNets并未从极深或极深的架构中获得代表性的功能,而是通过特征重用来挖掘网络的潜力,从而生成易于训练且参数高效的浓缩模型。连接不同层学习到的特征图会增加后续层输入的变化,并提高效率。这构成了DenseNet和ResNet之间的主要区别。相较于Inception网络[36,37],它也将不同层次的特征连接在一起,DenseNets更简单,更高效。
还有其他显着的网络体系结构创新也产生了竞争结果。网络中的网络(NIN)[22]结构将微多层感知器包含到卷积层的过滤器中,以提取更复杂的特征。在深度监督网络(DSN)[20]中,直接对内部层进行监督
通过辅助分类器,可以增强早期图层接收到的梯度。 Ladder Networks [27,25]将横向连接引入自动编码器中,从而在半监督学习任务上产生了令人印象深刻的准确性。[39]中,提出了Deep-Fused Nets(DFNs)通过组合不同基础网络的中间层来改善信息流。用最小化重建损失的途径增强网络也可以改善图像分类模型[43]。
考虑通过卷积网络传递的单个图像x0。该网络包含L个层,每个层执行一个非线性变换H l(·),其中“索引该层”。 H l(·)可以是诸如批归一化(BN)[14],整流线性单位(ReLU)[6],合并[19]或卷积(Conv)之类的运算的复合函数。我们将第l层的输出表示为xl。
ResNets。传统的卷积前馈网络将第l层的输出作为输入连接到第(l + 1)层[16],这会导致以下层转换:x l = H l(x 1-1)。 ResNets [11]添加了一个跳过连接,该连接使用身份函数绕过非线性变换:
ResNets的一个优点是,梯度可以直接通过身份函数从后面的层流到前面的层。但是,标识函数和H的输出通过求和相结合,这可能会阻碍网络中的信息流。
密集的连接。为了进一步改善各层之间的信息流,我们提出了一种不同的连接模式:我们引入了从任何层到所有后续层的直接连接。图1示意性地说明了所得DenseNet的布局。因此,第l层接收所有先前的层x 0,…,xl-1的特征图作为输入:
其中[x 0,x 1,…,xl-1]指的是在0,…,-1层中生成的要素图的串联。由于其密集的连接性,我们将此网络架构称为密集卷积网络(DenseNet)。为了易于实施,我们将等式中H的多个输入(·)连接起来。 (2)成单个张量。
复合功能。根据[12],我们将Hl(·)定义为三个连续操作的复合函数:批归一化(BN)[14],然后是整流线性单元(ReLU)[6]和3×3卷积(转换)。
合并层。等式中使用的串联操作。 (2)当特征图的大小发生变化时是不可行的,但是,卷积网络的重要部分是降低特征图大小的下采样层。为了便于在我们的体系结构中进行下采样,我们将网络划分为多个密集连接的密集块;见图2。我们将块之间的层称为过渡层,它们进行卷积和池化。我们的实验中使用的过渡层包括批处理归一化层和1×1卷积层,然后是2×2平均池化层。
增长率。如果每个函数H1产生k个特征图,则得出第l层具有k 0 + k×(1-1)个输入特征图,其中k 0是输入层中的通道数。 DenseNet与现有网络体系结构之间的重要区别是DenseNet可以具有非常狭窄的层,例如k =12。我们将超参数k称为网络的增长率。我们在第4节中表明,相对较小的增长率足以在我们测试的数据集上获得最新的结果。对此的一种解释是,每个层在其块中都可以访问所有前面的特征图,因此可以访问网络的“集体知识”。可以将特征图视为网络的全局状态。每层将自己的k个特征图添加到此状态。增长率决定每一层为全球状态贡献多少新信息。写入后的全局状态可以在网络中的任何位置进行访问,并且与传统的网络体系结构不同,无需逐层复制它。
Bottleneck 层。尽管每个图层仅生成k个输出要素图,但通常具有更多的输入。在[37,11]中已经指出,可以在每个3×3卷积之前引入1×1卷积作为Bottleneck 层,以减少输入特征图的数量,从而提高计算效率。我们发现此设计对DenseNet特别有效,并且我们将具有此类Bottleneck 层的网络称为Hl的BN-ReLU-Conv(1×1)-BN-ReLU Conv(3×3)版本,称为DenseNet -B在我们的实验中,我们让每个1×1卷积产生4k个特征图。
压缩。为了进一步提高模型的紧凑性,我们可以减少过渡层的特征图数量。如果密集块包含m个特征图,则让以下过渡层生成bθmc输出特征图,其中0 <θ≤1称为压缩因子。当θ= 1时,跨过渡层的特征图数量保持不变。我们将θ<1的DenseNet称为DenseNet-C,并在实验中将θ设置为0.5。当同时使用Bottleneck <过渡层和θ<1时,我们将模型称为DenseNet-BC。
实施细节。在除ImageNet之外的所有数据集上,我们的实验中使用的DenseNet具有三个密集块,每个密集块具有相等的层数。在进入第一个密集块之前,对输入图像执行16个卷积(或DenseNet-BC增长率的两倍)的卷积。对于内核大小为3×3的卷积层,输入的每一侧都用一个像素补零,以保持特征图的大小固定。我们使用1×1卷积,然后使用2×2平均池作为两个连续密集块之间的过渡层。在最后一个密集块的末尾,执行全局平均池化,然后附加softmax分类器。三个密集块中的特征图大小分别为32×32、16×16和8×8。我们使用配置为{L = 40,k = 12},{L = 100,k = 12}和{L = 100,k = 24}的基本DenseNet结构进行实验。对于DenseNet-BC,评估配置为{L = 100,k = 12},{L = 250,k = 24}和{L = 190,k = 40}的网络。
在ImageNet上的实验中,我们使用DenseNet-BC结构在224×224个输入图像上具有4个密集块。初始卷积层包括2k卷积,大小为7×7,步幅为2;其他所有图层的要素贴图数量也取自设置k。表1显示了我们在ImageNet上使用的确切网络配置。
我们以经验的方式展示了DenseNet在多个基准数据集上的有效性,并与最新的体系结构(尤其是ResNet及其变体)进行了比较。
CIFAR。两个CIFAR数据集[15]由32×32像素的彩色自然图像组成。 CIFAR-10(C10)包含10个类别的图像和100个类别的CIFAR-100(C100)的图像。训练集和测试集分别包含50,000张和10,000张图像,我们保留5,000张训练图像作为验证集。我们采用了标准的数据扩充方案(镜像/移位),该方案广泛用于这两个数据集[11、13、17、22、28、20、32、34]。我们在数据集名称(例如C10 +)末尾用“ +”号表示此数据扩充方案。对于预处理,我们使用通道平均值和标准偏差对数据进行归一化。对于最终运行,我们使用所有50,000张训练图像,并在训练结束时报告最终测试错误。
SVHN。街景门牌号码(SVHN)数据集[24]包含32×32彩色数字图像。训练集中有73,257张图像,测试集中有26,032张图像,而其他训练有531,131张图像。按照常规做法[7、13、20、22、30],我们使用所有训练数据而没有任何数据扩充,并从训练集中分割出包含6,000张图像的验证集。我们选择训练期间验证误差最小的模型,并报告测试误差。我们遵循[42]并将像素值除以255,因此它们在[0,1]范围内。
ImageNet。 ILSVRC 2012分类数据集[2]包含来自1,000个类别的120万张用于训练的图像和50,000张用于验证的图像。我们采用与[8、11、12]中相同的数据增强方案来训练图像,并在测试时应用大小为224×224的单作物或10作物。在[11,12,13]之后,我们报告了验证集上的分类错误。
所有网络均使用随机梯度下降(SGD)进行训练。在CIFAR和SVHN上,我们分别使用批量大小64训练300和40个纪元。初始学习率设置为0.1,然后按训练时期总数的50%和75%除以10。在ImageNet上,我们训练90个时期的模型,批处理大小为256。学习率最初设置为0.1,然后在时期30和60降低10倍。请注意,天真的DenseNet实现可能会导致内存效率低下。为了减少GPU上的内存消耗,请参考我们有关DenseNets的内存高效实现的技术报告[26]。
遵循[8],我们使用10 -4的 weight decay权重衰减和0.9的momentum[35],而没有衰减。我们采用[10]引入的权重初始化。对于没有数据增强的三个数据集,即C10,C100和SVHN,我们在每个卷积层(第一个卷积层除外)之后添加一个丢失层[33],并将丢失率设置为0.2。对于每个任务和模型设置,仅对测试错误进行一次评估。
我们提出了一种新的卷积网络体系结构,我们称之为密集卷积网络(DenseNet)。它在任何两个具有相同要素地图大小的图层之间引入直接连接。我们证明了DenseNets自然可以扩展到数百个层,而没有任何优化困难。在我们的实验中,DenseNets倾向于随着参数数量的增加而不断提高精度,而没有任何性能下降或过度拟合的迹象。在多种设置下,它可以在多个竞争激烈的数据集上获得最先进的结果;此外,DenseNets需要更少的参数和更少的计算来实现最先进的性能。因为我们采用了针对残差网络优化的超参数设置在我们的研究中,我们相信可以通过更详细地调整超参数和学习率计划来获得DenseNets准确性的进一步提高。
遵循简单的连接规则,DenseNets自然地集成了身份映射,深度监控和多样化深度的属性。它们允许在整个网络中重复使用功能,因此可以学习更紧凑的模型,并且根据我们的实验,可以更精确地学习模型。由于其紧凑的内部表示形式和减少的特征冗余,DenseNets可能是用于基于卷积特征(例如[4、5])的各种计算机视觉任务的良好特征提取器。我们计划在以后的工作中使用DenseNets研究这种功能转移。
致谢。 NSF III-1618134,III-1526012,IIS-1149882,海军研究补助金办公室N00014-17-1-2175和比尔和梅琳达·盖茨基金会在某种程度上为作者提供了支持。 GH得到中国博士后理事会国际博士后交流奖学金计划(No.20150015)的支持。 ZL得到了中国赠款国家基础研究计划2011CBA00300、2011CBA00301,NSFC 61361136003的支持。我们也感谢Daniel Sedra,Geoff Pleiss和Yu Sun进行了许多有见地的讨论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。