[干货]一张地铁图看懂人工智能算法发展(含代码)---转自AlphaTree

本文主要是介绍[干货]一张地铁图看懂人工智能算法发展(含代码)---转自AlphaTree,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 或许你曾经困扰过:明明自家产品有自己的数据,明明算法模型很多开源,可为什么开发起来却问题多多? 要么拿到问题无从下手?


每一个大厨,心中都有自己的菜谱。要烹制一桌山珍海味,美味佳肴,自然要熟知三件事,原料(模型),调料(优化算法)和秘籍菜谱(这里常常只paper:paper会告诉你解决什么问题用什么模型与算法)。有了这三样,还要基本功扎实,拌、腌、炒、烧、蒸、炸、煮、煲基本手法样样不能少。(基本功扎实才能模型复现)


如果 你说 我只是个小学徒啊,厨艺小白,想自己学可怎么做,那就照着大厨的菜谱学着做。

如果 你说 我是个AI小白,也想了解人工智能深度学习,尤其是想解决应用方面的问题,那就照着下面这张地铁图,按不同方向,来学习菜谱,原料,调料和基本功吧。




01



地铁图总览


从AI研究的角度来说,AI的学习和跟进是有偏向性的,更多的精英是擅长相关的一到两个领域,在这个领域做到更好。而从AI应用的角度来说,每一个工程都可能涉及很多个AI的方向,而他们需要了解掌握不同的方向才能更好的开发和设计。因此我们从应用的角度 提出一个 roadmap ,描述不同方向的经典算法模型发展,以及应用上热门的算法。

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

详细算法,文章,开源代码等具体可以参见网址,如果喜欢别忘记右上角star一下哦:

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



大图链接 

https://raw.githubusercontent.com/weslynn/graphic-deep-neural-network/master/map/mapclean_1.0.png




02



 当我们谈论万物时,也许在谈论整个世界


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

最基础的是物体分类Object Classification。深度学习的发展证明它非常擅长解决分类问题。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 都是从小模型的设计思路发展而来。


Object Detection 与Object Segmentation

对世界的理解仅仅通过分类知道这张图是关于什么的,是远远不够的,而物体检测和物体分割才能够达到对世界进行与人类似的理解。物体检测和语义分割,以及分割加检测结合的实例分割各发展了几年,但是最终发展到MaskRCNN算法对物体同时完成检测与分割的任务,并且有更优的表现。


人类文明的传承,离不开的是文字。文字的识别和理解在应用上有着特别的意义。传统的文档识别,早就有了相对稳定的解决方案,开源的Tesseract 是常用的方法,收费的ABBYY则一直效果处于世界前列。而复杂环境中的文字识别则随着DL的发展有着不错的进展。一方面是还是独立的检测与识别,一方面是也有了两者联合的端对端网络的探索。这一块国内白翔老师组 乔宇老师组都有一些模型在应用上效果不错。




03


 当我们谈论人时,也许在尝试了解自己


能让人工智能像我们一样理解我们自身,能够认识他是谁,理解他表达的喜怒哀乐,能够知道他在做什么,一直就是让人着迷的事情。一直以来,无数科研工作者都在相关方向上奋斗。而DL模拟人类视觉系统,首先取得较好成绩的也是在人脸相关的领域。

人脸相关领域在应用上的主要有:

1 人脸检测与追踪

2 人脸矫正与关键点检测

3 表情,性别,年龄,种族分析

4 人脸像素基本解析

5 人脸识别

6 活体检测与验证

7 大规模人脸检索

8 人脸的3D重建

其中 表情,性别,年龄,种族分析 就是基本分类问题,使用Object Classification中的方法就可以解决。而活体检测与验证一般通过增加其他设备,使用结构光,如红外,iphonex的FaceID,或者增加活体行为来进行,如常用的点头,眨眼,张嘴等。 而后者的基础,还是在 2 人脸矫正和关键点检测上。大规模人脸检索是在人脸识别的基础上更加工程化的工作。因此在这里我们选择了1 2 5 8 等四个方面来进行分析。


对于人的理解,还有一个关键,就是Pose Estimation 姿态估计

单人算法发展,2016年 stacked hourglass 算法的提出,是一个重要标志,它结构简单,可扩展性强,性能优越,当时就拿下了MPII姿态分析竞赛 的冠军。即便到今天(2018/05/30),这个比赛单人组现在的第一名也是在它的基础上进行改进。

多人的算法,分成两个方向,一个自顶向下 top-down,主要关注上海交大 卢策吾组的RMPE/AlphaPose, 一个自底向上,bottom-up,主要关注CMU的 OpenPose。

此外,基于Pose相关的Segment也在发展,从2D到3D则有DensePose-RCNN。






04


艺术


 艺术,改变的是你看世界的方式


艺术是人类对世界的表达,以及我们对虚拟世界的创造。

用科技探索艺术是一件非常有意思的事情,而这些在应用上往往也能产生很好的产品。最知名的就是风格转换 (Neural Style),而探索的方法 有的基于基本的DL网络,有的基于GAN对抗生成网络。因此在这里用渐变色的绿色绘制了这个独特的轨道。深绿色是各种应用,浅绿色则代表了GAN的发展路线。



这里列出了很多很酷的应用,譬如说

Neural Doodle 使用深度神经网络把你的二流涂鸦变成艺术品。

Deep Painterly Harmonization 深度学习的一键P图

Deep Photo Style Transfer 风格转换的变种:照片风格转换

自动上色 等等

代码均可在下面网址找到

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




05


关于AlphaTree


AI中每一个领域都在日新月异的成长,而每一位研究人员写paper的风格都不一样,相似的模型,为了突出不同的改进点,他们对模型的描述和图示都可能大不相同。

为了帮助更多的人在不同领域能够快速跟进前沿技术,我们构建了“AlphaTree计划”,对上面提到的文章会对应开源代码,进行统一的图示,便于大家对模型的理解。模型的绘制设计 受到Fjodor van Veen所作的A mostly complete chart of Neural Networks 和 FeiFei Li AI课程中对模型的画法的启发

将一个深度神经网络模型简化成下图:

里面用到的图标有:


其实 简单来说 ,为了方便记忆,重要的结构只会选用七种彩虹色。 红橙黄绿蓝靛紫。 由于兼容Fjodor van Veen的设置,输入和输出暂时占用了两种颜色。 如果根据需求后期可能将输入输出改成其他不重要的颜色。

紫色(这里用的紫红色)为卷积,

红色为pooling,

绿色为全连接,

蓝色为Memory Cell,

靛(深蓝色)是反卷积。


现在Object Classificaiton部分里面涉及到的模型都根据源代码绘制完成了。


2018/05/30 目前object classification 主干部分基本完成 包括 LeNet, AlexNet, GoogLeNet, Inception V3,Inception-Resnet-V2, VGG, ResNet ,ResNext, DenseNet ,DPN等。


2018/06/15 完成 MobileNet 与 MobileNet V2.


其他: Face : mtcnn


OCR : CRNN CTPN Textboxes Textboxes++


Object Detection:ssd


譬如LeNet结构如下,一目了然,三层卷积层,进行了两次maxpooling,两层全连接层,最后输出接softmax:


下面一行是输入的图像 经过每一层后输出的尺寸。每个模型也会有对应paper中的结构介绍。欢迎大家围观,也欢迎大家加入。

如果有帮助,记得右上角star哦~ ღ( ´・ᴗ・` )比心



06


最后的最后

为什么要画这个?现在画合适吗?


其实 整理发展趋势,跟进论文的事情 一直在做,而图示各种模型的想法也早就有了。但是之前算法更新迭代非常迅速,很多发展方向都没有稳定下来,所以这件事情一直也没有着手去做。

平时沟通中,通过图示模型的表达也帮助过一些人理解,包含CEO,产品经理,程序员,AI小白…… 总体反响还不错,但是之前没有完整系统的输出。之前都是简版的沟通,也担心大家觉得看懂了图示,但觉得和paper的表达会不会有差距,就干脆图示和paper,代码做到了对应。

但是2017年年底 nasnet出来,机器设计的深度神经网络在性能上已经超越了人工设计的网络,在我看来,这是个很重要的信号。AI 从某种意义上来说,成为真正的AI。而以后人们常用的模型结构可能都是神经网络自我设计,或者teaching-student模型学习出来,里面的结构再也不是人类所能理解的。而一个优秀的新模型的诞生,是巨头们计算设备的比拼。

而对于很多公司,重心将转移到如何利用现有的模型,结合自己的数据,设计出最适合自己的模型。全民AI的时代正在到来。

最后,无论是想撩一撩,想加入AlphaTree ,想得到更多资讯,更多福利信息,教学视频,都可以去公众号找哦~


这篇关于[干货]一张地铁图看懂人工智能算法发展(含代码)---转自AlphaTree的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/504071

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT