Google Coral Edge TPU USB加速棒上手体验
Edge AI是什么?它为何如此重要?
传统意义上,AI解决方案需要强大的并行计算处理能力,长期以来,AI服务都是通过联网在线的云端基于服务器的计算来提供服务。但是具有实时性要求的AI解决方案需要在设备上进行计算 ,因此边缘人工智能(Edge AI)正在逐渐进入人们的视野。
虽然本质上AI计算可以使用基于GPU的设备,但这套设备成本高昂,并且搭配非常繁琐,比如对内存要求越来越高、能耗越来越大等。无论是从研究还是创新角度来讲,边缘人工智能推理都正在成为蓬勃发展的深度学习革命越来越重要的组成部分。
与此同时手持设备(比如手机、平板等)日益普及,每年都能卖掉几十亿台,手机已然成为日常使用最为频繁的设备,可以预测对移动AI计算的需求也正在稳步增加。 因此,移动处理器的开发已经变得越来越以人工智能为重点,这些处理器都具有用于机器学习的专用硬件,比如现在主流的手机CPU评测都会加上一项AI计算能力的跑分。
目前从消费应用到企业应用都遍布 AI 的身影。随着联网设备数量的爆发式增长,以及对隐私/机密、低延迟时间和带宽限制的需求,云端训练的 AI 模型需要在边缘运行的情况不断增加。Edge TPU 是 Google 专门为在边缘运行 AI 而打造的 ASIC,它体型小、能耗低,但性能出色,让您可以在边缘部署高精度 AI。从下图可以看出Edge TPU核心的面积仅有一美分的大概十分之一大小。
Edge TPU可以用来做什么?
可以使用Edge TPU在移动设备上训练模型,但目前仅支持通过迁移学习在设备上重新训练的分类模型,这种训练方法是在Low-Shot Learning with Imprinted Weights这篇论文中提到的imprinted weight技术,此技术为实时系统创造了许多可能性。并且,据相关评测显示,Edge TPU是同类产品中计算速度最快的设备。
市面上已经有的其他AI边缘推理硬件
虽然这是第一个Edge TPU,但这之前就已经有一些类似的AI专用硬件,例如:
- 英特尔基于MyriadVPU的神经计算棒,及Google Vision Kit。
- 基于Cuda的NVIDIA Jetson TX2。
Coral Beta版
TPU,也称张量处理单元(Tensor Processing Unit)主要供Google数据中心使用。对于普通用户,可以在Google云端平台(GCP)上使用,也可以使用Google Colab来使用免费版。
谷歌在2019年国际消费电子展(以及今年的TensorFlow开发峰会上)首次展示了他们的Edge TPU,然后于三月份发布了Coral Beta。
Beta版本包括开发板和USB加速器,以及用于生产目的的预览版PCI-E加速器和模块化系统(SOM)。
USB Accelerator
Edge TPU USB Accelerator与任何其他USB设备基本一样,跟英特尔的MyriadVPU的差不多,但功能更强大。接下来我们来一个开箱,并且稍微上手看看。
开箱
盒子中包含:
- 入门指南
- USB加速器
- Type C USB数据线
入门指南
入门指南介绍了安装步骤,你可以很快完成安装。包括模型文件在内的所有需要的文件可以随安装包一起在官网下载即可,安装过程并不需要TensorFlow或OpenCV这些依赖库。
提示:必须使用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 3或USB 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和沟通:github.com/asukafighti…
Google Coral Edge TPU USB加速棒上手体验的更多相关文章
- WordPress 后台禁用Google Open Sans字体,加速网站
解决方法很简单,安装启用 Disable Google Fonts 或者 Remove Open Sans font Link from WP core 其中之一即可.或者如果你没有使用WP自带的官方 ...
- 详解Google第二代TPU 既能推理又能训练 性能霸道
详解Google第二代TPU 既能推理又能训练 性能霸道 转自:http://www.cnbeta.com/articles/tech/613639.htm 5月18日凌晨,Google CEO Su ...
- Android 7.0真实上手体验
Android 7.0真实上手体验 Android 7.0的首个开发者预览版发布了,支持的设备只有Nexus6.Nexus 5X.Nexus 6P.Nexus 9.Nexus Player.Pixel ...
- 小鸡G4工程款 上手体验
前言:之前只是抱着试一试的态度在小鸡活动贴下报名,说实话之前并没有抱希望能够没选中.所以非常感谢小鸡团队给我的这次机会.这应该是我第一次参与厂家的内测活动.希望能给小鸡团队,给广大玩家带来一片实用的上 ...
- Python 多线程、进程、协程上手体验
浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...
- 一分钟安装DolphinScheduler并上手体验
一分钟安装Apache DolphinScheduler并上手体验 1 一分钟安装DolphinScheduler并上手体验 本教程基于DolphinScheduler1.3.2 2 需要准备: 一台 ...
- Google揭露SHA-1碰撞,加速数据重删字节对比
原创 架构师技术联盟 近期,Google和道荷兰阿姆斯特研究者宣布攻破了世界上第一例公开的SHA-1哈希碰撞实例,业界一片哗然.当两组不同的数据(文件.一段数据)计算出相同的Hash值时,即视为二者 ...
- Leap Motion 上手体验
很早之前就关注了Leap Motion这个颠覆性的体感操作设备,如今7月22日上市至今已经一个月左右,淘宝的价格也已经降到650元,虽说相对国外还是偏贵,但是已经忍不住尝尝鲜了. Leap Motio ...
- Android 5.0 Lollipop初上手体验
在等了好几天还没有等到OTA升级提示,前天笔者给Nexus4线刷入了官方提供的Lollipop的镜像,在试用了这两天之后,现在总结下自己感觉很惊艳的地方和一些地方的吐槽.(点击图片可以查看大图) 1. ...
随机推荐
- form表单验证失败,阻止表单提交
form表单验证失败,阻止表单提交 效果演示: 贴上完整代码: <!DOCTYPE html> <html lang="en"> <head> ...
- 分享知识-快乐自己:Java中各种集合特点
Java中各种集合特点: Collection[单列集合]: List(有序,可重复): ArrayList: 底层数据结构是数组,查询快,增删慢.线程不安全,效率高. Vector: 底层数据结构是 ...
- Java_数据交换_Gson_00_资源帖
1.Gson将字符串转换成JsonObject和JsonArray 2.Gson 解析教程 3.Gson全解析(上)-Gson基础
- Eclipse_常用技巧_03_字母大小写转换快捷键
eclipse中字母大小写转换快捷键: ctrl+shift+x 转为大写 ctrl+shift+y 转为小写
- 【BZOJ 4199】[Noi2015]品酒大会 后缀自动机+DP
题意 两个长度为$r$的子串相等称为$r$相似,两个$r$相似的权值等于子串开头位置权值乘积,给定字符串和每个位置权值,求$r$相似子串数量和最大权值乘积 对反串建立后缀自动机得到后缀树,后缀树上两个 ...
- Java 网络通信(TCP/UDP)
1.InetAdress类 与 Socket类 >InetAdress >Socket 2.TCP/IP协议簇 客户端: 创建 Socket:根据指定服务端的 IP 地址或端口号构 ...
- Python 爬虫 —— 文件及文件夹操作
0. 文件名.路径信息.拓展名等 #取文件后缀 >>> os.path.splitext("/root/a.py") ('/root/a', '.py') #取目 ...
- 3.3 CCSprite 精灵详解
3.3.1 创建精灵常用的 4 种方式 (当然还有其他方式,只不过 这四种比较常用) //创建精灵常用的 4 种方式 CCSprite* spr1 = CCSprite::create(const c ...
- Windows cmd findstr
/********************************************************************************** * Windows cmd fi ...
- 2017-2018-1 20179215《Linux内核原理与分析》第五周作业
一.视频学习 1.系统调用的三层皮:xyz(API).system call(中断向量).sys_xyz(不同种类的服务程序). 2.Libc库定义个一些API引用了封装例程(wrapper rout ...