AI博士笔记系列推荐:周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载连接程序员
本文为联盟学习笔记网络
参与:王博kings,Sophia架构
本文涉及论文已打包,公众号【计算机视觉联盟】后台回复“9079”获取下载连接!
计算机视觉是将图像和视频转换成机器可理解的信号的主题。利用这些信号,程序员能够基于这种高级理解来进一步控制机器的行为。在许多计算机视觉任务中,图像分类是最基本的任务之一。它不只能够用于许多实际产品中,例如Google Photo的标签和AI内容审核,并且还为许多更高级的视觉任务(例如物体检测和视频理解)打开了一扇门。自从深度学习的突破以来,因为该领域的快速变化,初学者常常发现它太笨拙,没法学习。与典型的软件工程学科不一样,没有不少关于使用DCNN进行图像分类的书籍,而了解该领域的最佳方法是阅读学术论文。可是要读什么论文?我从哪提及呢?在本文中,我将介绍10篇最佳论文供初学者阅读。经过这些论文,咱们能够看到该领域是如何发展的,以及研究人员如何根据之前的研究成果提出新的想法。可是,即便您已经在此领域工做了一段时间,对您进行大范围整理仍然颇有帮助。框架
梯度学习在于文档识别中的应用 机器学习
摘自“ 基于梯度的学习应用于文档识别” 性能
LeNet于1998年推出,为使用卷积神经网络进行将来图像分类研究奠基了基础。许多经典的CNN技术(例如池化层,彻底链接的层,填充和激活层)用于提取特征并进行分类。借助均方偏差损失功能和20个训练周期,该网络在MNIST测试集上能够达到99.05%的精度。即便通过20年,仍然有许多最早进的分类网络整体上遵循这种模式。学习
深度卷积神经网络的ImageNet分类 测试
摘自“ 具备深度卷积神经网络的ImageNet分类” spa
尽管LeNet取得了不错的成绩并显示了CNN的潜力,但因为计算能力和数据量有限,该领域的发展停滞了十年。看起来CNN只能解决一些简单的任务,例如数字识别,可是对于更复杂的特征(如人脸和物体),带有SVM分类器的HarrCascade或SIFT特征提取器是更可取的方法。 设计
可是,在2012年ImageNet大规模视觉识别挑战赛中,Alex Krizhevsky提出了基于CNN的解决方案来应对这一挑战,并将ImageNet测试装置的top-5准确性从73.8%大幅提升到84.7%。他们的方法继承了LeNet的多层CNN想法,可是大大增长了CNN的大小。从上图能够看到,与LeNet的32x32相比,如今的输入为224x224,与LeNet的6相比,许多卷积内核具备192个通道。尽管设计变化不大,但参数变化了数百次,但网络的捕获和表示复杂特征的能力也提升了数百倍。为了进行大型模型训练,Alex使用了两个具备3GB RAM的GTX 580 GPU,这开创了GPU训练的先河。一样,使用ReLU非线性也有助于下降计算成本。
除了为网络带来更多参数外,它还经过使用 Dropout层探讨了大型网络带来的过拟合问题 。其局部响应归一化方法此后并无得到太大的普及,可是启发了其余重要的归一化技术(例如BatchNorm)来解决梯度饱和问题。综上所述,AlexNet定义了将来十年的实际分类网络框架: 卷积,ReLu非线性激活,MaxPooling和Dense层的组合。
超深度卷积网络用于大规模图像识别
来自Quora“ https://www.quora.com/What-is-the-VGG-neural-network”
在使用CNN进行视觉识别方面取得了巨大成功,整个研究界都大吃一惊,全部人都开始研究为何这种神经网络可以如此出色地工做。例如,在2013年发表的“可视化和理解卷积网络”中,Matthew Zeiler讨论了CNN如何获取特征并可视化中间表示。忽然之间,每一个人都开始意识到CNN自2014年以来就是计算机视觉的将来。在全部直接关注者中,Visual Geometry Group的VGG网络是最吸引眼球的网络。在ImageNet测试仪上,它的top-5准确度达到93.2%,top-1准确度达到了76.3%。
遵循AlexNet的设计,VGG网络有两个主要更新: 1)VGG不只使用了像AlexNet这样的更普遍的网络,并且使用了更深的网络。VGG-19具备19个卷积层,而AlexNet中只有5个。2)VGG还展现了一些小的3x3卷积滤波器能够代替AlexNet的单个7x7甚至11x11滤波器,在下降计算成本的同时实现更好的性能。 因为这种优雅的设计,VGG也成为了其余计算机视觉任务中许多开拓性网络的骨干网络,例如用于语义分割的FCN和用于对象检测的Faster R-CNN。
随着网络的深刻,从多层反向传播中梯度消失成为一个更大的问题。为了解决这个问题,VGG还讨论了预训练和权重初始化的重要性。这个问题限制了研究人员继续添加更多的层,不然,网络将很难融合。可是两年后,咱们将为此找到更好的解决方案。
更深卷积
摘自“ Going Deeper with Convolutions”
VGG具备漂亮的外观和易于理解的结构,但在ImageNet 2014竞赛的全部决赛入围者中表现都不佳。GoogLeNet(又名InceptionV1)得到了最终奖。就像VGG同样,GoogLeNet的主要贡献之一就是 采用22层结构来突破网络深度的限制 。这再次证实,进一步深刻确实是提升准确性的正确方向。
与VGG不一样,GoogLeNet试图直接解决计算和梯度递减问题,而不是提出具备更好的预训练模式和权重初始化的解决方法。
Bottleneck Inception Module From “ Going Deeper with Convolutions”
首先,它 使用称为Inception的模块探索了非对称网络设计的思想 (请参见上图)。理想状况下,他们但愿采用稀疏卷积或密集层来提升特征效率,可是现代硬件设计并不是针对这种状况。所以,他们认为,网络拓扑级别的稀疏性还能够在利用现有硬件功能的同时,帮助融合功能。
其次,它经过借鉴论文“网络中的网络”来解决高计算成本的问题。基本上, 引入1x1卷积滤波器以在进行繁重的计算操做(如5x5卷积内核)以前减少特征的尺寸 。之后将该结构称为“ Bottleneck ”,并在许多后续网络中普遍使用。相似于“网络中的网络”,它还使用平均池层代替最终的彻底链接层,以进一步下降成本。
第三,为了帮助梯度流向更深的层次,GoogLeNet还对某些中间层输出或辅助输出使用了监督。因为其复杂性,该设计后来在图像分类网络中并不十分流行,可是在计算机视觉的其余领域(如Hourglass网络)的姿式估计中愈来愈流行。
做为后续行动,这个Google团队为此Inception系列写了更多论文。“批处理规范化:经过减小内部协变量偏移来加速深度网络训练”表明 InceptionV2 。2015年的“从新思考计算机视觉的Inception架构”表明 InceptionV3 。2015年的“ Inception-v4,Inception-ResNet和残余链接对学习的影响”表明 InceptionV4 。每篇论文都对原始的Inception网络进行了更多改进,并取得了更好的效果。
批处理规范化:经过减小内部协变量偏移来加速深度网络训练
初始网络帮助研究人员在ImageNet数据集上达到了超人的准确性。可是,做为一种统计学习方法, CNN很是受特定训练数据集的统计性质的限制 。所以,为了得到更高的准确性,咱们一般须要预先计算整个数据集的平均值和标准误差,并使用它们首先对咱们的输入进行归一化,以确保网络中的大多数层输入都紧密,从而转化为更好的激活响应能力。这种近似方法很是麻烦,有时对于新的网络结构或新的数据集根本不起做用,所以深度学习模型仍然被认为很难训练。为了解决这个问题,建立GoogLeNet的人Sergey Ioffe和Chritian Szegedy决定发明一种更聪明的东西,称为“ 批量标准化 ”。
摘自“ 批量标准化:经过减小内部协变量偏移来加速深度网络训练”
批量规范化的想法并不难:只要训练足够长的时间,咱们就可使用一系列小批量的统计数据来近似整个数据集的统计数据。并且,代替手动计算统计信息,咱们能够引入两个更多可学习的参数 “缩放” 和 “移位” ,以使网络学习如何单独对每一层进行规范化。
上图显示了计算批次归一化值的过程。如咱们所见,咱们取整个小批量的平均值,并计算方差。接下来,咱们可使用此最小批量均值和方差对输入进行归一化。最后,经过比例尺和位移参数,网络将学会调整批标准化结果以最适合下一层,一般是ReLU。一个警告是咱们在推理期间没有小批量信息,所以一种解决方法是在训练期间计算移动平均值和方差,而后在推理路径中使用这些移动平均值。这项小小的创新是如此具备影响力,全部后来的网络都当即开始使用它。
深度残差学习用于图像识别
2015年多是十年来计算机视觉最好的一年,咱们已经看到不少伟大的想法不只出如今图像分类中,并且还出现了各类各样的计算机视觉任务,例如对象检测,语义分割等。 2015年属于一个名为ResNet或残差网络的新网络,该网络由Microsoft Research Asia的一组中国研究人员提出。
摘自“ 用于图像识别的深度残差学习”
正如咱们以前在VGG网络中所讨论的,要变得更深,最大的障碍是梯度消失问题,即,当经过更深的层向后传播时,导数会愈来愈小,最终达到现代计算机体系结构没法真正表明的地步有意义地。GoogLeNet尝试经过使用辅助监管和非对称启动模块来对此进行攻击,但只能在较小程度上缓解该问题。若是咱们要使用50甚至100层,是否会有更好的方法让渐变流过网络?ResNet的答案是使用残差模块。
剩余的模块从“ 深残余学习图像识别”
ResNet在输出中添加了身份标识快捷方式,所以每一个残差模块至少都不能预测输入是什么,而不会迷失方向。更为重要的是,残差模块不是但愿每一个图层都直接适合所需的特征映射,而是尝试了解输出和输入之间的差别,这使任务变得更加容易,由于所需的信息增益较小。想象一下,您正在学习数学,对于每一个新问题,都将获得一个相似问题的解决方案,所以您所要作的就是扩展此解决方案并使其起做用。这比为您遇到的每一个问题想出一个全新的解决方案要容易得多。或者像牛顿所说,咱们能够站在巨人的肩膀上,身份输入就是剩余模块的那个巨人。
除了身份映射,ResNet还从Inception网络借用了瓶颈和批处理规范化。最终,它成功构建了具备152个卷积层的网络,并在ImageNet上实现了80.72%的top-1准确性。剩余方法也成为后来的许多其余网络(例如Xception,Darknet等)的默认选项。此外,因为其简单美观的设计,现在它仍普遍用于许多生产视觉识别系统中。
经过追踪残差网络的炒做,还有更多不变式出现。在“深层残差网络中的身份映射”中,ResNet的原始做者试图将激活放在残差模块以前,并得到了更好的结果,此设计此后称为ResNetV2。一样,在2016年的论文《深度神经网络的聚合残差变换》中,研究人员提出了ResNeXt,该模型为残差模块添加了并行分支,以汇总不一样变换的输出。
Xception:深度学习与深度可分卷积
摘自“ Xception:深度学习与深度可分卷积”
随着ResNet的发布,图像分类器中大多数低挂的水果看起来已经被抢走了。研究人员开始考虑CNN魔术的内部机制是什么。因为跨通道卷积一般会引入大量参数,所以Xception网络选择调查此操做以了解其效果的全貌。
就像它的名字同样,Xception源自Inception网络。在Inception模块中,将不一样转换的多个分支聚合在一块儿以实现拓扑稀疏性。可是为何这种稀疏起做用了?Xception的做者,也是Keras框架的做者,将此想法扩展到了一种极端状况,在这种状况下,一个3x3卷积文件对应于最后一个串联以前的一个输出通道。在这种状况下,这些并行卷积内核实际上造成了一个称为深度卷积的新操做。
摘自“ 深度卷积和深度可分离卷积”
如上图所示,与传统卷积不一样,传统卷积包括全部通道以进行一次计算,深度卷积仅分别计算每一个通道的卷积,而后将输出串联在一块儿。这减小了通道之间的特征交换,但也减小了不少链接,所以致使具备较少参数的层。可是,此操做将输出与输入相同数量的通道(若是将两个或多个通道组合在一块儿,则输出的通道数量将减小)。所以,一旦合并了通道输出,就须要另外一个常规1x1滤波器或逐点卷积,以增长或减小通道数,就像常规卷积同样。
这个想法最初不是来自Xception。在名为“大规模学习视觉表示”的论文中对此进行了描述,而且在InceptionV2中偶尔使用。Xception进一步迈出了一步,并用这种新型卷积代替了几乎全部的卷积。实验结果很是好。它超越了ResNet和InceptionV3,成为用于图像分类的新SOTA方法。这也证实了CNN中跨通道相关性和空间相关性的映射能够彻底解耦。此外,因为与ResNet具备相同的优势,Xception也具备简单美观的设计,所以其思想还用于随后的许多其余研究中,例如MobileNet,DeepLabV3等。
MobileNets:用于移动视觉应用的高效卷积神经网络
Xception在ImageNet上实现了79%的top-1准确性和94.5%的top-5准确性,可是与之前的SOTA InceptionV3相比分别仅提升了0.8%和0.4%。新图像分类网络的边际收益愈来愈小,所以研究人员开始将注意力转移到其余领域。在资源受限的环境中,MobileNet推进了图像分类的重大发展。
“ MobileNets:针对移动视觉应用的高效卷积神经网络”中的MobileNet模块
与Xception类似,MobileNet使用与上面所示相同的深度可分离卷积模块,并着重于高效和较少参数。
“ MobileNets:用于移动视觉应用的高效卷积神经网络”中的参数比率
上式中的分子是深度可分离卷积所需的参数总数。分母是类似的规则卷积的参数总数。这里D [K]是卷积核的大小,D [F]是特征图的大小,M是输入通道数,N是输出通道数。因为咱们将通道和空间特征的计算分开了,所以咱们能够将乘法转换为相加,其量级较小。从该比率能够看出,更好的是,输出通道数越多,使用该新卷积节省的计算量就越多。
MobileNet的另外一个贡献是宽度和分辨率乘数。MobileNet团队但愿找到一种规范的方法来缩小移动设备的模型大小,而最直观的方法是减小输入和输出通道的数量以及输入图像的分辨率。为了控制此行为,比率alpha乘以通道,比率rho乘以输入分辨率(这也会影响要素图的大小)。所以,参数总数能够用如下公式表示:
“ MobileNets:用于移动视觉应用的高效卷积神经网络”
尽管这种变化在创新方面看似天真,但它具备巨大的工程价值,由于这是研究人员首次得出结论,能够针对不一样的资源约束调整网络的规范方法。此外,它还总结了改进神经网络的最终解决方案:更大和更高的分辨率输入会致使更高的精度,更薄和更低的分辨率输入会致使更差的精度。
在2018年和2019年晚些时候,MobiletNet团队还发布了“ MobileNetV2:残差和线性瓶颈”和“搜索MobileNetV3”。在MobileNetV2中,使用了倒置的残留瓶颈结构。在MobileNetV3中,它开始使用神经体系结构搜索技术来搜索最佳体系结构组合,咱们将在后面介绍。
学习可扩展的体系结构以实现可扩展的图像识别
就像针对资源受限环境的图像分类同样,神经体系结构搜索是在2017年左右出现的另外一个领域。借助ResNet,Inception和Xception,彷佛咱们已经达到了人类能够理解和设计的最佳网络拓扑,可是若是有的话一个更好,更复杂的组合,远远超出了人类的想象力?2016年的一篇论文《带有强化学习的神经体系结构搜索》提出了一种经过强化学习在预约搜索空间内搜索最佳组合的想法。众所周知,强化学习是一种以目标明确,奖励搜索代理商的最佳解决方案的方法。可是,受计算能力的限制,本文仅讨论了在小型CIFAR数据集中的应用。
NASNet搜索空间。“ 学习可扩展的体系结构以实现可扩展的图像识别”
为了找到像ImageNet这样的大型数据集的最佳结构,NASNet建立了针对ImageNet量身定制的搜索空间。它但愿设计一个特殊的搜索空间,以便CIFAR上的搜索结果也能够在ImageNet上正常工做。首先,NASNet假设在良好的网络(如ResNet和Xception)中经常使用的手工模块在搜索时仍然有用。所以,NASNet再也不搜索随机链接和操做,而是搜索这些模块的组合,这些模块已被证实在ImageNet上已经有用。其次,实际搜索仍在32x32分辨率的CIFAR数据集上执行,所以NASNet仅搜索不受输入大小影响的模块。为了使第二点起做用,NASNet预约义了两种类型的模块模板:Reduction和Normal。
尽管NASNet具备比手动设计网络更好的度量标准,可是它也有一些缺点。寻找最佳结构的成本很是高,只有像Google和Facebook这样的大公司才能负担得起。并且,最终结构对人类来讲并无太大意义,所以在生产环境中难以维护和改进。在2018年晚些时候,“ MnasNet:针对移动平台的神经结构搜索”经过使用预约义的链块结构限制搜索步骤,进一步扩展了NASNet的想法。此外,经过定义权重因子,mNASNet提供了一种更系统的方法来搜索给定特定资源限制的模型,而不只仅是基于FLOP进行评估。
EfficientNet:卷积神经网络模型缩放的反思
在2019年,对于CNN进行监督图像分相似乎再也不有使人兴奋的想法。网络结构的急剧变化一般只会带来少量的精度提升。更糟的是,当同一网络应用于不一样的数据集和任务时,之前声称的技巧彷佛不起做用,这引起了人们的批评,即这些改进是否仅适合ImageNet数据集。另外一方面,有一个技巧毫不会辜负咱们的指望:使用更高分辨率的输入,为卷积层添加更多通道以及添加更多层。尽管力量很是残酷,但彷佛存在一种按需扩展网络的原则方法。MobileNetV1在2017年提出了这种建议,但后来重点转移到了更好的网络设计上。
摘自“ EfficientNet:卷积神经网络的模型缩放思考”
继NASNet和mNASNet以后,研究人员意识到,即便在计算机的帮助下,架构的改变也不会带来太多好处。所以,他们开始回落到扩展网络规模。EfficientNet只是创建在此假设之上的。一方面,它使用了mNASNet的最佳构建基块,以确保有良好的基础。另外一方面,它定义了三个参数alpha,beta和rho来分别控制网络的深度,宽度和分辨率。这样,即便没有大型GPU池来搜索最佳结构,工程师仍能够依靠这些原则性参数根据他们的不一样要求来调整网络。最后,EfficientNet提供了8种不一样的变体,它们具备不一样的宽度,深度和分辨率,而且不管大小模型都具备良好的性能。换句话说,若是要得到较高的精度,请使用600x600和66M参数的EfficientNet-B7。若是您想要低延迟和更小的模型,请使用224x224和5.3M参数EfficientNet-B0。问题解决了。
若是您完成了10篇以上的论文的阅读,您应该对CNN的图像分类历史有了很好的了解。若是您想继续学习这一领域,我还列出了一些其余有趣的论文供您阅读,这些论文在各自领域都颇有名,并启发了世界上许多其余研究人员。
深度卷积网络中的空间金字塔池用于视觉识别
SPPNet从传统的计算机视觉特征提取中借鉴了特征金字塔的思想。该金字塔造成了一个具备不一样比例的要素词袋,所以它能够适应不一样的输入大小并摆脱固定大小的全链接层。这个想法还进一步启发了DeepLab的ASPP模块以及用于对象检测的FPN。
紧密链接的卷积网络
康奈尔大学的DenseNet进一步扩展了ResNet的想法。它不只提供各层之间的跳过链接,并且还具备来自全部先前各层的跳过链接。
挤压和激励网络
Xception网络证实,跨渠道关联与空间关联关系不大。可是,做为上届ImageNet竞赛的冠军,SENet设计了一个“挤压和激发”区并讲述了一个不一样的故事。SE块首先使用全局池将全部通道压缩为较少的通道,而后应用彻底链接的变换,而后使用另外一个彻底链接的层将其“激发”回原来的通道数量。所以,实质上,FC层帮助网络了解输入要素图上的注意力。
ShuffleNet:一种用于移动设备的极其高效的卷积神经网络
ShuffleNet构建在MobileNetV2的倒置瓶颈模块之上,他认为深度可分离卷积中的点式卷积会牺牲准确性,以换取更少的计算量。为了弥补这一点,ShuffleNet增长了一个额外的通道改组操做,以确保逐点卷积不会始终应用于相同的“点”。在ShuffleNetV2中,此通道重排机制也进一步扩展到ResNet身份映射分支,所以身份功能的一部分也将用于重排。
使用卷积神经网络进行图像分类的技巧
“技巧包”重点介绍在图像分类区域中使用的常见技巧。当工程师须要提升基准性能时,它能够做为很好的参考。有趣的是,诸如混合加强和余弦学习速率之类的这些技巧有时能够比新的网络体系结构实现更好的改进。
随着EfficientNet的发布,ImageNet分类基准彷佛即将结束。使用现有的深度学习方法,除非发生另外一种模式转变,不然咱们永远不会有一天能够在ImageNet上达到99.999%的准确性。所以,研究人员正在积极研究一些新颖的领域,例如用于大规模视觉识别的自我监督或半监督学习。同时,使用现有方法,对于工程师和企业家来讲,找到这种不完美技术的实际应用已经成为一个问题。
计算机视觉联盟 报道 | 公众号 CVLianMeng