文 / Xuan Yang,软件工程师,Google Research
对于全球 2.85 亿盲人或低视力人士而言,独立运动极具挑战性。今年早些时候,我们宣布推出 Project Guideline,这是早期与 Guiding Eyes for the Blind 合作开发的研究项目,该项目使用机器学习引导盲人或低视力人士在各种用画线标记的环境中跑步。Guiding Eyes for the Blind 首席执行官 Thomas Panek 仅凭借一部运行 Guideline 技术的手机和一副耳机,得以在数十年来首次独立跑步,并在纽约市中央公园完成 5 公里跑步且无需任何辅助。
在不可预测的环境中安全可靠地引导盲人跑步需要解决诸多挑战。本文中,我们将介绍 Guideline 背后的技术,以及创建设备端机器学习模型以引导 Thomas 独立完成户外跑步的过程。该项目仍处于开发阶段,但我们希望借助该项目探索手机提供的设备端技术如何为盲人或低视力人士提供可靠且更好的移动和定位体验。
Thomas Panek 使用 Guideline 技术在户外独立跑步
Project Guideline
Guideline 系统包括带有定制腰带和安全带的移动设备、跑道上用涂料或胶带标记的指引,以及骨传导耳机。Guideline 技术的核心是设备端分割模型,以设备摄像头的帧为输入,将视频每一帧中的每个像素划分为两类:“指引”和“非指引”。每一帧都应用此简单的置信度掩码,因此,Guideline 应用程序无需使用位置数据,即可预测跑步者相对于跑道上线路的位置。该应用程序基于这种预测和进行中的平滑/过滤功能,向跑步者发送音频信号,以帮助他们沿确定方向的线路跑步,或者在跑步者偏离太远时发出音频警报,告诉他们停下来。
Project Guideline 使用 Android 内置的 Camera 2 和 MLKit API,并添加了自定义模块来分割指引,检测指引位置和方向,过滤错误信号,并实时向用户发送立体声信号
在构建初步的 Guideline 系统时,我们面临一些重大挑战:
- 系统准确性:对于盲人和低视力群体而言,移动性是一项挑战,安全尤为重要。这要求机器学习模型能够生成准确且通用的分割结果,以确保跑步者在不同地点和环境下的安全。
- 系统性能:除了解决用户安全问题外,该系统还需要具有高性能、高效率和高可用性。系统处理速度必须至少达到 15 帧每秒 (FPS),以便为跑步者提供实时反馈。除此之外,系统必须能够在耗尽手机电量前运行至少 3 个小时,且如果步行/跑步路径位于无数据服务的区域,系统还必须能够离线工作,无需互联网连接。
- 缺少域内数据:为了训练分割模型,我们需要大量在有黄线的道路和跑道上拍摄的视频。为了泛化该模型,数据多样性与数据量同等重要,需要在一天中的不同时间、不同光照条件、不同天气条件、不同地点拍摄的视频帧。
下文中我们将介绍针对这些挑战的解决方案。
网络架构
为了满足延迟和功耗要求,我们在 DeepLabv3 框架上构建了线路分割模型,以 MobilenetV3-Small 为基础,同时将输出简化为两类:指引和背景。
该模型采用 RGB 帧并生成输出灰度掩码,代表每个像素的预测置信度
为了提高吞吐速度,我们将摄像头帧尺寸从 1920 x 1080 像素缩小到 513 x 513 像素,作为 DeepLab 分割模型的输入。为了进一步提升在移动设备上 DeepLab 模型的使用速度,我们跳过了最后一个上采样层,直接输出 65 x 65 像素的预测掩码。这些 65 x 65 像素的预测掩码提供给后处理作为输入。通过尽量降低这两个阶段的输入分辨率,我们得以减少分割模型的运行时间并加快后处理速度。
数据收集
为了训练模型,我们需要在能够体现各种路况条件的目标域中收集大量训练图像。公开可用的数据集均用于自动驾驶,在这些用例中,车顶安装摄像头,汽车在线路之间而非目标域中行驶,这一点丝毫不足为奇。我们发现,由于域差异太大,在这些数据集上训练的模型无法提供令人满意的结果。Guideline 模型改为需要用户沿线路跑步,且周围环境中无高速公路和拥挤城市街道上的对抗性物体,并使用佩戴在用户腰间的摄像头收集数据。
自动驾驶数据集与目标域之间存在巨大的域差异。左图由 伯克利 DeepDrive 数据集 提供
事实证明,现有的开源数据集对我们的用例毫无帮助,因此,我们创建了自己的训练数据集,由以下内容组成:
-
手工收集的数据:团队成员使用明亮的胶带在铺设好的道路上临时放置指引,并在一天中的不同时间和不同天气条件下记录在这些路上跑步和周围的情况。
-
合成数据:由于 COVID-19 的限制,数据采集工作很复杂,而且受到严重制约。因此,我们构建了一个自定义渲染流水线,可以改变环境、天气、光照、阴影和对抗性物体,从而合成数以万计的图像。当模型在实际测试中遇到某些情况时,我们能够生成特定的合成数据集来处理这种情况。例如,该模型最初难以分割被成堆秋叶所掩盖的指引。借助额外的合成训练数据,我们便能在后续模型发布中纠正这种情况。
渲染管道生成合成图像以捕捉广泛的环境
我们还创建了一个小型回归数据集,由最常见场景与最具挑战性场景(如树和人的阴影、落叶、对抗性道路标记、偏离指引的阳光反射、急转弯、陡坡等等)的样本注释组成。我们利用此数据集将新模型和旧模型进行比较,并确保整体提升新模型准确性,且在特别重要或具有挑战性的场景中准确性也不会降低。
训练过程
我们设计了三阶段的训练过程,并使用迁移学习来解决域内训练数据集有限这一问题。我们从在 Cityscape 上预训练的 模型入手,然后使用合成图像训练此模型,因为该数据集较大,但质量却较低。最后,我们利用收集到的有限域内数据对模型进行微调。
可克服有限数据问题的三阶段训练过程
在开发早期,分割模型的性能在图像帧顶部明显受到影响。随着指引越来越偏离帧顶部的摄像头视点,线路本身开始消失。这导致预测的掩码在帧顶部不太准确。为了解决这一问题,我们基于每帧中前 k 个像素行计算出损耗值。我们利用该值选择那些模型难以处理的帧(如指引消失),并在这些帧上反复训练模型。事实证明,此过程不仅有助于解决线路消失的问题,而且还有助于解决我们遇到的如帧模糊、线路弯曲和线路被对抗性物体遮挡等其他问题。
即使在具有挑战性的情况下,分割模型的精确度和稳定性也不断提高
系统性能
与 TensorFlow Lite 和 ML Kit 一起使用时,端到端系统在 Pixel 设备上的运行速度惊人,在 Pixel 4 XL 上达到 29 FPS 以上,在 Pixel 5 上达到 20 FPS 以上。我们将分割模型完全部署在 DSP 上,在 Pixel 4 XL 上以每帧 6 毫秒的速度运行,在 Pixel 5 上以每帧 12 毫秒的速度运行,而且精确度很高。端到端系统在我们的评估数据集上帧精确率达到 99.5%,mIoU 达到 93%,并通过了我们的回归测试。这些模型性能指标无比重要,满足这些指标的系统能够向用户提供实时反馈。
前景展望
我们仍然处于探索的初期阶段,但我们对自己的进展和未来的发展深感兴奋。我们开始与更多为盲人和低视力群体服务的其他主要非营利组织合作,在公园、学校和公共场所放置更多 Guideline。通过绘制更多的线路,获得用户的直接反馈,并广泛的收集更多的数据,我们希望进一步泛化我们的分割模型,并改进现有的特征集。与此同时,我们正在探讨新研究和技术以及新特征和功能,以期提高系统的整体可靠性。
如需进一步了解该项目及其发展历程,请阅读 Thomas Panek 的故事。如果您希望帮助我们在世界各地放置更多 Guideline,请访问 goo.gle/ProjectGuideline。
致谢
Project Guideline 由 Google Research、Google 创意实验室和无障碍团队共同打造。特别感谢我们的团队成员:Mikhail Sirotenko、Sagar Waghmare、Lucian Lonita、Tomer Meron、Hartwig Adam、Ryan Burke、Dror Ayalon、Amit Pitaru、Matt Hall、John Watkinson、Phil Bayer、John Mernacaj、Cliff Lungaretti、Dorian Douglass、Kyndra LoCoco。我们也要感谢来自 Mobile Vision 团队和 Guiding Eyes for the Blind 的 Fangting Xia、Jack Sim 以及其他同事和朋友。
原文:Project Guideline: Enabling Those with Low Vision to Run Independently
中文:TensorFlow 公众号