文章来源:CVPR 2018
下载链接:Paper Download
解决的问题:
纹理合成(纹理传播,即将纹理patch传播至整个object)
通过控制草图、颜色、纹理来合成人们所期望的图像,而以往的图像合成方法仅通过草图和彩色笔画来控制图像合成。本文主要基于纹理进行图像合成。
文章内容
本文方法允许用户在草图的任意位置和以任意比例放置纹理贴图,以控制所需的输出纹理。
在过去的两年中,不使用传统渲染管道直接进行图像合成的想法得到了广泛的关注,因为在诸如变分自编码器(VAEs)和生成对抗网络(GANs)等深层网络架构中获得了很好的结果。然而,在深度图像合成中,对细粒度纹理控制的研究较少(相对于通过“风格传递”方法进行粗纹理控制而言)。
面对的挑战:
(1)对于TextureGAN,网络必须学会将纹理传播到相关的对象边界。要做到这一点,网络必须隐式地分割草图对象并执行纹理合成,这是单独比较困难的任务。
(2)此外,网络还应学会在包裹三维物体形状时缩短纹理,根据环境遮挡和光照方向对纹理进行阴影处理,并理解一些物体部件(手袋扣)不是要纹理,而是要遮挡纹理。
本文创新点
(1) 本文提出一种TextureGAN网络,它是第一种允许用户控制物体纹理的深度图像合成方法。该方法允许用户“拖动”一个或多个任意尺寸的纹理patches到草图对象上,以控制所需的输出纹理。
(2) 引入一个新的判别器loss:local texture loss。
本文算法的核心思想
目前在深度图像合成中,细粒度纹理控制的研究很少。如风格迁移,也是一类图像合成方法,但是其属于粗粒度纹理合成范畴,即该方法追求合成的纹理有效即可(确保合成的结果与原图像上下文一致)。而本文方法属于细粒度纹理合成范畴,即该方法追求合成纹理是否与ground truth相似(检测输入纹理patch和输出图像之间的纹理相似性)。
基于此,作者设计了两个GAN网格,第一个网格用来预训练ground-truth,其目标就是将纹理patch中的信息传播至整个草图。可以理解为生成网络的一个全局处理步骤,用来将输入的草图和纹理合成一个大致与ground-truth相似的图像,该图像的纹理可能存在与草图的边界不对齐,以及纹理不清晰等问题。第二个网络用于对第一个网络合成的图像进行微调,可以理解为一个局部处理步骤,其目标就是使合成的图像更加逼真。图1、图2为相应的网络结构。
以前GAN网络进行颜色控制的一个局限性是,RGB形式的输入颜色约束需要与网络对语义的理解作斗争,例如,手提包多为黑色,而鞋很少为绿色。但是在本文方法中,用户可能拖入违背实际情况的纹理patch,如对鞋的草图贴上绿色patch,这样使用原处理方式可能导致合成不符要求的图像。针对该问题本文方法将图像从RGB颜色空间转换到Lab颜色空间,然后分别对图像的内容和颜色进行处理。
两个网络的输入均为:草图和一些用户提供的纹理patches。其中输入时需要将ground-truth分解为5个通道:
(1) 一个通道的二进制sketch图;
(2) 两个通道的texture (L通道图像和纹理位置的二进制掩码图);
(3) 两个通道的颜色图(a和b通道)。
上述第2条中的二进制掩码图是根据ground-truth图计算得到,数据集提供了相关信息。
本文方法的重点在于如何设计网络的损失函数,两个网络的损失函数分别如图3和图4所示。
图4中蓝色线条代表原文中描述的内容,即文中提到在external texture fine-tuning网络中,feature and adversarial losses没有改变,修改了pixel and color losses。但是文中并没有提供color loss,而是提供了Local Adversarial Loss。同时文中提到 adversarial loss没有改变,但是却提供了Local Adversarial Loss。
实验结果
本文所用的数据集为handbags, shoes and clothes。
对于handbags, shoes数据集,本文使用pix2pix方法生成草图。而对于clothes数据集,本文使用原数据集提供的解析数据得到相应的草图。
对于纹理Patches,本文在数据集中随机裁剪得到。另外为了增强算法的鲁棒性,作者还在谷歌上搜索了大量的leather-like纹理,然后手工制作了130幅高分辨率的leather纹理用于网络训练。
在本文方法中,输入的训练草图和纹理都是自动从ground truth的照片中提取出来的,这些照片反过来又作为初始训练的ground truth。
Note:测试时,不使用二进制掩码图。
从上图中可以看出,本文提出的方法能够合成有效纹理图像,同时也证明了本文方法在基于草图和纹理的图像合成中的有效性。
本文方法性能提升的原因
以前纹理合成方法属于粗粒度纹理合成范畴,其目标是确保合成的结果与原图像上下文一致,而本文方法属于细粒度纹理合成范畴,其目标是检测输入纹理patch和输出图像之间的纹理相似性。本文方法之所以能够取得较好的效果,是因为其针对细粒度纹理进行图像合成。它不再是仅仅要求合成图像的上下文一致,而是在上下文一致的基础上,还要保证合成的纹理图像与输入的纹理patch具有一定的相似性。
对于本文方法是如何控制细粒度纹理合成的问题,本文方法是通过Local Pixel Loss来控制的,即判断输入纹理patch和输出图像之间的纹理相似性。对于粗粒度纹理合成,如风格迁移方法,其总损失函数为L-content + L-style,而本文方法的纹理损失为L-style+ L-pixel + L-adversarial。
内容说明:
上述内容仅个人的点滴粗见,如有不当之处,请同行批评指正。