论文地址:https://arxiv.org/pdf/1902.11203.pdf
文中所有图片与表格统一移动至了文末
给予有限的指导,如稀疏草图或低分辨率图像,生成可信头发图像,已经随着生成对抗网络(GANs)的兴起而成为可能。传统的图像到图像翻译网络可以产生可辨别的结果,但通常会丢失更精细的纹理,而且普遍存在模糊伪像。本文提出了一种高质量的用于头发图像合成的两阶段生成模型。两阶段流水线首先通过现有的图像转换模型来生成粗图像,然后将具有自增强能力的再生网络应用于粗图像。通过本文提出的结构提取层,从头发图像中提取纹理和方向图,实现了自增强能力。在Sketch2Hair和Hair Super-Resolution这两个任务上的广泛实验表明,我们的方法能够合成具有更精细细节的可信头发图像,并优于SOTA。
伴随着将条件GAN(cGANs)[Mirza&Osindero,2014]成功应用于图像到图像的翻译任务中[Isola,2017],从稀疏输入(如标签图[Chen&Koltun,2017;Lassner,2017]和草图[Portenier,2018])中生成真实照片,引起了计算机图形界和计算机视觉界研究人员的极大关注。人像图像生成作为生成任务中最热门的课题之一,已经被广泛研究[Wang,2018b;Karras,2017]。虽然如此,但头发区域作为最显著的区域之一,在生成时通常会出现模糊的情况。
为了触及这个问题的核心,在本文中,我们探讨了在稀疏/低分辨率输入(如头发草图或下采样的头发图像)条件下产生逼真头发照片的方法。头发与其他类别的图像有很大的不同,因为它的特殊纹理:其由成千上万根长而细的发丝渲染而成,充满了质感和细节。这使得现有的基于cGAN的方法,如pix2pix[Isola,2017],从两个方面失效:1)其判别器通过将输出图像编码到一个隐藏空间中,保证了全局的真实输出,但缺乏对局部锐度的约束;2)输入作为cGANs的条件太弱,无法生成链状像素。
根据我们的实验,可以借用[Wang,2018b]的特征匹配损失和[Gatys,2016]的风格损失来指导学习过程,从而解决第一个问题。为了克服更重要的第二个挑战,让发丝显现,我们提出了一种自增强的生成模型。关键思想为将生成工作分为两个阶段进行。1)我们首先利用SOTA来产生一个粗层次的输出;2)发丝结构,如方向,被提取出来。然后将其作为增强条件,输入同样基于cGANs的再生成网络。为了支持这种两阶段网络的端到端训练,在再生成网络中嵌入了一种新型的可区分纹理提取层,使其具有自增强的能力。
为了验证提出的自增强机制的有效性,我们研究了两个任务:sketch2hair的目标是从稀疏的草图输入中来生成真实的头发;头发超分辨率的目标是从一个向下采样的图像中生成高分辨率的外观。我们还建立了一个高质量的数据集来支撑这两个应用。用户研究和视觉比较都表明了所提出的方法相比所有现有方法的优越性。由于提出的结构提取层,所有的粗头发图像都可以得到明显的增强。
概括而言,我们的主要贡献包括:
真实头发合成: 生成虚拟发型是计算机图形学中一个长期的研究课题,因为它在游戏和电影中表现人类角色时发挥了重要作用。之前的大部分工作都集中在根据用户交互[Mao,2004;Fu,2007;Hu,2015]或捕捉的真实图像[Wei,2005;Jakob,2009;Chai,2016;Zhou,2018],来生成3D头发。给定图像,通过这些建模技术,在3D空间中进行操作,然后重新渲染到2D域,可以逐股恢复头发,从而实现智能头发编辑[Chai,2012;Chai,2013]或插值[Weng,2013]。虽然这些方法能够得到逼真的外观,但由于涉及到3D,会产生很高的计算成本。为了避免头发渲染中的高计算成本,[Wei,2018]提出了一种基于深度学习的头发合成方法,可以从边缘激活图中生成高质量的结果。但是,为了获得激活图,初始渲染时仍需要输入CG毛发模型。相比之下,我们的方法不涉及3D渲染模块,只依靠信息稀疏的2D图像。在如此有限的输入下,我们仍然能合成出逼真的照片结果,这要归功于提出的自增强模块。
而[Chen&Zhu,2006]则提出了一种2D生成式草图模型,用于头发分析和合成,有了它,头发图像可以被编码成草图、向量场和高频带。以图像为输入,这样的多级表示方式提供了一种直接操作草图合成新发型的方法。与这项工作相比,我们的方法可以在没有任何参考照片的情况下,只需要通过输入的稀疏草图就能推断真实输出。我们利用深度神经网络实现从草图到彩色图像的空间一致性转换,而不是相对来说比较耗时的传统图像渲染。据我们所知,我们是第一个使用cGANs来完成将草图合成为头发图像的工作。
人像超分辨率: Dong[Dong,2014;Dong,2016]率先使用卷积网络进行图像超分辨率,取得了优于以往工作的性能。由于只使用了三层简单卷积网络,SRCNN在恢复图像细节方面的效果还是比较差的。后来设计了许多更深层次、更有效的网络结构[Kim,2016;Ledig,2017;Lim,2017;Zhang,2018;Wang,2018c],并在提高恢复的图像质量方面取得了巨大成功。作为一个热点,目前已经有多个基于CNN的架构[Zhu,2016;Cao,2017;Huang,2017]专门针对人脸幻象进行开发。同时向量化也可以用于图像超分辨率,如[Lai,2009;Wang,2017]。为了使得结果更富细节,还引入了对抗式学习[Yu&Porikli,2016;Yu&Porikli,2017]。最近,Li等[Li,2018]提出了一种半参数方法,借助参考图像,从未知的退化观测值重建高质量的人脸图像。然而,作为人像中与脸部紧密贴合的重要部分,复原的头发效果总是被忽视。目前先进的方法所恢复的头发总是模糊不清或胶质化,成为人像超分辨率的短板。在本文中,由于头发区域分割是通过[Levinshtein,2018]实现的,我们提出了一个额外的头发纹理增强方法,以提高重建头发的质量。我们的增强结构能够以端到端的方式附在几乎任何超分辨率的方法上,这可以看作是一个额外的纹理增强模块。
生成时的增强技术: 在生成性任务中,两个域之间的空间一致性转换是很难训练的,尤其是当转移差距较大时。几种来自不同方向的增强方法通过将整个转换分为一些子任务来减少转移。为了稳定训练过程,[Chen&Koltun,2017;Wang,2018b;Karras,2017]提出了在小规模训练网络,然后在大规模上进行微调的增强方法。另外,在语义分割中,为了提高准确度,从初步预测中再生成的策略也被广泛使用[Shelhamer,2017;Zheng,2015]。
在低层视觉任务中,为了恢复生成结果中的结构,[Xu,2015;Liu,2016]提出来近似一些滤波器以保持边界的网络。此外,[Pan,2018]提出了DualCNN,它由两个平行分支组成,分别以端到端的方式恢复结构和细节。但在头发生成中,生成的纹理,可以看作是结构,容易被一些无序的噪声搞乱。为了克服这个问题,我们从粗结果中提取结构,并以端到端的方式使用它来再生我们的最终结果。据我们所知,在基于CNN的生成模型中,这种增强策略还没有被提出过。而我们的实验结果表明,这种增强结构具有显著的效果,可以使模糊区域更少,纹理更细致。
我们提出的头发图像合成的生成模型将有限指导的图像 I g {I_{\text{g}}} Ig作为输入,并产生一个可信的头发图像 I f {I_{\text{f}}} If作为输出。它可以通过两阶段的方式来实现高质量的生成。在第一阶段,使用[Isola,2017]中pix2pix的基本网络 G b ( ⋅ ) {G_b}( \cdot ) Gb(⋅)来生成一个粗结果 I c {I_{\text{c}}} Ic,它通常包含很少的纹理和一些模糊伪像。然后应用具有自增强能力的再生成网络 G r ( ⋅ ) {G_r}( \cdot ) Gr(⋅),在第二阶段产生高质量的结果 I f {I_{\text{f}}} If。我们在图2中说明了整个框架。
给定一个有限指导的头发相关图像 I g {I_{\text{g}}} Ig,在第一阶段,我们进行 I g {I_{\text{g}}} Ig和目标域之间的图像到图像翻译,即一个可信的头发图像。和[Radford,2015;Isola,2017]中一样,该网络通常是一个条件GAN。具体来说,在Sketch2Hair(S2H)和Hair Super Resolution(HSR)的任务中, I g {I_{\text{g}}} Ig分别是稀疏的草图图像(图1(a))和低分辨率图像(图10(a))。因此,对于S2H,目标图像 I c {I_{\text{c}}} Ic的分辨率与 I g {I_{\text{g}}} Ig相同,对于HSR,目标图像的分辨率为用户指定的更高分辨率。网络结构也是任务特定的。例如,在HSR中,与S2H相比,结构中多了几个上采样层。我们向读者推荐[Isola,2017],以了解这两个任务的图像到图像翻译网络的详细描述。另外,为了简单起见,本文用"basic net(基础网)"或"basic network(基础网)"作为"basic generating network(基础生成网络)"的简称。
第1阶段 I c {I_{\text{c}}} Ic所产生的头发图像,通常可识别出核心结构,且与目标接近。不过,由于其缺乏光泽、质感和发丝风格,还远没有达到可信的程度。为了生成高质量的头发图像 I f {I_{\text{f}}} If ,我们进一步将 I c {I_{\text{c}}} Ic送入具有自增强能力的再生成网络 G r ( ⋅ ) {G_r}( \cdot ) Gr(⋅)中,这是由新引入的结构提取层实现的,具体如下。
结构提取层: 给定一个头发图像 I I I,我们按照[Chai,2012]中的流水线,通过一组定向滤波器 { K θ } \{ {K_\theta }\} {Kθ}对 I I I进行过滤,生成一组定向响应 { F θ } \{ {F_\theta }\} {Fθ},即: F θ ( i , j ) = ( K θ ∗ I ) ( i , j ) ( 1 ) {F_\theta }(i,j) = ({K_\theta }*I)(i,j) \quad (1) Fθ(i,j)=(Kθ∗I)(i,j)(1) 其中 ( i , j ) (i,j) (i,j)为像素位置, θ \theta θ为方向角。对于每个像素位置 ( i , j ) (i,j) (i,j),我们取使 F θ ( i , j ) {F_\theta }(i,j) Fθ(i,j)最大化的 θ \theta θ,以及相应的最大值,分别得到方位图 I θ ( i , j ) {I_\theta }(i,j) Iθ(i,j)和纹理图 I t ( i , j ) {I_t }(i,j) It(i,j),也就是: I θ ( i , j ) = a r g m a x θ { F θ ( i , j ) } ( 2 ) {I_\theta }(i,j) = arg\mathop {max}\limits_\theta \{ {F_\theta }(i,j)\} \quad (2) Iθ(i,j)=argθmax{Fθ(i,j)}(2) I t ( i , j ) = m a x θ { F θ ( i , j ) } ( 3 ) {I_t}(i,j) = \mathop {max}\limits_\theta \{ {F_\theta }(i,j)\} \quad (3) It(i,j)=θmax{Fθ(i,j)}(3) 在本文中,我们利用8个均匀对称的余弦Gabor核作为滤波库 { K θ } \{ {K_\theta }\} {Kθ},其中方向角 θ \theta θ在 0 ∘ {0^\circ } 0∘和 18 0 ∘ {180^\circ } 180∘之间均匀采样。具体来说,角 θ \theta θ处的余弦Gabor核定义为: K θ ( u , v ) = e x p ( − 1 2 [ u ∼ 2 σ u 2 + v ∼ 2 σ v 2 ] ) ⋅ c o s ( 2 π u ∼ λ ) ( 4 ) {K_\theta }(u,v) = exp( - \frac{1}{2}\left[ {\frac{{{{\mathop u\limits^ \sim }^2}}}{{\sigma _u^2}} + \frac{{{{\mathop v\limits^ \sim }^2}}}{{\sigma _v^2}}} \right]) \cdot cos(\frac{{2\pi \mathop u\limits^ \sim }}{\lambda })\quad (4) Kθ(u,v)=exp(−21[σu2u∼2+σv2v∼2])⋅cos(λ2πu∼)(4) 其中, u ∼ = u cos θ + v sin θ \mathop u\limits^ \sim = u\cos \theta + v\sin \theta u∼=ucosθ+vsinθ, v ∼ = − u sin θ + v cos θ \mathop v\limits^ \sim = - u\sin \theta + v\cos \theta v∼=−usinθ+vcosθ。 σ u {\sigma _u} σu、 σ v {\sigma _v} σv、 λ \lambda λ为超参数,我们在所有的实验中分别简单地将其设为1.8、2.4、4。我们将上述运算表示为 [ I θ , I t ] ← g ( I ) [{I_\theta },{I_t}] \leftarrow g(I) [Iθ,It]←g(I)。图3展示了4个方向上的Gabor响应,图4直观地展示了纹理图和方向图的例子。在实践中,我们发现,最初从 I c {I_{\text{c}}} Ic中提取的 I t {I_{\text{t}}} It包含了大部分纹理,但 I c {I_{\text{c}}} Ic中也保留了一些模糊伪像。为了解决这个问题,我们重复操作 g g g,先将其应用到 I c {I_{\text{c}}} Ic上产生 I t 0 I_t^0 It0,然后再将其重新应用到 I t 0 I_t^0 It0上,得到最终的 I t {I_t} It和 I θ {I_\theta } Iθ,即 [ I θ , I t ] ← g ( I t 0 ) ( 5 ) [{I_\theta },{I_t}] \leftarrow g(I_t^0)\quad (5) [Iθ,It]←g(It0)(5) 其中 [ I θ 0 , I t 0 ] ← g ( I c ) [I_\theta ^0,I_t^0] \leftarrow g({I_c}) [Iθ0,It0]←g(Ic)。我们在图5中展示了使用 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]代替 [ I t 0 , I θ 0 ] [I_t^0,I_\theta ^0] [It0,Iθ0]的有效性。
网络结构与优化目标: 现在结构提取层得到的 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]不仅包含了头发的结构,还包含了头发的详细信息。为了充分利用这些高级和低级特征,我们应用U-Net架构[Ronneberger,2015],它由全卷积神经网络和跳连接组成,并产生 I f = G r ( I c ) {I_f} = {G_r}({I_c}) If=Gr(Ic)。同时,将优化目标拟定为像素损失 L p i x e l {L_{pixel}} Lpixel、对抗损失 L a d v {L_{adv}} Ladv、风格损失 L s t y l e {L_{style}} Lstyle和特征匹配损失 L F M {L_{FM}} LFM等几类损失的组合。
像素级重建: 我们的再生成网络产生的输出需要像传统方法一样,考虑像素级的ground truth[Radford,2015;Isola,2017]。如[Wang,2018a;Meng,2018;Wang,2019]中所述,通过计算 I f {I_f} If和ground truth图像 I g t {I_{gt}} Igt之间的 L 1 loss {L_1}\,{\text{loss}} L1loss来实现。同样,为了鼓励锐利多样的头发生成,我们还引入了[Goodfellow,2014]中的对抗损失 L a d v {L_{adv}} Ladv。这两项损失写成 L p i x e l = 1 H × W × C ∥ I g t − G r ( I c ) ∥ 1 ( 6 ) {L_{pixel}} = \frac{1}{{H \times W \times C}}{\left\| {{I_{gt}} - {G_r}({I_c})} \right\|_1}\quad (6) Lpixel=H×W×C1∥Igt−Gr(Ic)∥1(6) L a d v = − ∑ I c log D ( G r ( I c ) ) ( 7 ) {L_{adv}} = - \sum\limits_{{I_c}} {\log D({G_r}({I_c}))} \quad (7) Ladv=−Ic∑logD(Gr(Ic))(7) 其中H、W、C为图像的大小,D为GAN的判别器。
风格重建: 合成合理发型的一个核心问题是生成丝滑有光泽的发型。使用 L p i x e l {L_{pixel}} Lpixel和 L a d v {L_{adv}} Ladv进行训练,迫使网络过于关注每个像素的颜色传输和有限的高频生成,而不是重建真实风格的头发。因此,我们通过在适当的特征空间中测量输入输出距离来加入相关的约束条件,该空间对整体颜色、纹理和常见图案等风格变化敏感,同时对其他变化相对稳定。具体来说,我们以如下方式定义 L s t y l e {L_{style}} Lstyle。令 ψ \psi ψ为特征提取的预训练网络, ψ i ( x ) {\psi ^i}(x) ψi(x)为其第 i i i层的特征图,其形状为 C i × H i × W i {C_i} \times {H_i} \times {W_i} Ci×Hi×Wi。在[Gatys,2016]中引入的形状为 C i × C i {C_i} \times {C_i} Ci×Ci的Gram矩阵,其项定义为: G i ( x ) j , k = 1 C i H i W i ∑ h = 1 H i ∑ w = 1 W i ψ i ( x ) j , h , w ⋅ ψ i ( x ) k , h , w ( 8 ) {G^i}{(x)_{j,k}} = \frac{1}{{{C_i}{H_i}{W_i}}}\sum\limits_{h = 1}^{{H_i}} {\sum\limits_{w = 1}^{{W_i}} {{\psi ^i}{{(x)}_{j,h,w}} \cdot } } {\psi ^i}{(x)_{k,h,w}}\quad (8) Gi(x)j,k=CiHiWi1h=1∑Hiw=1∑Wiψi(x)j,h,w⋅ψi(x)k,h,w(8) 那么第 i i i层的风格重建损失就被表述为输出图像和目标图像的Gram矩阵之差的Frobenius规范的平方: L s t y l e i ( I c , I g t ) = ∥ G i ( G r ( I c ) ) − G i ( I g t ) ∥ F 2 ( 9 ) L_{style}^i({I_c},{I_{gt}}) = \left\| {{G^i}({G_r}({I_c})) - {G^i}({I_{gt}})} \right\|_F^2\quad (9) Lstylei(Ic,Igt)=∥∥Gi(Gr(Ic))−Gi(Igt)∥∥F2(9) 在实际应用中,我们应用预训练好的VGG-16网络作为 ψ \psi ψ,将其两层 ( r e l u 2 _ 2 , r e l u 3 _ 3 ) (relu2\_2,relu3\_3) (relu2_2,relu3_3)上的风格损失累积起来,形成 L s t y l e {L_{style}} Lstyle。另外,为了提高效率,我们将 ψ i ( x ) {\psi _i}(x) ψi(x)重塑为形状为 C i × H i W i {C_i} \times {H_i}{W_i} Ci×HiWi的矩阵 χ \chi χ,从而得到 G i ( x ) = χ χ T / C i H i W i {G^i}(x) = \chi {\chi ^T}/{C_i}{H_i}{W_i} Gi(x)=χχT/CiHiWi。
特征匹配: 正如[Wang,2018b]中所讨论的那样,高分辨率图像合成对GAN判别器的设计提出了很大的挑战。为了区分高分辨率的真实图像与合成图像,鉴别器D需要更深以获得更大的接受域。因而D很难详细地惩罚差别。D提取的特征层上定义的特征匹配损失[Wang,2018b]可以很好地简化这个问题,即 L F M ( G r , D ) = E I c ∑ i = 1 T 1 N i ∥ D i ( I g t ) − D i ( G r ( I c ) ) ∥ 1 ( 10 ) {L_{FM}}({G_r},D) = {{\rm E}_{{I_c}}}\sum\limits_{i = 1}^T {\frac{1}{{{N_i}}}{{\left\| {{D^i}({I_{gt}}) - {D^i}({G_r}({I_c}))} \right\|}_1}} \quad (10) LFM(Gr,D)=EIci=1∑TNi1∥∥Di(Igt)−Di(Gr(Ic))∥∥1(10) 其中, D i {D^i} Di为 D D D的第 i i i层中的特征图, N i {N_i} Ni为每层的元素数, T {T} T为总层数。我们的全部目标将上述所有损失综合为 min G r ( w 1 L p i x e l + w 2 L a d v + w 3 L s t y l e + w 4 L F M ) ( 11 ) \mathop {\min }\limits_{{G_r}} ({w_1}{L_{pixel}} + {w_2}{L_{adv}} + {w_3}{L_{style}} + {w_4}{L_{FM}})\quad (11) Grmin(w1Lpixel+w2Ladv+w3Lstyle+w4LFM)(11) 其中 w 1 ∼ w 4 {w_1} \sim {w_4} w1∼w4控制4项的重要性。
训练策略: 基础网络和再生成网络在一开始就分开训练。对于再生成网络,我们首先直接从ground truth I g t {I_{gt}} Igt中提取结构信息 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]。当从训练好的基础网络中得到可识别的粗图像时,我们将 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]的来源从ground truth图像替换为粗图像 I c {I_{\text{c}}} Ic。这种策略可以让训练好的再生成网络看到足够的数据,避免轻易过拟合。最后,我们将两个网络连接起来,并在降低学习率的情况下共同进行fine-tune。
Sketch2Hair任务的输入是一个二进制图像 I g {I_g} Ig,有两个通道。它的第一个通道是一个掩模 M ∈ { 0 , 1 } M \in \{ 0,1\} M∈{0,1},其中0和1分别填充头发轮廓的外侧和内侧。其第二通道 S ∈ { 0 , 1 } S \in \{ 0,1\} S∈{0,1}编码笔画 ( 0 ) (0) (0)表示头发的主要生长方向。如前所述,在第一阶段中, I g {I_g} Ig被送入基础生成网络 G b {G_b} Gb中产生粗结果 I c {I_c} Ic,然后应用再生成网络 G r {G_r} Gr产生最终结果 I f {I_f} If 。
对于 G b {G_b} Gb,我们选择一个深度U-net[Ronneberger,2015],将输入草图卷积成1×1的特征图,然后反复反卷积,生成与 I g {I_g} Ig相同大小的 I c {I_c} Ic。背后的原因是,我们要求网络在给定稀疏笔画中的粗线信息后,有足够的能力去想象整个发线。它不应该琐碎地将笔画看成是合成图像的唯一发线,在这种情况下,网络可能只在它们之间呈现一些背景色,如[Chen&Koltun,2017]。从1×1特征图反卷积,使得每个恢复的像素都能看到所有的输入像素,深层结构使得网络有更多的参数从数据中学习。
此外,在训练 G b {G_b} Gb的过程中,我们在现有的 L p i x e l {L_{pixel}} Lpixel和 L a d v {L_{adv}} Ladv中添加了一个纹理损失 L t e x t u r e {L_{texture}} Ltexture,以强制 I c {I_c} Ic包含尽可能多的纹理信息。具体来说,纹理损失对 I g t {I_gt} Igt和 I c {I_c} Ic之间的纹理差进行惩罚,记做 L t e x t u r e = ∥ I t ( I g t ) − I t ( I c ) ∥ 1 ( 12 ) {L_{texture}} = {\left\| {{I_t}({I_{gt}}) - {I_t}({I_c})} \right\|_1}\quad (12) Ltexture=∥It(Igt)−It(Ic)∥1(12) 其中 I t ( x ) {I_t}(x) It(x)指的是从 x x x中提取的纹理图,定义类似于等式(5)。我们在图6中说明了优化 G b {G_b} Gb后用与不用 L t e x t u r e {L_{texture}} Ltexture提取的两个纹理图。可以看出,包含了这种损失,纹理图中的发丝更加清晰,有利于连续网络中高质量图像的生成。
然后我们在 G b {G_b} Gb的末尾附加 G r {G_r} Gr,以改善最终的结果。我们在第5节中列举了大量的比较来证明 G r {G_r} Gr的有效性,具体见图1和9。
由 G r {G_r} Gr生成的头发 I f {I_f} If通常暗淡且缺乏丰富的色彩,但是往往需要一个有特定色彩的合成发像。为此,我们为其提供两种解决方案。一种是在Photoshop等图像处理软件中调整 I f {I_f} If的色调,这可以保留 I f {I_f} If中的光泽和丝滑风格。另一种是类似于[Sangkloy,2017]的数据驱动,即把训练对增强为彩色化版本,从而使网络能够学习到颜色的对应关系。图7中的实验结果表明,两种解决方案实现了令人满意的输出。
数码相机应用的不断增加对人像图像的超分辨率提出了更高的需求,其中发型超分辨率也扮演着关键角色。在这个任务中,输入图像 I g {I_g} Ig为低分辨率图像, I f {I_f} If为高分辨率图像。考虑到视觉性能,我们选择SRGAN[Ledig,2017]和ESRGAN[Wang,2018c]作为我们的基础网来生成 I c {I_c} Ic。在实验中,我们发现,如果输入图像过小,基础网将无法产生准确的结果,会有模糊伪像。随着我们的再生成网络的引入,其自增强能力可以生成更精细的纹理, I f {I_f} If中的伪像更少。请注意,在这里,我们还将输入 I g {I_g} Ig的双立方上采样版本 I g ∼ {\mathop I\limits^ \sim _g} gI∼反馈给 G r {G_r} Gr,因为 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]只包含结构而非颜色信息。我们还在图10中列出了对比结果,以证明我们方法的有效性。
我们以如下方式建立我们的数据集。首先,我们从网上收集了640张发丝清晰的高分辨率照片,其中头发面积限制在512×512以内。然后针对每张图片,手动分割头发区域并保存蒙版。对于Sketch2Hair,我们将640张图片分发给5个付费用户,要求他们根据发丝的生长方向,在头发区域画出一组线条,生成640张素描图片对。对于超分辨率,我们只对5122分辨率的图像进行下采样来获得输入数据。我们将整个数据以4 : 1的比例随机分成训练集和测试集。数据集一览如图8所示。
对于Sketch2Hair的任务,我们与pix2pix [Isola,2017] ,pix2pixHD [Wang,2018b],CRN [Chen&Koltun,2017],pix2pixStyle进行比较。对于pix2pix,我们只用官方代码,不过将U-net256替换为了U-net512。CRN是一个没有对抗结构的单前馈网络。我们首先在2562分辨率下对其进行训练,然后在5122分辨率下对其进行fine tune。Pix2pixHD是pix2pix的改进模型,用于大规模的图像合成,所以我们在5122分辨率上也使用了它的官方代码。对于Pix2pixStyle,我们在pix2pix的结构上训练它,并增加了一个额外的风格损失。为了公平比较,我们用我们的数据集对这4个模型进行了彻底的训练,直到它们的损失收敛。
图9是我们的方法与上述4种方法的定性比较。可以看出,基础pix2pix框架产生了模糊伪像。Pix2pixHD通过更好地生成纹理结构来改善外观,而结果中仍然存在噪声。CRN产生了最令人满意的视觉输出,但缺少精细的细节。Pix2pixStyle的性能与pix2pixHD类似,而它缺乏足够的高频信息。相比之下,我们的方法不仅合成了更好的结构,而且还生成了更精细的细节,产生了丝滑而有光泽的外观。
我们还应用无参照图像质量评分即自然度图像质量评估器(NIQE)来定量衡量结果的质量。分数越小,说明感知质量越好。评估后的得分证明我们的方法优于上述4种模型,如表1所示。我们进一步进行了用户研究,对上述模型的性能进行感性评价。具体来说,我们从总共128张测试图像中随机抽取20张图像,与上述4种方法的相应结果进行配对,得到80个组合。然后,我们将这些组合打乱,请志愿者在每个组合中选择发丝较细的那一对。65名志愿者参与其中,其中男性48人,18-25岁的占94%,26-35岁的占6%。结果显示,在与CRN、pix2pix、pix2pixHD、pix2pixStyle的对比中,我们的方法分别被98.23%、94.38%、86.62%、69.62%的志愿者投票。
对于头发超分辨率的任务,我们将我们的方法与两个SOTA方法SRGAN[Ledig,2017]和ESRGAN[Wang,2018c]分别在4倍尺度和8倍尺度上进行了比较。我们在图10中列出了结果。可以看出,SRGAN在4倍结果中恢复了有限的图像细节,但细节仍然是模糊的。ESRGAN在8倍结果中产生了足够清晰但胶质的发丝。相比之下,我们的方法显著地减少了这些伪像,并准确地重建了更精细的细节,产生了可信的和视觉上满意的结果。
我们已经提出了一种给定的具有有限引导(如草图或低分辨率)图像,合成头发图像的方法。我们把头发的合成概括为两个阶段。在第一阶段,我们应用现有的图像到图像的翻译网络来生成一个粗结果,它是可识别的,但缺乏纹理细节。然后,我们将具有自增强能力的再生成网络应用于粗结果,并产生最终的高质量结果。通过提出的结构提取层,从头发图像中提取纹理和方向图,实现了自增强能力。实验结果表明,我们的方法在感知用户研究,定性和定性比较中优于SOTA。我们希望这种两阶段的方法可以潜在地应用于更多的头发合成任务中。
图1:给定一个具有有限引导的图像,如手绘草图a,基本的pix2pix框架会导致模糊伪像b。在训练pix2pix网络时加入风格损失,有助于生成有限的结构c。d通过我们的两阶段方法得到的结果,合成的发丝更细,纹理更平滑。
图2:我们框架的架构由两个阶段组成。在第1阶段,将有限引导的输入图像 I g {I_g} Ig利用基础网 G b {G_b} Gb转化为的粗图像 I c {I_c} Ic。在第二阶段,在 G b {G_b} Gb的末端附加一个具有自增强能力的再生成网络 G r {G_r} Gr,并产生最终的输出 I f {I_f} If。 自增强是由我们提出的结构提取层实现的,提取纹理和方向图 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]作为U-net的输入。 I g {I_g} Ig、 G b {G_b} Gb和 G r {G_r} Gr的具体结构是任务特定的。这里我们以Sketch2Hair任务来说明,Hair Super Resolution任务也类似。
图3:不同方向的Gabor响应。发线对其对应方向的Gabor滤波器有较大的响应。利用这一特性,可以通过设计的Gabor滤波器库提取头发的核心结构。
图4:纹理图和方向图的可视化。a为输入图像。bc分别是a的纹理图和方向图。这里的方向图是彩色的以可视化。
图5:通过使用结构信息 [ I t 0 , I θ 0 ] [I_t^0,I_\theta ^0] [It0,Iθ0]和 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ],比较最终结果。a为一个输入的草图图像。b由基本网络 G b {G_b} Gb生成的粗结果。cd分别是利用提取的结构信息 [ I t 0 , I θ 0 ] [I_t^0,I_\theta ^0] [It0,Iθ0]和 [ I t , I θ ] [{I_t},{I_\theta }] [It,Iθ]生成的最终结果。与c相比,d在纹理和光泽度方面的质量更高。
图6:不使用 L t e x t u r e {L_{texture}} Ltexture提取的纹理图与使用 L t e x t u r e {L_{texture}} Ltexture提取的纹理图。与a相比,b在 L t e x t u r e {L_{texture}} Ltexture的引导下产生了更清晰的发线。
图7:两种解决方案的上色结果,a至d采用后处理,即在Photoshop中调整色调,e至h采用数据驱动的方法。e和g是带颜色笔触的输入草图,f和h是它们对应的输出。
图8:头发数据集一览,包括高清头发图像(奇数列)和相应的草图(偶数列)。
图9:对于Sketch2Hair的任务,我们的方法与其他方法的定性比较。
图10:我们的方法和SRGAN / ESRGAN在头发图像超分辨率任务的结果。a为低分辨率输入。b由SRGAN(顶部2行)在4倍下的超分辨率结果和ESRGAN(底部2行)在8倍下的超分辨率结果。c我们从b中得到的增强结果。d为Ground truth。增强后的头发更清晰,视觉上更舒适(放大观看更佳)。