深度学习网络模型设计总结

技术讨论 小白学CV ⋅ 于 2个月前 ⋅ 1496 阅读

看到一篇东尼大佬的好文,在这里记录分享一下。
转自公众号CVPR
摘要:目前在深度学习领域主要有两个研究方向:一、研究强大、复杂的模型网络和实验方法,追求更高的性能,在保证精度的前提下去优化模型的效率,以提升模型的准确率为目标;二、研究实时、简单的模型网络和实验方法,追求更高的效率,在保证效率的前提下提升模型的精度,以追求模型的实时性为目标。复杂的模型的容量大,在数据量足够的话能够找到更优的解,简单的模型计算量小,对于同样的任务相比于复杂模型更有效率。在实际应用中,在追求精度的时候我们也需要考虑在不损失模型精度的情况下进一步优化网络结构,提高网络参数的利用率,在追求速度的时候我们同样需要考虑在保证实时性的前提下进一步提升模型的精度。总之,在设计深度学习网络模型的时候,我们不仅需要考虑模型的效率,而且需要考虑模型的精度,减少模型参数和计算冗余,提高模型参数和数值计算的利用率。

I. 实时性网络设计

01加速网络结构设计

1.1 分组卷积

分组卷积即将输入的feature maps分成不同的组(沿channel维度进行分组),然后对不同的组分别进行卷积操作,即每一个卷积核至于输入的feature maps的其中一组进行连接,而普通的卷积操作是与所有的feature maps进行连接计算。分组数k越多,卷积操作的总参数量和总计算量就越少(减少k倍)。然而分组卷积有一个致命的缺点就是不同分组的通道间减少了信息流通,即输出的feature maps只考虑了输入特征的部分信息,因此在实际应用的时候会在分组卷积之后进行信息融合操作,接下来主要讲两个比较经典的结构,ShuffleNet[1]和MobileNet[2]结构。

file
如上图所示,图a是一般的group convolution的实现效果,其造成的问题是,输出通道只和输入的某些通道有关,导致全局信息 流通不畅,网络表达能力不足。图b就是shufflenet结构,即通过均匀排列,把group convolution后的feature map按通道进行均匀混合,这样就可以更好的获取全局信息了。 图c是操作后的等价效果图。在分组卷积的时候,每一个卷积核操作的通道数减少,所以可以大量减少计算量。

file
如上图所示,mobilenet采用了depthwise separable convolutions的思想,采用depthwise (或叫channelwise)和1x1 pointwise的方法进行分解卷积。其中depthwise separable convolutions即对每一个通道进行卷积操作,可以看成是每组只有一个通道的分组卷积,最后使用开销较小的1x1卷积进行通道融合,可以大大减少计算量。


1.2 分解卷积

分解卷积,即将普通的kxk卷积分解为kx1和1xk卷积,通过这种方式可以在感受野相同的时候大量减少计算量,同时也减少了参数量,在某种程度上可以看成是使用2k个参数模拟k * k 个参数的卷积效果,从而造成网络的容量减小,但是可以在较少损失精度的前提下,达到网络加速的效果。

file

上图是在图像语义分割任务上取得非常好的效果的ERFNet[3]的主要模块,称为NonBottleNeck结构借鉴自ResNet[4]中的Non-Bottleneck结构,相应改进为使用分解卷积替换标准卷积,这样可以减少一定的参数和计算量,使网络更趋近于efficiency。


1.3 Bottleneck结构

file
上图为ENet[5]中的Bottleneck结构,借鉴自ResNet中的Bottleneck结构,主要是通过1x1卷积进行降维和升维,能在一定程度上能够减少计算量和参数量。其中1x1卷积操作的参数量和计算量少,使用其进行网络的降维和升维操作(减少或者增加通道数)的开销比较小,从而能够达到网络加速的目的,使得ENet在图像分割领域是目前最快的分割网络(仅限于CityScapes[6]榜单),同时精度也在可以接受的范围内。


1.4 C.ReLU[7]结构

file
C.ReLU来源于CNNs中间激活模式引发的。输出节点倾向于是"配对的",一个节点激活是另一个节点的相反面,即其中一半通道的特征是可以通过另外一半通道的特征生成的。根据这个观察,C.ReLU减少一半输出通道(output channels)的数量,然后通过其中一半通道的特征生成另一半特征,这里使用 negation使其变成双倍,最后通过scale操作使得每个channel(通道)的斜率和激活阈值与其相反的channel不同。

