知识蒸馏

该论文发表在2020年ACCV。
PDF: TinyGAN: Distilling BigGAN for Conditional Image Generation
code: https://github.com/terarachang/ACCV_TinyGAN

目录

  • Abstract
  • Introduction
  • Proposed method

Abstract

生成对抗网络(GANs)在生成式图像建模中有着重要的应用,但是GANs训练很不稳定,尤其是对于大规模、复杂的数据集。最近的一个工作BigGAN极大程度上提升了在ImageNet上的图像生成质量,但该方法需要一个极大的模型,因此难以部署在资源受限的设备上。为了减少模型大小,这篇文章提出了一个黑盒知识蒸馏框架来压缩GANs,并且是一个稳定且有效的训练过程。具体方法为:将BigGAN作为教师网络,然后训练一个非常小的学生网络来模仿教师网络的功能,在Inception和FID分数两个指标上取得了不错的效果,同时生成器参数量少了16倍。

Introduction

GAN基础:GANs由生成器和判别器组成,生成器网络旨在产生和目标域相同或相似的分布,判别器网络旨在区分生成的分布和真实的数据分布,两个网络交替迭代进行训练。Conditional GANs(cGANs)是一种基于某些给定条件信息来生成样本的GAN方法,cGANs的判别器需要基于给定的条件信息来进行区分两个分布。

问题:然而GANs存在一个重要的问题:训练不稳定,特别是在大规模,复杂数据集上进行训练。最新的一个工作BigGAN,通过增大model size和batch size来减轻训练的问题,同时生成高质量的图像。但也带来了新的问题,即高计算花费和内存消耗,测试时间也较长

那么如何进行模型压缩呢?分类任务中常用的方法有:knowledge distillationnetwork pruningquantization
本文采用的是知识蒸馏的方法,将训练好的生成器如BigGAN作为教师网络,利用其输入和输出作为训练数据,从而以一种有监督的方式训练学生网络,并且不需要获取到教师网络的内部参数。

Proposed method

方法流程如图所示。black-box指的是不需要获取到教师网络的参数或者是与教师网络共享同样的结构。

该方法分为两个步骤:

  1. Preprocessing:即利用预训练好的BigGAN模型的生成器产生相应的样本对。
  2. Training:利用获取到的样本对进行student网络的训练。

训练策略
学生网络的训练包含这么几部分损失:

在训练的时候,逐渐减小pixel-level loss的权重,从而使得判别器能提供更有用的指导。

  1. Pixel-Level Distillation Loss

    即在给定相同输入的情况下减小BigGAN和TinyGAN生成结果之间的像素距离。其中,T是参数固定的教师网络(BigGAN的生成器),S是学生网络,z是从截断的正态分布p(z)中采样得到的随机变量,y是相应的类别标签。只用该像素损失会造成生成的结果非常平滑。

  2. Adversarial Distillation Loss: 即加入判别器进行对抗训练

  3. Feature-Level Distillation Loss:为了进一步减轻利用像素损失生成模糊图像的问题,加入了特征级别的蒸馏损失。

    其中,Di是判别器网络第i层的特征向量。

Learning from Real Distribution
为了使得模型能从ImageNet中的真实图像上进行学习,作者还还用了hinge loss作为对抗损失:

其中x是从ImageNet中采样得到的真实图像。

优点
这篇论文在方法上比较常规,但是在问题引入上还是有一定的借鉴意义。

(recoded by xt)

