一文读懂如何基于NeuroPilot平台打造手机AI!

6月21日起,智东西公开课推出AI芯片系列课第一季,7位AI芯片领域大咖将在此为大家进行系统讲解,带领大家一起认知芯片新势力,看清芯片技术创新难点,把握芯片落地应用趋势,一起点燃中国芯希望。

第一课由联发科技计算与人工智能本部总监张家源主讲,主题为《如何基于NeuroPilot平台打造手机AI》。本文为张家源的主讲实录,共计6959字,预计8分钟读完。一起了解下张家源的主讲提纲:

1、NeuroPilot平台可实现的手机AI应用
2、手机AI的挑战
3、NeuroPilot平台如何克服这些挑战

在浏览正文之前,可以带着以下5个问题:

-对于众多的手机应用,NeuroPilot平台是如何在算法上实现协同合作的?
-手机AI应用在软件和硬件上的趋势分别是什么?
-作为开发者,该如何通过NeuroPilot SDK快速地落地AI应用?
-针对开发者,基于NeuroPilot平台的开发流程是怎样的呢?
-在手机AI应用中,NeuroPilot平台有什么优势?

主讲环节

张家源:大家好,我是联发科技计算与人工智能本部总监张家源。今天晚上很荣幸有机会来到这个平台,与大家分享联发科技看待AI,尤其是在终端AI的趋势与机会。联发科技成立于1997年,这二十一年来,联发科技在不同的领域,从家用,手机或车用市场累积了很多的知识产权,目前也正是AI从云端往终端蓬勃发展的时期,联发科技已经准备充分了,我们提出的AI平台NeuroPilot也正是为了加快终端AI,提供跨平台、高度软硬统一以及集成整合的解决方案。

一文读懂如何基于NeuroPilot平台打造手机AI!

今天晚上我们围绕三个主题来讲,第一个主题是:NeuroPilot平台目前可以实现的手机AI应用有哪些。从这些应用中我们可以归纳出有哪些手机AI所遇到的挑战。最后NeuroPoliot是如何克服这些挑战而提供出解决方案。

一文读懂如何基于NeuroPilot平台打造手机AI!

在进入到主题之前,我们还是先来说明一下,通常一个AI的应用与开发会分为两个阶段,首先是模型的训练阶段,Training阶段;其次是推论阶段,Inference阶段。模型的训练需要海量的资料以及经过良好设计的模型,通过TensorFlow、Caffe等时下最普及的框架来达成。但通常这个模型需要的规模大小有所不同,一般来说,越复杂越庞大的模型所需要的训练时间越多,这阶段通常不会是在手持装置上执行,因为它是需要强大运算能力的CPU和GPU等云端处理系统来训练。

对于模型的推论,一旦模型经过训练完成之后就可以得到一组即时运算的模型权重资料。这一部分所需要的运算能力相对会远比模型的训练来的小。因此第二阶段的推论相对来说,是有机会可以在手持式装置上的即时运作,但是并非所有的手持装置都可以负得了这个阶段所需要的运算能力。要能够实现即时的模型推论,如果没有特殊的硬体加速,也是很难达成的。

一文读懂如何基于NeuroPilot平台打造手机AI!

首先我们现在看一下手机AI应用的观察以及类别。这里我们针对这些手机的AI应用分成了六个类别,第一个是图片;第二个是视频;第三个是扩增实境AR;第四个是语音;第五个是代理人;最后是跟安全有关的。在这些项目中,联发科技与生态系统上的算法伙伴公司一起协同开发,并确定这些项目的落地。在研发科技的平台上也是可以得到充分的资源,并且有足够的使用者体验。

联发科技与生态系统上的合作模式,从目前大家应用体验最多的图片来看,有所谓的Bokeh(背景虚化)、Scene Detection、Face Detection等,同时我们与算法公司合作去确定这些算法在联发科技的平台上可以得到最佳的效能。

一文读懂如何基于NeuroPilot平台打造手机AI!

在这么多的相关应用下,AI图像和影像应用有一些基础的元素,总共归纳出这四大项,包含对象检测、画面分割、超分辨率以及姿势识别。

首先,对象的检测是通过传统实作方式,这个项目我相信大家在目前最新的手机上都已经得到了很好的应用。而画面分割的应用相对广泛,从手机的角度来看,第一我们可以针对对象,接着我们可以把画面给分割出来;从自驾车的定义来讲,我们可以知道哪边是车道,哪边是车辆以及哪边是讯号,这也可以做出很多广告投放的效果。第三个是Super Resolution(超分辨率),我们都希望能够在放大图片的过程中,让图像能够具有更大的尺寸,更多的像素来呈现出更高的画质。

但是你如果只是使用一般的滤镜处理,可能会让图像充满马赛克或模糊不清,而Super Resolution就是使用AI来学会如何在放大图片之后能将成果套用到训练资料,让放大图片的过程中减少失真。

第四个是Pose Estimation(姿势识别),对于一般的动态捕捉技术来说,你往往需要在手、脚或头部佩戴多个追踪器才能检测出动作,通过深度学习技术的协助可以从图像影片中检测出你的眼睛、肩膀、手、腰等动作进而可以识别出你的姿势,这个应用可以在监视系统里面安置于人潮多的车站、街道以及其他容易出现紧急状况的地方,以提供必要的协助。

这些蓬勃的发展对于平台或是芯片的运算需求仍然是持续增加的。对于这个需求,我们往眼前看,在接下来的几年内都会有非常高运算力的要求。

一文读懂如何基于NeuroPilot平台打造手机AI!

刚才我们谈完了在影像上面的应用,接着我们谈一谈在语言翻译上的应用。

第一个,谈到语音,我们就来看语音相关的应用,目前跟语音相关的应用体验其实都还不错,我相信大家在出国的时候都会拿出手机来翻译,上图这个例子叫做PERIGO,是葡萄牙文的意思,当你看不懂时,你就会拿出手机来扫描,同时也可以很快地从云端得到翻译。

对于在语音上面的发展,我觉得目前最大的问题还是在另外一个层次的自然语言处理,这里有两句英文,但是如果丢给机器翻译可能会得到同样的意思。第一句话是“I arrived at the bank after crossing the street. ”,意思是过了这条街就可以到银行了。但是另外一句是:“I arrived at the bank after crossing the river.”,意识是过了这条河就会到对岸。

由于语言的变动性高,语义理解目前仍然是一个很大的挑战。

一文读懂如何基于NeuroPilot平台打造手机AI!

在影像上,我最喜欢用所谓的摄像应用Bokeh Effect(背景虚化)做另外一个例子,由于我本身也有在摄影,玩单眼相机。一般来说,如果你要得到背景虚化,可能要选择类似光圈一点二大小的定焦镜,但这些传统的背景虚化方式在手机上可能会需要两个双摄摄像头。通过两个摄像头的影像可以分析出照片中的前景背景以及整张照片的深度资讯。

有了这些深度资讯就可以有效地把背景和前景区隔开来,并且把背景进行虚化。而这会需要相对昂贵的摄像头成本才做得到,目前很多AI的发展会希望让单摄像镜头的手机经过模型的训练来分辨出前后景之分,进而达到背景虚化的效果,同时手机成本的下降也可以得到显著的效果。

一文读懂如何基于NeuroPilot平台打造手机AI!

对于这么多的手机AI应用,很多人可能会认为在终端Device上可以如同在PC或者是使用云端运算得到同样的效果,而实际上不然,实际上在实现的时候,在手持装置上你会遇到很多现实的物理限制,比如一般手机的运算速度不够快,导致很多有用有趣的AI应用是无法完整地在手机上运作。

联发科技针对AI潮流的蓬勃发展,我们的宗旨是确定我们的软硬体平台,可以充分提供开发者所需要的下个时代的技术,让使用者得到满意的体验。另外,我们的NeuroPilot平台不管是AI软体框架的使用或者是手机的运算能力都有机会可实现的。

一文读懂如何基于NeuroPilot平台打造手机AI!

接着我们来讨论一下,目前手机AI所遇到的挑战会有哪一些。

终端人工智能(Edge AI)最主要有四大需求,或者可以说有四大挑战需要克服。从云端往终端移动,首先是对于回应的要求要短,对于隐私的需求要高,终端Device的连接要方便,终端Device需要具有低功率。这四大需求确实是目前推动人工智能从云端往终端的四大提升。

但是世界并不是这么美好的,终端人工智能受限于它的外型尺寸、电池大小、散热不易、贷款内存不够大等问题。因此对于做工程的人来说,你需要定义你的问题和定义你的目标,在有限的电力、带宽、内存及芯片大小下,达成最大化终端人工智能的好处。

一文读懂如何基于NeuroPilot平台打造手机AI!

首先,我们用手机AI中最常用的Vision或是图像的网络精度以及计算复杂度来看终端人工智能所遇到的挑战。左边指的是所谓的抽象层比较高,右边是进到更细的Pixel Level Quality部分。从左往右看,左边的Vision Perception意思是,只要做出分类或者是侦测位置的第一精度运算即可,目前所看到的每一Inference大概介于一到十GMACs。

接着,在认出物件的位置后,你自然而然地会想要去做Construction把环境建立起来,建立一个环境中需要去分割不同的物体,同时你也可能想要得到一些深度的资讯,甚至你想要得到这个场景中物件流动的方向,而这个部分大概又会比前面再增加十倍的运算力,大概会有将近一百个GMACs。

到最右边,在你建立的环境也认出了物体后,这时你是不是有可能会需要对Vision Quality做更大的最佳化。这里头目前最多的应用就是所谓的Image super-resolution,如何把一张小的照片或者影片借由AI训练来提升成更大的照片和影片并且没有失真,甚至由Image dehaze去模糊和去雾霾,亦或者是由Image denoise去模糊和去焦点。其中,这里的运算能力又比前一个增长了将近一百倍,这些需求就是往终端人工智能最大的驱动力。自然,而这些需求所带来的运算力就会增加越来越多的功耗。

一文读懂如何基于NeuroPilot平台打造手机AI!

越高的运算力需求,在HAI遇到最大优先级最高的问题前三项是功耗、功耗和功耗。要如何达成最好的功耗呢,方向上我们从两个角度下手。首先要优化算法来减少计算的需求,也就是所谓的轻薄短小化;再来,要使用合适的硬件,也就是异构运算来达到最佳的能耗比。

一文读懂如何基于NeuroPilot平台打造手机AI!

这方面的趋势有两块,第一个是我们刚刚说的网络轻薄短小化,考虑在手机上要做到低功耗,在算法的趋势上,目前已经从浮点32位到浮点16位,甚至到定点的Fixed 8,目前通过re-training的方式都可以做到精度损失控制在百分之一内。再往前看,目前我们看到的Complexity、Memory和BandWidth虽然慢了下来,但是在精确度持续的提高以及未来有硬件的支持,我们相信这方面的趋势可以持续的增长。

网络本身的精确度降低不会影响精准度,甚至我们可以进一步对网络做优化,也就是我们常听到的NN Reduction。在精准度损失可接受的情况下,可以将部分的计算做移除,而网络轻薄短小化的好处,我相信大家应该可以很容易地去理解,可以提升计算与记忆体使用的效率。因为你降低计算复杂度减少的计算量,降低记忆体的用量,带宽的使用也变小,自然而然带来的效益就可以附能越来越多的网络应用。

一文读懂如何基于NeuroPilot平台打造手机AI!

软件的趋势是如此,那在硬件上的趋势是什么呢?在硬件上的趋势,我们会强调的异构的运算。不同的应用案例对精度的要求会有所不同,趋势上要依据运算的属性来选择适当的硬件来执行。举例来说,CPU本身比较适合执行Control以及Serial Computing,类似像Mobilenet-SSD网路,将Mobilenet给APU执行,SSD给CPU执行,这就会是一个不错的搭配。

GPU本身比较适合平行或者是浮点运算,目前的趋势是较高精确度的要求会考虑使用浮点十六位的model运算在GPU上。

而APU(AI specialized processing unit)是特别为AI设计的硬件,例如针对Convolution的运算做了最佳化,这主要会是以Fixed Point定点运算为主。

