随着科技的发展,现在人们可以随时随地用手机等设备拍照记录自己喜欢的瞬间。可能不少人都想过,假如出现一种黑科技,让我们拍摄的平面2 d照片变成立体的3 d照片…
Facebook也早就想到了这个问题。为改善用户体验,2018年,Facebook就推出了3 d照片功能。这是一种全新的沉浸式格式,你可以用它与朋友,家人分享照片。但是,这项功能依赖于高端智能手机才具备的双镜头”肖像模式”功能,无法在寻常的移动设备上使用。
为了让更多人体验到这种新的视觉格式,Facebook利用机器学习开发了一个系统。这个系统可以推断出任何图像的3 d结构,任何设备,任何时间拍摄的图像都可以被转换成3 d形式。这就可以让人们轻松使用3 d照片技术。
不仅如此,它还可以处理几十年前的家庭照片和其它珍贵图像。任何拥有iPhone7及以上版本,或中端以Android上设备的人,现在都可以在Facebook应用程序中尝试这个功能。
构建这种增强的3 d图片需要克服不少技术挑战,例如,要训练一个能够正确推断各种主题3 d位置的模型,并优化系统,使其能够在1秒钟内运行在典型的移动处理器设备上。为了克服这些挑战,Facebook在数百万公共3 d图像及其附带的深度图上训练了卷积神经网络(CNN),并利用Facebook AI之前开发的各种移动优化技术,如FBNet和ChamNet。团队最近也讨论了3 d理解的 相关研究。
现在,所有使用Facebook的人都可以使用这个功能,那么,它究竟是如何构建的?我们可以一起来看看其中的技术细节。
给定一个标准的RGB图像,3 d照片CNN (3 d照片卷积神经网络)可以估计每个像素与摄像机的距离。研究人员通过四种方式实现了这一目标:
-
<李>
使用一组可参数化,可移动优化的神经构建块构建网络架构;
李> <李>自动化架构搜索,以找到这些块的有效配置,使系统能够在不到1秒钟的时间内在各种设备上执行任务,
李> <李>量化感知训练,在移动设备上利用高性能INT8量化,同时使量化过程中的性能下降最小化;
李> <李>从公开的3 d照片获取大量的训练数据。
李>
Facebook的架构使用受FBNet的构建块启发.FBNet是一个为移动设备等资源受限的设备优化事先架构的框架。一个构建块由逐点卷积(点态卷积),可选的上采样,kxk深度卷积和附加的点逐点卷积组成.Facebook实现了一个U-net风格的架构,该架构已被修改为沿着跳过连接放置FBNet构建块.U-net编码器和解码器各包含5个阶段,每个阶段对应不同的空间分辨率。
与基于float32的运算符相比,基于Int8的运算符的吞吐量也要高得多,这要归功于Facebook AI的QNNPACK等经过优化的库,后者已经集成到PyTorch中。我们使用量化感知训练(咔特)来避免量化导致的质量下降.QAT现在是PyTorch的一部分,它在训练期间模拟量化并支持反向传播,从而消除了训练和生产性能之间的差距。