https://blog.tensorflowcn.cn/2019/10/visual-wake-words-with-tensorflow-lite_30.html
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq8pChG6lTPr9ZQT5LpuFgibbGyvDJIvA3LWm62TlyNQDSb05JPGVCga_S9FI8hOooNxPUn976Hk5lManlDgoRY32PwGPHMmO-FdlxGBCYAML8NKMNJzMvGxmW1ay9xjvPuixYvgdt3JM/s1600/v2.png
作者:Aakanksha Chowdhery,软件工程师
为什么“Yo Google”不能唤醒 Google 助手?毕竟它只比“Ok Google”多了一个词。这是因为 Google 助手正在监听两个特定的词——唤醒词。唤醒词对于低功耗机器学习的设计至关重要,它使用计算量小的模型来处理数据,从而“唤醒”设备进行完整处理。诸如“Ok Google”之类的音频唤醒词被广泛用于唤醒 AI 助理设备,以便它们使用计算量更大的机器学习模型来处理语音。
随着低功耗摄像头的出现,一个流行的应用是使用带有微控制器的视觉传感器来识别图像帧中是否包含人(或任何感兴趣的物体)。我们将此应用称为视觉唤醒词,因为它使设备能够在有人在场时唤醒,类似于音频唤醒词在语音识别中的作用。
边缘机器学习是指在设备上运行的模型,无需连接云端。随着用户在音频传感器或低功耗摄像头等设备上部署模型,微控制器作为一种低成本计算平台提供了良好的折衷方案。然而,现有的机器学习模型很难满足微控制器在功耗和处理能力方面的设备限制,正如这篇 论文 中所述。
在 CVPR 2019 上,Google 举办了一项新的挑战,名为“视觉唤醒词挑战”,征集微控制器微型视觉模型的提交作品。挑战的目标是将图像分类为两个类别(人/非人),这是一种微控制器常用的应用场景。Google 公开了来自 COCO 数据集 的 视觉唤醒词数据集:标签 1 表示图像中至少存在一个人(或感兴趣的物体),标签 0 表示图像中不包含任何来自人类别 的物体。
|
典型的微控制器拥有极少的片上内存和闪存。例如,SparkFun Edge 开发板拥有 384KB 的 RAM 和 1MB 的闪存。 |
针对微控制器设备的机器学习需要重新思考模型设计,考虑内存占用、精度和计算成本之间的权衡。典型的微控制器拥有极少的片上内存(100-320 KB SRAM)和闪存(256 KB-1 MB)。整个神经网络模型,包括其权重参数和代码,必须在闪存的小内存预算中容纳。此外,在计算过程中用于存储输入和输出激活的临时内存缓冲区不能超过片上内存。在视觉唤醒词挑战中,研究人员设计了精度最高的模型,这些模型满足了微控制器设备的限制:模型大小小于 250 KB,峰值内存使用量小于 250 KB,推理成本小于每次推理 6000 万次乘加运算。来自
研讨会 的演讲可在 IEEEtv 上观看。
|
视觉唤醒词模型用于检测人是否存在。 |
提交作品使用了诸如模型剪枝和量化之类的优化技术(可从
Tensorflow 模型优化工具包 中获取),以及神经架构搜索算法来设计满足微控制器设备限制的微型模型。为了在设备上部署他们的模型,用户利用了
Tensorflow Lite Micro,这是 TensorFlow 团队为微控制器提供的 ML 框架。
这项挑战在研究界引起了极大的兴趣,并收到了来自 ARM、三星、高通、麻省理工学院、伯克利、牛津大学等机构的提交作品。在视觉唤醒词数据集上,来自麻省理工学院和高通的得分最高的参赛作品在两个类别中获得了 94.5% 和 95% 的分类精度:今天可部署和下一代 ML 框架可部署。
来自麻省理工学院的获胜团队之一最近发布了他们 演示 的 实现 :
要下载视觉唤醒词数据集并自行训练模型,您可以按照以下
教程 进行操作。
感谢所有参与此版本发布的人员:Aakanksha Chowdhery、Daniel Situnayake、Pete Warden,以及以下同事的指导和建议:Jon Shlens、Andrew Howard、Rocky Rhodes、Nat Jeffres、Bo Chen、Mark Sandler、Meghna Natraj、Andrew Selle、Jared Duke。