斯坦福两名学生Mark Sabini和Gili Rusak,在CS230的期末作业里把图像补到了取景框外边。
就像这样:
原本像手机拍摄的照片一样小的一幅画,一下子变成了开阔的大图。
机器根据它天才的“脑补力”,将白天和傍晚的竖幅海景图脑补出左右两侧的样子还原出了方形海景图照片。看上去除了左右两侧有种照片被水泡了的模糊感之外,就是完整的一张照片。
Keras实现
最近,印度班加罗尔一位小哥Bendangnuksung(简称Bendang)看中了这种算法,决定把它发扬光大。于是,他根据论文中的训练方法,打造了一个超低门槛的Keras实现,还把可处理的分辨率从128×128提升到了256×256。
一经推出,在Reddit上引起轰动。
大家纷纷表示过于厉害了:
你该不会是用训练集做的测试吧?
牛逼,喜欢这种很实用的东西。
效果太好了,简直不像是真的。
除了能看出原图和生成内容的边界之外,其他简直完美。
甚至还开脑洞想出了应用场景:
4:3画幅的电影可以无暇延伸成21:9的了!还可以把旧电影放大成4k画面!
如果我把我的半个脸给它,能给我恢复过来么?
但是也有不少网友指出了一个小问题:这个模型的训练和测试过程很不规范,Bendang展示的效果图,是训练数据中就包含的。
Bendang解释说这个Keras实现,是用海滩数据集训练的,整个数据集一共就350张图,(你们就理解一下嘛)。
然后,他也给出了一张真正的测试效果:
效果勉勉强强。
有了Keras实现,这么cool的想法确实好上手很多,不过在训练和测试这件事上,大家不要学印度小哥。
训练过程
在论文中,这个模型的用到的训练集相当大,有超过3万张图片。不过每张图片只是128×128的小图。
首先,按照这个要求准备数据库,找到36500张128×128的照片,保留100张做测试集。
处理好的数据,通过这样一个DCGAN构架训练。
后面测试集的结果如下,第一排是输入的窄图,第二排是输出效果,第三排则是这张图的原图。
比较一下第二排和第三排看出,结果还不错,除了部分图片有一些明显的边缘之外,还是可以看出图像的连续性的。另外,还有五倍宽度版:
彩蛋
这篇论文获得了CS230作业中的Outstanding Posters。在CS230的作业中,还有很多十分有趣的研究,比如说,Final Project Prize Winners第一名的作业,照着卫星图画地图。
而且,量子位悄悄LinkedIn了一下几位拿到了第一名作者,貌似都是华人/华裔学霸(亮点自寻)。
原作者的代码:
https://github.com/ShinyCode/image-outpainting
领取专属 10元无门槛券
私享最新 技术干货