题目:《实例正则化:快速风格化缺失的成分》
- 文章地址: arXiv.1607.08022
- Github链接:
Abstract
一.简介
近日Gatys等人介绍了一种方法,把一个图像上的风格转移到另一图像中,以fig 1为例。这个被风格化的图像同时匹配风格图和内容图,风格统计和内容统计都是从预训练好的用于图像分类的深度神经网络中提取出来的。风格统计是从浅层提取的,并且在空间位置上是均匀的,内容统计的提取则是从较深的层中提取,并且保留了空间位置上的信息。在这种方式中,样式统计信息是捕获风格图像的“纹理”,而内容统计是捕获内容图像的“结构”。
尽管Gatys等人得方法已经能产生比较好的结果,但它在计算效率上实在是低下。风格化后的图像,事实上,是通过迭代优化得到的,迭代到它与所需的统计数据相匹配。需要耗费几分钟来风格画一张512x512尺寸的图像。还有两个近日发布的研究成果,ulyanov 和Johnson,试图解决效率低下的问题,通过学习等效的前馈生成网络,以便在单方向产生风格化的图像,这两种方法的不同,主要是在于生成器的结构细节不同,以及产生的结果的质量不同,然而,这两人产出结果从质量上看都没有Gatys那个超慢的方法好。
在这篇论文里,我们重新审视Ulyanov等人提出的前馈网络进行风格化的方法,并且针对生成器的结构提出一些小小的改变,这能带来结果上的大幅提升,能使生成的结果具备和Gatys相媲美的质量,同时能在GPU上实时转换。关键思想(Section 2)是把batch-normalization层替换成instantce-normalization层,并且在测试时也保持不变,直观的说,正规化处理允许从内容图中删除特定实例的对比度信息,从而能简化生成。在实践中,这个结论大大的提升了图像质量。
二. 方法
Ulyanov等人的工作证明了训练一个生成器网络g(x,z)是可以应用于给输入图像x添加x0的风格的,再现Gatys等人得研究结果。在这儿,风格图x0是固定的,生成器g被训练作将风格应用到任意一个输入图像x中。变量z是一个随机种子,可以被用来获取样品结果。
函数g是一个卷积神经网络,从实例中学习得出的,这里一个例子就是一个内容图像xt t=1~n, 学习解决这个问题:
zt~N(0,1)是从一个高斯分布的独立同分布的样本,loss L采用预训练的CNN去从一个x0图像中获取特征,内容图像xt,风格化后的图像g(xt, zt),跟前文说的一样比较他们的统计特征。
因为生成器网络g很快速,作者Ulyanov等人发现用过多的训练集去训练它往往会获得更差的质量,尤其,一个网络被用16张图片训练,往往会比用1000张图片训练产生更好的结果,我们最重要的发现就是,由于每次卷积钱都用0填充图像的边缘,即使使用更复杂的边缘填充算法,它也不可能解决这个问题,最终,最好的结果表现在Ulyanov的论文中,是从非常少量的训练集中,提前很早停止得来的。我们推测,训练的目标对于神经网络来说学起来过于生硬。
一个简单的观测是:一般来说,图像风格化的结果不应该取决于内容图的对比度(见fig 2)事实上,风格上的差距被设计用来将元素从风格图转移到内容图,因此风格化后图的对比度应该是近似于风格图的对比度的。因此,生成器网络必须忽视内容图的对比度信息,问题就在于,对比度正则化是不是可以有效,通过结合在标准的CNN块中,或者说直接实现在结构中。
Ulyanov 和Johnson都用了卷积、池化、上采样和批量正则化。在实践中,学习一个高度非线性化的对比度正则化函数作为层的组合,是非常困难的。想知道为什么的话,让x作为一个输入的tensor:
包含了一批图像(一共T个),让Xtijk表示它的第tijk个元素,k和j跨空间维度,i是特征通道(如果是RGB图像的话就是颜色通道)t是图像在Batch中的索引。那么一个简单的对比度正则化方程可以就此给出:
现在还不清楚,这样的函数是如何能被实现为一系列Relu层和卷积操作的。
从另一方面来说,Ulyanov等人提的生成器网络是包含一个正则化层的,是batch-normalization,关键的不同点在于,后者(batch-normalization)是把正规化用在 一整个Batch的图像上,而不是针对单个图像。
为了结合特定实例正规化和批量正规化的影响,我们建议,以实例正规化来取代后者(实例正规化也被称为“对比度正规划”)层:
我们把Batch-normalization用instance-normalization来替换, 所有在生成器网络中的的batch-normalization都这样替换。这样做能阻止实例特定的均值和协方差简化学习的过程。和batch-normalization不同, instance-normalization层在测试时的表现也挺好。
三. 实验
在这一小节,我们将来评估section 2中提出的修改batch-normalization为Instance normalization的方法。我们测试了Ulyanov和Johnson两人的描述的结构,为了看看这个修改在不同的结构上的表现。我们没能直接拿到Johnson提出的网络模型,所以我们小心翼翼地按照论文里的描述,重建了他们提出的网络模型,最终,我们发现这两个生成器网络有类似的性能和缺点。(图5 第一行)
接下来,修改batch-normalization为Instance normalization,重新用相同的参数来训练生成器,我们发现这两个结构都有了明显的提升(用了Instance normalization之后,见fig 5 第二行)这两个生成器的质量是相近,但是我们发现Johnson的残差结构更加有效且容易使用,所以我们将它应用了,结果在fig 4。
四. 结论
在这个简短的笔记中,我们表明,把批量正则化更改成实例正则化是有可能显著提高性能的,尤其是在深度神经网络生成图像方面的性能。这个结果暗示了我们,我们也正在尝试类似的想法来解决一些图像识别的任务。
References
附录:
fig4: 风格化的实例:第一行:style图第二行,原图,风格化版本。
fig5:生成器质量上的比较(左为Ulyanov,右为Johnson)batch-normalization和Instance-normalization之间的比较(第一行为batch, 第二行为Instance)这两个网络结构都受益于Instance-normalization
fig6:处理一张内容图片(fig4),在不同的分辨率下(左512,右1080)