TinyGAN: Distilling BigGAN for Conditional Image Generation

知识蒸馏
在这里插入图片描述
该论文发表在2020年ACCV。
PDF: TinyGAN: Distilling BigGAN for Conditional Image Generation
code: https://github.com/terarachang/ACCV_TinyGAN

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将神经网络中的知识进行提取,是一种将模型的信息转化为更为简洁和易于理解形式的过程。 神经网络是一种由许多神经元组成的复杂计算模型,它们通过学习和调整权重来解决各种问题。然而,神经网络通常具有大量的参数和复杂的结构,这使得它们难以解释和应用到其他领域。因此,我们需要一种方法来提取和总结神经网络中的知识,以便更好地理解和应用这些模型。 在进行神经网络知识提取时,有几种常见的方法。一种常见的方法是使用可视化技术,如热力图、激活图和网络结构图等,来可视化网络中不同层的活动模式。这些可视化技术能够帮助我们发现网络中的模式和特征,并从中推断出网络的知识。 另一种方法是使用特征提取技术,如卷积神经网络(CNN)的滤波器、自动编码器的隐藏层和循环神经网络(RNN)的隐状态等,来提取网络学习到的重要特征。这些重要特征可以帮助我们更好地理解网络学习到的信息,并将其应用到其他问题中。 此外,还有一种被称为知识蒸馏的技术,它通过训练一个较小的模型来提取大型模型中的知识。知识蒸馏通过引入目标函数和额外的训练策略,使小模型能够学习到大模型中的重要知识,并在不损失太多性能的情况下将其应用到实际问题中。 总而言之,提取神经网络中的知识是一项重要任务,它能够帮助我们更好地理解和应用这些复杂的模型。通过可视化、特征提取和知识蒸馏等方法,我们能够从神经网络中提取出有用的信息,并将其应用到其他领域或解决其他问题中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值