Press "Enter" to skip to content

终端超市产品识别

视障用户面临的最大挑战之一是识别杂货店和家里厨房橱柜中的包装食品。这是因为许多食品使用相同的包装,例如盒子、罐头、瓶子和罐子,只是标签上印刷的文字和图像有所不同。然而,无处不在的智能移动设备为使用机器学习 (ML) 解决此类挑战提供了机会。

 

近年来,设备上神经网络对各种感知任务的准确性有了显着提高。随着现代智能手机计算能力的增强,许多视觉任务现在可以在完全在移动设备上运行时产生高性能。MnasNet和MobileNets(基于资源感知架构搜索)等设备上模型的开发与设备上索引相结合,允许运行完整的计算机视觉系统,例如标签产品识别,完全在设备上,即时的。

 

利用这些发展,我们最近发布了Lookout,一个 Android 应用程序,它使用计算机视觉让视障用户更容易访问物理世界。当用户将智能手机摄像头对准产品时,Lookout 会识别它并大声说出品牌名称和产品尺寸。为了实现这一点,Lookout 包括一个超市产品检测和识别模型,带有设备上的产品索引,以及MediaPipe对象跟踪和光学字符识别模型。由此产生的架构足够高效,可以完全在设备上实时运行。

 

为什幺在设备上?

 

完全在设备上的系统具有低延迟和不依赖网络连接的优点。然而,这意味着一个产品识别系统要真正对用户有用,它必须有一个具有良好产品覆盖率的设备上数据库。这些要求推动了 Lookout 使用的数据集的设计,其中包含根据用户的地理位置动态选择的 200 万种流行产品。

 

传统解决方案

 

使用计算机视觉的产品识别传统上是使用由SIFT 等提取的局部图像特征来解决的算法。这些非基于 ML 的方法提供了相当可靠的匹配,但每个索引图像的存储密集型(通常每个图像从 10 KB 到 40 KB)并且对图像中的光线不足和模糊的鲁棒性较差。此外,这些描述符的局部性质意味着它通常不会捕获产品外观的更多全局方面。

 

另一种具有许多优点的方法是使用 ML 并在查询图像和数据库图像上运行光学字符识别(OCR) 系统来提取产品包装上的文本。可以使用N-Grams将查询图像上的文本与数据库进行匹配对 OCR 错误具有鲁棒性,例如拼写错误、错误识别、产品包装上的文字识别失败。N-Grams 还可以允许使用Jaccard 相似系数等度量在查询文档和索引文档之间进行部分匹配,而不是要求完全匹配。但是,使用 OCR 时,索引文档大小可能会变得非常大,因为需要将 N-Gram 用于产品包装文本以及其他信号(如TF-IDF )。此外,匹配的可靠性是 OCR+N-Gram 方法的一个问题,因为在两种不同产品的包装上存在大量常见词的情况下,它很容易过度触发。

 

与 SIFT 和 OCR+N-Gram 方法相比,我们基于神经网络的方法为每个图像生成全局描述符(即嵌入),只需要 64 个字节,显着减少了 10-每个 SIFT 特征索引条目需要每张图像 40KB,或者对于不太可靠的 OCR+N-gram 方法,每张图像需要几个 KB。每个索引图像消耗的字节更少,可以将更多产品作为索引的一部分包含在内,从而产生更完整的产品覆盖范围和更好的整体用户体验。

 

设计

 

Lookout 系统由帧缓存、帧选择器、检测器、对象跟踪器、嵌入器、索引搜索器、OCR、记分器和结果呈现器组成。

 

 

帧缓存 帧缓存管理管道中输入相机帧的生命周期。它根据其他模型组件的请求高效地提供数据,包括 YUV/RGB/灰度图像,并管理数据生命周期以避免多个组件请求的同一相机帧的重复转换。

 

帧选择器

 

当用户将相机取景器指向产品时,基于轻量级IMU的帧选择器作为预过滤阶段运行。它基于由角旋转速率 (deg/sec) 测量的抖动,从连续传入的图像流中选择最符合特定质量标准(例如,平衡的图像质量和延迟)的帧。这种方法通过选择性地仅处理高质量图像帧并跳过模糊帧来最小化能量消耗。

 

检测器

 

然后将每个选定的帧传递给产品检测器模型,该模型在帧中提出感兴趣的区域(又名检测边界框)。检测器模型架构是具有MnasNet主干的单次检测器,可在高质量和低延迟之间取得平衡。

 

Object tracker

 

MediaPipe Box tracking用于实时跟踪检测到的box,在填补不同物体检测之间的差距,降低检测频率,从而降低能耗方面起到重要作用。对象跟踪器还维护一个对象映射,其中每个对象在运行时都被分配一个唯一的对象 ID,结果展示器稍后会使用这些 ID来区分对象并避免重复发布单个对象。对于每个检测结果,跟踪器要幺在地图中注册一个新对象,要幺使用检测边界框更新现有对象,使用现有对象边界框与检测结果之间的交集(IoU)。

 

嵌入

 

器 来自检测器的感兴趣区域 (ROI) 被发送到嵌入器模型,然后计算 64 维嵌入。embedder 模型最初是从一个大型分类模型(即教师模型,基于NASNet),它跨越了数万个类。在模型中添加嵌入层以将输入图像投影到“嵌入空间”,即向量空间,其中两个点靠近意味着它们代表的图像在视觉上相似(例如,两个图像显示相同的产品)。仅分析嵌入可确保模型灵活,并且每次扩展到新产品时都不需要重新训练。然而,由于教师模型太大而不能直接在设备上使用,它生成的嵌入被用来训练一个更小的、移动友好的学生模型,学习将输入图像映射到嵌入空间中的相同点作为教师网。最后,我们应用主成分分析 (PCA) 将嵌入向量的维数从 256 减少到 64,简化了用于存储在设备上的嵌入。

 

索引搜索器

 

索引搜索器使用查询嵌入对预先构建的兼容ScaNN索引执行KNN 搜索。因此,它返回包含其元数据的排名靠前的索引文档,例如产品名称、包装尺寸等。为了减少索引查找延迟,所有嵌入都被k-means聚类成簇。在查询时,相关数据簇被加载到内存中以进行实际距离计算。为了在不牺牲质量的情况下减小索引大小,我们在索引时使用乘积量化。

 

OCR

 

OCR 在每个相机帧的 ROI 上执行,以提取额外信息,例如数据包大小、产品风味变体等。传统解决方案使用 OCR 结果进行索引搜索,这里我们仅将其用于评分。由 OCR 文本通知的正确评分算法可帮助评分者(见下文)确定正确结果并提高精确度,尤其是在多个产品具有相似包装的情况下。

 

评分器评分

 

器从嵌入(带有索引结果)和 OCR 模块中获取输入,并对之前检索到的每个索引文档(通过索引搜索器检索的嵌入和元数据)进行评分。评分后的最高结果作为系统的最终识别结果。

 

结果展示器

 

结果展示器接收上述所有结果,并通过文本转语音服务说出产品名称将结果呈现给用户。

 

 

结论/未来工作

 

此处概述的设备上系统可用于实现一系列新的店内体验,包括显示详细的产品信息(营养成分、过敏原等)、客户评级、产品比较、智能购物列表、价格跟踪等。我们很高兴探索其中的一些未来应用,同时继续研究提高底层设备模型的质量和稳健性。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注