[论文阅读] HairGAN: Spatial-Aware Palette GAN for Hair Color Transfer

[论文地址] [代码] [ICME 22]

Abstract

头发颜色转移的目的是将头发颜色从参考图像转移到原始图像,同时保持原始图像的头发结构。然而,由于复杂的头发结构以及原始图像和参考图像之间头发区域的错位,现有的方法不能很好地完成这一任务。为了解决这些问题,我们提出了一个头发颜色转移GAN(HairGAN)。它首先利用现成的网络从原始图像中提取头发区域,并将其转移到中间的头发颜色。然后,引入空间感知调色板对齐(SAPA)模块来对齐原始图像和参考图像中的头发区域。此外,HairGAN采用了循环一致性重建模块来确保原始图像和转移图像之间的全局一致性。我们收集了一个包含2850张图像和一些配对样本的数据集,用于头发颜色的转移。广泛的实验表明,HairGAN可以产生高质量的转移结果。


Intro

本文任务描述如下。给定一张参考照片ref,要求将原图照片中人物的头发颜色变为参考照片中人物的头发颜色:
在这里插入图片描述
例如在上图中,参考人物的发色为蓝色,任务目标是将原图任务的头发也变为蓝色。


HS & ICT

本文方法的流程图如下:
在这里插入图片描述
首先看左图中的黄框部分。既然要做发色转换,那么首先就应该确定头发区域。本文确定头发区域的方法是采用显式的监督,即采用现有的分割模型(BASNet)将头发给分割出来。这一过程对应上图中的HS(Hair Segmentation)。

在头发分割之后,还有一个trick,即ICT(Intermediary Color Transfer)。由于文本本质上做的是一种image translation任务,即在两个domain之间进行转换。按照刚才的设定,domain A,B之间是没有明显区分的(比方说,原图存在的发色,参考图同样也可能存在),这就导致网络不可能收敛。为此,本文显式地固定了domain A(source domain),将所有原图的颜色都翻译成棕色(通过Pix2Pix,因为头发的mask,所以这一步成了paired translation问题),并且手工保证domain B(target domain)中不包含棕色的头发,这样就使得后续的翻译成为了可能。


SAPA

Spatial-Aware Palette Alignment,空间感知的调色板对齐,属于本文的核心创新点,其流程如下:
在这里插入图片描述
这个模块的目的是基于生成器更加显式的监督,便于其生成逼真的图像。具体来说,在一张照片中,头发的颜色不可能是完全一致的(只要染了色)。比如,比较贴近头皮的部分可能颜色会深一点,然后越外部则可能越浅。那么为了捕捉这一颜色过渡信息,本文搞了个矩阵(即名称中的调色盘),通过全局平均池化(AVG)的处理,来捕捉颜色的过渡信息(比如某一位置的颜色应该深一点,另一位置的颜色应该浅一点)。


Loss Function

Cycle Consistency Loss

图像翻译任务的必备损失,即real A => fake B => recon A,recon A应与real A一致: L r e c = ∥ I o r g h − I r e c h ∥ 2 \begin{equation*}\mathcal{L}_{rec}=\Vert I_{org}^{h}-I_{rec}^{h}\Vert _{2}\end{equation*} Lrec=IorghIrech2

Adversarial Loss

图像翻译任务的必备损失。即,生成器生成图像的不光要像头发,而且也能满足对应的发色要求: L a d v = min ⁡ G max ⁡ D { E I r e f h [ log ⁡ ( D ( I r e f h ) ) ] + E I o r g h , I r e f h h [ log ⁡ ( 1 − D ( I s y n h ) ) ] } \begin{align*}\mathcal{L}_{a d v}=& \min _{G} \max _{D}\{\mathbb{E}_{I_{r e f}^{h}}[\log (D(I_{r e f}^{h}))] +\mathbb{E}_{I_{o r g}^{h}, I_{r e f}^{h}}^{h}[\log (1-D(I_{s y n}^{h}))]\}\end{align*} Ladv=GminDmax{ EIrefh[log(D(Irefh))]+EIorgh,Irefhh[log(1D(Isynh))]}

Color Matching Loss

对抗损失中的判别器能够提供一定程度的发色监督能力。不过靠网络来监督肯定不是完全靠谱的,因此本文还加了一个额外的显式监督,即翻译后图像的颜色直方图应与参考图的颜色直方图保持一致: L c o l o r = ∥ I s y n h − H M ( I r e f h ,   I o r g h ) ∥ 2 \begin{equation*}\mathcal{L}_{color}=\Vert I_{syn}^{h}-HM(I_{ref}^{h},\ I_{org}^{h})\Vert _{2}\end{equation*} Lcolor=IsynhHM(Irefh, Iorgh)2

Gradient Difference Loss

这个损失的作用是防止图像在翻译后丢失纹理等细节,对头发而言更加尤其重要: L g d l = L g d l x + L g d l y \begin{equation*}\mathcal{L}_{gdl}=\mathcal{L}_{gdlx}+\mathcal{L}_{gdly}\end{equation*} Lgdl=Lgdlx+Lgdly

猜你喜欢

转载自blog.csdn.net/qq_40714949/article/details/126689934