目录
1、普通gan
2、cyclegan
3、ptgan
4、stargan
ptgan模型代码地址看着一篇:
https://blog.csdn.net/aaa958099161/article/details/93993550
注意:
两个生成模型,两个个判别器
两个判别器,其中一个判别器只能判别斑马,另外一个只能判别普通马
判别器模型很简单,生成器损失函数如下:
self.g_loss = self.criterionGAN(self.DA_fake, tf.ones_like(self.DA_fake))
+ self.criterionGAN(self.DB_fake, tf.ones_like(self.DB_fake))
+ self.L1_lambda * abs_criterion(self.real_A, self.fake_A_)
+ self.L1_lambda * abs_criterion(self.real_B, self.fake_B_)
效果:
有这种趋势吧,细心调一下模型会有更好的效果,挺好玩的。作者弄了个界面,上面有很多应用展示:
https://junyanz.github.io/CycleGAN/
提出了一种针对于行人重识别的生成对抗网络 PTGAN,使用 GAN 将一个数据集的行人迁移到另外一个数据集。
可以实现不同 ReID 数据集的行人图片迁移,在保证行人本体前景不变的情况下,将背景转换成期望的数据集 style。
另外本文还提出一个大型的 ReID 数据集 MSMT17,这个数据集包括多个时间段多个场景,包括室内和室外场景,是一个非常有挑战的数据集。
MSMT17 数据集有以下几个特性:
数据采集时长约为 180 小时
总共有 15 个相机,其中 12 个室外相机,3 个室内相机
行人框由 Faster RCNN 机标完成
最后总共有 4101 个行人的 126441 个 bounding boxes
首先 PTGAN 网络的损失函数包括两部分:
首先第一部分是 LStyle,这个就是标准的 CycleGAN 的判别 loss,λ1 是平衡两个损失的权重。
其中 M(a) 和 M(b) 是两个分割出来的前景 mask,ID loss 将会约束行人前景在迁移过程中尽可能的保持不变。
self.g_loss = self.criterionGAN(self.DA_fake, tf.ones_like(self.DA_fake))
+ self.criterionGAN(self.DB_fake, tf.ones_like(self.DB_fake))
+ self.L1_lambda * abs_criterion(self.real_A, self.fake_A_)
+ self.L1_lambda * abs_criterion(self.real_B, self.fake_B_)
+ self.L2_lambda * mae_mask_criterion(self.real_A, self.fake_B, self.mask_A)
+ self.L2_lambda * mae_mask_criterion(self.real_B, self.fake_A, self.mask_B)
ptgan生成网络的损失函数,和cyclegan差别在后面两项。
提出问题:
StarGAN的引入是为了解决多领域间的转换问题的,之前的CycleGAN等只能解决两个领域之间的转换,那么对于含有C个领域转换而言,需要学习C*(C-1)个模型,但StarGAN仅需要学习一个。
创 新 点:
StarGAN生成器模型加入了一个域的控制信息,
鉴别器不仅仅需要学习鉴别样本是否真实,还需要对真实图片判断来自哪个域
1、将输入图片x和目标生成域c结合喂入到生成网络G来合成fake图片
2、将fake图片和真实图片分别喂入到鉴别器D,D需要判断图片是否真实,还需要判断它来自哪个域
3、与CycleGAN类似,还有一个一致性约束,将生成的fake图片和原始图片的域信息c'结合起来喂入到生成器G要求能输出重建出原始输入图片x
效果:
这篇论文也很好玩哦。。。end