Google Coral Edge TPU USB加速棒上手体验

Edge AI是什么?它为什么如此重要?

传统意义上,AI解决方案须要强大的并行计算处理能力,长期以来,AI服务都是经过联网在线的云端基于服务器的计算来提供服务。可是具备实时性要求的AI解决方案须要在设备上进行计算 ,所以边缘人工智能(Edge AI)正在逐渐进入人们的视野。python

虽然本质上AI计算可使用基于GPU的设备,但这套设备成本高昂,而且搭配很是繁琐,好比对内存要求愈来愈高、能耗愈来愈大等。不管是从研究仍是创新角度来说,边缘人工智能推理都正在成为蓬勃发展的深度学习革命愈来愈重要的组成部分。android

与此同时手持设备(好比手机、平板等)日益普及,每一年都能卖掉几十亿台,手机已然成为平常使用最为频繁的设备,能够预测对移动AI计算的需求也正在稳步增长。 所以,移动处理器的开发已经变得愈来愈以人工智能为重点,这些处理器都具备用于机器学习的专用硬件,好比如今主流的手机CPU评测都会加上一项AI计算能力的跑分。git

目前从消费应用到企业应用都遍及 AI 的身影。随着联网设备数量的爆发式增加,以及对隐私/机密、低延迟时间和带宽限制的需求,云端训练的 AI 模型须要在边缘运行的状况不断增长。Edge TPU 是 Google 专门为在边缘运行 AI 而打造的 ASIC,它体型小、能耗低,但性能出色,让您能够在边缘部署高精度 AI。从下图能够看出Edge TPU核心的面积仅有一美分的大概十分之一大小。github

图片描述

Edge TPU能够用来作什么?

可使用Edge TPU在移动设备上训练模型,但目前仅支持经过迁移学习在设备上从新训练的分类模型,这种训练方法是在Low-Shot Learning with Imprinted Weights这篇论文中提到的imprinted weight技术,此技术为实时系统创造了许多可能性。而且,据相关评测显示,Edge TPU是同类产品中计算速度最快的设备。web

市面上已经有的其余AI边缘推理硬件

虽然这是第一个Edge TPU,但这以前就已经有一些相似的AI专用硬件,例如:api

图片描述

Coral Beta版

TPU,也称张量处理单元(Tensor Processing Unit)主要供Google数据中心使用。对于普通用户,能够在Google云端平台(GCP)上使用,也可使用Google Colab来使用免费版。安全

图片描述

谷歌在2019年国际消费电子展(以及今年的TensorFlow开发峰会上)首次展现了他们的Edge TPU,而后于三月份发布了Coral Beta服务器

图片描述
图片描述

Beta版本包括开发板和USB加速器,以及用于生产目的的预览版PCI-E加速器和模块化系统(SOM)。app

图片描述

USB Accelerator

Edge TPU USB Accelerator与任何其余USB设备基本同样,跟英特尔的MyriadVPU的差很少,但功能更强大。接下来咱们来一个开箱,而且稍微上手看看。框架

开箱

图片描述
图片描述

盒子中包含:

  • 入门指南
  • USB加速器
  • Type C USB数据线

入门指南

入门指南介绍了安装步骤,你能够很快完成安装。包括模型文件在内的全部须要的文件能够随安装包一块儿在官网下载便可,安装过程并不须要TensorFlowOpenCV这些依赖库。

提示:必须使用Python 3.5,不然将没法完成安装。还须要将install.sh文件最后一行
python3.5 setup.py develop - user
改成
python3 setup.py develop - user

演示程序

Coral Edge TPU API文档包括图像分类和目标检测的概述和演示程序。

Edge TPU API

在完成如下教程以前,关于Edge TPU API有如下注意事项:

  • 须要安装Python的edgetpu模块才能在Edge TPU上运行TensorFlow Lite模型。它是一个较高层的API,包含一些简单的API以执行模型推理过程。
  • 这些API已经预先安装在开发板上,但若是使用的是USB加速器,则须要自行下载。详细信息请参阅此设置指南
  • 推理过程当中须要用到如下关键API:用于图像分类的ClassificationEngine、用于目标检测的DetectionEngine和用于迁移学习的ImprintingEngine

