小时候,有没有玩过一个叫做立体图游戏。
就是那种给你一张二维图,让你看图背后有啥东西。
比如,像这张图。
这其实是一张六角星。
在比如这张。
其实是一个女人在画口红。
好吧!真·眼睛看瞎还看不出是什么东西。
现在,这样一个人都看不懂的图,AI可以看懂了。
来自密歇根大学、网易伏羲AI实验室、北航的团队共同研发了一款AI项目——Neural Magic Eye,就专门从2D图像中识别3D物体来。
还可以是动图的那种。
AI是如何做到的?先来一睹为快吧。
自动立体图的生成原理
简单来说,通过训练一个深度卷积神经网络(CNN),以自监督学习的方式对大型3D对象数据集进行充分训练,就可以让AI很好的是识别出2D纹理当中的3D立体图。
训练AI之前,先得了解一下自动立体图的生成原理。
自动立体图其实与普通立体图差不多,只是它们是在没有3D眼镜的情况下观看的。
3D眼镜从略微不同的角度向左眼和右眼呈现同一物体的二维图像,使我们能够通过双目差异重建原始物体。
当以适当的视线观看时,自动立体图也是如此,双眼差异存在于重复2D图案的相邻部分。重复图案之间的距离决定了立体影像的远近。
按照这样的原理,给定一个3D图像和一个条纹图案,就可以生产自动立体图了。
首先,将条纹平铺到充满整个输出图像。然后,扫描输出图像中的每一个像素,并根据所需的距离按照水平轴移动。
判断出重复2D图案之间的距离,正是此次AI训练的关键。
AI是如何做到的?
简单概述,本次训练方法主要包括三个基本模块。
1、图形渲染器GR,从三维物体模型中渲染深度图像。
给定一组3D物体模型(如3D网格),引入一个图形渲染器GR。
2、自动立体生成器GA。
对深度进行编码并合成自动立体图。
3、解码网络,恢复深度。
近年来,深度CNN被广泛应用于像素预测任务中,本文则是将网络被训练为学习从像素到差距的映射。但在这种情况下,大多数图像区域将失去空间对应关系。
为了解决这个问题,本文提出了“差异卷积”的方法。
基本思想是计算出每一个特征图中的特征向量与其水平邻域,并将其值保存到相应的特征通道中。
就像这样。
为了加快计算速度,可先将特征图沿其水平轴进行圆周移动,然后用其输入进行元素减法。
与标准卷积层相比,差异卷积不会引入任何额外的参数。
本次解码网络结合了两种流行的网络架构,resnet18和unet。在这两种网络的输入端插入了一个差异卷积层和ReLU层,在差异卷积层中,研究团队将最大移位距离设置为输入图像高度的1/4。
随后,研究人员在ShapeNetCore训练解码网络——一个大型3D形状数据集,涵盖了55个常见的对象类别,其中有超过50000个独特的3D模型,并随机将数据集拆分为一个训练集(90%)和一个测试集(10%)。
此外,团队还在线收集了718张2D纹理图 (585张用于训练,133张用于测试),用于自动立体图的生成。
在解码精度的定量比较中,本文提供的方法展现出了很好的结果。
北航校友又一新作
本次项目来自密歇根大学、网易伏羲AI实验室、北航共同完成。
其中第一作者是邹征夏,目前在密歇根大学做博士后研究,他曾于2013年和2018年分别获得北航学士和博士学位。
研究方向是计算机视觉及其在遥感,自动驾驶汽车和视频游戏中的应用。
在北航学习期间,他曾获北航优秀博士论文奖,北航十佳博士研究生、北京市优秀毕业生,师从史振威教授。
前不久,他打造的SkyAR,打造电影级别的「天空之城」,在AI圈儿里引起了不小的轰动。
还有美术生都膜拜的AI,分分钟将照片变成艺术画。
One More Thing
最后,分享一个小Tips。
连AI都可以识别出立体图,咱们人可不能输!
首先,放松眼睛肌肉。
然后,让左眼看到左上方的点、右眼看到右上方的点。
最后,慢慢调整视角。
当你能在图像的顶部看到三个点后,再慢慢地调整眼睛焦距,你将会看到图像里面的3D物体。
来试试手吧!
So,这张图是啥?(手动狗头)
论文地址:
https://arxiv.org/pdf/2012.15692.pdf
项目地址:
https://jiupinjia.github.io/neuralmagiceye/
GitHub网址:
https://github.com/jiupinjia/neural-magic-eye
参考链接:
http://www-personal.umich.edu/~zzhengxi/
https://levir.buaa.edu.cn/news_events_cn.htm
“