TinyGAN: Distilling BigGAN for Conditional Image Generation相关推荐

  1. BERT论文阅读(二): CG-BERT:Conditional Text Generation with BERT for Generalized Few-shot Intent Detection

    目录 The proposed method Input Representation The Encoder The Decoder fine-tuning discriminate a joint ...

  2. PaperNotes(13)-Conditional Image Generation with PixelCNN Decoders

    conditional Image generation with PixelCNN Decoders ICML的best paper pixel cnn 属于完全可见的信念网络,需要对 概率密度 建 ...

  3. 论文笔记---Attentive Normalization for Conditional Image Generation

    Attentive Normalization for Conditional Image Generation 前提知识 语义分割 什么是语义分割? IN( instance normalizati ...

  4. Conditional Structure Generation throughGraph Variational Generative Adversarial Nets 论文阅读

    目标 基于语义条件生成图 (1)基于条件生成尽可能相似的图. (2)有条件的生成新的图. 解决的问题 (1)基于语义有条件的生成图 (2)如何处理图在生成过程中的顺序的问题 解决问题的方法 (1)提出 ...

  5. Lifelong GAN: Continual Learning for Conditional Image Generation

    ICCV 2019 | Lifelong GAN:基于持续学习的条件图像生成模型 Abstract 终身学习对深度神经网络来说具有挑战性,因为它们容易发生灾难性遗忘.灾难性遗忘发⽣在训练过的⽹络在执⾏ ...

  6. ACCV 2020 最受关注的 Top10 代码开源论文!

    点击上方"机器学习算法那些事",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:OpenCV中文网 ACCV 2020 会议正在召开 ...

  7. Image Generation

    Generating images with recurrent adversarial networks arxiv: http://arxiv.org/abs/1602.05110 github: ...

  8. 基于Conditional Layer Normalization的条件文本生成

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 从文章从语言模型到Seq2Seq:Transformer如戏,全靠Mask中我们可以知道,只要配合适当的 Atte ...

  9. 【李宏毅2020 ML/DL】P82 Generative Adversarial Network | Improving Sequence Generation by GAN

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第9篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...

  10. MichiGAN:Multi-Input-Conditioned Hair Image Generation for Portrait Editing---论文阅读笔记

    Abstract 尽管最近用GANs的face image generation很成功,conditional hair editing(什么是有条件的头发编辑)仍是个挑战性问题,由于the unde ...

最新文章

  1. 仿vue的前端自定义cmd命令拉取项目脚手架
  2. Linux 自动挂载 和 fstab分区-自动挂载
  3. BSS段,数据段,代码段,堆内存和栈
  4. iOS 处理键盘遮挡TextField、TextView问题
  5. mysql无法启动如何备份文件_mysql 5.7 停电导致无法启动、如何备份数据,重新安装mysql...
  6. python打飞机源码_python 飞机大战 游戏源码(pygame入门级)
  7. ubuntu通过vmware与访问宿主的文件
  8. centos5.9 安装mysql_centos 5.9 安装mysql 5.5.31
  9. 天津消协警示“58同城” 请珍视消费者的信任和选择
  10. 【每日算法Day 108】一道简单的二叉树题目,写法还是挺多的。
  11. 【SegMap: 3D Segment Mapping using Data-Driven Descriptors】
  12. Servlet面试题汇总
  13. css怎么设置鼠标手势?
  14. 儿童python编程入门-青少年Python编程入门 PDF 超清版
  15. ELK之metricbeat
  16. Android点九图(.9.png)的特点和制
  17. Caffe中的损失函数
  18. 夯实基础之C语言基础算法
  19. 为什么要学网络爬虫?我来告诉你!
  20. Batch Normalization(BN)在什么时候用比较合适?

热门文章

  1. PPM 金字塔池化模块 - PSPNet
  2. 黄健计算机科学与技术学院,计算机科学与技术学院研究生学业奖学金初评结果汇总表...
  3. yuv422sp to yuv422p
  4. 如何在Python中使用生成器(Generate)和yield语句
  5. VC++调用大漠插件
  6. Minio入门系列【19】断点续传和断点下载实现方案
  7. 基于电能计量芯片HLW8012的应用研究
  8. Bartender软件使用VB判断条件并返回值
  9. 12CPU数据通路的功能和基本结构
  10. nn.PReLU(planes)