文 / Chao Chen,软件工程师,Google Research
在商店和家中的橱柜里挑选包装食品,是普通人的生活常态,却是视障用户的一大难题。这是因为大多数食品的包装几乎都完全相同,比如同样大小的盒子、瓶子、金属罐和玻璃罐,仅仅容器上标签的文字和图像不同。不过,随着智能移动设备的普及,我们已经有能力运用机器学习 (ML) 解决这一难题。
近年来,设备端神经网络对各种感知任务的准确率有了显著提高。再加上现代智能手机计算能力不断提高,如今许多视觉任务都可在完全运行于移动设备上时产生高性能表现。将 MnasNet 和 MobileNets(基于资源感知架构搜索)等设备端模型开发与设备端索引结合,即可完全在设备端实时运行标签产品识别等完整的计算机视觉系统。
MnasNet
https://ai.googleblog.com/2018/08/mnasnet-towards-automating-design-of.html
最近,我们利用这些开发成果发布了一款名为 Lookout 的 Android 应用,通过计算机视觉帮助视障用户更顺畅地感知物理世界。用户只要将智能手机摄像头对准产品,Lookout 就会识别产品并大声地报出品牌名称和产品尺寸。Lookout 搭载了带有设备端产品索引的超市产品检测和识别模型,以及 MediaPipe (mediapipe.dev) 目标追踪和光学字符识别模型。最终产生的架构非常高效,可以完全在设备端实时运行。
Lookout
https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.reveal
为什么要在设备端?
完全设备端系统的优势在于低延迟和对网络连接的不依赖。然而,这也意味着一个产品识别系统要想完全派上用场,它的设备端数据库就必须充分覆盖各种产品。正是这些需求推动了 Lookout 所用数据集的设计。Lookout 数据集由两百万种热门产品组成,并且全部根据用户的所在的地理位置动态选择。
传统解决方案
过去,使用计算机视觉的产品识别以 SIFT 等算法提取局部图像特征来解决。这些非 ML 方法的匹配结果相当可靠,但单张索引图像的存储量很大(每张图像通常在 10KB 到 40KB 之间),而且容易受到光线不足和图像模糊的影响。此外,这些描述符由于局部性质,往往不会捕获产品外观等更全局的部分。
另一种方法是使用 ML。ML 方法具有许多优点,在查询图像和数据库图像上运行光学字符识别 (OCR) 系统来提取产品包装上的文字。图像上的文字查询可以通过 N-Grams 与数据库匹配,从而增强对 OCR 错误的判断,比如产品包装上的拼写错误、误识别、文字识别失败等。N-Grams 还可以使用雅卡尔相似系数等量度在查询文档与索引文档之间进行部分匹配,而不是要求完全匹配。当使用 OCR 时,索引文档可能会变得非常大,因为除了在产品包装文字的 N-Grams 之外,还有可能需要存储 TF-IDF 等其他信号。此外,OCR+N-Gram 方法还存在匹配可靠性问题,如果两个不同产品的包装上有大量共用单词,它很容易过度触发。
对比 SIFT 与 OCR+N-Gram 方法,我们的神经网络方法会为每张图像生成一个仅需 64 字节的全局描述符(即嵌入向量),大幅降低了存储需求,比每张图像 10-40KB 的 SIFT 特征索引条目更小,比每张图像几 KB 的 OCR+N-gram 方法更可靠。由于每张索引图像消耗的字节数较少,因此更多产品可以加入索引,实现更完整的产品覆盖和更良好的整体用户体验。
设计
Lookout 系统由帧缓存、帧选择器、检测器、目标追踪器、嵌入器、索引搜索器、OCR、评分器和结果表述器组成。
产品识别流水线内部架构
嵌入器 (Embedder)
兴趣区域 (ROI) 由检测器传送至嵌入器模型,嵌入器模型随后计算出一个 64 维的嵌入向量。嵌入器模型最初是从涵盖了成千上万个类的大型分类模型(即教师模型,基于 NASNet)训练而来。模型中添加了一个嵌入向量层,用于将输入图像投射到“嵌入向量空间”,即向量空间。如果有两个点在空间内接近,就意味着它们表示的图像在视觉上相似(例如,两张图像显示的是同一个产品)。
NASNet
https://ai.googleblog.com/2017/11/automl-for-large-scale-image.html
仅分析嵌入向量可以确保模型足够灵活,并且无需在每次扩展到新产品时重新训练。然而,由于教师模型太大,无法在设备端上直接使用,因此我们采用它生成的嵌入向量来训练一个更小并且对移动设备友好的学生模型。该模型学习的是如何将输入图像在嵌入向量空间中映射到与教师网络相同的点。最后,我们应用主成分分析 (PCA) 将嵌入向量的维度从 256 减少到 64,简化设备端存储的嵌入向量。
结果表述器 (Result presenter)
结果表述器收录以上所有结果,通过文字转语音服务报出产品名称,向用户表述结果。
在瑞士一家超市中进行的设备端产品识别早期实验
未来工作
本文概述的设备端系统可实现一系列全新的店内购物体验,包括产品信息详细显示(营养成分、过敏原等)、客户评分、产品比较、智能购物清单、价格追踪等。我们很期待探索这些未来应用,并将继续研究推进底层设备端模型的质量和稳健性。
致谢
本文所述论文由 Abhanshu Sharma、Chao Chen、Lukas Mach、Matt Sharifi、Matteo Agosti、Sasa Petrovic 和 Tom Binder 撰写。感谢 Alec Go、Alessandro Bissacco、Cédric Deltheil、Eunyoung Kim、Haoran Qi、Jeff Gilbert 和 Mingxing Tan,没有你们的支持和帮助,这项工作不可能完成。
更多 AI 相关阅读: