AI应用实例汇总

Wesley13
• 阅读 510

AI应用实例汇总

以深度学习为代表的人工智能,在过去十年经历了爆炸式的发展。

计算机科学项目中、业界会议中、媒体报道中,你都能够看到深度学习的影子。

AI 并不是一个单独的存在,必须要和其他产业结合起来才能提升效率,创造价值。

我们梳理了过去一年深度学习在各领域应用方向上的探索,概要的介绍了各领域在深度学习算法和应用落地等等方面的进展和思考,希望能对大家有所启发。

一、微博深度学习平台架构和实践

微博在 Feed CTR、反垃圾、图片分类、明星识别、视频推荐、广告等业务上广泛使用深度学习技术,同时广泛使用 TensorFlow、Caffe、Keras、MXNet 等深度学习框架。

为了融合各个深度学习框架,有效利用 CPU 和 GPU 资源,充分利用大数据、分布式存储、分布式计算服务,微博设计开发了微博深度学习平台。

微博深度学习平台支持如下特性:

1. 方便易用:支持数据输入、数据处理、模型训练、模型预测等工作流,可以通过简单配置就能完成复杂机器学习和深度学习任务。特别是针对深度学习,仅需选择框架类型和计算资源规模,就能模型训练。

2. 灵活扩展:支持通用的机器学习算法和模型,以及用户自定义的算法和模型。

3. 多种深度学习框架:目前支持TensorFlow、Caffe 等多种主流深度学习框架,并进行了针对性优化。

4. 异构计算:支持 GPU 和 CPU 进行模型训练,提高模型训练的效率。

5. 资源管理:支持用户管理、资源共享、作业调度、故障恢复等功能。

6. 模型预测:支持一键部署深度学习模型在线预测服务。

微博深度学习平台是微博机器学习平台的重要组成部分,除继承微博机器学习平台的特性和功能以外,支持 TensorFlow、Caffe 等多种主流深度学习框架,支持 GPU 等高性能计算集群。微博深度学习平台架构如图所示。

AI应用实例汇总

二、基于深度学习的计算机视觉技术

图像识别任务取得巨大成功之后,深度学习技术就被广泛应用于计算机视觉的各个具体任务上,而物体检测应该是除了图像识别之外,应用最为广泛的一个计算机视觉的具体任务。

什么是图像识别?给定一副图像,计算机视觉算法需要告诉我们,这幅图像中,是否有鸟、猫、狗等等。如图所示,经典的 PASCAL VOC 图像识别任务的几个例子。

AI应用实例汇总

PASCAL VOC 和 ImageNet ILSVRC 竞赛的示例图片

PASCAL VOC 只需识别出图像中是否有鸟、猫、狗等等,而对应的 ImageNet ILSVRC 竞赛的图像就要求识别出图像中的鸟、猫、狗对应的品种。

PASCALVOC 图像识别任务共有20个种类,而 ImageNetILSVRC 共有1000个类别。

那么物体检测又是什么呢?同样给计算机一张图片,计算机视觉算法不仅需要告诉我们这张图片中有哪些种类的物体,还要告诉我们这些物体的具体位置。一般物体的具体位置使用边界框(Bounding Box)的方式给出,如图所示。

AI应用实例汇总

PASCAL VOC 有关物体检测的示例图片

如左上的第一幅图,计算机视觉算法不仅需要知道图中有椅子,还要知道有三把椅子,并且要用边界框准确的把三把椅子的位置标注出来。

而右下的图片,计算机视觉算法还要知道图中既有狗,又有猫,并且猫和狗是有相互交叠的,这种情况下,计算机视觉算法还要准确标记猫和狗的位置。

PASCAL VOC 和 ImageNet ILSVRC 竞赛都有物体检测的训练和测试数据集合。

不过,现在比较广泛使用的还是 PASCAL VOC 20 类的物体检测任务,我们可以在 PASCAL VOC 官网提供的排行榜(leaderboard)上看到最近的物体检测算法排名情况。

那么这两种任务有什么必然的联系吗?当然有,一个很明显的情况是,如果我们有个很好的物体检测算法,那么我们就会知道图片中都有哪些物体,这样图像识别算法就可以简单地利用物体检测算法的结果来判断图中是否有鸟、猫、狗等物体。

另一方面,如果我们有一个很好的图像识别算法,那么我们可以把图片中可能存在物体的边界框一一拿给图像识别算法来识别是否存在鸟、猫、狗等,这样,我们也可以得到一个很出色的物体检测算法。

拿这两种方案进行比较,我们可能觉得第一个方案更简单直观些,但是第二个方案才是当今计算机视觉技术发展的路线图。

三、阿里巴巴智能对话交互

传统的对话交互大概会分以下几个模块,从云识别把语言转成文字,语言理解是把用户说的文字转化成一种结构化的表示,对话管理是根据刚才那些结果来决定采取什么样的合作。

AI应用实例汇总

在语言设置这一块就是根据 action 生成一句话,通过一种比较自然的方式把它读出来。

现在人机交互和传统的人机交互一个主要不同点就在于数据和服务。随着互联网的发展,数据和服务越来越丰富,那人机交互的目的是什么?归根到底还是想获取互联网的信息和各种各样的服务。

“语言理解”简单来说就是把用户说的话,转换为一种结构化的语义表示,从方法上会分成两个模块:意图的判定和属性的抽取。

比如用户说:“我要买一张下周去上海的飞机票,国航的”。第一个模块就要返回理解,用户的意图是要买飞机票,第二,使用抽取模块,要把这些关键的信息出处理出来,出发时间、目的地、航空公司,从而得到一个比较完整的结构化的表示。

那么,人机对话中的语言理解面临哪些挑战呢?总结为四类:

1. 表达的多样性。同样一个意图,不同的用户有不同的表达方式。那对于机器来说,虽然表达方式不一样,但是意图是一样的,机器要能够理解这件事情。

2. 语言的歧义性。比如说,“我要去拉萨“,它是一首歌的名字。当用户说:“我要去拉萨”的时候,他也可能是听歌,也可能是买一张去拉萨的机票,也可能是买火车票,或者旅游。

3. 语言理解的混乱性,因为用户说话过程当中,比较自然随意,语言理解要能够捕获住或者理解用户的意图。

AI应用实例汇总

对话系统架构简图

4. 上下文的理解。这是人机对话交互一个非常大的不同,它的理解要基于上下文。

在语言理解这一块,阿里巴巴把用户语言的意图理解抽象为一个分类问题,之后,就有一套相对标准的方法解决,比如 CNN 神经网络、SVM 分类器等等。

阿里巴巴现在就是采用 CNN 神经网络方法,并在词的表示层面做了针对性的改进。机器要理解用户的话的意思,背后一定要依赖于大量的知识。

比如说,“大王叫我来巡山”是一首歌的名字,“爱探险的朵拉”是一个视频,互联网上百万量级这样开放领域的实体知识,并且每天都会有新的歌曲/视频出现,如果没有这样大量的知识,机器是很难真的理解用户的意图的。 

四、在物联网设备上实现深度学习

近年来,越来越多的物联网产品出现在市场上,它们采集周围的环境数据,并使用传统的机器学习技术理解这些数据。

一个例子是 Google 的 Nest 恒温器,采用结构化的方式记录温度数据,并通过算法来掌握用户的温度偏好和时间表。

然而,其对于非结构化的多媒体数据,例如音频信号和视觉图像则显得无能为力。

新兴的物联网设备采用了更加复杂的深度学习技术,通过神经网络来探索其所处环境。

例如,AmazonEcho 可以理解人的语音指令,通过语音识别,将音频信号转换成单词串,然后使用这些单词来搜索相关信息。

物联网设备上的深度学习应用通常具有苛刻的实时性要求。例如,基于物体识别的安全摄像机为了能及时响应房屋内出现的陌生人,通常需要小于500毫秒的检测延迟来捕获和处理目标事件。

消费级的物联网设备通常采用云服务来提供某种智能,然而其所依赖的优质互联网连接,仅仅在部分范围内可用,并且往往需要较高的成本,这对设备能否满足实时性要求提出了挑战。

与之相比,直接在物联网设备上实现深度学习或许是一个更好的选择,这样就可以免受连接质量的影响。

然而,直接在嵌入式设备上实现深度学习是困难的。

在深度学习任务中,最广泛使用的神经网络是卷积神经网络(CNNs),它能够将非结构化的图像数据转换成结构化的对象标签数据。

一般来说,CNNs 的工作流程如下:

首先,卷积层扫描输入图像以生成特征向量;

第二步,激活层确定在图像推理过程中哪些特征向量应该被激活使用;

第三步,使用池化层降低特征向量的大小;最后,使用全连接层将池化层的所有输出和输出层相连。 

五、无人驾驶硬件平台

无人驾驶硬件系统是多种技术、多个模块的集成,主要包括:传感器平台、计算平台、以及控制平台。

计算平台的设计直接影响到无人驾驶系统的实时性以及鲁棒性。以无人驾驶计算平台为例,我们来看一个行业领先的某四级无人驾驶公司现有的计算平台硬件实现。

这个四级无人驾驶公司的计算平台由两计算盒组成。每个计算盒配备了一颗英特尔至强 E5 处理器(12核)和四到八颗 NVIDIA K80 GPU加速器,彼此使用 PCI-E 总线连接。CPU 运算峰值速度可达400帧/秒,消耗 400W 的功率。

每个 GPU 运算峰值速度可达 8Tops/s,同时消耗 300W 的功率。因此,整个系统能够提供 64.5 TOP/S 的峰值运算能力,其功率需求为 3000W。

计算盒与车辆上安装的十二个高精度摄像头相连接,以完成实时的物体检测和目标跟踪任务。

车辆顶部还安装有一个激光雷达装置以完成车辆定位及避障功能。为了保证可靠性,两个计算盒执行完全相同的任务。

一旦第一个计算盒失效,第二个计算盒可以立即接管。在最坏的情况下两个计算盒都在计算峰值运行,这意味着将产生超过5000瓦的功耗并急聚大量的热量,散热问题不容忽视。

此外,每个计算盒的成本预计为2至3万美元,这是普通消费者根本无法承受的整体解决方案。 

我们这里简述一种解决方案:

NVIDIA 的 PX 平台是目前领先的基于 GPU 的无人驾驶解决方案。每个 PX2 由两个 Tegra  SoC 和两个 Pascal GPU 图形处理器组成,其中每个图像处理器都有自己的专用内存并配备有专用的指令以完成深度神经网络加速。

为了提供高吞吐量,每个 Tegra SOC 使用 PCI-E Gen 2x4总线与 Pascal GPU 直接相连,其总带宽为 4 GB/s。

此外,两个 CPU-GPU 集群通过千兆以太网项链,数据传输速度可达70 Gigabit/s。

借助于优化的 I/O 架构与深度神经网络的硬件加速,每个 PX2 能够每秒执行24兆次深度学习计算。这意味着当运行 AlexNet 深度学习典型应用时,PX2 的处理能力可达2800帧/秒。

AI应用实例汇总

NVIDIAPX2

如果说算法是无人驾驶的灵魂,那么硬件平台就是无人驾驶的肉体。再高大上的算法也需要实现在硬件平台上才有实用价值。

而硬件平台的设计直接决定了无人驾驶对环境的感知能力,计算性能与能耗,鲁棒性,安全性等。

轻轻一扫  欢迎关注~

AI应用实例汇总

AI应用实例汇总

本文分享自微信公众号 - 人人都是极客(rrgeek)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这