注:目前用的不多,效果有待进一步验证(中科院基于该结构做了一些工作)。


1.5 SqueezeNet[8]结构

file

SqueezeNet思想非常简单,就是将原来简单的一层conv层变成两层:squeeze层+expand层,各自带上Relu激活层。在squeeze层里面全是1x1的卷积kernel,数量记为S11;在expand层里面有1x1和3x3的卷积kernel,数量分别记为E11和E33,要求S11 < input map number。expand层之后将 1x1和3x3的卷积output feature maps在channel维度拼接起来。


02模型裁剪与稀疏化

2.1 模型剪枝

结构复杂的网络具有非常好的性能,其参数也存在冗余,因此对于已训练好的模型网络,可以寻找一种有效的评判手段,将不重要的connection或者filter进行裁剪来减少模型的冗余。


剪枝方法基本流程如下:

  • 正常流程训练一个神经网络,得到训练好的model;
  • 确定一个需要剪枝的层,一般为全连接层,设定一个裁剪阈值或者比例。实现上,通过修改代码加入一个与参数矩阵尺寸一致的mask矩阵。mask矩阵中只有0和1,实际上是用于重新训练的网络。
  • 重新训练微调,参数在计算的时候先乘以该mask,则mask位为1的参数值将继续训练通过BP调整,而mask位为0的部分因为输出始终为0则不对后续部分产生影响。
  • 输出模型参数储存的时候,因为有大量的稀疏,所以需要重新定义储存的数据结构,仅储存非零值以及其矩阵位置。重新读取模型参数的时候,就可以还原矩阵。


神经网络的参数量往往非常多,而其中大部分的参数在训练好之后都会趋近于零,对整个网络的贡献可以忽略不计。通过剪枝操作可以使网络变得稀疏,需要存储的参数量减少,但是剪枝操作同样会降低整个模型的容量(参数量减少),在实际训练时,有时候会通过调整优化函数,诱导网络去利用模型的所有参数,实质上就是减少接近于零的参数量。最后,对于如何自动设定剪枝率,如何自适应设定剪枝阈值,在这里不做过多讨论。


2.2 核的稀疏化

核的稀疏化,是在训练过程中,对权重的更新加以正则项进行诱导,使其更加稀疏,使大部分的权值都为0。核的稀疏化方法分为regular和irregular,regular的稀疏化后,裁剪起来更加容易,尤其是对im2col的矩阵操作,效率更高;而irregular的稀疏化会带来不规则的内存访问,参数需要特定的存储方式,或者需要平台上稀疏矩阵操作库的支持,容易受到带宽的影响,在GPU等硬件上加速并不明显。

论文[10]提出了Structured Sparsity Learning的学习方式,能够学习一个稀疏的结构来降低计算消耗,所学到的结构性稀疏化能够有效的在硬件上进行加速。由于在GEMM中将weight tensor拉成matrix的结构(即im2col操作),因此可以通过将filter级与shape级的稀疏化进行结合来将2D矩阵的行和列稀疏化,再分别在矩阵的行和列上裁剪掉剔除全为0的值可以来降低矩阵的维度从而提升模型的运算效率。该方法是regular的方法,压缩粒度较粗,可以适用于各种现成的算法库,但是训练的收敛性和优化难度不确定。

论文[11]提出了一种动态的模型裁剪方法,包括以下两个过程:pruning和splicing,其中pruning就是将认为不中要的weight裁掉,但是往往无法直观的判断哪些weight是否重要,因此在这里增加了一个splicing的过程,将哪些重要的被裁掉的weight再恢复回来。该算法采取了剪枝与嫁接相结合、训练与压缩相同步的策略完成网络压缩任务。通过网络嫁接操作的引入,避免了错误剪枝所造成的性能损失,从而在实际操作中更好地逼近网络压缩的理论极限。属于irregular的方式,但是权值(网络连接)重要性评估在不同的模型以及不同的层中无法确定,并且容易受到稀疏矩阵算法库以及带宽的限制,在相关GPU等硬件环境下加速不明显。


03量化加速

3.1 二值权重网络[12]

