一条染着暮色的小路上,有路灯照常亮着。现在我要许个愿,让这2D的夜晚瞬间拥有立体感。砰!
这不是缩放,是视角真的在变。一会儿高一会儿低,一会儿左一会儿右,仿佛一只低空飞舞的昆虫视角。
那么问题来了,我向谁许的愿?它是弗吉尼亚理工学院、台湾清华大学以及Facebook联合开发的一只AI。随意向它投喂一张2D的RGB图,它便回赠我一幅3D景色。
这样美妙的经历,可不能只有一次。于是我又许了个愿:
砰!龙猫那个四季如春的树洞,也在我眼前生动了起来。
不用太羡慕我,因为只要打开浏览器,你也可以投喂这只AI:
https://colab.research.google.com/drive/1706ToQrkIZshRSJSHvZ1RuCiM__YX3Bz
但在那之前,还是先来看看技术是怎样炼成的。
脑补各路视角
给一张2D图片脑补出不同的视角,把它变成3D图像,不是件容易的事。
每变换一个视角,都会有不同的部位被挡住,也会有不同的部位露出来。
AI怎么才能了解3D世界里复杂的空间关系?
依照原本的设定,输入给AI的应该是RGB-D图像,就是一张色彩图和一张深度图共同组成的图像。想让图片获得立体感,深度数据很重要。
问题是,色彩图常有而深度图不常有。于是论文也提到,深度图除了来自双摄像头的不同视角,也可以用普通的RGB图估计出来。团队直接从前辈AI那里借鉴了方法。
有了深度图,系统便可以找出深度断层的所在,就是深度图上颜色发生明显变化的地方。然后,把这些断层整理分组,连成几条深度边缘。
做好这些准备,才能进入重头戏:从新的视角上修复图像,脑补出原始视角里被挡住的部分。
修复当中用到的工具,叫分层深度图(Layered Depth Image, LDI)。
开始修复之前,LDI上的每个像素都和上下左右的4个像素连通。AI每次选择一条深度边缘去修复,把空间上不相连的像素沿着边缘切开。这样,LDI就分成了前景和背景两个部分:
需要修复的部分,就在背景轮廓附近。因为,那里会有些原图上被挡的部分,需要在新视角里露出。前景就不用脑补了。
至于怎样修复背景,方法是“联系上下文”,根据周围的像素来推测原本隐藏的部分。
所以,首先要把背景分成“合成区”和“上下文区”:
合成区是原本被前景挡住的部分,上下文区原本就是背景。
分好两个区,修(nao)复(bu)环节就要开始了。
修复工作由三只小AI负责:先是边缘修复网络,它利用上下文区的边缘,来脑补被挡住的边缘;然后是色彩修复网络和深度修复网络,它们拿到了边缘修复网络提供的物体结构信息,便能更科学地脑补被遮挡的色彩和深度。
当三只AI脑补完成,只要把它们给出的结果融进当初的LDI里,新鲜的3D图像便出锅了。然后,把各种不同的视角集合起来,形成动态服用,疗效甚佳:
如今既已有线上版本,在下自然按捺不住前去游玩。一去便无法自拔。
风景如画,哪幅画?
就像上文提到的那样,AI自带深度估计模型,所以随意一张RGB图都可以拿来玩耍。
不出门的日子,就这样肆意地沉浸在江山里吧。
顺便甩掉一次脑袋。
也不妨去一趟隔壁次元。
顺便再甩掉一次脑袋。
依在下愚见,这样快乐的BugFeature不如就保留吧,千万不要做人类背影的针对性训练啊。
假如再搭配一只播撒快乐的人类,美不胜收,鬼畜源泉。
当然,只是这样的话,并不算打开了新世界的大门。
还想怎样
最后,真诚向你推荐一种正确的打开方式:
看了AI的抠图操作也知道,和欧派相比,其他都是背景(误)。
勇敢的少年,快去创造奇迹。
参考文献
[1] Shih, M. L., Su, S. Y., Kopf, J., & Huang, J. B. (2020). 3D Photography using Context-aware Layered Depth Inpainting. arXiv preprint arXiv:2004.04727.
作者:栗子
编辑:odette
一个AI
路灯,电线杆子,还有人头,这三样都是脆弱的东西。
本文来自果壳,未经授权不得转载.
如有需要请联系sns@guokr.com