嵌入式人工智能技术开发及应用
时间:2020-03-18 14:41

  技术研究的意义以及所面临的问题入手,并从硬件平台、算法设计以及算法部署三个方面展开,阐述嵌入式

  随着“AIoT(人工智能物联网)=AI(人工智能)+IoT(物联网)”的发展,若把算法都部署在云平台上进行,会给网络通信带来不小的压力,并且会面临数据传输的延迟性以及安全性等问题,因此并不是所有的智能终端都需要利用云平台来运行,因此如何在智能终端上直接运行算法的边缘计算应运而生。

  边缘计算相对于云平台有如下优势:(1)实时性高,不需要传输数据从而减少反应延迟;(2)可靠性高,即使网络断开也能正常工作;(3)安全性高,避免隐私数据被上传;(4)部署灵活,可在各种终端灵活部署;(5)更加节能,嵌入式系统低功耗特性以及减少了传输过程的能耗等;(6)网络流量低,有效了网络拥塞;(7)类人化,人就是作为的智能体在社会网络中。

  据IDC预测,到2020年将有超过500亿的终端与设备联网,而有50%的物联网网络将面临网络带宽的,40%的数据需要在网络边析、处理与储存。边缘计算市场规模将超万亿,成为与云计算平分秋色的新兴市场 [1] 。因此吸引越来越多的公司加入到边缘计算开发当中。

  边缘计算就是在嵌入式平台上能有效地运行各种智能算法,从而使终端具有类似人一样的智能。如图1所示,智能算法大致可以归为三类:(1)认知,其中包括物体识别、目标检测、语义分割和特征提取功能,涉及了模式识别、机器学习和深度学习等技术;(2)显示场景,其中包括复原算法、三维点云展示和场景生成,涉及了最优化、虚拟现实、深度学习GAN网络等技术;(3)控制机构,其中包括智能控制,涉及了强化学习、神经网络控制等技术。但是边缘计算下嵌入式平台的运算能力弱,因此如何能有效的运行各种智能算法是一个很挑战的问题。

  随着人们对人工智能越来越深入的研究,边缘计算也有了一系列发展的机会:(1)目前通用的计算机体系硬件体系结构并不符合人脑的结构构成,所以计算效能还有很大的提升潜力,因此这为边缘计算平台提供了弯道超车的可能性;(2)当前的智能算法还有很大改进的空间,例如通过深度学习训练出的特征往往优于人们传统认识的特征(例如边缘和角点特征等),因此这为边缘计算在算法改进上提供了很大空间;(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单元。

  根据需求设计特定人工智能算法芯片“xPU”,例如APU、BPU等,以及Google公司推出的张量处理器TPU。 英伟达提供了的DLA(深度学习加速器),并进行开源,瞄准了嵌入式和 IoT 市场。

  (6)芯片内核加速单元—ARM核NEON。ARMNEON是单指令多数据流(SIMD)技术,可用于加速多和信号处理算法,例如一些针对ARM芯片的前端部署方案诸如NCNN [2] 采用NEON对深度学习的卷积运算进行加速。

  (7)类人脑芯片。例如IBM公司的TrueNorth(真北),模拟人脑神经网络设计的64芯片系统,数据处理能力已经相当于包含6400万个神经细胞和160亿个神经突触的类脑功能。

  (1)在对认知过程中,如何有效地提取特征很重要,从边缘特征提取方法到压缩理论以及到基于深度学习的特征提取方法,都是在研究一种有效特征提取方法,因此可以针对嵌入式平台研究一种在精度和速度上相互兼顾的方法。

  (2)嵌入式系统往往是针对一个具体的应用,而算法研究要考虑到普适性,所以在边缘计算下可以结合具体的应用对算法进行改进,从而减少计算量提高运算速度,例如可以把面向未知场景的全局优化搜索问题转为针对某个具体场景的局部优化问题。

  (3)利用传感器直接采集数据代替算法对此信息的估计过程,从而降低算法运算量。例如单独根据视觉计算出相机的位姿,可以通过结合惯性传感器(IMU)来降低计算量使其适合于边缘计算下运行。

  (4)在深度学习过程中,需要对网络进行简化,主要包括:1) 删除对模型性能影响不大的卷积核;2)深度可分离卷积和1×1卷积代替普通卷积;3)浮点数进行整形量化,二值化网络中参数用1位来表示;4)精简模型学习复杂模型的输出。例如Google公司的MobileNet [3] 、伯克利与斯坦福大学的SqueezeNet [4] 和Face++公司的ShuffleNet [5] 等,采用了轻量级的网络结构,且保持了较为实用的准确率。

  边缘计算算法可以借助硬件加速来提高运行效率,例如瑞芯微RK3399、高通骁龙855或华为麒麟980芯片都是基于ARM核,采用了多核、Mali GPU以及支持ARM NEON加速。其中在异构多核处理器调度方面,针对优化目标分别从满足性能、功耗优化、满足公平性和并发程序瓶颈优化等方面进行优化部署,除了利用多核特性实现对算法的整体调度优化外,深度学习等智能算法也需要硬件加速,如图3所示,可以利用ARM NEON单元实现卷积运算的加速。每次1x1卷积操作时,将输出特征图按照8个每组使用OpenMP平分给设备可调用的每个CPU以充分利用硬件资源。之后针对每8个输出特征图,会以1x8的小块为单位同时进行8个输出特征图的计算。

  本实验室的张英杰、张粤和李智豪三位同学在边缘计算Thundercomm AI Kit平台上实现了结合自然语言理解和认知的智能服务系统,用于机器人结合场景的对线所示。例如人问机器人“瓶子在哪里”,机器人通过自然语言处理得到语义文本信息;与此同时,机器人对视觉图片也在进行目标检测,根据训练样本集VOC的物体类别,在图片中可以识别出“瓶子”和“显示器”并框选出来;接着通过相似度的评价方法对语言理解语义和视觉认知的物体名称进行匹配,并根据物体的坐标信息,可得出“瓶子在显示器右侧”。

  整个过程主要包括:(1)自然语言理解,由于语音数据量不大,同时有较多的基于云端的商业解决方案,因此借助讯飞公司的语音识别SDK实现语音处理,获得语义文本;(2)物体目标检测采用深度学习的思实现,但传统的深度网络计算量大,不能在边缘端运行,因此需要对网络轻量化并选取合适的前端硬件部署方案,本项目利用VOC数据集在Caffe框架下训练MobileNet-SSD轻量级深度网络,并利用NCNN框架实现在硬件上的部署;(3)利用相似度评价方法实现文本语义和物体指称的匹配,最终确定出物体的相对。

  相对于传统的非场景对话系统,本系统人机交互程度高,可用于人与机器人协作过程中,同时整个系统在嵌入式平台上进行了实现并成功部署。本系统参加了2018年中科创达技术大会并进行了现场实物演示,获得了一等。

  毕盛(1978-),男,博士,副教授,主要从事智能机器人、FPGA快速处理算法、嵌入式智能终端及智能手机研究和开发工作。

      大红鹰娱乐