二值权重网络(BWN)是一种只针对神经网络系数二值化的二值网络算法。BWN只关心系数的二值化,并采取了一种混和的策略,构建了一个混有单精度浮点型中间值与二值权重的神经网络--BinaryConnect。BinaryConnect在训练过程中针对特定层的权重进行数值上的二值化,即把原始全精度浮点权重强行置为-1、+1两个浮点数,同时不改变网络的输入和层之间的中间值,保留原始精度。而真正在使用训练好的模型时,由于权重的取值可以抽象为-1、+1,因此可以采用更少的位数进行存放,更重要的是,很显然权重取值的特点使得原本在神经网络中的乘法运算可以被加法代替。

乘法运算转变为加法的好处在于:计算机底层硬件在实现两个n位宽数据的乘法运算时必须完成2 * n位宽度的逻辑单元处理,而同样数据在执行加法时只需要n个位宽的逻辑单元处理,因此理论上可以得到2倍的加速比。


3.2 二值神经网络[13]

由于BWN取得的成功,人们开始尝试对二值网络进行更加深入的研究改造,并试图从中获得更大的性能提升。其中,最重要的基础工作是Matthieu Courbariaux 等人在几个月后提出的二值神经网络(BNN)。这一方法在BWN的基 础上进一步加大二值化力度,进而完全改变了整个神经网络中的计算方式,将所需的计算量压缩到极低的水平。

BNN要求不仅对权重做二值化,同时也要对网络中间每层的输入值进行二值化,这一操作使得所有参与乘法运算的数据都被强制转换为“-1”、“+1”二值。我们知道计算机的硬件实现采用了二进制方式,而神经网络中处理过的二值数据 恰好与其一致,这样一来就可以考虑从比特位的角度入手优化计算复杂度。

BNN也正是这样做的:将二值浮点数“-1”、“+1”分别用一个比特“0”、“1”来表示,这样,原本占用32个比特位的浮点数现在只需1个比特位就可存放,稍加处理就可以实现降低神经网络前向过程中内存占用的效果。同时,一对“-1”、“+1”进行乘法运算,得到的结果依然是“-1”、“+1”,通过这一特性就可将原本的浮点数乘法用一个比特的位运算代替,极大的压缩了计算量,进而达到提高速度、降低能耗的目的。然而,大量的实验结果表明,BNN只在小规模数据集上取得了较好的准确性,在大规模数据集上则效果很差。


3.3 同或网络14

XNOR-net是一种针对CNN的简单、高效、准确近似方法,它的核心思想是:在BNN的基础上,针对二值化操作给每一层数据造成的误差,引入最佳的近似因子,以此来弥补二值化带来的精度损失,提高训练精度的同时还能保持BNN在速度和能耗方面的优势。

在BNN中,无论对权重二值化还是对中间值二值化,都会给本身的全精度数据造成严重的精度损失。而我们知道全精度数据本身是可以得到较好的训练效果的,因此,减小二值化带来的精度损失以达到全精度时能够实现的良好效果是最直接的思路。XNOR-net的解决办法是引入近似因子,并且针对权重和中间值分别引入近似因子,在一次计算后将近似因子添加到计算结果中去,通过少量的额外计算来弥补尽可能多的精度损失。

同时,如果卷积的所有操作数都是二值的,则可以通XNOR和位计数操作估计卷积,如下图所示:
file

如上图第三和第四行所示,正常两个矩阵之间的点乘如果用在两个二值矩阵之间,那么就可以将点乘换成XNOR-Bitcounting operation,从32位浮点数之间的操作直接变成1位的XNOR门操作,这就是加速的核心。

同或网络在大规模数据集上的效果取得了巨大进步,其中在ImageNet上的正确性只比全精度的相同网络低十个百分点。但是,在很多复杂任务中,这一结果依然不能满足生产生活的需要。


3.4 三值权重网络[15]

三值网络主要是指三值权重网络(TWN)。二值网络中精度的损失主要来自于 对数据强置为(-1, +1)时与本身全精度之间产生的误差,而神经网络中训练得到的 权重服从均值为 0 的正态分布,这就意味着绝大部分权重在二值后会产生将近1的误差,这对计算结果造成的影响将是十分巨大的。为了解决这一问题,提高二值网络的正确率,Fengfu Li和 Bo Zhang等人在二值的基础上提出了TWN。

