原本要写的是组会要讲的,但是还挺复杂的,所以还是组会讲吧

去搜了搜ECCV2022,只有这一篇与Style Transfer相关

Introduction

这篇论文的目标是设计一种通用的风格转移方法,可以实现艺术、逼真的风格迁移,以及实现视频的风格迁移,同时在训练过程中并没有视频的参与

本文提出了一个Contrastive Coherence Preserving Loss(CCPL)鼓励生成的图像之间更加连续,并设计了一个Simple Covariance Transformation(SCT)更加有效的对齐内容和风格图像的二阶统计

Contrastive Coherence Preserving Loss

在没有视频指导的情况下提高生成图像的连续性,该论文做出了一个假设,相同位置相邻两帧之间提取出的特征的差异应该是相同的,并且一帧中相邻两个位置可以近似看作相邻两帧的同一个位置。文中虽然以patch举例,但是最终操作时却使用的像素

为计算CCPL,首先将生成的图片GG与内容图片CC输入到固定的Encoder EE中,提取出某个特定层的特征GfG_fCfC_f,然后从GfG_f中随机取NN个位置的向量GaxG_a^x,其中x=1,...,Nx=1,...,N,即上图中的红点,接着取GaxG_a^x周围八个位置的向量Gnx,yG_n^{x,y},其中y=1,...,8y=1,...,8,即上图中的蓝点,并且按照同样的方法,在CfC_f上取相同位置的CaxC_a^xCnx,yC_n^{x,y}。最后计算每个中心位置与周围位置的差异

dgx,y=GaxGnx,y,dcxy=CaxCnx,yd_g^{x,y}=G_a^x\ominus G_n^{x,y},d_c^{xy}=C_a^x\ominus C_n^{x,y}

考虑到如果使dgx,yd_g^{x,y}等于dcx,yd_c^{x,y}的话,网络会倾向于让GGCC相等,因为这样会很容易使Loss降低。于是选用了对比学习的方法,最大化相同位置差异的互信息,并在计算InfoNCE Loss之前,与其他工作一样设置了一个两层的MLP网络将向量映射到一个单位的球体上,公式如下

Lccp=m=18×Nlog[exp(dgmdcm/τ)exp(dgmdcm/τ)+n=1,nm8×Nexp(dgmdcn/τ)]L_{ccp}=\sum_{m=1}^{8\times N}-\log[\frac{\exp(d_g^m\cdot d_c^m/\tau)}{\exp(d_g^m\cdot d_c^m/\tau)+\sum_{n=1,n\neq m}^{8\times N}\exp(d_g^m\cdot d_c^n/\tau)}]

其中τ\tau是超参数并设置为0.07,该Loss让生成的图片与内容图片之间,相同位置的特征差异一致,不同位置的特征差异之间的差异更大

Simple Covariance Transformation

该论文设计了一个简单高效的模块来混合风格和内容特征,首先提取内容和风格图片的特征fcf_cfsf_s,看代码应该是Encoder最后一层的特征,并根据通道的均值和方差进行归一化处理获得fˉc\bar f_cfˉs\bar f_s,为简化计算将他们分别输入到cnetcnetsnetsnet中,将通道从512降到32,获得fcf_c'fsf_s'cnetcnetsnetsnet的结构如上图右上角,由三个convconv层以及两个relurelu层组成。然后将fsf_s'展平并计算它的协方差矩阵cov(fs)cov(f_s'),并通过计算cov(fs)cov(f_s')fcf_c'的矩阵乘法获得fgf_g,再使用一个卷积层将通道数变回512,并在输入到decoder前加上原始风格特征的均值

Loss Function

Loss就是内容Loss、风格Loss加上前面说过的CCPL,公式如下

Ltotoal=λcLc+λsLs+λccpLccpL_{totoal}=\lambda_c\cdot L_c+\lambda_s\cdot L_s+\lambda_{ccp}\cdot L_{ccp}

内容Loss使用F范数,风格Loss使用均值μ()\mu(\cdot)和标准差σ()\sigma(\cdot)的F范数

Lc=ϕl(Ig)ϕl(Ic)FL_c=||\phi_l(I_g)-\phi_l(Ic)||_ F

Ls=l(μ(ϕl(Ig))μ(ϕl(Is))F+σ(ϕl(Ig))σ(ϕl(Is))F)L_s=\sum_l(||\mu(\phi_l(I_g))-\mu(\phi_l(I_s))||_ F+||\sigma(\phi_l(I_g))-\sigma(\phi_l(I_s))||_ F)

其中ϕl()\phi_l(\cdot)代表encoder的第ll层特征

Results

实验结果表明这个Loss确实是有用的,在艺术风格迁移中,添加CCPL的指标会对比原先有所上升

在照片真实风格迁移中也是如此

两者的定性比较如下

视频的迁移结果引用代码中的例子

确实有不错的一致性

思考

选择这一篇论文一是因为ECCV2022只有这一篇Style Transfer,二是想看一下视频的风格迁移该怎么做,如果图片的风格迁移实在不好做,可以考虑一下扩展到视频

这篇论文的方法核心思想就是相同帧的相邻patch和相邻帧的同位置patch可以近似一致,所以即使只有一张图片也可以训练,并且能提升视频迁移时的效果。这种方法不需要视频,并且可以很方便的添加进其他方法中

这个方法好像可以放到CLIPstyler中,但不知道效果如何,而且CLIPstyler中应该是没法添加SCT这个模块,所以效果如何确实不好说

最终问题好像还是回归到CLIP中encoder的结构,接下来还是跑一跑这篇的代码,并且继续研究一下CLIP