图像分类

实现图像分类的Demo很是简单,好比能够将下边的图片做为ClassificationEngine接口的输入:
图片描述
图片描述

目标检测

与图像分类同样,咱们只须要调用一下DetectionEngine接口,就能够将输入图片中的目标检测出并用方框进行标识:

图片描述

因为默认配置会产生假负例,咱们能够将默认示例程序中的阈值从0.05调整到0.5,另外将矩形的宽度调整为5,能够获得如下结果:

图片描述

因为Coral仍只有测试版,API文档中给出的细节不够完整,但目前给出的部分用于以上示例已经足够了。

注意事项

以上demo的全部代码、模型和标注文件都随安装包中包含的库文件一同在官网下载,根据目前已经给出的模型和输入标注文件等,咱们能够完成分类和检测任务。

对于分类任务,结果返回排名前2的预测类别及对应的置信度得分;而对于目标检测任务,结果将返回置信度得分及标注方框的各顶点坐标,若输入时给出类别标注,返回结果中也包含类别名称。

树莓派上性能的局限性

不幸的是,业余爱好者最喜欢树莓派没法充分发挥USB加速器的功能和速度。USB Accelerator使用USB 3.0端口,目前的树莓派设备没有USB 3USB type-C,而只能使用速度较慢的USB 2

目前,它只在Debian Linux上运行,但预计很快就会有支持其余操做系统的方法。

深刻拓展

Edge TPU的帮助下,Coral还能提供哪些产品呢?

开发板(Dev Board)

做为开发板来说,树莓派一般是最受欢迎的选择,但谷歌却更推崇NXP i.MX 8M SOC(Quad-core Cortex-A53 与 Cortex-M4F)。有关开发版的更多信息,请参考此页面

图片描述

可是若是用于实验,尤为是仅需使用Edge TPU的状况下,咱们更加推荐USB Accelerator

后续开发

若您已经使用开发板或USB Accelerator作出了不错的prototype原型机,但后续须要将一样的代码应用于大规模生产环境,该怎么办呢?

谷歌已经预先想到这一点,能够在产品列表中看到,下述模块将用于企业支持,而且已经被标记为 _即将上线_。

模块化系统(System-on-module, SOM)

图片描述

这是一个彻底集成的系统(包含CPU、GPU、Edge TPU、Wifi、蓝牙和安全元件),采用大小为40mm*40mm的可插拔模块。

此模块能够用于大规模生产,制造商能够按照本模块所提供的指南生产本身喜欢的IO板,甚至上文提到的已经上市的开发板(Dev Board)都包含这个可拆卸的模块,理论上只要拆下来就可使用。

PCI-E 加速器

关于PCI-E加速器的信息不多,但顾名思义,它是一个带有PCI-E(快捷外设互联标准,Peripheral Component Interconnect Express)的模块,且有两种变体,这相似于USB加速器,不过不一样之处在于将USB接口换成了PCI-E,就像内存条或者网卡那样,树莓派也有PCI-E接口的Compute Module版本。

图片描述

随着各类外设模块的诞生,能够预料,一些企业级项目也将随之诞生。谷歌Coral也这么认为,在他们的网站上有如下说法:

灵活易用,精准裁剪,适用于初创公司与大型企业。

Tensorflow与Coral项目

谷歌的产品大都与Tensorflow有关,目前,Edge TPU仅支持传统的Tensorflow Lite版本的模型,Tensorflow Lite稳定版刚刚发布,参见此页面

目前,你须要经过一个网页编译器tflite模型转换为tflite-tpu模型。若是使用的是PyTorch或其余框架也不用担忧,能够经过ONNX将模型转化为Tensorflow模型。

展望

尽管缺少对树莓派的全面支持,以及Beta版本中文档有限,但我对Coral项目保持乐观态度。虽然没法马上肯定这种技术的发展前景,但对更强大、低能耗、高成本效益以及更具创新性的产品,咱们应当报以更高的指望。

好了,本次介绍就到这里,这个系列的全文会收录在个人github目录,欢迎你们star和沟通:https://github.com/asukafighting/RaspberryPiHacker

相关文章
相关标签/搜索