从IoT到AIoT
2018-05-14董健
由于AI性能的逐步提高以及大众对AI认知的不断提升,IoT产品也越来越重视并开始主打AI属性。AIoT的时代已经到来。AIoT时代要求IoT产品能够提供人工智能的能力并且形成数据闭环。在2018雷克大会上,360人工智能研究院资深技术专家董健表示,将AI算法应用部署在IoT设备中是一个系统性的工程,并分析探讨了其中所需的技术及其难点。
AIoT时代对IoT产品的需求
IoT的时代已经来临,在IoT中,人工智能发挥越来越重要的作用。其原因主要有两个:第一,AI在性能上已經逐渐接近甚至超越人类。比如在视觉领域中的人脸识别、行为识别等应用上,算法的性能已经可以接近甚至超过人类。在语音识别领域,基本的进厂对话性能可以满足日常的需求。第二,用户对AI的认知程度在不断地提高。近几年,AI成为热点话题,用户对AI的理解和认可度不断提高。
在这样的背景下,我们认为,AI已经从IoT的“加分项”逐渐成为IoT的“标配”。如果一款IoT产品没有智能的支持,那么它可能很难得到市场的认可,销量也难以保证。因此,几乎每款360的IoT产品都主打“智能”的概念。比如,智能家居摄像头、智能扫地机器人、智能行车记录仪、智能儿童手表等。其中的智能功能对提升用户体验非常重要。
我们已经进入了AIoT的时代。AIoT时代对IoT产品主要有两点需求:
1.提供AI的能力
当用户购买一款智能摄像头产品时,已经不能满足于产品只能提供最基本的视频直播和离线视频存储功能,而是希望它能够提供更加全面的功能。
以360小水滴摄像头为例,它除了基本的功能之外,还具备人形检测、陌生人检测的功能。当陌生人进入到监控范围内,摄像头可以自动向用户进行报警,将相关视频和图片传送给终端用户,使用户了解相关情况并加以判断。除此之外,它还具有家人识别、时光相册等功能。在一线大城市工作使十分繁忙的父母在白天基本没有时间陪伴子女,小水滴摄像机可以通过自动分析用户的情感和行为,自动检测出Timeline定时发送给家长,家长可以此判断孩子在家的情况。它也能够进行哭声检测,使用户可以自己判断孩子是否有异常的情况。此外,针对一些垂直领域,智能摄像头也提供智能监护、智能看店等更加定制化的功能。
2.形成数据闭环
小水滴应用每天要处理上亿级的调用,而每天上亿级的数据积累则可以用来不断优化算法。实际的家庭场景是一个相当复杂的场景。在摄像头下,面对不同的光照、角度,人脸的尺寸、大小等方面都不一样。即使是在其他场景下性能优异的模型,也难以保证在这种复杂的家庭场景下表现出同样高的性能。因此需要通过形成数据闭环,不断地进行优化。现在360的系统正确率可以达到99%。从与竞品比较的角度看,它是目前在家庭场景下世界范围内性能最好的系统之一。
360智能摄像头背后的核心算法
在摄像头系统背后,是很多与人脸、人体相关的算法。在人脸方面,需要做人脸检测、人脸跟踪、人脸关键点检测和几何变换。当几何变换完成之后,会得到一个尺寸相对而言易处理的标准化的输入。随后即可做出人脸识别和人脸属性(年龄、表情等)分析。相对应的,在人体方面,需要做人体检测、人体跟踪、人体关键点检测和几何变换。随后可以进行人重识别,以判断出现在不同摄像头中的人是否是同一个人,还可以进行行为分析,以判断老人、小孩是否跌倒等情况。
这些背后的核心技术是深度学习。整个系统的核心则是如何设计一个更好的深度学习框架。
对智能摄像头而言,除了单个摄像头的技术问题之外,还有一个重要的问题是智能摄像头网络。如果家的面积比较大,需要同时安装多个智能摄像头,这可能会面临问题,比如陌生人检测,如果每个摄像头都单独进行陌生人检测,那么当一个陌生人进入家中时,用户会同时接收到十几二十条推送,大大降低用户体验感。因此,不同摄像头之间需要进行协同联动。根据360的需求调研,在智能摄像头网络中,核心在于找到关注物体在多个摄像头间的对应关系。如图,当一个人从左边移动到右边时,需要判断在两个摄像头中出现的某个人是否是同一个人。如果能建立起其间的对应关系,那么后续可以进行很多相应的处理以提升用户体验。而建立对应关系是需要融合多种信息的工程问题。如果是比较远端的信息,要做的是基于行人重识别的技术。首先检测出人,然后对两个人是不是同一个人进行判断。如果智能摄像头放在门口,有稳定的人脸信息,基于人脸检测的话即可达到更好的效果。
360的其他AIoT产品
除了小水滴智能摄像头之外,360还有其他的智能应用。
智能后视镜
标准后视镜的主要作用是记录行车的情况。但现在用户对人工智能的需求越来越高,因此很多后视镜产品会提供一些额外的功能,智能后视镜应运而生。智能后视镜可以提供前车碰撞预警、前车启动预警、车道偏离预警等功能。对这些功能,用户都可以自行选择打开或者关闭。
前车碰撞预警:如果与前车距离过近,智能后视镜会启动报警;
前车启动预警:如果司机停车时在休息、玩手机,当前车启动时,智能后视镜会对用户进行提醒;
车道偏离预警:判断用户的车是否偏离轨道。
智能后视镜中的AI算法所面临的核心问题是如何在资源受限的情况下提升用户的体验。如果是在资源完全不受限的情况下在云端进行计算,当前的算法相对能够达到很好的效果。但问题是,像智能后视镜这类可能价格仅有200元左右的一个产品,硬件成本是非常重要的考虑因素。360的做法是尽量能够应用硬件本身剩余的资源来增加AI的能力。这对算法的优化提出了非常高的要求。使用标准的产品,在后续的升级中加入360的算法,通过对算法进行不断的迭代优化,从而给用户提供良好的体验。
智能扫地机器人
智能扫地机器人在国外的市场渗透率很高。通过网上商城的指标可以看到,这类产品在国内市场的渗透力和购买率也在急速地提高。
早期扫地机器人扫地方法是比较低智的。它们的原理基于碰撞检测,当碰到障碍物是随机转向变换角度再继续清扫。而新一代的智能扫地机器人,会对家庭整体情况进行建模,之后进行有规律的清扫。这既保证能够清扫到所有的地方,同时又不进行多余的重复清扫。与早期扫地机器人相比,用户可以感觉出这确实是一款智能的产品。此外,基于对家庭情况的建模,可以对清扫行为直接进行控制。只需要在APP中進行简单的操作,即可控制开始进行清扫的时间、需要清扫的区域等。智能扫地机器人在消费能力比较高的一线城市会有非常明显的优势。
360智能扫地机器人背后的技术与360无人车技术类似。第一步是进行高精地图的定位。这一步在智能扫地机器人中,是通过单线激光雷达来完成的。在完成建图时,可以基于所建的高精地图完成定位。在无人驾驶的场景下是对车进行的定位,而在扫地机器人的场景下则是对机器人的定位。该算法可以同时完成建图和定位,并不需要预先建立地图。其最大优点是可以随时适应不同的场景,无需预先的初始化,用户体验可以得到提升。下一步是完成感知。在无人驾驶中是对人和其他车辆进行的感知,而扫地机器人是对障碍物进行实时的感知,之后对扫地的路线进行规划。最后按照所设计的路径进行自动化的控制,按照预先设定的路径进行清扫。整个过程的每一步都需要AI算法的辅助。
AI在IoT应用中的技术难点
AI在IoT中的应用主要面临三个挑战:第一,模型要小。低成本的智能硬件产品受到硬盘、内存资源的限制,同时也存在远程更新的问题。因此,能够做到模型小可以成为很大的优势。第二,线上速度要快。很多IoT设备的CPU资源比较匮乏,而一些产品需要进行实时处理。因此,速度是非常重要的因素。第三,预测要准。因为对于陌生人检测等云端应用而言,误报率是重要的指标。如果经常有误报,对用户进行打扰的话,用户体验会大大降低。
一个实际使用的系统应该同时满足以上三点。模型小和速度快基本上不矛盾,一般速度快的模型相对来讲也会比较小。但是预测准和速度快是冲突的,一般性能更好的算法速度会更慢。所以在实际使用中,一定要做好速度和性能的平衡。具体在实际应用中可以从四个角度共同进行优化,以处理好速度和进度的关系。
基础模块
首先是基础算法,即最底层算法模块的选择。它是决定后端算法的基础。在视觉领域中,最常见的基础模块是卷积。如果基础模块的选择上出现问题,那么后面所有都是“空中楼阁”。
模型调优
当选取了性能良好的基础模块之后,下一步就是进行模型的调优。在深度学习领域,这一步就是模型结构参数的调整。对于某些次要的层,如果对速度要求比较高,而这些层对速度应该比较大且对性能要求较小,那么可以去掉这些层。对于某些常见的应用,如果有多款不同的产品线,当每款产品的性能指标不一样时,单独手工指定模型的人工成本会非常高。针对这个问题,可以进行模型结构自学习,通过使用高效的模块进而提升模型整体的效果。
训练优化
在选定并优化模型之后,要对模型训练进行优化。使用不同的训练方法也会使算法和模型的最终性能产生较大的差异。训练优化包括进行数据增强和知识蒸馏。数据增强是指,在训练时,使用在线负样本挖掘技术,对数据不平衡进行更好的处理。知识蒸馏是针对像深度学习这种目标寻找局部最优解的非线性优化,首先训练一个更大的模型,得到一个更好的结果,然后用该结果去指导训练小模型。以大模型的输出作为小模型的标签,使小模型在最初有更好的方向,从而达到更好的局部最优解,最终提升性能。
工程优化
最后面临的是工程优化。需要充分利用GPU 或者 ARM Neon等硬件的加速能力。此外,选择精心优化的底层库,设计良好的模型,从而可以提升50%以上的速度。最后剖析代码,确定最耗时的部分并对此进行优化。
总之,将AI算法应用部署在IoT设备中是一个系统性的工程。实际使用的系统在设计的时候就对整个系统做出全面的规划和系统化的优化。这样在实际应用中才能达到理想的效果。
(本文根据“2018雷克大会”现场速记整理而成,未经演讲人审阅。)