TWN的核心在于计算出量化阈值Δ,将数值大小处于阈值内的数据强置为0,其他值依然强置为-1或+1,对于阈值的计算,作者也给了论证,能够最小三值化误差所带来的精度损失,还能够使神经网络权重稀疏化,减小计算复杂度的同时也能得到更好的准确率和泛化能力。在运行效率上,TWN与BWN相当,但是准确率却有着明显的提升。


3.5 量化神经网络[16]

Song Han等人在量化神经网络(QNN)方面做了大量研究工作。这一网络的主要目的是裁剪掉数据的冗余精度,原本32位精度的浮点数由“1 8 23”的结构构成,裁剪的方法是根据预训练得到的全精度神经网络模型中的数据分布,分别对阶码和位数的长度进行适当的减少。实验证明,对于大部分的任务来说,6位比特或者8位比特的数据已经能够保证足够好的测试准确率。

QNN在实际的操作中通常有两种应用方式,一种是直接在软件层面实现整形的量化,通过更少的数据位数来降低神经网络在使用时计算的复杂度;另一种重要的应用是针对于AI专用芯片的开发。

由于芯片开发可以设计各种位宽的乘法器,因此将神经网络中32位的全精度数据可以被处理成6位或8位的浮点数,同时结合硬件指定的乘法规则,就可以在硬件上实现更高的运算效率,达到实时运行深度神经网络的目的。这也是QNN最大的理论意义。但是如果从软件角度而非硬件角度出发,只是将浮点数量化成整形数,就没有办法显著地降低计算复杂度(除非对整形再进行量化),也就无法达到在低配硬件环境上实时运行深度神经网络的目的。因此,在软件设计的层面上,QNN相比BNN并没有特别明显的优势。

04总结

本文主要介绍了三种主流的深度学习模型压缩和模型加速的方向,分别为:加速网络结构设计,即通过优化网络结构的设计去减少模型的冗余和计算量;模型裁剪和稀疏化,即通过对不重要的网络连接进行裁剪,模型裁剪主要针对已经训练好的模型,而核的稀疏化主要是在训练的过程中进行诱导训练;量化加速,即通过对网络中的浮点值进行量化处理,使得浮点数计算转换为位操作(或者小整数计算),不仅能够减少网络的存储,而且能够大幅度进行加速,使得神经网络在CPU上的运行成为可能!当然,深度学习模型压缩和加速的方法不局限于我在本文中的介绍,还有其他很多类似的压缩和加速算法,如递归二值网络等。


II. 高精度网络设计

01ImageNet网络模型浅析

ImageNet项目于2007年由斯坦福大学华人教授李飞飞创办,目标是收集大量带有标注信息的图片数据供计算机视觉模型训练。ImageNet拥有1500万张标注过的高清图片,总共拥有22000类,其中约有100万张标注了图片中主要物体的定位边框。接下来我们来介绍在ImageNet数据集上取得很好结果的几个经典的卷积网络结构,依此为AlexNet、VGGNet、Google Inception Net、ResNet、DenseNet,这五种网络依照出现的先后顺序排列,深度和复杂度也依次递进。

1.1 AlexNet

file

AlexNet是现代深度CNN的奠基之作。AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等深度学习技巧。同时AlexNet拥有5个卷积层,其中3个卷积层后面连接了最大池化层,最后还有3个全连接层。AlexNet以显著的优势赢得了竞争激烈的ILSVRC 2012比赛,top-5的错误率降低至了16.4%,相比第二名的成绩26.2%错误率有了巨大的提升。AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。


AlexNet主要使用到的新技术点如下:

  • 成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。
  • 训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。
  • 在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
  • 提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
  • 使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX?580?GPU进行训练,单个GTX?580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。
  • 数据增强,随机地从256x256的原始图像中截取224x224大小的区域(以及水平翻转的镜像),相当于增加了(256224)2x2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。


1.2 VGGNet

VGGNet是牛津大学计算机视觉组和Google DeepMind公司的研究员一起研发的深度卷积神经网络。VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠33的小型卷积核和22的最大池化层,VGGNet成功地构筑了19层深的卷积神经网络。VGGNet相比之前state-of-the-art的网络结构,错误率大幅下降,并取得了ImageNet 2014比赛分类项目的第2名和定位项目的第1名。VGGNet中全部使用了33的卷积核和22的池化核,通过不断加深网络结构来提升性能。


该网络结构在对比的同时总结了以下几个观点:

  • LRN层作用不大;神经网络结构越深效果越好;
  • 11卷积不如33的卷积有效,大一些的卷积核可以学习到更大的空间特征;
  • 3个3 3的卷积层拥有比1个7 7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数,而后者只有一次),使得CNN对特征的学习能力更强。


1.3 GoogLeNet

GoogLeNet提出了一种新的网络模块(inception module),如图所示,它既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。Inception的主要思想是用稠密的模板覆盖卷积神经网络中最优的局部稀疏结构,使之能够近似地表示原来的局部稀疏结构。Arora等人对网络结构的最后一层做相关性统计,将相关性高的聚合成簇,作为下一层的单元,并与上一层相连。较低的网络层(靠近输入图片)中的单元集中在某一些局部区域,也就是说,最终在单个区域内会有大量簇,可以在下一层通过 的卷积过滤器覆盖,当然,也可以用更大尺寸的卷积过滤器来覆盖更大的区域,从而减少过滤器的数量。图 3-1所示的 Inception 结构采用了1x1,3x3和5x5的卷积过滤器,并额外地添加一个可选的池化操作,以增强效果。
file

然而这种结构最大的问题是由于大量的滤波器存在,即使最后几个网络层中的卷积滤波器数量适中,计算量也会非常大。如果用这种结构覆盖最优稀疏结构,计算效率将非常低下。所以,GoogLeNet 采用的 inception 模块在上面的基础上做出了改进,在计算量较大的3x3和5x5的卷积过滤器之前,先用1x1的卷积过滤器降维,并修正线性特性。

GoogLeNet采用了模块化的结构,方便增添和修改,一共约为100层,其中带参数的层有22层,全连接层输出1024位的向量。GoogLeNet的设计者在训练网络时,为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度,而在测试时,再将两个额外的softmax去掉。GoogLeNet在ImageNet 2014比赛中同时取得了检测任务和分类任务的第一名。

1.4 ResNet

ResNet(Residual Neural Network)由微软研究院的Kaiming He等4名华人提出,通过使用Residual Unit成功训练152层深的神经网络,在ImageNet 2015比赛中获得了冠军,取得3.57%的top-5错误率,同时参数量却比VGGNet低,效果非常突出。
在不断加神经网络的深度时,会出现一个Degradation的问题,即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。这并不是过拟合的问题,因为不光在测试集上误差增大,训练集本身误差也会增大。假设有一个比较浅的网络达到了饱和的准确率,那么后面再加上几个的全等映射层,起码误差不会增加,即更深的网络不应该带来训练集上误差上升。而这里提到的使用全等映射直接将前一层输出传到后面的思想,就是ResNet的灵感来源。假定某段神经网络的输入是x,期望输出是H(x),如果我们直接把输入x传到输出作为初始结果,那么此时我们需要学习的目标就是F(x)=H(x)-x。基本模块如下图所示:
file

传统的卷积层或全连接层在信息传递时,或多或少会存在信息丢失、损耗等问题。ResNet在某种程度上解决了这个问题,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络则只需要学习输入、输出差别的那一部分,简化学习目标和难度。在使用了ResNet的结构后,可以发现层数不断加深导致的训练集上误差增大的现象被消除了,ResNet网络的训练误差会随着层数增大而逐渐减小,并且在测试集上的表现也会变好。


1.5 DenseNet

file
这个结构主要参考了Highway Networks,Residual Networks(ResNets)以及GoogLeNet,通过加深网络结构,提升分类结果。加深网络结构首先需要解决的是梯度消失问题,解决方案是:尽量缩短前层和后层之间的连接。比如上图中,H4层可以直接用到原始输入信息X0,同时还用到了之前层对X0处理后的信息,这样能够最大化信息的流动。反向传播过程中,X0的梯度信息包含了损失函数直接对X0的导数,有利于梯度传播。

DenseNet使得网络更窄,参数更少,很大一部分原因得益于这种dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。“Each layer has direct access to the gradients from the loss function and the original input signal, leading to an implicit deep supervision.”即每一个隐层都能直接连接输入和损失函数,损失函数能够对其进行有效的监督,前面提到过梯度消失问题在网络深度越深的时候越容易出现,原因就是输入信息和梯度信息在很多层之间传递导致的,而现在这种dense connection相当于每一层都直接连接input和loss,因此就可以减轻梯度消失现象,这样更深网络不是问题。


