专栏名称: AI科技评论
「AI科技评论」是国内顶尖人工智能媒体和产业服务平台,专注全球 AI 业界、学术和开发三大方向的深度报道。
目录
相关文章推荐
51好读  ›  专栏  ›  AI科技评论

学界 | 全景照片不怕歪!Facebook 用神经网络矫正扭曲的地平线

AI科技评论  · 公众号  · AI  · 2017-09-01 13:40

正文

AI科技评论 :最近微博上的全景照片很火呀,相比各位都已经在自己的iPhone或者iPad上品鉴了多家IT公司的办公室、游玩了多个旅游胜地、享受了被小猫小狗环绕的感觉了。太平洋那头的Facebook也没闲着,从去年上线类似的功能以后,全世界 Facebook 用户们已经上传了七千万张全景照片了。

Facebook 支持多种全景照片和全景视频的拍摄方式,可以让人们把自己的全方位感受分享给好朋友们。如果用户有一个专门的全景摄像机,比如理光Theta S或者Giroptic iO,还可以直接把相机里的照片发布到Facebook上去。如今,多数高端安卓和iOS智能手机的内置相机也都有了全景模式,可以用来拍全景照片。

Facebook 在过去的一年中开发并上线了多种技术给用户提供更好的全景照片创建和分享体验,包括全景拍照、全景视频防抖,以及重新设计如何存储高分辨率媒体。最近,Facebook 还用到了深度神经网络来自动矫正全景照片的方向,可以给手机拍摄的照片直接带来更真实的包围感。AI科技评论对这篇介绍文章做了编译如下。

创建高分辨率全景照片

最近 Facebook 刚刚在 Facebook app中上线了一个新功能,用户可以在一个新的、能够无限滑动的界面里拍摄完整的360度全景照片。

由于全景照片会比一般的照片大很多,Facebook 首先需要解决的难题就是保证信息流里出现了一张全景照片的时候也能让用户流畅地在界面中拖拉滑动;同时,当用户停止滑动,移动手机或者转动手机看这张全景照片的时候,也能立即把全分辨率的照片加载出来。在屏幕立即上呈现全分辨率的照片或占用很多内存,所以当用户继续滑动页面往下看的时候,又会给加载新的内容带来延迟。

面对着这些挑战,Facebook 的工程师们重新设计了 Facebook 的底层照片处理机制,便于存储信息流中“拼贴”的照片以及呈现照片内容。

每张全景照片都会被转换为一张立方映射图,Facebook 之前也有类似的方法用在全景视频中。然后这些立方映射图会以多种不同的分辨率存储下来,而且每一个分辨率的版本都会分割为许多张小的 512x512 分辨率的图像。

当用户在信息流里刷到一张全景照片的时候,程序就会计算当前窗口渲染时需要哪种分辨率、以及用哪些小图像来拼贴成大图。如果当前需要的分辨率不可用,程序就会暂时渲染一个低分辨率的样子,同时等待网络把高分辨率的内容传过来。当用户进入全景照片移动手机和在屏幕上缩放观看的时候,程序会不停地做这样的全套计算。这样,原来的用户体验上不会有什么可感知的变化,却实现了千万甚至上亿像素的高分辨率全景图像显示。

用于全景照片的深度神经网络

用户公开上传到 Facebook 的上千万张全景照片形成了一个强有力的新数据集,Facebook 的研发人员们也就可以利用这个数据集改善自家的产品。这些数据可以和机器学习的方法联合起来,给用户带来更好的使用体验。

让人觉得全景照片不够真实的最常见的原因之一就是拍照的时候相机没有端平,然后最终的照片中也没有修复过来这些倾斜。比如下面就是照片倾斜的例子,拍照的时候相机拿歪了。呈现在照片里的地平线是倾斜的,完全破坏了照片的真实感。

对于传统的照片,用照片编辑软件修正这种倾斜是一件简单直接的事情,但是能够用于全景照片的这类工具并不多,而且修正球面上的倾斜旋转相当不直观。在拍摄全景照片的过程中,相机的旋转可以用 x 轴旋转(tilt)和 z 轴旋转(roll)两个参数来描述,如下方示意图所示。第三个方向的旋转,y 轴旋转(yaw),影响的是全景照片的起始点,但是这个方向上的旋转是不会造成照片内容的倾斜的。Facebook 的研发人员们就想开发出一种能够自动修正这些相机的旋转带来的照片倾斜旋转问题的方法。

为了解决这个问题,Facebook 的研究人员们使用了著名的深度神经网络架构 AlexNet,并对它做了一些相应的修改。用于网络训练的数据就是像前文中那样的照片,它包含了360x180度的完整球面环境,然后用等距离长方圆柱(equirectangular)投影转换为了一张矩形的照片。Facebook 的研究人员们首先假设这个问题的几何本质不需要颜色信息的参与,这样训练数据就可以简化为256x128分辨率的黑白照片。AlexNet 本来的设计是为了解决超过1000个类别的图像分类问题的,所以它最终的全连接层就有4096个输入和1000个输出。在 Facebook 的这个问题中,他们要解决的是一个回归问题,所以他们修改后的网络中,全连接层变成了4096个输入和 x 轴旋转、z 轴旋转两个值的连续值输出。

Facebook 的研究人员们用带有 x 轴和 z 轴旋转标签的图像训练了这个网络模型。训练数据集中包含了五十万张投影转换过的矩形照片,这些照片是研究人员们挑出来,总体没有旋转、倾斜的;换句话说,这些照片的 x 轴和 z 轴旋转全部都是0。在训练过程中,研究人员们人工地用随机生成的 x 轴和 z 轴旋转值对训练样本做旋转。如下的这个损失函数就会测量出这些随机生成的标签和网络模型预测结果之间的差值,并把减小这个差值作为网络的训练目标。







请到「今天看啥」查看全文