domain adaptation 之 cycleGAN

之前写的两篇博客《domain adaptation 之 domain adversarial learning(一)》和《domain adaptation 之 domain adversarial learning (二)》使用对抗生成网络(GAN)寻找域不变性特征或拉近特征域距离都是在CNN 深度特征映射空间中进行的,本文介绍的方法是如何从源域生成一批目标域的数据集。论文为:Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks

一、cycleGAN介绍

cycleGAN是一个图像到图像的对抗生成训练网络,可以很好地迁移图像风格。cycleGAN具有很好的普适性,就像作者提到的那样,它无需配对的数据进行训练,无需先验知识设定模型,也不假设输入输出图像具有相痛的低维嵌入空间 (比如类空间、像素空间、图像特征空间等)。下面是cycleGAN的图像迁移效果。

照片与莫奈的画之间,马与斑马之间,夏天与冬天之间风格的转变,网络能实现一张图像转换为另一种风格的图像,但是输入图像之间、输出图像之间的风格要保持一致,也就是说cycleGAN不是针对两个特定图像之间风格转换,而是针对更高级的表现结构之间的风格转换。

二、cycleGAN的结构

domain adaptation 之 cycleGAN_第1张图片

cycleGAN是在给定训练样本 { x i } i = 1 N ∈ X \{x_i\}_{i=1}^N\in X { xi}i=1NX { y j } j = 1 m ] ∈ Y \{y_j\}_{j=1}^m]\in Y { yj}j=1m]Y的情况下,学习域 X X X和域 Y Y Y之间的映射函数。

如上图,cycleGAN 包括:

  1. 两个映射结构 G : X → Y G:X \rarr Y G:XY F : Y → X F:Y \rarr X F:YX
  2. 两个辨别器 D X D_X DX D Y D_Y DY。其中 D X D_X DX的作用是区分图像 { x } \{x\} { x}与迁移后图像 { F ( y ) } \{F(y)\} { F(y)} D Y D_Y DY的作用是区分图像 { y } \{y\} { y}与迁移后图像 { G ( x ) } \{G(x)\} { G(x)}
  3. 两个损失。adversarial losses 用于匹配生成图像的数据分布与目标域的数据分布;cycle consistency loss 用于阻止学习得到的映射结构 G G G F F F相互矛盾。

三、损失函数介绍

3.1 Adversarial Loss

在文章中,作者介绍的对抗损失函数是负对数似然函数,对于映射函数 G G G 以及其对应的辨别器 D Y D_Y DY,有 adversarial loss 如下: L G A N ( G , D y , X , Y ) = − E y ∈ p d a t a ( y ) [ log ⁡ D Y ( y ) ] − E x ∈ p d a t a ( x ) [ log ⁡ ( 1 − D Y ( G ( x ) ) ] L_{GAN}(G,D_y,X,Y)=-E_{y\in p_{data}(y)}[\log D_Y(y)]-E_{x\in p_{data}(x)}[\log (1-D_Y(G(x))] LGAN(G,Dy,X,Y)=Eypdata(y)[logDY(y)]Expdata(x)[log(1DY(G(x))]对于映射函数 F F F 以及其对应的辨别器 D X D_X DX L G A N ( F , D X , Y , X ) L_{GAN}(F,D_X,Y,X) LGAN(F,DX,Y,X)则有对应一致的表达式。
同时文章中讲到使用最小平方损失要更稳定且更有质量,其表达式为 L L S G A N ( G , D Y , X , Y ) = E y ∈ Y [ ( D Y ( y ) − 1 ) 2 ] + E x ∈ X [ D Y ( G ( x ) ) 2 ] L_{LSGAN}(G,D_Y,X,Y)=E_{y\in Y}[(D_Y(y)-1)^2]+E_{x\in X}[D_Y(G(x))^2] LLSGAN(G,DY,X,Y)=EyY[(DY(y)1)2]+ExX[DY(G(x))2]

3.2 Cycle Consistency Loss

理论上讲使用对抗损失训练并得到可以产生相应域特征分布的 G , F G, F G,F 是可以的,但是由于大容积特性,得到的网络可能将相同的源域图像映射到任意一些来自目标域的图像。因此希望学习到的映射函数是 cycle-consistent,就是希望来自域 X X X的图像 x x x可以在 G , F G,F G,F后恢复为 x x x,即 x → G ( x ) → F ( G ( x ) ) ≈ x x \rarr G(x)\rarr F(G(x)) \approx x xG(x)F(G(x))x。同样的有 y → F ( y ) → G ( F ( y ) ) ≈ y y \rarr F(y)\rarr G(F(y)) \approx y yF(y)G(F(y))y

cycle consistency loss的表达式为 L c y c ( G , F ) = E x [ ∣ ∣ F ( G ( x ) ) − 1 ∣ ∣ 1 + E y ∣ ∣ G ( F ( x ) ) − y ∣ ∣ 1 L_{cyc}(G,F) = E_{x}[||F(G(x))-1||_1+E_y||G(F(x))-y||_1 Lcyc(G,F)=Ex[F(G(x))11+EyG(F(x))y1作者也尝试了使用对抗损失代替此损失,但是并没有见结果变得更好。

3.3 additional loss

文章中还介绍了一个损失函数,这个损失可以帮助弱化颜色在输入输出图像间退化改变,其原理是将图像输入网络并尽可能使输出图像逼近原图像,表达式为 L i d e n t i t y ( G , F ) = E y [ ∣ ∣ G ( y ) − y ∣ ∣ 1 ] + E x [ ∣ ∣ F ( x ) − x ∣ ∣ 1 ] L_{identity}(G,F)=E_{y}[||G(y)-y||_1]+E_{x}[||F(x)-x||_1] Lidentity(G,F)=Ey[G(y)y1]+Ex[F(x)x1]作者发现将莫奈的画迁移到照片时,经常将白天的照片映射到日落时的照片,使用这个损失函数效果就变好了。

参考文献: Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks

你可能感兴趣的:(机器学习,图像处理,图像特征提取,深度学习,神经网络)