[pdf][code]

最近看了几篇,感觉这一篇有比较明显的问题,而且可以尝试解决

Introduction

该论文的出发点是,目前的神经风格迁移方法往往需要参考样式图像,将参考图像的纹理信息传递到内容图像中。而在很多实际应用场景中,用户可能并没有参考图像,而是有一些语句用于描述想要的风格。所以该方法使用了与训练的语言图像嵌入模型CLIP,来实现只有语言描述情况下的风格迁移。

Method

思路很简单,我们使用一个网络ff,将原始的内容图像IcI_c输入进去,然后生成新的带有样式的图像Ics=f(Ic)I_{cs}=f(I_c)

训练过程中,我们有原始图像IcI_c,原始图像的语言描述tsrct_{src},生成的带有样式的图像f(Ic)f(I_c),以及我们想要的样式的描述tstyt_{sty},我们将他们都嵌入到CLIP的空间中,根据CLIP的特性,如果生成的图像f(Ic)f(I_c)是我们想要的图像,那么在CLIP空间中图像编码的变化方向与文本编码的变化方向应该共线,公式描述如下

ΔT=ET(tsty)ET(tsrc)ΔI=EI(f(Ic))EI(Ic)Ldir=1ΔIΔTΔIΔT\Delta T=E_{T}(t_{sty})-E_{T}(t_{src})\\ \Delta I=E_{I}(f(I_c))-E_{I}(I_c)\\ L_{dir}=1-\frac{\Delta I \cdot \Delta T}{|\Delta I||\Delta T|}

其中EtE_tEIE_I是CLIP中的文本和图像编码器

但是结果是只用这个loss好像是不太行,后面消融实验会有对比,但是他也没能讲出个为什么,反正就是在此基础上加了个patch loss

思路就是将生成的图片IcsI_{cs}进行随机裁剪和增强,然后分别计算loss,裁剪时每个patch的大小是固定的,然后随机裁剪NN个patch I^csN\hat I_{cs}^N,增强好像是使用了透视增强

但是这样会导致一个问题,网络如果只对其中一个patch进行特殊优化,loss会很容易降低,但同时我们并没有达到我们的目的。所以据此设置了一个阈值τ\tau,当某个patch的loss低于τ\tau时,不再计算这个patch的loss,总体公式描述如下

ΔT=ET(tsty)ET(tsrc)ΔI=EI(aug(I^csi))EI(Ic)lpatchi=1ΔIΔTΔIΔTLpatch=1NiNR(lpatchi,τ)whereR(s,τ)={0,ifsτs,otherwise\Delta T = E_T(t_{sty})-E_T(t_{src})\\ \Delta I = E_I(aug(\hat I_{cs}^i))-E_I(I_c)\\ l_{patch}^i=1-\frac{\Delta I \cdot \Delta T}{|\Delta I||\Delta T|}\\ L_{patch}=\frac{1}{N}\sum_{i}^{N}R(l_{patch}^i,\tau)\\ where\quad R(s,\tau)= \begin{cases} 0,\qquad if\quad s\le\tau\\ s, \qquad otherwise \end{cases}

然而这个公式感觉有点问题,N的大小应该是计算loss的patch的数量,而不是不变的,这样才比较合理,具体看下代码是怎么写的

Experiment

上面是跟其他方法的对比,然而其他方法都是有参考图像的,该方法与他们的主要差距感觉在对参考图像的描述上,其实仔细观察还是其他的方法更贴近于参考图像

消融实验,可以看出各部分的作用,主要是patch loss,只能说确实有用,但是没说清楚为什么有用

总结

完全没有使用参考图像,不知是好是坏,在与其他方法对比时需要将图像转换成文本,但是有时候文本蕴含的信息并不能很好得描述整张图片,会导致生成的图像偏离参考图像,但换句话说确实可以生成无参考图像的样式

还有个问题就是对于一个样式文本需要进行训练才可以生成对应样式的图片,如果想要更换描述文本,则需要重新训练,这个问题在文中也有提出

所以我想是否可以做到不需要训练,直接输入文本就能将原始图像转换为带有文本描述的样式的图像