更善于自动抓拍「有趣」瞬间:谷歌 Clips AI 拍照新技术
雷锋网 AI 科技评论按 :对我而言,摄影是即时的识别,时间的一块碎片,一个事件的意义所在,而摄影也就是赋予该事件适当表达的精密组织的一种形式。——法国著名摄影家 Henri Cartier-Bresson
过去几年,雷锋网 (公众号:雷锋网) AI 科技评论和大家一同亲眼见证了 AI 领域内寒武纪大爆炸般的发展,深度学习方法已经能够让计算机视觉算法识别一张好照片内的许多元素:人物、笑脸、宠物、有名地标以及更多的元素。但是,尽管深度学习已经在近期取得了一些进步,但在其在自动摄影方面依旧面临着一项极具挑战的难题:相机能够自动抓拍到精彩的瞬间吗?
谷歌去年发布了一个自动抓拍生活中有趣瞬间的全新相机产品:Google Clips 相机,Google Clips 的设计遵循以下三项重要的原则:
-
谷歌想要全部计算在相机端上进行。 在相机端进行计算的好处,除了可以延长相机电池寿命和减少计算延迟之外,还意味着除非用户决定存储或者分享相机拍摄数据,所有数据都将保留在相机端,这也是用户隐私控制的关键所在。
-
谷歌希望 Clips 拍摄短视频,而不是单张照片。 拍摄动态瞬间更能切中用户需求和忠实于回忆,而且相较于及时抓拍单张完美瞬间的照片,拍摄一段包含引人注目瞬间的视频更容易一些。
-
谷歌想让相机专注于「偷拍」人和宠物,而不是将心思放在更抽象和存在主观难题的艺术照片拍摄上去。 也就是,谷歌并没有尝试教 Clips 去思考构图、色彩平衡、光线等拍摄方面的技巧;相反,Clips 专注于选择「偷拍」人和动物在做有趣活动的瞬间。
学习识别记录精彩瞬间
如何训练一项算法来识别精彩瞬间?和解决大多数的机器学习问题一样,谷歌也是从一个数据集开始的。首先,谷歌打造了一个含有成千上万个不同场景的视频数据集,并认为 Clips 可以在这些场景下派上用场。谷歌还确保该数据集大范围的覆盖种族、性别、以及年龄等类别范围。另外,谷歌还雇用了专业摄影师和视频剪辑师,来从 Clips 拍摄的影片素材中精心挑选出最优的片段部分。对视频的早期综合处理为谷歌提供了样本,这些样本可供算法进行模拟。但是,训练算法独立地学习人类的主观选择是具有挑战性的,这就需要一个平滑梯度的标签来教算法学会识别视频的内容品质(从「完美」到「糟糕」)。
为了处理这个问题,谷歌采用了第二种数据收集方法,该方法旨在在整个视频长度内创造一个连续的品质评分。谷歌将每个视频分割成短片段(类似 Clips 拍摄的内容片段),并从中随机选出一对片段来让人类评估员从中挑出他们最爱的那个。
「你表弟拍了一段长视频,他想让你帮助选出一小部分片段进行保存。他向你展示了几对片段并让你在每一对中挑选出你喜欢的那个。」
因为从一对片段中选出比较好的那个要比从一堆视频片段里选容易得多,所以谷歌采用了成对比较的方法,而不是让人类评估员直接对整个视频打分。谷歌发现在使用成对比较方法时,人类评估员的发挥始终如一,而直接打分时就没那么稳定了。对于任何给定视频,只要给定足够多的成对比较片段,谷歌就能够在整个视频长度范围内计算出连续的片段品质评分。在这个过程中,谷歌从 Clips 上的 1000 多个视频上,取样了超过 5000 万个用于成对比较的视频片段。这一过程耗费了大量人力!
训练一个片段品质模型
在给定训练数据的品质得分的情况下,谷歌下一步就是训练一个神经网络模型,并使用这个模型来评价 Clips 拍摄的照片品质。谷歌先基本假设模型知道照片里有什么(如人物、狗、树等),这将帮助模型来定义何为「有趣」。如果这个假设成立,谷歌就可以得到一个人类对比照片的行为上衍生出来的新特性:通过已识别的照片内容来预测该照片的品质得分。
谷歌利用驱动 Google 图像搜索和 Google 相册的同款机器学习技术,来识别训练数据中描述事物、概念以及动作的内容标签,可以识别的不同标签超过 27000 种。谷歌显然不需要所有的这些标签,也不可能在设备上把它们全都计算个遍,因此,谷歌的摄影专家们只选择了几百种标签,他们认为这些标签与预测一张照片的「有趣」最为接近。谷歌还加上了与人类评估员打出的片段品质得分最契合的那些标签。
在获得了这些标签的子集后,谷歌就需要设计一个压缩的、高效的模型,这个模型在能源和发热的严格限制下,在设备端对任何给定的图像进行预测。这就带来了一项挑战,因为支持计算机视觉的深度学习技术通常需要强大的桌面 GPU,目前适合在移动端设备运行的算法还远远落后桌面和云端的最先进技术。为了训练这个设备端模型,首先,谷歌使用了一组数量很多的照片集,并再次使用了谷歌强大的、基于服务器的识别模型,来为上面描述过的每一个「有趣」标签预测标签可信度。随后,谷歌训练了一个 MobileNet 图像内容模型(ICM)来模拟 server-based 模型(server-based model)的预测。这个压缩模型能够识别照片中最有趣的那些元素,同时忽略掉与「有趣」无关的内容。
最后一步是,为一张输入的照片(照片内容由由 ICM 预测)预测一个单一的品质评分,同时使用 5000 万个成对比较样本作为训练数据。这项评分是使用一个分段线性回归模型计算得到的,模型将 ICM 的输出合并成某一帧片段的品质得分。这一帧的品质得分,是综合视频分片段来产生一个瞬间得分。给定一个成对比较样本后,模型应该可以计算出一个瞬间得分,也就是给人类偏爱的那个片段打一个更高的分数。这样训练模型来让它的预测尽可能的与人类在成对片段比较中的喜好相匹配。
图:生成帧品质得分的模型训练过程。分段线性回归是从一个 ICM 嵌套映射到一个得分,也就是对一个视频综合评估时,得到的一个瞬间得分。人类偏爱的那个片段的瞬间得分应该更高。
这个过程允许谷歌训练一个结合 Google 图片识别技术和人类评估员智慧的模型,其中人类评估员的智慧由 5000 万个关于「何为有趣内容」的观点代表!
虽然由数据驱使的评分模型,已经在识别视频的有趣和无趣瞬间上表现得相当不错,但谷歌仍在整体评分的基础上增加了一些奖励,来激励模型拍摄一些谷歌想让它拍摄的画面,包括人脸(特别是经常出现在镜头前的熟悉面孔)、笑容和宠物。谷歌近期发表了一篇「Jump for joy: Google Clips captures life's little moments」,在论文中谷歌针对用户们明确想记录的一些特定行为(如拥抱、接吻、跳跃和舞蹈等)增加了一些对模型的奖励,激励模型记录这些用户行为。识别上面这些行为,需要对 ICM 模型进行扩展。
抓拍控制
有了可以预测一个场景的「有趣」的强大模型后,Clips 相机就能判断哪个场景需要实时抓拍了。Clips 相机的拍摄控制算法遵循下面三个主要原则:
-
高效利用电池和避免设备过热 :谷歌希望 Clips 的电池可以保持大致 3 个小时的续航,且不希望设备过热(禁止设备以高性能状态运行全程)。Clips 大部分时间在低能耗状态下运行,期间 Clips 每秒拍摄一帧画面。如果某一帧的画面品质达到了 Clips 的临界值(依据 Clips 最近拍到的最好照片品质而设定),Clips 就会进入每秒拍摄 15 帧画面的高性能模式。随后,Clips 会在对包含第一张达到最好品质的照片的视频片段进行保存。
-
避免冗余的拍摄 :谷歌不希望 Clips 一次记录所有的瞬间,而忽略掉剩下的那些。因此,谷歌的拍照控制算法将 Clips 拍摄的瞬间,分群放入视觉上相似的组中,并对每个群内的片段数量加以限制。
-
对所拍内容实施二次评估 :当拍摄的片段总体摆在你面前的时候,可以很轻松地判断哪个片段拍的最好。因此,相较于直接将拍摄结果展示给用户,Clips 倾向记录更多的瞬间来让用户选择。将拍摄的片段传输至手机端前,Clips 相机会再一次评估拍摄的内容,然后只将品质最好和最少冗余的内容呈现给用户。
机器学习的公平性
除了保证视频数据集覆盖人种类别的多样性之外,谷歌还建立了几项其他的测试来评估算法的公平性。在保证平衡的前提下,谷歌从不同性别和肤色中对取样 subject,打造了一个可控数据集,同时保持如内容类型、时长、环境条件恒定的多样性。随后,谷歌使用这个数据集来测试算法应用到不同组时,是否仍保持相同的表现。为了帮助检测算法在公平性上是否发生任何退化,一旦发现退化,谷歌就会及时地改进这个瞬间品质模型(moment quality models),谷歌也将这个公平性测试加到了自家的自动化系统上。任何软件上的改变都要进行电池续航测试,且需要合格通过。需要注意的是,这个方法并不能完全保证算法的公平,正如谷歌无法对每一个可能的场景和结果都进行测试一样。但是,谷歌相信在机器学习算法中实现公平的长期研究中,以上步骤是重要的一部分。
结论
大多数的机器学习算法都被设计来评估目标的品质:如判断一张照片内有猫,或者没有猫。在这个案例中,谷歌旨在将算法设计成拍摄一个更难懂、更主观的品质,即判断一张个人照片是否有趣。因而,谷歌将照片的客观、语义内容与人类的主观喜好结合起来,用于打造支持 Google Clips 相机的 AI 技术。另外,Clips 还被设计成可在用户参与下工作,而不是独自工作;为了取得更好的拍摄结果,需要用户来考虑取景并保证把 Clips 对准有趣的内容。谷歌很高兴地看到 Google Clips 运行表现良好,并将继续改进算法来帮助 Clips 捕捉那个「完美」的瞬间!
via Google AI Blog,雷锋网 AI 科技评论编译。
。