硬件本身的发展趋势就是需要提供及时 real time 或者是runtime的异构运算來达到效能最佳化以及能耗最佳化。

一文读懂如何基于NeuroPilot平台打造手机AI!

我们谈了很多AI的应用,也谈到这些应用在平台上的软件硬件所遇到的挑战,那么联发科技的NeuroPilot是如何克服这些挑战呢。

联发科技的人工智能科技研发目的有几个。我们针对手机的AI硬件提供了加速芯片,并且也提供APP开发者简单好用的NeuroPilot SDK,一个好的硬件要加上简单好用的软件才能够发挥加成的功用。在这软件中也包含着一些工具包,帮助你顺利的转换浮点到定点,而不会损耗精准度,或者提供不同的网络转换Convert,方便将你的model转换成可以在MTK手机平台上执行。

一文读懂如何基于NeuroPilot平台打造手机AI!

开发者如何通过NeuroPilot SDK快速地落地AI应用,大概的流程其实是相对简单的。左手边是开发者现有的模型与训练资料库,联发科技提供的NeuroPilot平台可以帮你快速地转换你的成果到我们的平台上。同时开发者通过不同的framework来做模型的训练,比如TensorFlow、Caffe等,但这些框架目前是非常多的,实际上也不是每种软体框架都适合在手机上执行,因此真正要在手机上执行模型的推论,其实是一个相对复杂而且困难的事情。

如果要每个开发者都自行去克服这些挑战,实际上是一件相当不可行的事情。正因为如此,联发科技开发一个适合开发者容易开发的AI软体框架NeuroPilot,让任何一个开发者都可以通过NeuroPilot将你已经训练好的模型快速地部署到我们的手机平台上。

一文读懂如何基于NeuroPilot平台打造手机AI!

在开始讲实作过程前,还是花一些时间跟各位介绍一下NeuroPilot SDK SoftWare的架构。我们从上往下看,大概有这几个层次。首先最上层的是我们的AI应用,例如face ID、Bokeh等;再下一层就是根据这些AI应用的model framework,我们有TensorFlow、TF Lite、Caffe、Caffe2等;再往下一层,我们提供了Quantization以及Model Converter,这时候可以载入TensorFlow Lite model,通过Android NN API将Update资讯往下传。

最下一层我们提供了Androidn NN Runtime,根据这些NN HAL service的能力来做动态的切换与Ext.。这边我们得说明一下,为什么联发科技会选择根据Android NN 的架构,我们希望大家能够加速发展,由于目前百花齐放,如果有个标准化的API可以加速算法开发,并且降低它在不同平台上转换的成本,这些额外的时间和成本应该是算法公司所要负的责任,联发科技选择Android的一个原因就是希望我们的客户或partner在转换平台上可以得到最好花费最低的利器。

一文读懂如何基于NeuroPilot平台打造手机AI!

接下来开始进入到最核心的部分,我们针对开发者的NeuroPilot的整体流程大致上分为两个部分。第一个部分是离线offline convert tool,第二个部分是On Device框架。在offline convert tool中,现行的AI软体框架有太多的样式,一个单纯的On Device框架基本上很难完全支持全部的框架,所以联发科技开发了一个Offline convert tool,目的是要把各式各样的AI model format可以转换成一个统一的格式,让TensorFlow的format可以往下传到我们的平台上。而On Device framework是基于Google开发的Android技术所延伸出来的一个有效好用的软体框架。

除了标准化的API,如果我们的客户或是我们的伙伴算法商有特别的需求,我们也提供的一个Extension的API让客户可以直接往下撰写他自己的OP。

一文读懂如何基于NeuroPilot平台打造手机AI!

接下来我们将演示如何转换网络模型以及API快速整合。其实过程非常的简单,首先演示的是,针对开发者,如何将网络模型转换TensorFlow模型。从左到右分为三阶段,第一阶段,如果开发者使用Caffe或者ONNX这几个开发框架在做训练的,我们提供的工具可以让你转换到TensorFlow模型,但如果你本身就是使用TensorFlow做训练的,那我们就可以直接支援。

第二阶段是我们所谓的model优化。通过我们提供的工具可以进行优化,包括神经网络的简化或者神经网路的精度轉換; 第三阶段,我们最后产生TensorFlow模型跑在Android框架上。因此这三个步骤都是我们联发科技会提供的软体工具包。

一文读懂如何基于NeuroPilot平台打造手机AI!

针对开发者的API整合也非常简单,流程基本上就是通过ANeuralNetworkTFLite_create()载入一个TensorFolw模型,接着通过ANeuralNetworkTFLite_getTensor()设计设定模型的输入与输出格式,接着通过ANeuralNetworkTFLite_invoke()执行模型,再通过ANeuralNetworkTFLite_getTensor()取得结果的分布,最后再通过ANeuralNetworkTFLite_free()来做释放。举一个目前最简单的相簿分类做例子,当你项目分类的APP执行起来时,首先载入已经Training好的TensorFlowLiteModel,将想要进行分类的照片设定到模型的输入,然后执行模型并取得照片分类的结果及其分布,重复这个过程直至完成所有的分类,接著离开并释放模型即可。

一文读懂如何基于NeuroPilot平台打造手机AI!

步骤相对来说比较简单,但是在这个过程中难免会遇到出错的地方,对于开发者来说,实际上困难的是在开发过程当中要如何有效地出错,可能是针对Performance做分析,也可能是针对应用本身的优化。NeuroPilot针对开发者的这些需求提供了三大类的工具,第一个是刚刚讲过的NN Utility;第二个是 profiling,通常在一个模型的推论效能不好时,你很难定位到真正的问题点,我们提供的这个工具可以让各位知道如何从所谓的模型端到系统端得到相对应的资讯;第三个是Debugger,一个模型推论过程中一旦发生错误,甚至是崩溃,NeuroPilot也可以提供相对应的解决方法。

一文读懂如何基于NeuroPilot平台打造手机AI!

通常开发者在分析效能的时候是很难针对系统资讯做全面的检测,只能单方面的来看自身的模型效能。但是实际上,效能不好不一定是单纯的模型推论所造成,很多的情况是系统层面的问题,比如可能是记忆体不足或者是运算能力资源被其他系统Task所占住,甚至是IO卡住等等。对于这些系统层面的问题,如果没有一个完整且良好的工具,那么你是很难进行分析的,联发科技提供了一个完整的Profiling Tool,可以让开发者完全掌握系统的变化,并且这个Tool也有完善的界面让开发者方便使用,同时使用Profiling Tool可以加快开发者的调整以及Debuger的过程。

一文读懂如何基于NeuroPilot平台打造手机AI!

我们用这一页PPT来归纳使用NeuroPilot的好处,联发科技人工智能平台的策略有以下三种。

第一,快速移植。我们提供标准的AndroidAPI以及高度整合的工具包来缩短移植部署的过程,其中有标准的Android NNAPI、容易使用的工具包以及一些基础的CV及NN函式库。

第二,我们提供了较佳的系统效能,包含系统优化的硬件加软件组合及开发工具来达成更佳的系统效能以及较少的电力消耗。其中,异构系统执行,我们可以正确分配任务给适当的处理器,利用核心算法来降低系统带宽的需求及网络复杂度的降低,并且我们也支持客制化OP以达成不同伙伴或厂商的差异化需求。

第三,NeuroPilot是跨平台的solution,跨了Android及Linux平台,针对这些不同的平台提供一致的体验,来满足联发科技在不同产品线包含的所有Phone、Home或是Automobile上不同的产品需求。

一文读懂如何基于NeuroPilot平台打造手机AI!

最后,我总结一下今日的概要。第一,人工智能从云端往终端的趋势是确定的,在这基础上,我们所需要的是,回应要快、隐私度要高、连结要快、功率要低,我们要解决的问题包含电力、散热以及带宽内存不够大的问题。第二,手机人工智能趋势是往低精度、轻薄化以及异构运算等方向发展。第三,联发科技通过硬件及软件的高度整合来提升手机AI的效能。我们额外投资的APU提供手机人工智能更佳的功耗以及计算效能,同时NeuroPilot平台提供更快的整合能力,最后NeuroPilot也提供跨平台/跨产品线的弹性让不同的平台得到一致的体验。以上就是今天的分享,谢谢大家。

Q&A环节

问题一
李海东-广智微芯-IC工程师

1,NeuroPilot的runtime层含义是什么?是如何满足战略合作伙伴的客制化需求的,一般开发者能否使用该机制?
2,NeuroPilot的性能指标怎样?(性能,功耗)
3,NeuroPilot适用于MTK的哪些芯片?
4,如何拿到详细的开发资料,及可供试用的各种型号的开发板?

张家源:
1、èRuntime 的含义指的是动态地针对model 的需求 (FP32 or Int8) 动态选择最适合的硬件加速。一般开发者可以使用该机制, 因为我们是根据Android-NN的架构,如果客制化需求是指客制化的OP, 我们有提供相对应的customization flow and service。

2、Helio P60所配备的dual APU性能达270GMACs, 同时功耗仅为竞品CPU的1/3。

3、2018年以后推出的芯片都适用, 包含手机 (Helio P60, 以及 P22) 或是其他电视、车用相关芯片。

4、请留下你的联络方式, 我会请客户支援部门联系你。

问题二
崔永明-平安科技-图像算法

1,目前手机ai是否都需要使用定制芯片来实现模型加速,可否使用手机的通用gpu来实现模型加速?
2,ai在移动端的趋势如何,是否算法前置到移动端是大的趋势?

张家源:1、在一般情况下, 如果只使用手机的通用gpu来实现模型加速, 往往会造成gpu 的效能不佳以及功耗表现不好的情况, 正是因为这样, 联发科技才投资NeuroPilot 以及特殊硬件APU, 来得到好的AI使用者体验。

2、如同今天所分享, 回应快, 隐私高, 连结便利, 以及功率低等趨勢都是推动终端AI的最重要因素, 这个趋势基本上已经确定了, 接下来几年算法*软件*硬件的进步可以预期带来10*10*10 有千倍的提升。

问题三
邓望明-酷派-产品总监

针对智能硬件比如智能安防摄像头,或者智能音响方面的AI联发科是怎么规划的?

张家源:这个问题范围有点广。联发科技的智能硬件会与生态链上的算法合作伙伴, 一同针对这些应用提出最佳化的解决方案。

问题四
李培华-中航华东光电-软件开发部经理
APU是否也是通过一个DSP核实现的,其算力如何?与高通,华为的AI芯片比较如何?支持哪些AI架构?

张家源:联发科技在Helio P60的APU 是由两颗DSP-like 来实现, , 我们可以同时支持两个model 来实现不同AI 应用 (eg, 相机人脸辨识加上Bokeh)。此外, NeuroPilot支援目前主流框架TensorFlow, Caffe , ONNX (MXNET, Caffe2), 得以让使用者快速布署模型于联发科技的手机平台.

问题五
吴金豪-深圳芯海科技-IC验证工程师

1,Neuropilot平台的竞争对手有哪些?分析与对手相比的优势劣势。
2,目前Neuropilot平台无法满足的应用中,在下一代产品打算满足哪些应用场景。

张家源:1、如同前一题, 联发科技Helio P60 是由两颗APU 来实现, 我们可以同时支持两个model 来实现不同AI 应用(eg, 相机人脸辨识加上Bokeh)。此外, NeuroPilot 针对跨平台(Android and Linux) 都使用同一套AI SDK interface, 可以降低算法商转换平台的额外成本。再加上NeuroPilot 基于Google 的Android-NN做最佳化, 普及性最高。

2、人脸、场景等识别都已经有相对应的应用落地, 但是目前应用发展日新月异, 对芯片的需求仍然持续增加, NeuroPilot 平台会与生态圈上的算法伙伴们持续推出最佳化的产品来满足客户的需求。

问题六
杨永东-本识科技-产品总监

张老师好,我可能没有用心听,我的问题是应用APP如果内置了NeuroPilot的运算框架,怎么向前兼容没有此功能的芯片呢?我们比较关心应用设计的前向支撑问题。

张家源:目前确实无法相容, 未来如果芯片作业系统可以更新到Android-P, 因为Anroid-P本身就包含Android-NN, 就不会有相容性问题。