AlphaTree : 从新手到深度学习应用工程师
从AI研究的角度来说,AI的学习和跟进是有偏向性的,更多的精英是擅长相关的一到两个领域,在这个领域做到更好。而从AI应用工程师的角度来说,每一个工程都可能涉及很多个AI的方向,而他们需要了解掌握不同的方向才能更好的开发和设计。
但是AI中每一个领域都在日新月异的成长。而每一位研究人员写paper的风格都不一样,相似的模型,为了突出不同的改进点,他们对模型的描述和图示都可能大不相同。为了帮助更多的人在不同领域能够快速跟进前沿技术,我们构建了“AlphaTree计划”,每一篇文章都会对应文章,代码,然后进行图示输出。
在面试到一些同学的时候,他们总是信誓旦旦的表示要转深度学习,但是存在能推导公式,但是一到深入理念,或者工程项目细节就两眼一抹黑。有没有一个项目,能一个一个项目帮助大家理解深度学习的发展的同时也提高应用能力。
基于这种想法,邀请了几位资深程序员加入这个项目。希望丰富的资源能够帮助到大家。
版权申明:CC-BY-NC-SA 知识共享-署名-非商业性-相同方式共享
其他:
由于github和某些原因,alphatree项目中的图 在这里展示总会出现不稳定的情况。而且能够一起贡献的小伙伴也不多。 另外alphatree由于资源整合得比较多,所以有的小伙伴不知道如何学习。
所以我们做了两件事情:
1 加入 AI千集 以AI应用为目的 的一个社区。
AI应用能改变世界。 AI千集为学习者提供了一个交流社区,和一些学习工具,包括论文推荐系统,论文一键翻译等等。
现在在试运行中。关于你能来做什么,可以看这篇
https://aiqianji.com/blog/topic/18
2 在筹备AI100天计划
整理发布Alphatree过程中,细化介绍了一部分重要的论文,然后一些基础算法,和大家一起写一起运行。
这是专栏 https://aiqianji.com/blog/topics/node/6
另外 攒了大量的资源,但是不太有精力维护社群。大家可以有需求来网站回帖。 https://aiqianji.com/blog/topic/65
不知道需要什么资源的也可以关注公众号,有个积分商城 注册就有积分,其他所有参与活动也可以挣积分,包括发帖,看文章等等。 然后自己换取就行。 会慢慢的上资源
深度学习基础:物体分类篇object classification
深度学习在解决分类问题上非常厉害。让它声名大噪的也是对于图像分类问题的解决。也产生了很多很经典的模型。其他方向的模型发展很多都是源于这各部分,它是很多模型的基础工作。因此我们首先了解一下它们。
从模型的发展过程中,随着准确率的提高,网络结构也在不断的进行改进,现在主要是两个方向,一是深度,二是复杂度。此外还有卷积核的变换等等。
深度神经网络的发展要从经典的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 都是从小模型的设计思路发展而来。
输入:图片 输出:类别标签
模型名 | AlexNet | ZFNet | VGG | GoogLeNet | ResNet |
---|---|---|---|---|---|
初入江湖 | 2012 | 2013 | 2014 | 2014 | 2015 |
层数 | 8 | 8 | 19 | 22 | 152 |
Top-5错误 | 16.4% | 11.2% | 7.3% | 6.7% | 3.57% |
Data Augmentation | + | + | + | + | + |
Inception(NIN) | – | – | – | + | – |
卷积层数 | 5 | 5 | 16 | 21 | 151 |
卷积核大小 | 11,5,3 | 7,5,3 | 3 | 7,1,3,5 | 7,1,3 |
全连接层数 | 3 | 3 | 3 | 1 | 1 |
全连接层大小 | 4096,4096,1000 | 4096,4096,1000 | 4096,4096,1000 | 1000 | 1000 |
Dropout | + | + | + | + | + |
Local Response Normalization | + | + | – | + | – |
Batch Normalization | – | – | – | – | + |
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 错误率
模型总览 <- 之前展示所有模型的主页挪到这里来了。点这里 点这里
模型索引:
Week1 基本结构 | LeNet | AlexNet | NIN | VGG | GoogleNet |
---|---|---|---|---|---|
Week2 ResNet之后的基本结构 | ResNet | Inception V3 | SENet | Inception-Resnet-V2 | DenseNet |
Week4 超大模型结构 | PolyNet | SENet | NasNet |
---|
深度学习应用
轻量级模型 & 剪枝 | 物体检测Object Detection | 物体分割Object Segmentation | OCR |
---|---|---|---|
人脸检测Face Detection | 人脸识别Face Recognition | 肢体检测Pose Detection(coming soon) | 3D(coming soon) |
物体分类(物体识别)解决的是这个东西是什么的问题(What)。而物体检测则是要解决这个东西是什么,具体位置在哪里(What and Where)。 物体分割则将物体和背景进行区分出来,譬如人群,物体分割中的实例分割则将人群中的每个人都分割出来。 输入:图片 输出:类别标签和bbox(x,y,w,h)
GAN基础
参考Mohammad KHalooei的教程,我也将GAN分为4个level,第四个level将按照应用层面进行拓展。 这里基础部分包括Gan的定义,GAN训练上的改进,那些优秀的GAN.具体可以参见 GAN 对抗生成网络发展总览
GAN的定义 Level 0: Definition of GANs
Level | Title | Co-authors | Publication | Links |
---|---|---|---|---|
Beginner | GAN : Generative Adversarial Nets | Goodfellow & et al. | NeurIPS (NIPS) 2014 | link |
Beginner | GAN : Generative Adversarial Nets (Tutorial) | Goodfellow & et al. | NeurIPS (NIPS) 2016 Tutorial | link |
Beginner | CGAN : Conditional Generative Adversarial Nets | Mirza & et al. | -- 2014 | link |
Beginner | InfoGAN : Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets | Chen & et al. | NeuroIPS (NIPS) 2016 |
模型结构的发展:
CGAN | LAPGAN | IcGAN | ACGAN | SemiGan /SSGAN | InfoGan |
---|
GAN训练上的改进 Level1:Improvements of GANs training
然后看看 loss、参数、权重的改进:
Level | Title | Co-authors | Publication | Links |
---|---|---|---|---|
Beginner | LSGAN : Least Squares Generative Adversarial Networks | Mao & et al. | ICCV 2017 | link |
Advanced | Improved Techniques for Training GANs | Salimans & et al. | NeurIPS (NIPS) 2016 | link |
Advanced | WGAN : Wasserstein GAN | Arjovsky & et al. | ICML 2017 | [link](http://proce |