作家
登录

TensorFlow实现基于深度学习的图像补全

作者: 来源: 2017-05-22 16:13:45 阅读 我要评论

你也可以在 TensorBoard 上查看 Tensorflow 图像,以及损掉函数。

  1. tensorboard--logdir ./logs  

TensorBoard 损掉可视化图像。在练习过程中及时更新。

DCGAN 收集的TensorBoard可视化

第三步:找到用于图像补全最好的伪图像

1.应用 DCGAN 进行图像补全

既然我们已经有了辨别器 D(x) 和生成器 G(z),我们怎么把它用在图像补全上呢?在这章我要介绍的是 RaymondYeh 和 Chen Chen 等人的一篇论文,“基于感知和语境损掉的图像语义修补(Semantic Image Inpainting with Perceptual andContextual Losses)”。论文在2016年7月26号宣布于 arXiv 上。

  1. Lcontextual(z)=||M⊙G(z)−M⊙y||Lcontextual(z)=||M⊙G(z)−M⊙y|| 

对于某个图片y进行图像补全,一个有事理然则弗成行的筹划是,对于缺掉的像素,最大年夜化D(y)。结不雅既不是数据分布(pdatapdata),也不是生成分布(pgpg)。我们期望的是,将y投影到生成分布上。

(a): 生成分布的 y 的幻想重建(蓝色曲面)。(b):测验测验经由过程对 D(y) 最大年夜化来重建 y 的一个掉败的例子。图像来自图像修复论文

2.[ML-Heavy] 到 pgpg 的投影的损掉函数

为了给投影一个合理的定义,我们先为图像补全定义一些符号。我们应用一个二值掩码 M(mask), 也就是只有0、1两个值。值为1表示图像这部分我们想要保存,值为0表示这部分我们须要补全。如今我们可以定义,在给定了二值掩码M之后若何对y进行补全。将y中的元素和M中的元素相乘。两个矩阵对应地位元素相乘也叫做 Hadamard 积,用 M⊙yM⊙y 表示。M⊙yM⊙y 表示图像的原始部分。

二值掩码图例

接下来,假设我们已经找到了一个 z^z^, 可以生成一个对缺掉值进行重构的合理的G(z^)G(z^)。补全的像素 (1−M)⊙G(z^)(1−M)⊙G(z^) 可以加到原始像素上,获得重构的图像:

  1. xreconstructed=M⊙y+(1−M)⊙G(z^)xreconstructed=M⊙y+(1−M)⊙G(z^) 

如今我们要做的工作,就是找到一个适于补全图像的 G(z^)G(z^)。为了找到 z^z^ ,我们回想一下文┞仿开首提到的 语境 和 感知,将它们作为DCGANs的高低文。为此,我们定义了对于随便率性z∼pzz∼pz的损掉函数。损掉函数越小,解释 z^z^ 越合适。

语境损掉:为了获得和输入图像雷同的高低文,须要确保y已知像素对应地位的G(z)G(z)尽可能类似。所以,当 G(z) 的输出和 y 已知地位图像不类似的时刻,须要对 G(z) 进行处罚。为此,我们用 G(z) 减去 y 中对应地位的像素,然后获得它们不类似的程度:

个中||x||1=∑i|xi|||x||1=∑i|xi|是某个向量x的l1l1 范数。l2l2 范数也是可取的,然则论文指出,实践注解l1l1 范数效不雅更好。

幻想情况下,已知部分的 y 和 G(z) 的像素是相等的。也就是对于已知地位的像素i, ||M⊙G(z)i−M⊙yi||=0||M⊙G(z)i−M⊙yi||=0 , Lcontextual(z)=0Lcontextual(z)=0 。

感知损掉:为了重建一个看起来真实的图像,须要确保判别器剖断图像看起来是真实的。为此,我们进行和练习 DCGAN 中雷同的步调。

  1. Lperceptual(z)=log(1−D(G(z)))Lperceptual(z)=log(1−D(G(z))) 

最后,将语境损掉和感知损掉组合起来,就可以找到 z^z^ 了;

  1. L(z)=Lcontextual(z)+λLperceptual(z)z^=argminzL(z)L(z)=Lcontextual(z)+λLperceptual(z)z^=arg⁡minzL(z) 

个中 λλ 是超参数,用来控制比拟于感知损掉,语境损掉重要的程度。(我用的是默认的λ=0.1λ=0.1,并没有对这个值进行深刻研究。)然后如前所述,应用 G(z) 来重建y中缺掉的部分。

  1. Lcontextual(z)=||M⊙G(z)−M⊙y||Lcontextual(z)=||M⊙G(z)−M⊙y|| 

这一章给出了我对于 Taehoon Kim 的 carpedm20/DCGAN-tensorflow 代码的修改,用于图像补全。

  1. self.mask =tf.placeholder(tf.float32, [None] + self.image_shape, name='mask'

  推荐阅读

  机器学习PAI实践三:雾霾成因分析

一、背景本案其实是采取了两种不合的算法对于结不雅进行猜测,我们先来看看随机丛林这一分支。我们经由过程将数据集拆分,百分之八十的数据练习模型,百分之二十的数据猜测。最终模型的出>>>详细阅读


本文标题:TensorFlow实现基于深度学习的图像补全

地址:http://www.17bianji.com/lsqh/35350.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)