毕盛
摘要:人工智能算法如何有效地运行在嵌入式智能终端(即边缘计算)是近年研究的热点,本文从嵌入式人工智能技术研究的意义以及所面临的问题入手,并从硬件平台、算法设计以及算法部署三个方面展开,阐述嵌入式人工智能技术开发的思路,最后通过一个应用实例说明此开发过程。
关键词:边缘计算;嵌入式系统;人工智能
1研究意义
随着“AloT(人工智能物联网)=Al(人工智能)+loT(物联网)”的发展,若把算法都部署在云平台,上进行,会给网络通信带来不小的压力,并且会面临数据传输的延迟性以及安全性等问题,因此并不是所有的智能终端都需要利用云平台来运行,因此如何在智能终端上直接运行算法的边缘计算应运而生。
边缘计算相对于云平台有如下优势:(1)实时性高,不需要传输数据从而减少反应延迟;(2)可靠性高,即使网络断开也能正常工作;(3)安全性高,避免隐私数据被上传;(4)部署灵活,可在各种终端灵活部署;(5)更加节能,嵌入式系统低功耗特性以及减少了传输过程的能耗等;(6)网络流量低,有效抑制了网络拥塞;(7)类人化,人就是作为独立的智能体生存在社会网络中。
当然边缘计算不是为了代替云计算,而是作为云计算的一个补充。
据IDC预测,到2020年将有超过500亿的终端与设备联网,而有50%的物联网网络将面临网络带宽的限制,40%的数据需要在网络边缘分析、处理与储存。边缘计算市场规模将超万亿,成为与云计算平分秋色的新兴市场"。因此吸引越来越多的公司加入到边缘计算开发当中。
2边缘计算的挑战与机会
边缘计算就是在嵌入式平台上能有效地运行各种智能算法,从而使终端具有类似人一样的智能。如图1所示,智能算法大致可以归为三类:(1)认知环境,其中包括物体识别、目标检测、语义分割和特征提取功能,涉及了模式识别、机器学习和深度学习等技术;(2)显示场景,其中包括复原算法、三维点云展示和场景生成,涉及了最优化、虚拟现实、深度学习GAN网络等技术,(3)控制机构,其中包括智能控制,涉.及了强化学习神经网络控制等技术。但是边缘计算环境下嵌入式平台的运算能力弱,因此如何能有效的运行各种智能算法是一个很挑战的问题。
随着人们对人工智能越来越深入的研究,边缘计算也有了-系列发展的机会:(1)目前通用的计算机体系硬件体系结构并不符合人脑的结构构成,所以计算效能还有很大的提升潜力,因此这为边缘计算平台提供了弯道超车的可能性;(2)当前的智能算法还有很大改进的空间,例如通过深度学习训练出的特征往往优于人们传统认识的特征(例如边缘和角点特征等),因此这为边缘计算在算法改进上提供了很大空间;(3)边缘计算平台即嵌入式系统往往是实现某种特定的应用,因此可以根据需求对算法进行各种简化,并且可提出合适的部署方案。
结合边缘计算所面临的挑战和机会,本文从硬件架构、算法设计和算法部署三个方面展开边缘计算的开发和应用。
3边缘计算环境下的硬件架构
人工智能(AI)从云端走向边缘端,需要嵌入式硬件有较好的运算能力,因此各芯片厂家在芯片内部集成了便于加速运算的硬件模块,其中包括如下。
(1)多核处理架构。其中异构多核架构即结合两种或多种不同类型的芯片内核架构,使其能够提供适合各种应用的处理器性能,以及更有效功耗和更少的物理空间,近年来在嵌入式领域得到了大范围推广,例如现在推出的高性能ARM核芯片瑞芯微RK3399等是基于异构多核架构的。
(2)嵌入式GPU。嵌入式芯片内部集成GPU,从而提高显示处理能力,并在边缘计算环境下实现并行加速计算,主要有两种类型:堆核,如ARM芯片采用的Mali GPU;大核,如高通公司采用的Adreno GPU。
(3)神经网络处理器(NPU)。采用“数据驱动并行计算”架构,颠覆了传统冯.诺依曼计算机架构,从而可以加速深度学习算法,如瑞芯微RK3399Pro、寒武纪MLU100、华为麒麟980和高通骁龙855等芯片。
(4)数字信号处理DSP。DSP内部集成了硬件乘法器、多总线和信号处理单元,通过DSP指令集可实现算法的硬件加速,例如TI、ADI等公司专用的DSP芯片,Xilinx公司、英特尔可编程解决方案事业部(注:英收购的Altera公司)的FPGA集成了DSP单元。
(5)基于算法定制化的ASIC——XPU和DLA。根据需求设计特定人工智能算法芯片“xPU”,例如APU、BPU等,以及Google公司推出的张量处理器TPU。英伟达提供了的DLA(深度学习加速器),并进行开源,瞄准了嵌入式和IoT市场。
(6)芯片内核加速单元一ARM核NEON。ARMNEON是单指令多数据流(SIMD)技术,可用于加速多媒体和信号处理算法,例如一些针对ARM芯片的前端部署方案诸如NCNN2采用NEON对深度学习的卷积运算进行加速。
(7)类人脑芯片。例如IBM公司的TrueNorth(真北),模拟人脑神经网络设计的64芯片系统,数据处理能力已经相当于包含6400万个神经细胞和160亿个神经突触的类脑功能。
4边缘计算算法设计
设计适合于边缘计算环境下运行的算法,如图2所示,主要从以下几方面进行考虑:
(1)在对外界环境认知过程中,如何有效地提取特征很重要,从边缘特征提取方法到压缩感知理论以及到基于深度学习的特征提取方法,都是在研究一种有效特征提取方法,因此可以针对嵌入式平台研究一种在精度和速度上相互兼顾的方法。
(2)嵌入式系統往往是针对一个具体的应用,而算法研究要考虑到普适性,所以在边缘计算环境下可以结合具体的应用对算法进行改进,从而减少计算量提高运算速度,例如可以把面向未知场景的全局优化搜索问题转为针对某个具体场景的局部优化问题。
(3)利用傳感器直接采集数据代替算法对此信息的估计过程,从而降低算法运算量。例如单独根据视觉计算出相机的位姿,可以通过结合惯性传感器(IMU)来降低计算量使其适合于边缘计算环境下运行。
(4)在深度学习过程中,需要对网络进行简化,主要包括:1)删除对模型性能影响不大的卷积核;2)深度可分离卷积和1X1卷积代替普通卷积;3)浮点数进行整形量化,二值化网络中参数用1位来表示;4)精简模型学习复杂模型的输出。例如Google公司的MobileNet[3]、伯克利与斯坦福大学的SqueezeNet[4]和Face++公司的ShuffleNet等,采用了轻量级的网络结构,且保持了较为实用的准确率。
5边缘计算前端部署
边缘计算算法可以借助硬件加速来提高运行效率,例如瑞芯微RK3399、高通骁龙855或华为麒麟980芯片都是基于ARM核,采用了多核、Mali GPU以及支持ARMNEON加速。其中在异构多核处理器调度方面,针对优化目标分别从满足性能、功耗优化、满足公平性和并发程序瓶颈优化等方面进行优化部署,除了利用多核特性实现对算法的整体调度优化外,深度学习等智能算法也需要硬件加速,如图3所示,可以利用ARMNEON单元实现卷积运算的加速。每次1x1卷积操作时,将输出特征图按照8个每组使用OpenMP平分给设备可调用的每个CPU以充分利用硬件资源。之后针对每8个输出特征图,会以1x8的小块为单位同时进行8个输出特征图的计算。
一些公司也开发了前端部署方案,例如ARM公司OPENAILAB的Tengine框架l6、Google公司的TensorFlowLite[7]、腾讯公司的NCNN框架[2],小米公司的MACE框架[8和百度公司的Mobile-deep-learning9、亚马逊公司的TVM1101和美国高通公司的SNPEI11等,都是通过借助多核和加速单元实现卷积的快速计算,从而在移动设备上有效的实现深度学习算法。
同时针对具体硬件平台,ARM公司OPENAlLAB开发了基于RK3399芯片的EAIDK开发套件6]、中科创达公司开发了基于高通骁龙845芯片ThundercommTurboXAI Kit开发套件1121、NVIDIAJetsonNano开发套件等[13]。
6边缘计算实例
本实验室的张英杰、张粤和李智豪三位同学在边缘计算环境ThundercommAI Kit平台上实现了结合自然语言理解和环境认知的智能服务系统,用于机器人结合场景的对话系统中,如图4所示。例如人问机器人‘瓶子在哪里”,机器人通过自然语言处理得到语义文本信息;与此同时,机器人对视觉图片也在进行目标检测,根据训练样本集VOC的物体类别,在图片中可以识别出“瓶子”和“显示器”并框选出来;接着通过相似度的评价方法对语言理解语义和视觉认知的物体名称进行匹配,并根据物体的坐标信息,可得出“瓶子在显示器右侧”。
整个过程主要包括:(1)自然语言理解,由于语音数据量不大,同时有较多的基于云端的商业解决方案,因此借助讯飞公司的语音识别SDK实现语音处理,获得语义文本;(2)物体目标检测采用深度学习的思路实现,但传统的深度网络计算量大,不能在边缘端运行,因此需要对网络轻量化并选取合适的前端硬件部署方案,本项目利用VOC数据集在Caffe框架下训练MobileNet-SSD轻量级深度网络,并利用NCNN框架实现在硬件上的部署;(3)利用相似度评价方法实现文本语义和物体指称的匹配,最终确定出物体的相对位置。
相对于传统的非场景对话系统,本系统人机交互程度高,可用于人与机器人协作过程中,同时整个系统在嵌入式平台上进行了实现并成功部署。本系统参加了2018年中科创达技术大会并进行了现场实物演示,获得了一等奖。
参考文献
[1]胡又文(ID:axzqjsj),华尔街见闻专栏作者,边缘计算,5G时代新风口,https://wallstreetcn.com/articles/3487892,2019.03.05
[2]NCNN[eb/ol],https://github.com/Tencent/ncnn
[3]HowardAG,ZhuM,ChenB,et al.MobileNets:EfficientConvolutionalNeuralNetworksforMobileVisionApplications[J/OL].https://arxiv.org/pdf/1704.04861.pdf,2017.
[4]landolaFN,MoskewiczMW,AshrafK,et al.SqueezeNet:AlexNet-levelaccuracywith50xfewerparametersand<1MBmodelsize[J/OL].https//arxiv.org/pdf/1602.07360.pdf,2016.
[5]ZhangX,ZhouX,LinM,et al.ShuffleNet:AnExtremelyEfficientConvolutionalNeuralNetworkforMobileDevices[J/OL].https/arxiv.org/pdf/1707.01083.pdf,2017.
[6]Tengine[eb/ol,ht://ww.openailab.com/,2019,2019.04.10
[7]TensorFlowLite[eb/ol],https://tensorflow.google.cn/lite/,2019.04.10
[8]MACE[eb/ol],ht:/github.com/XiaoMi/mace/blob/master/README_.zh.md,2019.04.10
[9]Mobile-deep-learning[eb/ol,https://github.com/PaddlePaddle/paddle-mobile,2019.04.10
[10]TVM[eb/ol],https://tvm.ai/,2019.04.10
[11]SNPE[eb/ol],https://developer.qualcomm.com/docs/snpe/overview.html,2019.04.10
[12]ThundercommTurboXAlKit[eb/oI],https://www.thundercomm.com/app__zh/product/1536844968290219,.2019.04.10
[13]NVIDIAJetsonNano[eb/ol],https://www.nvidia.cn/autonomous-machines/embedded-systems/jetson-nano/,2019.04.10