演讲实录——TensorFlow在物联网硬件端的加速Edge TPU [复制链接]

2019-4-30 10:19
九霄逆鳞 阅读:285 评论:0 赞:0
Tag:  
本文来自2019安卓巴士开发者大会现场实录,由于录入匆忙,内容可能存在偏差,欢迎大家扫描文末二维码查看现场实录视频和下载大会完整PPT。作者:王玉成

谢谢大家,我是王玉成,也是谷歌2016年就开始做整个互联网操作系统,大家也知道,现在在整个人工智能学习里面分了两大块,一大块是谷歌的TensorFlow,另外一个是面向学术的。在TensorFlow这块开始的0.1版一直往前跑,现在是2.0版本,现在做了很多分支,我专门应用云的,专门应用互联网,专门用于科学服务的,不管我们在其它领域之下,都能够用TensorFlow来解决问题。TensorFlow在互联网硬件,因为Edge TPU在去年都已经公布这个事情,但是它是到今年2月份的时候,然后到现在的话,在美国市场上是可以买到了,大陆这边暂时没有销售渠道,大概是这样子。

我今天给大家带了一款开发版的,我相信这款在国内现在只有几十个人。我现在把TensorFlow在互联网的应用还有Edge TPU这方面做一个介绍。最开始我讲的这个PPT大概可能三部分,一点点应用。我们最开始去看TensorFlow也是懵懵懂懂去看这个事情,因为人工智能最开始发展起来,我们脑袋里面实际上是没概念的。但是到现在基本上所有的应用大家都在提人工智能。原来也说人工智能这些算法,上一位嘉宾也讲到,在云端去做识别,识别的结果全出来,原始数据全部出来,这上面对云端的负载太大。有人说能不能把TensorFlow推演这块上云端。它主要完成的工作,就是解决两个问题,是如何运用这个模型,最后实行推演。就这两大块的内容。TensorFlow Lite就是做推演。

在TensorFlow Lite本身,它的速度比TensorFlow还要快。我实际上做过这种移植,TensorFlow Lite它的速度会快很多。就我现在观察到了,不去提安卓上面的GPU加速的东西。如果你用普通的日志去跑的话大概是一秒的话。如果用TensorFlow Lite,它需要再做进一步的加速,我们就假象一个场景,就是我们的门禁,假设我们过这道门禁,人往摄像头一望,摄像头确实了人脸,识别了打开门禁的步骤。假设我们单纯识别人脸步骤达到几秒钟或者十几秒钟,肯定这个时候人就没耐心,但是这部分TensorFlow识别的话,它也能达到10毫秒左右,我觉得在工业运用上应该是可以接受了。但就还是人脸识别来说,今天这个Edge TPU,我根据之前的测试人脸识别的速度大概在2毫秒左右,不是2秒。这个里面如果对大规模人多的这种识别,这种速度会很快。这是它的性能。

电池这些方面它优化浮点,为什么要这么做,浮点运作他们整云太多了,现在TensorFlow Lite对浮点的优化,它怎么去优化的,这个优化是量化这部分的优化。我们也知道现在所有CPU上能跑操作系统的话大概都是32位的,基本上是32位的,有的现在都跑64位,但是32位或64位做浮点特别麻烦。第二点做图像处理的话,大家也知道图像处理这里面还有大量的浮点运算,说到底你对于浮点怎么去处理,将很大程度上决定了你在整个视频这方面的处理情况。所以它把32位的长度改成16位或者8位了,利用这款去运算的话,实际上会快很多。它现在量化了。但是扩展性的话,凡是大家能知道切入设备的扩展。这是TensorFlow的。但是现在实际上TensorFlow Lite,刚才我们给大家带了Edge TPU,实际上它现在分成两个部件,我手里还有一个USB的加速器,这个加速器你插到笔记本上,实际上这个推拟速度,你的容量比较小,想实现推拟,在那种情况下你可以用USB去完成Edge的加速。

