使用辅助旋转损失的自监督GAN(CVPR 2019)

paper:Self-Supervised GANs via Auxiliary Rotation Loss | Papers With Code

pytorch implement:https://github.com/vandit15/Self-Supervised-Gans-Pytorch

official implement(TensorFlow) : https://github.com/google/compare_gan


前置知识:条件GAN(CGAN)

1、CGAN的思想:

CGAN(可以根据标签生成特定类别的图像):

最开始的GAN是没办法根据标签来生成特定种类的数据的,比如我训练GAN生成猫狗的图片,但是现在我只想获得猫的图片, 经典的GAN才不管那么多,它还是会一直生成又有猫又有狗的图片。

比如用上面的正常生成逻辑,是用随机噪点生成猫狗,我们能用什么方法来控制到底要生成猫呢还是生成狗呢? 这时,CGAN :把标签一起送进生成器和判别器,让他们根据标签来生成/判别结果。

如果从动态训练的角度来看,mnist 训练的整个过程都可以按照标签顺序来生成了:

2、怎么训练

这个很简单,只需要在训练和预测的时候,在 Generator 和 Discriminator 的输入端多给一个 input,这个 input 作用就是提供一个标签。 让 Generator 知道这张照片该生成什么,让 Discriminator 知道这张照片我应该判别是:它是否是此标签类别

所以改动经典GAN的程度相对比较少,而我们在 mnist 数据加工的时候,还要额外做一道工序,除了拿出手写数字图片,还要将数字标签也拿出来。

具体的介绍和代码在:https://mofanpy.com/tutorials/machine-learning/gan/cgan/


SS-GAN

作者指出,SS-GAN将对抗训练与自监督学习相结合,实现了CGAN的优势,而不需要任何标注数据。SS-GAN实现了大规模无条件 ImageNet 图像生成,这项目工作是向着高质量、无监督的自然图像合成方向迈出的重要一步。用最先进的模型替换鉴别器可以帮助进一步改进。作者还提出了在半监督环境中使用少量标签以进一步改进的想法。


一、问题及怎么解决:

问题:GAN经常使用的是随机梯度下降的方法->  表现在训练不稳定、分歧、循环结果、模式崩溃等
原因:generator和discriminator都在一个非稳定的环境下。例如:discriminator需要动态判断generator随机产生的sample,在这种不稳定的情况下,神经网络会忘掉之前的任务,出现循环的情况。

 情况一:判别器遗忘问题

作者举了两个例子来说明当前模型的问题(判别器的遗忘问题),在下图中,蓝色虚线是当前的GAN,由于对模型分布记忆出现混乱,导致准确率下降。

 情况二:在切换数据分布后,模型的分类精度下降

在下图中,左侧表示GAN在每1K数据后换一次数据分布。可以看到数据分布换了以后,原始的GAN会存在较大的误差,几乎又回到了原始未学习的状态。这个例子说明了分类器在不平稳环境中可能无法学习可泛化表示,但自监督有助于缓解这个问题。

Figure 3: Image classification accuracy when the underlying class distribution shifts every 1k iterations. The vertical dashed line indicates the end of an entire cycle through the tasks, and return to the original classification task at t = 0.
Left: vanilla classifier.
Right: classifier with an additional self-supervised loss.
This example demonstrates that a classifier may fail to learn generalizable representations in a non-stationary environment, but self-supervision helps mitigate this problem.

解决办法:另一个办法就是使用conditional,就是generator和discriminator可以访问标签数据;
答案:我们的答案是希望可以希望在没有标签的情况下也拥有conditional的优点/优势;同时,为了保证我们discriminator的represent learning是可靠稳定的;我们加入了辅助、自监督的discriminator


二、方法:

SS-GAN的整体架构如下图所示,具体实现为:

  • 第一个判别器按照以前的方法,输出 true/false 的判断结果;
  • 第二个判别器为旋转角度分类器,加上线性分类器,预测真实图像以及生成的假图像的旋转的类型。

Discriminator with rotation-based self-supervision.

Figure 1: The discriminator D performs two tasks: true vs. fake binary classification, and rotation degree classification. Both the fake and real images are rotated by 0, 90, 180, and 270 degrees. The colored arrows indicate that only the upright(垂直的) images are considered for true vs fake classification loss task. For the rotation loss, all images are classified by the discriminator according to their rotation degree.

