“Image outpainting”能从一个图像片段“推断”出外延的部分补全成整个画面

电子说

1.3w人已加入

描述

图像修复(Image inpainting)是一个已经被广泛研究的计算机视觉问题,即恢复图像中缺失的部分。斯坦福大学CS230课程的Mark Sabini等人提出“Image outpainting”,比图像修复更进一步,能从一个图像片段“推断”出外延的部分,补全成整个画面。这篇论文获得了CS230期末poster的第一名,效果非常惊艳。

这是Painting Outside the Box: Image Outpainting 这篇论文的代码实现。这篇论文在吴恩达的斯坦福大学CS230课程中获得了期末Poster的第一名。

图像修复(Image inpainting)是一个已经被广泛研究的计算机视觉问题,涉及恢复图像中缺失的部分。

目前最先进的图像修复方法方法包括Satoshi Iizuka等人在SIGGRAPH 2017提出的基于GAN的方法[1],以及NVIDIA的Guilin Liu等人提出的基于CNN的方法[2]。

在这个研究中,我们的目标是将[1]的方法拓展到修复图像之外的部分(outpainting),即补全超出图像边界的画面。

通过递归地进行outpainting,可以任意地扩展图像。

问题描述和数据准备

给定一幅 m × n 的源图像 图像,生成一幅 m × (n + 2k) 的图像图像,其中

图像图像

图像

要解决的问题是:m=128,n=64,k=32

数据

baseline图像:128×128的RGB城市图像

数据集:Place365-Standard [3]

包含36500张256×256的RGB图像,被降低采样到128×128

100张图像用于验证

Place365数据集中城市图像的样本

数据预处理:

给定图像图像,标准化成 [0,1] → 图像

定义mask M:图像

定义补足的mask 图像

计算图像图像

设 图像

堆叠 图像

输出 图像

方法

训练Pipeline:

使用与文献[1]类似的DCGAN结构(G,D);

给定Itr,进行预处理来得到In和Ip;

运行G(Ip)来得到outpainted的图像Io;

在Io和ground-truth In上运行D;

训练Schedule:

用于调节G和D的三阶段训练;

阶段i:使用Adam(Ir=0.0001,β1=0.9,β2=0.999,ε=10-8)在迭代Ti中优化损失(i);

在18:2:80的分片中选择T1,T2,T3

α=0.0004控制MSE损失

图像

后处理:

将Io重整化为[0,255]→ 图像

使用泊松克隆(Seamless Cloning)来将图像图像进行混合

模型

图像

结构

除了G和D的最后一层之外,每一层都是ReLU。G和D的输出是Sigmoid函数。其中,η是伸缩因子(dilation factors)。

Outpainting

验证集中保留图像样本的修复结果,与原始ground-truth一起显示。模型训练了100个时段(相当于227,500次迭代),批量大小为16。

图像

Places365的MSE损失

在Place365中训练MSE损失。不同阶段的背景颜色是不同的。在阶段3中,由于将联合损失(joint loss)进行了优化,MSE损失有小幅度增长。

本地标识符(Local Discriminator)

使用本地标识符进行训练,减少了垂直条带并提高了色彩保真度,但是增加了artifact和训练时间。

扩张(dilation)的影响

网络的训练在城市图像上过拟合了。在扩张不足的情况下,由于接受域有限,网络无法outpaint。

递归的outpainting

在扩展和填充之后,可以将图像输入到网络中。递归地将这个过程进行重复操作,将图像的宽度扩大到3.5。正如期望的那样,噪声随着连续迭代而混合。

结论

最终实现了图像的outpainting;

三阶段的训练有助于其稳定性;

对于outpainting,扩张卷积对充分的神经元接受域至关重要

虽然会伴随噪声和误差,但对outpainting进行递归是可行的。

用Keras实现Image Outpainting

在代码实现中,我们对256*256的图像进行了一些修改:

添加了Identity loss,即从生成的图像到原始图像

从训练数据中删除了patches(训练pipeline)

用裁减(cropping)代替了掩膜(masking)(训练pipeline)

添加了卷积层

结果

模型用海滩的数据训练了200 epochs。

Recursive painting

用Keras实现Image Outpainting

1. 准备数据:

2. 构建模型

要从头开始构建模型,你可以直接运行’outpaint.ipynb',或

你可以下载训练完成模型,并将其移到“checkpoint/”,然后运行它。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分