刚才提到加速我们是做硬件用内部和外部的加速,现在TensorFlow它跟我们在硬件这段总共提出的,硬件上加速其实方案大概有这么几种,可以给大家说一说。首先它在我们的普通的桌面单可以用CPU加速,安卓8.1以及以上的版本,这部分只要你的安卓的手机它的GPU往上面挂的结构是支持API,这部分也可以进行加速。剩下来硬件这个加速,现在谷歌开发版这部分加速,再加上硬件的一些加速情况。实际上这个里面,实际上我最开始写这段,这段的确是太多了,我都不想写了。但是这块让我们知道,TensorFlow Lite它比TensorFlow究竟改了哪些东西,让我们觉得TensorFlow Lite速度比较快。之前我提到量化,还会研究FlatBufFers,这几类大的数据大家知道在TensorFlow用的是PratoBuffer,但是现在TensorFlow Lite用的是FlatBufFers。这个里面涉及到内存,这个里面和我们以前应用过了,大家经验中提到,我们用编程的事后始终需要一个马洛克(音),在推上有一个动态内存分配,但是这个动态内存分配涉及到什么问题,你在整个库上面必须做一个内存池,然后用内存池管理你的各种内存,还要管理内存的消耗情况,内存最好的释放情况,最后如果释放以后你怎么去做内存。比如说内存中间存在一些,在虚拟里面去进行,你还得做另外的东西。比如说上一次我剩下的内存和这次剩下的内存刚好存在内存空隙,这个怎么去解决。我给大家说的话,实际上动态的方式去做内存方面内容的时候,你会在整个的涉及到这些方面的处理,也许这些方面的处理你作为一个运用人员根本不在乎的,但是它要默默做这些东西。

TensorFlow优化解释器,它把这些静态的内存分配器来进行。我们在变音器做一些操作。大家可以看到实际上它这种优化涉及到哪些东西?涉及到PratoBuffer以及我们装载它的规则定义这部分,再加上浮点运算新的优化,再加上内存这一系列的优化,我们发现整个TensorFlow Lite,它在软件上识别TensorFlow这边做了很多的优化。但是应用TensorFlow Lite,现在nest ,还有谷歌,他们也在大量使用TensorFlow Lite去做他们一些新的优化。

前面提到也就是TensorFlow Lite和TensorFlow的一些不同点。我现在提到开发版就是Edge TPU这部分。这里面最中间关注它两个方面的东西,一个是每瓦的功能,还有一个是每美元的功能。你可以想象它的Edge TPU在硬件上,它大概占的大小是10美分硬币的大小,大概只有这么小了,真正核心来处理,这里都非常小了。大家看一下Edge TPU谷歌云这方面的东西,Edge TPU主要还是做推拟,包括它的硬件加速,包括云端做推拟的训练,这是它一系列的区别。性能主要是说在高分辨率30多帧可以实现推拟的,速度非常快。TensorFlow的优化它的程度,量化达到8位和16位。IO接口,Pcle和USB这部分,USB现在加速器已经出来了,但是Pcle谷歌这边很快也会推,但是现在还没有产品,应该还是在测试。我们再看一下Pcle和USB这两种种性,USB种性特别多,Pcle在工业还是蛮多接口的。所以就是把Pcle和USB这两个接口去做,但是Pcle也是在桌面,我们在桌面包括服务器上都已经Pcle化了,你自己服务器来配置,硬件上你配得不是太好,你可以用Pcle Edge TPU来进行加速。

谷歌Cloud专门有这么一个服务。现在在谷歌Cloud它有一个Cloud loT Edge,所有大量的类似的服务都集成到Cloud IoT上去了。进行最开始的日志分析,日处理,进行数据的训练,得到一些模型,再放大Edge TPU去执行。现在谷歌也有许多的mobile net这些模型供大家下载。它去做这些的好处,之前一位嘉宾提到了,在本地我们把数据都处理完了,本地甚至做预警,不是把结果存到云上面,所有数据都是在本地做一些安全加密型的处理,这样实际上在数据特别在物联网这端,再到互联网这端,中间数据我们保存在本地,这样它的安全性也得到提高。应用上面。在整个Edge TPU这部分,现在谷歌它是这样,之前前两年有关于TensorFlow去做创客的东西,那个叫AIY,谷歌做VSK,如何利用人工智能针对创客做一些定制开发版,但是现在到coral去了,创客也可以用一些开发版做一些自己喜欢的模型。这部分我之前做一些模型验证对应过了。这个功耗确实很低。因为实际上在TensorFlow Lite,做这个也有一个初衷,我使数据在本地训练,去说推拟的话在没有网络情况下也可以做,在本地也可以做。但是在消费领域这网络不是到处都在吗,很少没有网络,但是在矿山里面去做的话,有些矿工是没有网络的。所以需要在网络覆盖不到的地方去进行。