至于DenseNet的优点,总结有以下三点:

  • 充分利用了feature,加强了feature的传递,避免了feature在网络的不同层冗余出现。
  • Dense Connection,路径增多,起到了deep supervision的效果,即损失约束到每一个隐层的路径很短,同时也进一步减轻了梯度消失问题。
  • 利用bottleneck layer,Translation layer, deep supervision(对隐层监督)以及较小的growth rate使得网络变窄,参数减少,有效抑制了过拟合,同时计算量也减少了。


02设计高精度网络的几点思考

网络更深,特征在进行多次线性变换之后表达能力更强,可以通过上一节ImageNet冠军网络的发展脉络可以看出;

网络更宽,即融合多视角、多尺度的信息,使模型能够在不同视角进行学习,多视角特征进行融合的过程相当于模型融合的过程,最具代表性的事GoogLeNet的Inception结构;

密集连接,网络的路径更多,既相当于是多模型融合的结果,又能够对网络的隐层进行直接或者较为直接的监督(deep supervision),从而提高模型的泛化能力和对参数的利用效率;

感受野更大,对于网络中每个feature能够感知原图的区域越大,从而该特征融合的原图特征越多,表征能力也就越强;

融合全局信息,对于每个特征位置都能够考虑全局的信息,从而能够进行更好的决策,提高网络的性能。



参考论文

[1] Zhang X, Zhou X, Lin M, et al. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices[J]. 2017.

[2] Howard A G, Zhu M, Chen B, et al. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications[J]. 2017.

[3] Romera E, Álvarez J M, Bergasa L M, et al. ERFNet: Efficient Residual Factorized ConvNet for Real-Time Semantic Segmentation[J]. IEEE Transactions on Intelligent Transportation Systems, 2017, PP(99):1-10.

[4] He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C] Computer Vision and Pattern Recognition. IEEE, 2016:770-778.

[5] Paszke A, Chaurasia A, Kim S, et al. ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation[J]. 2016.

[6] Cordts M, Omran M, Ramos S, et al. The Cityscapes Dataset for Semantic Urban Scene Understanding[C] Computer Vision and Pattern Recognition. IEEE, 2016:3213-3223.

[7] W. Shang, K. Sohn, D. Almeida, and H. Lee. Understanding and improving convolutional neural networks via concatenated rectified linear units. In ICML, 2016.

[8] Treml M, Arjona-Medina J, Unterthiner T, et al. Speeding up Semantic Segmentation for Autonomous Driving[C] NIPS 2016 Workshop - MLITS. 2016.

[9] S. Han et al. Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding. ICLR, 2016.

[10] Wen W, Wu C, Wang Y, et al. Learning Structured Sparsity in Deep Neural Networks[J]. 2016.

[11] Guo Y, Yao A, Chen Y. Dynamic Network Surgery for Efficient DNNs[C] NIPS. 2016.

[12] Courbariaux M, Bengio Y, David J P. BinaryConnect: training deep neural networks with binary weights during propagations[J]. 2015:3123-3131.

[13] Courbariaux M, Hubara I, Soudry D, et al. Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1[J]. 2016.

[14] Rastegari M, Ordonez V, Redmon J, et al. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks[J]. 2016:525-542.

[15] Li F, Zhang B, Liu B. Ternary Weight Networks[J]. 2016.

[16] Hubara I, Courbariaux M, Soudry D, et al. Quantized Neural Networks: Training Neural Networks with Low Precision Weights and Activations[J]. 2016.

[17] Huang G, Liu Z, et al. Densely Connected Convolutional Networks[J]. CVPR 2017.

[18] Yu, F., Koltun, V.: Multi-scale context aggregation by dilated convolutions. ICLR 2016

[19] Wang P, Chen P, Yuan Y, et al. Understanding Convolution for Semantic Segmentation. 2017

[20] Romera E, et al. Efficient ConvNet for real-time semantic segmentation. IEEE 2017.

大白

本帖已被设为精华帖!
本帖由 Admin 于 1个月前 加精
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!