一图看完AI应用之深度学习十大经典算法(含论文代码)

0 / 310

作者 Gingo

从 AI 研究的角度来说,AI 的学习和跟进是有偏向性的,更多的精英是擅长相关的一到两个领域,在这个领域做到更好。而从 AI 应用的角度来说,每一个工程都可能涉及很多个 AI 的方向,而他们需要了解掌握不同的方向才能更好的开发和设计。

因此我们从应用的角度 提出一个 roadmap 叫做 AlphaTree,描述不同方向的经典算法模型发展,以及应用上热门的算法。带领新手入门

第一个版本涉及的是 人,物 与艺术,三个大的部分。主要包括了图像方向的十二个子方向,上百篇文章和代码。里面列的模型除了商业化的部分外,其他大部分具有相关的开源算法与模型,所有论文和代码都已开源

https://github.com/weslynn/AlphaTree-graphic-deep-neural-network​github.com

AI roadmap AI路书发展地图 -Alphatree

成千上万的物体是世界的组成,我们希望人工智能能够像我们一样理解这个世界。也就有了物体相关的算法发展。

深度学习在解决分类问题上非常厉害。让它声名大噪的也是对于图像分类问题的解决。也产生了很多很经典的模型。其他方向的模型发展很多都是源于这各部分,它是很多模型的基础工作。因此我们首先了解一下它们。

Object Classification 是所有发展的基础,很多其他方向的模型都是基于这个主线来改进的。

为什么算法都从图像领域发展而来?由于图像的数据最为丰富,卷积神经网络在图像上分类的稳定有效,1998 年,LeNet,这个商用的手写数字识别网络就做出了有力的证明。而到了 2012 年,Alex Krizhevsky 设计了 AlexNet 在当年的 ImageNet 图像分类竞赛中下第一,开始了深度学习的黄金时代。

学术界发表的 paper 一般可以分为两大类,一类是网络结构的改进,一类是训练过程的改进,如 droppath,loss 改进等。而网络结构设计发展主要有两条主线,一条是 Inception 系列(即上面说的复杂度),从 GoogLeNet 到 Inception V2 V3 V4,Inception ResNet。 Inception module 模块在不断变化,一条是 VGG 系列(即深度),用简单的结构,尽可能的使得网络变得更深。从 VGG 发展到 ResNet ,再到 DenseNet ,DPN 等。

最终 Google Brain 用 500 块 GPU 训练出了比人类设计的网络结构更优的网络 NASNet。

此外,应用方面更注重的是,如何将模型设计得更小,这中间就涉及到很多卷积核的变换。这条路线则包括 SqueezeNet,MobileNet V1 V2 Xception shuffleNet 等。ResNet 的变种 ResNeXt 和 SENet 都是从小模型的设计思路发展而来。

从模型的发展过程中,随着准确率的提高,网络结构也在不断的进行改进,现在主要是两个方向,一是深度,二是复杂度。此外还有卷积核的变换等等。

深度神经网络的发展要从经典的 LeNet 模型说起,那是 1998 年提出的一个模型,在手写数字识别上达到商用标准。之后神经网络的发展就由于硬件和数据的限制,调参的难度等各种因素进入沉寂期。

到了 2012 年,Alex Krizhevsky 设计了一个使用 ReLu 做激活函数的 AlexNet 在当年的 ImageNet 图像分类竞赛中(ILSVRC 2012),以 top-5 错误率 15.3% 拿下第一。 他的 top-5 错误率比上一年的冠军下降了十个百分点,而且远远超过当年的第二名。而且网络针对多 GPU 训练进行了优化设计。从此开始了深度学习的黄金时代。

深度学习模型 准确率

大家发表的 paper 一般可以分为两大类,一类是网络结构的改进,一类是训练过程的改进,如 droppath,loss 改进等。

之后网络结构设计发展主要有两条主线,一条是 Inception 系列(即上面说的复杂度),从 GoogLeNet 到 Inception V2 V3 V4,Inception ResNet。 Inception module 模块在不断变化,一条是 VGG 系列(即深度),用简单的结构,尽可能的使得网络变得更深。从 VGG 发展到 ResNet ,再到 DenseNet ,DPN 等。

最终 Google Brain 用 500 块 GPU 训练出了比人类设计的网络结构更优的网络 NASNet,最近训出了 mNasNet。

此外,应用方面更注重的是,如何将模型设计得更小,这中间就涉及到很多卷积核的变换。这条路线则包括 SqueezeNet,MobileNet V1 V2 Xception shuffleNet 等。

ResNet 的变种 ResNeXt 和 SENet 都是从小模型的设计思路发展而来。

输入:图片 输出:类别标签

深度学习模型比较

ILSVRC2016 2016 年的 ILSVRC,来自中国的团队大放异彩:

CUImage(商汤和港中文),Trimps-Soushen(公安部三所),CUvideo(商汤和港中文),HikVision(海康威视),SenseCUSceneParsing(商汤和香港城市大学),NUIST(南京信息工程大学)包揽了各个项目的冠军。

CUImage(商汤科技和港中文):目标检测第一; Trimps-Soushen(公安部三所):目标定位第一; CUvideo(商汤和港中文):视频中物体检测子项目第一; NUIST(南京信息工程大学):视频中的物体探测两个子项目第一; HikVision(海康威视):场景分类第一; SenseCUSceneParsing(商汤和港中文):场景分析第一。

其中,Trimps-Soushen 以 2.99% 的 Top-5 分类误差率和 7.71% 的定位误差率赢得了 ImageNet 分类任务的胜利。该团队使用了分类模型的集成(即 Inception、Inception-ResNet、ResNet 和宽度残差网络模块的平均结果)和基于标注的定位模型 Faster R-CNN 来完成任务。训练数据集有 1000 个类别共计 120 万的图像数据,分割的测试集还包括训练未见过的 10 万张测试图像。

ILSVRC 2017 Momenta 提出的 SENet 获得了最后一届 ImageNet 2017 竞赛 Image Classification 任务的冠军, 2.251% Top-5 错误率

LeNet 详解 detail Yann LeCun

LeNet 是最经典的 CNN 网络

[1] LeCun, Yann; Léon Bottou; Yoshua Bengio; Patrick Haffner (1998). "Gradient-based learning applied to document recognition"

AlexNet 详解 detail Alex Krizhevsky, Geoffrey Hinton

  • AlexNet 2012 年,Alex Krizhevsky 用 AlexNet 在当年的 ImageNet 图像分类竞赛中(ILSVRC 2012),以 top-5 错误率 15.3% 拿下第一。 他的 top-5 错误率比上一年的冠军下降了十个百分点,而且远远超过当年的第二名。[2] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems. 2012. tensorflow

GoogLeNet 详解 detail Christian Szegedy / Google

  • GoogLeNet 采用 InceptionModule 和全局平均池化层,构建了一个 22 层的深度网络,使得很好地控制计算量和参数量的同时( AlexNet 参数量的 1/12),获得了非常好的分类性能。 它获得 2014 年 ILSVRC 挑战赛冠军,将 Top5 的错误率降低到 6.67%. GoogLeNet 名字将 L 大写,是为了向开山鼻祖的 LeNet 网络致敬。[3] Szegedy, Christian, et al. "Going deeper with convolutions." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.

Inception V3 详解 detail Christian Szegedy / Google

  • Inception V3,GoogLeNet 的改进版本,采用 InceptionModule 和全局平均池化层,v3 一个最重要的改进是分解(Factorization),将 7x7 分解成两个一维的卷积(1x7,7x1),3x3 也是一样(1x3,3x1),ILSVRC 2012 Top-5 错误率降到 3.58% test error[4] Szegedy, Christian, et al. “Rethinking the inception architecture for computer vision.” arXiv preprint arXiv:1512.00567 (2015).

VGG 详解 detail Karen Simonyan , Andrew Zisserman / Visual Geometry Group(VGG)Oxford

  • VGG
    VGG-Net 是 2014 年 ILSVRC classification 第二名(第一名是 GoogLeNet),ILSVRC localization 第一名。VGG-Net 的所有 convolutional layer 使用同样大小的 convolutional filter,大小为 3 x 3

单独看 VGG19 的模型:

[5] Simonyan, Karen, and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition." arXiv preprint arXiv:1409.1556 (2014).

ResNet and ResNeXt 详解 detail 何凯明 He Kaiming

  • ResNet ResNet,深度残差网络,通过 shortcut( skip connection )的设计,打破了深度神经网络深度的限制,使得网络深度可以多达到 1001 层。 它构建的 152 层深的神经网络,在 ILSVRC2015 获得在 ImageNet 的 classification、detection、localization 以及 COCO 的 detection 和 segmentation 上均斩获了第一名的成绩,其中 classificaiton 取得 3.57% 的 top-5 错误率,
  • [6] He, Kaiming, et al. "Deep residual learning for image recognition." arXiv preprint arXiv:1512.03385 (2015). pdf(ResNet,Very very deep networks, CVPR best paper)

  • ResNeXt

结构采用 grouped convolutions,减少了超参数的数量(子模块的拓扑结构一样),不增加参数复杂度,提高准确率。

[7] He, Kaiming, et al. "Aggregated Residual Transformations for Deep Neural Networks." arXiv preprint arXiv:1611.05431 . (ResNet,Very very deep networks, CVPR best paper)

Inception-Resnet-V2 详解 detail Christian Szegedy / Google

Inception Resnet V2 是基于 Inception V3 和 ResNet 结构发展而来的一个网络。在这篇 paper 中,还同期给出了 Inception V4.

[8] Christian Szegedy, et al. “Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning” arXiv preprint arXiv:1602.07261 (2015). pdf

DenseNet 详解 detail 黄高 Gao Huang, 刘壮 Zhuang Liu

作者发现(Deep networks with stochastic depth)通过类似 Dropout 的方法随机扔掉一些层,能够提高 ResNet 的泛化能力。于是设计了 DenseNet。 DenseNet 将 ResNet 的 residual connection 发挥到了极致,它做了两个重要的设计,一是网络的每一层都直接与其前面层相连,实现特征的重复利用,第二是网络的每一层都很窄,达到降低冗余性的目的。

DenseNet 很容易训练,但是它有很多数据需要重复使用,因此显存占用很大。不过现在的更新版本,已经通过用时间换空间的方法,将 DenseLayer(Contact-BN-Relu_Conv)中部分数据使用完就释放,而在需要的时候重新计算。这样增加少部分计算量,节约大量内存空间。

[9] Gao Huang,Zhuang Liu, et al. DenseNet:2016,Densely Connected Convolutional Networks arXiv preprint arXiv:1608.06993 . pdf CVPR 2017 Best Paper [10]Geoff Pleiss, Danlu Chen, Gao Huang, et al.Memory-Efficient Implementation of DenseNets.

DPN 详解 detail 颜水成

之前我们已经了解了 ResNet 和 DenseNet,ResNet 使用的是相加(element-wise adding),DenseNet 则使用的是拼接(concatenate)。

DPN 把 DenseNet 和 ResNet 联系到了一起,该神经网络结合 ResNet 和 DenseNet 的长处,共享公共特征,并且通过双路径架构保留灵活性以探索新的特征。在设计上,采用了和 ResNeXt 一样的 group 操作。

它在在图像分类、目标检测还是语义分割领域都有极大的优势,可以去看 2017 ImageNet NUS-Qihoo_DPNs 的表现。

[11]Yunpeng Chen, Jianan Li, Huaxin Xiao, Xiaojie Jin, Shuicheng Yan, Jiashi Feng.Dual Path Networks pdf

PolyNet [Xingcheng Zhang] 林达华[Dahua Lin] / CUHK-MMLAB & 商汤科技 详解 detail

这个模型在 Inception_ResNet_v2 的基础上,替换了之前的 Inception module,改用 PolyInception module 作为基础模块,然后通过数学多项式来组合设计每一层网络结构。因此结构非常复杂。

PolyNet 在 ImageNet 大规模图像分类测试集上获得了 single-crop 错误率 4.25% 和 multi-crop 错误率 3.45%。在 ImageNet2016 的比赛中商汤科技与香港中大-商汤科技联合实验室在多项比赛中选用了这种网络结构并取得了三个单项第一的优异成绩。

[12] Xingcheng Zhang, Zhizhong Li, ChenChange Loy, Dahua Lin,PolyNet: A Pursuit of Structural Diversity in Very Deep Networks.2017 pdf

SENet 详解 detail

Momenta 提出的 SENet 获得了最后一届 ImageNet 2017 竞赛 Image Classification 任务的冠军。 它在结构中增加了一个 se 模块,通过 Squeeze 和 Excitation 的操作,学习自动获取每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。

[13] Squeeze-and-Excitation Networks

NASNet Google

这是谷歌用 AutoML(Auto Machine Learning)在 500 块 GPU 上自行堆砌 convolution cell(有两种 cell )设计的网络。性能各种战胜人类设计。

[14]Learning Transferable Architectures for Scalable Image Recognitionpdf


最后,

AlphaTree 从诞生以来,从默默更新,到点赞超过 1k+ star ,感谢大家认可。由于很多人表示,信息太多,如何有效学习是一个问题。

之后我们会开启一个连载,带大家一起通读了解整个 AI 发展,希望大家能一同进步