现在发布的产品就是这两款,左上角那款是谷歌的开发版,待会我看那边的网页能不能打开,能打开的话把相关的要点给大家看一下。右边这块是USB的加速器,相当于说我们往电脑上一插,它有一些库,你在上面做一些编程然后就可以。这部分是Dev Board的性能。这部分在互联网能做一些应用的,GPU这部分,实际上这个GPU说实话在Edge TPU里面没用上,因为它自己本身有些处理器,所以它就用不上,它本身GPU,再就是Edge TPU的处理器。下面所有这些资源都能够满足现在一些状态下的应用。

这个里面差不多有USB,有两个接口,这个待会看能不能用那边的摄像头投影出来。这些东西给你都配齐了以后,这就是一个开发版,你自己再去做你的扩展版,再去做任何相关的开发,你控制电路或者包括其它的这些都可以了,相当于给你一个开放性的,但是Dev Board这部分现在也通过美国的验证了,是一个很好的事情。但是它现在就是扩容文档之间还有这么一点,你如果是说去供电的话,供电的USB的电流应该是2安到3安。如果是1.5安卓供不起来,如果大家用到Edge TPU稍微注意一下。它上面有些资源,USB是两个,它是供电的,它的电流USB电流要达到2安到3安,但是USB3.0这部分,如果是说我们数据和它的电源统一放到一个USB的口上去的话,我们也知道USB2.0最大的电流应该是500毫,USB3.0应该是900毫,所以USB涉及到单独的加起来。模拟了就是音频的,信号全部都给了,你可以在SD卡上做了之后,也可以用SD启动。但是它的camera这部分,两部分通道都做出了。

这块开发版现在这么好我们现在怎么去做它的模型的流程。我们也做过TensorFlow大概知道这么回事。TensorFlow去把模型做出来,做完我们用了TensorFlow Lite的时候,然后我们用这些工具去转成TensorFlow Lite。所以我们在转的时候不支持,但是现在,这些常用的模型都已经支持了,所以TensorFlow模型到TensorFlow Lite的模型整个这部分转的过程中是出不了太大的问题。然后模型转换的过程中,再利用官方在线工具之后。最后只需要这两个文件放到你的设备上就行了。模型运行这部分,它还是考虑的点特别多的。它不管是考虑了我去把TensorFlow Lite的模型,TensorFlow Lite也在在不断的升级。硬件的升级是没有软件的升级速度快的,所以这块模型的运行是为了解决这个问题,它有一部分问题它是在Edge TPU上去做操作,另外一部分它会用一些软件的方法或者在CPU这部分去做处理,这部分接口,按我的理解更好的应该是说,它以后对未来扩展的兼容性,在做这部分的工作。

我给大家去看一下这部分相关的资料,再一个就是开发版。这部分大家能够看到开发版,这个里面连了一个camera,这个接口都已经做好了。最开始我打算的确做这么一个系列做一个之后,人脸检测识别的速度大概是几毫秒,但是现在还是网络的问题,因为这个板子没有电板显示器,所以我们必须在这个板子上做的东西,然后板子和我们这台电脑,这个开发版给我们实际的电脑必须要在一个网络,然后两个人用IP地址连起来,一般来说是在开发版这边我做了一个推拟,当然IP地址和端口号,在我们组机上去访问这个端口号,是应该能去看到整个识别情况的。这个是用视频做的例子,但是现在是网络问题,我自己在网络里面差不多搞了几个小时,还是网络不行。所以这个模型做得简单一点,一部分给大家了一下,调摄像头去看一下整个事情。如果说你如果用Windows这些都可以。