【自监督GAN】Self-Supervised GANs via Auxiliary Rotation Loss(SS-GAN)相关推荐

  1. 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础

    大家好,今天小米粥在有三AI开设新专栏<GAN的优化>.在这个专栏中,我们会讲述GAN的相关背景.基本原理.优化等相关理论,尤其是侧重于GAN目标函数的优化.小米粥和有三将带领大家从零学起 ...

  2. 【GAN优化】一览IPM框架下的各种GAN

    今天的这篇小文将是GAN模型理论介绍的最后一篇.有一些内容,所用数学技巧和方法非常高大上,理论结果也非常漂亮,但是完全搞明白其中的门门道道需要相当大精力和知识铺垫,况且实际运用也非常小众,但是作为模型 ...

  3. 生成对抗网络gan原理_必读!TOP10生成对抗网络GAN论文(附链接)

    来源:新智元 本文约2200字,建议阅读7分钟. 本文所选论文提供了一个易读的对GAN的介绍,帮助你理解GAN技术的基础. [ 导读 ]生成对抗网络 (GAN) 是深度学习中最有趣.最受欢迎的应用之一 ...

  4. gan怎么输入一维数据_时空序列预测模型GAN+LSTM

    一.Address ICC 2019的一篇paper,为清华团队所写 思路很有趣,也很容易想到,就是用比较火的GAN加上LSTM Satellite Image Prediction Relying ...

  5. 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow)

    图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow) 文章目录 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网 ...

  6. 【预训练GAN】Projected GANs Converge Faster

    收敛更快的投影GAN PDF:https://www.cvlibs.net/publications/Sauer2021NEURIPS.pdf Supplementary :https://www.c ...

  7. 巧断梯度:单个loss实现GAN模型(附开源代码)

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 我们知道普通的模型都是搭好架构,然后定义好 loss,直接扔给优化器训练就行了.但是 GAN 不一 ...

  8. gan神经网络_神经联觉:当艺术遇见GAN

    gan神经网络 Neural Synesthesia is an AI art project that aims to create new and unique audiovisual exper ...

  9. Eleven Paper: LS-GAN(Loss Sensitive GAN) 笔记

    在Ian Goodfellow 在证明GAN能够拟合真实分布时,引入了D.G网络具有无限建模的能力的假设,但是往往这是不合逻辑的,而且无限建模能力很容易导致过拟合.mode collapse问题.针对 ...

最新文章

  1. 让SEQUENCE记录不变的信息【RECORD STATIC NUMBER IN SEQUENCE】
  2. 0.项目运行环境和项目经理
  3. 【pycharm使用指南】pycharm 取消连按两下shift出现的全局搜索 | pycharm误触出搜索弹窗
  4. Android开发之Glide设置View背景图的方法
  5. cad必练10张图_CAD比例问题大详解!赶紧收藏!
  6. 三星电子预计第四季度营业利润为9万亿韩元 低于分析师预期
  7. AWVS12 安装教程(详细附图)
  8. 个人主页,引导页,导航网站源码三分钟下载安装【美观大气】
  9. 杭电计算机研究生就业报告,实力杭电 | 留杭就业人数又双叒叕NO.1,快来围观杭电2018届毕业就业质量报告...
  10. uhttpd php安装u盘,如何使用u盘安装linux系统
  11. java分解因式_Java将一个整数因式分解
  12. 【EfficientNet】EfficientNet网络结构及代码详解
  13. 富集分析(GO、KEGG、GSEA)
  14. Say Hello to Integers (Java)
  15. 乔巴机器人 番外篇_乔巴机器人五只合体图+10个小乔巴+【附合体动图】
  16. Pulling is not possible because you have unmerged files
  17. PayPal提现被退回的解决办法?(教程和费用)
  18. Reflector破译
  19. linux下 postgresql 安装 postgis 拓展
  20. Android一键沉浸式状态栏(透明状态栏)

热门文章

  1. css选择器下划线设置,css中怎么设置字体下划线
  2. java快捷键 方便查找
  3. 小鹏汽车2019春招自动驾驶中心研发笔试题(部分题解)
  4. SVCHOST.EXE进程详解
  5. 基于JSP的大学生健康管理系统
  6. 木块问题(Uva101)
  7. AIR32F103CBT6还原DAP Link固件方法
  8. 学习方法——TRIZ创新理论中的40个发明原则(一)
  9. Wampserver64 安装过程中可能出现的错误并解决
  10. 怎么去掉从网上下载的ppt中二维码