论文分享 | 可控笔触的快速风格化迁移
风格迁移作为深度学习艺术化工作的典范,各*会议上一直有相关论文发表,工业上也有很多面向C端用户的产品。今天我们要介绍的一篇工作来自ECCV2018,解决的问题是如何在进行风格迁移的时候,对笔触大小 (Stroke Size )进行控制。
笔触大小的影响因素
笔触大小对于风格化的结果有着十分直接的感官影响。在进行风格化迁移的时候有三个因素制约笔触大小:风格图的分辨率大小、监督网络VGG 的感受域、生成网络的感受域。
风格图分辨率
风格化的目标来自于风格图的 gram based statistics,gram matrix 包含风格图的尺度信息,分辨率越大、gram matrix 就有着越精细的尺度信息,这反映在风格上就是不同大小的笔触变化。
从左到右,依次是content图,style图,scale 256、scale 512、scale 768生成图,不同的分辨率,对应不同的风格化笔触;
VGG感受域
VGG 是一个典型的层化结构模型,从底层到高层,神经元的感受域由小变大,这也对应笔触的大小。当然VGG的感受域有一个上限,当笔触的大小大于这个上限的时候,VGG网络是学习不出来的。
风格图分辨率
作者做了一个基本的实验得到了如下结论:生成网络的感受域越大越能学习出更大的笔触。
实验效果图如下:
由于VGG在风格化建模中的不可替代性,本文只考虑了从风格图尺度与生成网络的感受域两方面着手,对不同大小的笔触进行精细化学习。
本文方法
模型结构
上面就是本文提出的模型结构图,StrokePyramid 对应着不同感受域大小的生成模型、style 图的不同scale 代表着不同尺度与笔触大小的对应,具体来说、对于尺度为scale 1的风格监督图、设置Stroke Branch 1的生成网络来专门学习出其特定的风格笔触,对于其他的scale依此类推。
在训练的时候、每次迭代只训练一种scale,但是在预测的时候,可以把不同Stroke Branch的layer 加权融合到一起送到Stroke Decoder 里面,得到混合笔触大小的生成图。具体做法如下:
是第 i 个Stroke Branch输出的 feature map,G是一个gating function,对各branch的feature map 分配权重。最后把融合后的tensor送到Decoder里面得到生成图像
有了上面的思路,loss function 就可以很自然地出来了,这里我们不做讲解。
训练技巧
Progressive training:假设k个scale,k个branch,那么每k个iteration,就依次训练单个branch。
Incremental training:如果想要增加新的笔触大小进行训练,只需要在已训练好的模型上增加一层新的 stroke branch,然后用新的scale对新的layer进行 finetuning 就可以了。
实验结果
训练集MS-COCO,branch 设为3,风格图的分辨率分别为 256、512、768。
开源代码:
https://github.com/LouieYang/stroke-controllable-fast-style-transfer
相比于其他控制笔触的方法,本文的质量明显更高。
上图显示的是在预测时,branch之间进行不同插值的情况下,生成图的效果,可以看到由左到右,图像的笔触越来越大,这表明模型的确学会了如何控制笔触大小。
论文链接:
https://arxiv.org/pdf/1802.07101.pdf
欢迎关注我们的微信公众号:极验(geetest_jy)