我们现在这个开发软件重新启一下,看一下它整个的情况,最后这边用一个数据库做一个USB的IP通道,所以这里出来USB的文件。这个窗口调试之后有问题,这个窗口发出来的数据不是实时的。我们登录进去就是一个传统的。这个coral整个文档,大家会看到这些资源,包括上面USB,然后TensorFlow,这部分都已经都完成了,而且这个里面它对所有相关的例子都做了一些操作。而且文档特别丰富。这边另外还有一个文具,把mdt,它最后定义的样子和我们ADB一样,和我们操作安卓一样去操作。这块是它整个模型,谷歌官方开源过、训练过他们认为最好的模型是在这儿,这些模型直接可以拷到开发版去做一些示范。现在这边已经出来了,这部分就是我们进的Mendet整个命运提示符里面去了。刚才大家看到这个目录是整个的开发版,它的库的支持问题。我们结合看Python大家直接去做开发就比较容易。今天给大家介绍就到。 
主持人:大家有什么问题想问王老师的吗? 提问:王老师您好,我姓王,来自湖南。我觉得你这个讲得非常好,但是我之前在海康威视搞了一个会,我就听了,物理人工智能,这两个三年我觉得还没发展起来,我觉得应用不是很快,这个高科技设备的应用也不是很快。但是我对这个行业也不是特别懂,想跟你学。王玉成:今天你提的问题是什么呢?提问:提的问题就是说,想跟师傅了解这个编程,怎么用深度计算这块,到底是什么原理搞不清?王玉成:人工智能这块我给大家多介绍几句吧,这部分实际上人工智能的话,我们最开始是说,到现在人工智能这块是深度学习,深度神经网络这部分,我们去追溯到在大学实验室里面,40年前在大学实验室就有人做这个东西,他们熬了几十年之后,现在我们硬件包括云这部分全部都完善了,现在才有深度神经网络这套内容,我们自己的消费者或者工业界的应用。实际上整个深度学习的算法数学基础不难,就是概念的数据统计,实际上整个深度学习为什么要依赖于大数据?为什么非得要那么多大数据才能去做深度学习,因为这个里面用了对这些数据给个归类,然后找出他们的特性。也就是说它的小孩去识别一样,这是房子、这个车,这个什么,但是它脑袋里面多了之后,下一次见到这是房子、这个车,深度学习就是搞这些东西,以计算机的模型,计算机它自己认为一些特征先积累起来以后最后识别出来了。软件编程这一方面的话,TensorFlow最开始是用Python,这是最初,但是TensorFlow还分了好多语言版本,Python也是GS,还有加网这些,这些都有了,我们学的话,用语言的话,在集中语言我们用其中一种就行了。但是TensorFlow最麻烦还是你如何去建立模型,如何去调参数这些内容是非常麻烦。提问:我想问一下老师讲的很对,但是我不晓得怎么弄,因为我以前是学软件工业,现在搞了一个深度计划学习,这个深度计划学习应该是在一个软件和硬件当中可以合起来的吧,也有个数据库?王玉成:我建议你别说什么软件硬件这方面做,你就在软件做先把这个做好,如果有物联网上面的应用,你有那个基础,再和这边再结合,和应用结合,快一点。提问:现在软件很精通,但是深度学习搞了3年还不行,我们没这方面的圈子,到底怎么搞案例?王玉成:现在是这样,现在TensorFlow,包括整个的规划文档,整个社区去讨论深度学习,万一你自己想学可以这么做,就一个最简单的模型,你先跑成功,跑成功之后看一下关键几个接口是什么,第一步搞清楚之后,接下来再去了解我要去训练这个模型,要经过什么样的哪些步骤,再一步一步往下发散,这样会好一点。提问:谢谢老师,受益匪浅。 提问:老师,我问一个问题,我想我们分为两步,一个是训练模型,我想训练模型之前需要有一个数据去训练,我想问问,训练之前要收取训练这个数据,需不需要先借一些图像处理,然后再把这个数据拿去训练?王玉成:你说这个问题特别好,这我觉得也是深度学习中间一些问题。这部分我给你这么解答,如果是说你要正常环境下,假设背景白板去照这种人形象,我们在实际情况下又有光线、环境的其他原因,我们照出来的图像不如这个清晰,甚至还有其他的问题。我自己也在想,它深度学习,就拿图像识别来说,它是想解决就是原来图像的模式识别,然后它自己去找出其中的规律,然后去做了。但实际上有些图像在我们实际操作中间,或者我们需求是不一样的,比较少,这部分在之前我们可以去做一些模式识别上的内容,然后把这个模式识别之后的,或者说我们对图像进行处理,处理完了那些图像,然后再当成深度学习数据再去做训练。这里面给你举一个例子,我跟一个公司做,他们那个胶膜在显微镜就是圈圈点点,来看一些分子的特性,但实际上我们看到都是一些圈圈,我们根据圈圈不同形状数量,再通过人工智能的方法去做,但实际上现在它是受到其他一些干扰了,我们在前面可用模式识别或者调高通过色差一些方法,把这个图像完全变成黑白的,这个时候再去进行深度学习,这样的话学习效果会好很多。但是这部分有两种出来的方法,第一部分我们用的是传统模式识别的方法,相对来说处理一部分图像。另一方面甚至我们去改深度学习内部的一些代码,也就是说我们在相当于类似做了一个半监督学习,之前图片达到我们处理那一份再深度学习代码里面改,然后那一步去做整个的训练,再训练出来,这样的条件比你直接去拉各种各样的图片去训练的话效果好很多。提问:图片或者推拟都要去经过处理再去训练是吧?王玉成:看情况,有的也可以不经过。但是使用率特别高,但是数据源特别少,才几十张图片,还不到100张,在这个时候你估计会想用一些其他的半监督的模型去解决这些问题。 提问:您好,我想问一下处理精魔图是用人脸的还是用人脸背景、2D人脸活体?王玉成:我们用人工的标注,标注这部分整个除了还是人脸,整个把这个区域标注出来了,但是现在通用的方法还没有用也得区分背景,现在还没有专门这个之前区分背景去做。提问:如果有连续间是不是加个背景会好一下。王玉成:这个看情况,因为现在实际上是这样的,你在网上看到谷歌这些模型,实际上这些模型它用它大量的数据已经给你训练好了,然后它自己再提供Coral的算法,它在它原来的模型上去做训练,不是说完全拿你的一个图片做一个训练。实际上你在用它的模型自己再去做训练的时候,它原来一些识别的方法已经在智能里面了,效果会好一些。但是整个你说CMA算起来,从这个技术角度来讲就是准值的运算,但是这个准值也只能保证人脸和其它地方,差异性特别大的时候识别比较好,这里面也会出现一些模糊脸在里面。提问:你是认为如果做原始训练的时候我加入背景会好一些?王玉成:单色会好一些。 提问:是这样的,TPU跟MPU两个有多大的差异,因为我们可能针对这种TensorFlow的应用我们是截屏,截屏做一个处理化延伸比较慢,所以针对我们视频输入端的应用端可能会技术性有高,我们电视上加上你的TPU或者加上APU是不是对产品识别比较快一些?王玉成:是,用模型来推拟说白就是OPM把原始的数据举成中间的代进去计算,计算的结果返回。提问:TPU大概多少钱?王玉成:现在大概是150美金,一千块钱左右,就是USB好像是77还是99。提问:比较贵,假如说带有MPU,这种对图像识别是不是比较快。王玉成:TensorFlow你的接口问题全部解决掉了,之前如果它跑安卓系统,安卓8.1以上MPU是完全支持的,并且它的安卓给你做过优化之后是没有问题的,但如果用芯片中间,这一层东西得自己达成。提问:假设做一个模型,我电视可能要截屏,分辨率有要求吗?王玉成:有不同,都是依据你自己训练要求来,这都可以调。提问:假如说我结合图片,包括各种素材比较多,识别比较仔细一下,但是是480P的,那个场景,我截屏跟我训练模型的素材要一致性?王玉成:都可以调。提问:是不是根据识别场景成功率有下降?王玉成:有可能。我举个例子,假设我举一个比较极端的情况,你训练的模型是320*320,你非得拿一个108识别效果也不是那么好。

讲师博客:https://blog.csdn.net/wfingEdge 
TPU文挡地址:https://coral.withgoogle.com/

现场PPT分享:       
关注【安卓巴士Android开发者门户】公众号,后台回复“420”获取讲师完整PPT。


大会现场视频小程序:


我来说两句
您需要登录后才可以评论 登录 | 立即注册
facelist
所有评论(0)
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )