AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)

文章地址:Distilling portable Generative Adversarial Networks for Image Translation

简介

文章是一种用于图像生成的网络蒸馏方法,属于神经网络小型化方向,文章基于用于各种图像转换的任务中的GAN,想办法减少其计算量、降低存储成本高,用于移动设备。

生成对抗式网络在图像的风格迁移,换脸,图像生成等任务中取得了很好的效果,但是因为其计算量大,存储空间大,很难应用到移动设备,而传统的网络压缩方法侧重于视觉识别任务,而从不处理生成任务。所以文章提出了一种基于知识蒸馏的生成对抗网络的压缩方法,并针对学生网络的生成器和判别器分别设计了蒸馏的损失函数。通过学习教师生成器和判别器中蕴含的信息,学生网络可以使用较少的参数取得和教师网络相似的图像转换性能。从而实现更为便捷的训练和应用。

模型压缩方法

剪枝:去掉训练好的神经网络中的冗余权重
量化:将高比特的大网络量化为低比特
蒸馏:使用训练好的大网络中的信息辅助小网络进行训练

现有的神经网络压缩方法不能直接应用于GANs模型的压缩,主要有以下几个原因:

  • 与分类模型相比,生成网络中冗余权值的确定更具挑战性,因为生成网络需要大量的参数来建立极其复杂结构的高维映射。
  • 与训练数据通常具有ground-truth(如标签和边界框)的视觉识别和检测任务不同,GAN是一种生成模型,它通常没有特定的ground-truth来评价输出图像,如超分辨率和风格转换。因此,传统的方法不能很容易地挖掘GANs中的冗余权值或过滤器。
  • GANs有一个更复杂的框架,由一个生成器和一个鉴别器组成,两个网络在极小极大二人博弈后同时训练,这与普通的深度神经网络的分类训练过程有本质的不同。

方法框架

AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
该方法由教师网络和学生网络两部分组成,可以看到教师网络的参数和计算量等都要大于学生网络,学生网络在教师网络的帮助下,通过引入不同的Loss来对其生成器和判别器进行训练。

损失函数

该方法的损失函数主要包括,GAN网络的固有损失函数,教师网络和学生网络之间的帮助学习损失函数。

Distilling Generator

首先是对生成器进行蒸馏,第一步,让学生网络的生成图像与教师网络的生成图像相同:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
公式中的T代表教师网络,S代表学生网络,G代表生成器,D代表判别器,x代表输入,y代表真实图片输入以下公式相同,不重复说明。
第二步,直接使用L1距离容易造成生成图像丢失细节语义信息,于是文章提出了基于特征的损失:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
因为教师网络的训练效果好,所以将学生网络和教师网络的生成器生成的图片都输入教师网络的判别器中,然后比较他们的特征信息。
最后,将以上两者结合,得到学生生成网络的蒸馏损失:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
Distilling Discriminator

因为在训练时认为教师网络的效果很好,所以学生网络的判别器认为教师网络生成的图片为真:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
此外文章还采用triplet loss在特征层面上增强判别网络的判别能力:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
最后的Loss为:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)

算法流程图

AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
首先训练一个教师网络,然后训练一个学生网络,在训练的过程中以上面提到的Loss进行辅助训练学生网络的生成器和判别器。

实验

文章在cityspaces数据集上进行了测试,结果如下:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
从左边开始,第一列是输入图片,第二列是真实图片,第三列是不加任何技巧的学生网络图片,第四列是以往蒸馏方法的结果图片,第五列是文章结果图片,第六列是教师网络图片。

文章还测试了斑马到马,季节的转换。
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
以下是量化结果实验
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
以及Loss的有效性证明实验:
AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)