StarGAN-多领域间的转换

1. StarGAN 的简介

        Pix2pix解决了两个领域之间匹配数据集之间的转换,然而在很多情况下匹配数据集很难获得,于是出现了CycleGAN。它可以实现两个领域之间非匹配数据集之间的转换, 然而这些转换每次只能在两个领域之间进行,当需要进行多个领域间的转换时,就需要训练多个网络,非常麻烦。2018年的CVPR上发表了一篇文章提出了StarGAN,它仅使用一个网络就实现多个领域之间的图像转换,而且图像转换的效果也比较好。


2. StarGAN 的网络结构:

StarGAN的结构拆分

注:上图中的两个生成器 G 是同一个生成器,整个StarGAN中只使用了一个生成器和一个判别器。

        StarGAN实现了多个领域图像之间的转换,但是网络结构比CycleGAN 更简单,整个网络只包含一个生成器和一个判别器。从结构上StarGAN与ACGAN比较相似,生成器是输入除了图像之外还有目标领域的标签;判别器是输入除了图像之外还有相应的类别标签,而且判别器的输出除了判别图像真假之外还要对图像进行分类。

        生成器的输入包含两个部分,一部分是输入图像imgs,大小为(batch_size, n_channel, cols, rows);一部分是目标领域的标签domain,大小为(batch_size, n_dim)。为了将这两部拼接,需要通过repeat操作来对domain进行扩展,将其扩展为(batch_size, n_dim, cols, rows),因此,生成器输入的大小为(batch_size, n_channel + n_dim, cols, rows),生成器的输出为(batch_size, n_channel, cols, rows)。判别器的输入为图像imgs,大小为(batch_size, n_channel, cols, rows),判别器的输出分为两部分,一部分是图像的真假判断,大小为(batch_size, 1, s1, s2),另一部分为图像的类别划分,大小为(batch_size, n_dim)。


3. StarGAN的损失函数

(1)对抗损失:即常规的生成对抗网络的损失的损失函数,判别器在努力地判别输入图像的真假,生成器在努力地生成假图像来欺骗判别器。

                L_{adv} = E[log D_{src}(x) ] + E_{c, x} [log(1-D_{src}( G(x, c)) )]

(2)分类损失:即将输入图像进行分类的损失。对于判别器D而言,需要将真实图像分到正确的类别中;对于生成器G而言,需要使得生成图像分到目标类别中。

对于判别器D: L_{cls}^r  = E_{x, \tilde{c} } [-log D_{cls} (\tilde{c}|x )]            其中,D_{cls} (\tilde{c}|x )代表判别器将真实样本归为相应标签类别\tilde{c} 的概率分布,判别器D的目标是最小化损失函数L_{cls}^r

对于生成器G: L_{cls}^f  = E_{x, c } [-log D_{cls} (c| G(x, c) )]       生成器希望生成数据能够被判别器判断为目标分类c, 因此生成器的目标是最小化损失函数L_{cls}^f

(3)重建损失:为了确保生成数据能够很好地还原到原来的领域分类中,此处将原始图像和经过两次生成的图像的L1范数作为重建损失。

                L_{rec} = E_{x, c, \tilde{c} }  [||x-G(G(x, c), \tilde{c} )||_{1} ]

因此,StarGAN的生成器和判别器总的损失函数分别为:

生成器G损失函数: L_{G} = -L_{adv} + \lambda _{cls} L_{cls}^f  + \lambda _{rec} L_{rec}

gen_imgs = generator(imgs, sampled_c)       #  生成图像,sampled_c 为随机生成的目标类标签

recov_imgs = generator(gen_imgs, labels)          #   图像重建

fake_validity, pred_cls = discriminator(gen_imgs)         #  生成图像的判别

loss_G_adv = -torch.mean(fake_validity)          # 对抗损失

loss_G_cls = torch.nn.functional.binary_cross_entropy_with_logits(sampled_c, pred_cls, size_average=False) / sampled.size(0)        #  分类损失

loss_G_rec = torch.nn.L1Loss(recov_imgs, imgs)     # 重建损失

Loss_G = loss_G_adv + lambda_cls * loss_G_cls + lambda_rec * loss_G_rec     #  生成器总的损失

判别器D损失函数: L_{D} = -L_{adv} + \lambda _{cls} L_{cls}^r

fake_imgs = generator(imgs, sampled_c)      #  生成图像

real_validity, pred_cls = discriminator(imgs)      # 真实图像的判别

fake_validity, _ = discriminator( fake_imgs.detach())     #  生成图像的判别

gradient_penalty = compute_gradient_penalty(discriminator, imgs.data, fake_imgs.data)       # 梯度惩罚

loss_D_adv = -torch.mean(real_validity) + torch.mean(fake_validity) + lambda_gp * gradient_penalty       # 对抗损失

loss_D_cls = torch.nn.functional.binary_cross_entropy_with_logits(labels, pred_cls, size_average=False) / sampled.size(0)           # 分类损失

Loss_D = loss_D_adv + lambda_cls * loss_D_cls     # 判别器总的损失

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容