中国母婴网 > 资讯 > 正文

朱俊彦团队提出GAN紧缩算法核算量减20倍GPUCPU通通能加快

放大字体  缩小字体 2020-03-25 19:14:51 作者:责任编辑。王凤仪0768

边策 鱼羊 发自 凹非寺量子位 报导 | 大众号 QbitAI现如今,GAN的作用现已越来越炉火纯青。比方英伟达的GauGAN,就如神笔马良,

边策 鱼羊 发自 凹非寺

量子位 报导 | 大众号 QbitAI

现如今,GAN的作用现已越来越炉火纯青。

比方英伟达的GauGAN,就如神笔马良,能够随便造物:

不过,从无化有背面,核算量也适当惊人。

以GauGAN为例,与MobileNet-v3这样的辨认CNN比较,参数只相差1个数量级(4.2 : 93)核算强度却高出了2个数量级(0.5 : 281)。

如此一来,交互式布置就变得很困难。

更直白来说,想要把模型布置到手机、平板这样的终端,换装变脸转性别,这些边际设备——吃不太消。

为了处理这一问题,来自MIT、Adobe研讨院和上海交通大学的团队揣摩出了一个通用紧缩结构。

有多强?

一举将CycleGAN的核算量削减了20倍以上,将GauGAN的核算量削减了9倍,简笔画到实物图的pix2pix也能驾御,作用却未差分毫。

值得一提的是。论文已当选CVPR 2020,代码也已开源。

作者团队也星光灿烂,一作是来自上海交通大学ACM班的本科生李沐阳,CycleGAN的作者朱俊彦则亲自参加、辅导。

GAN紧缩算法

紧缩GAN,并不像紧缩其他CNN模型那样简略。

根本原因:GAN的练习动力学高度不稳定,生成器与鉴别器之间存在巨大的结构差异,让咱们很难运用现有的CNN紧缩算法。

为了处理这样的一个问题,作者提出了针对有用生成模型量身定制的练习计划,并经过神经架构查找(NAS)进一步进步紧缩率。

GAN紧缩的结构如下图所示,大致上能够分为3个部分:

1、给定一个预练习的teacher生成器G’,经过蒸馏的办法获取一个较小的“once-for-all”的student生成器G,这中心还包含经过权重同享的一切或许通道数。在每个练习过程中挑选不同的通道数ck。

2、从“once-for-all”生成器中提取许多子生成器,并评价其功能,无需从头练习,这也是被叫做once-for-all(一了百了)的原因。

3、终究,依据给定的紧缩率方针和功能方针,挑选最佳子生成器,进行微调,并取得终究的紧缩模型。

结构适宜的丢失函数

因为GAN紧缩算法要面临CycleGAN、pix2pix还有GauGAN,这些模型的丢失函数都不尽相同,所以需求结构一个新的丢失函数。

一致未配对和配对学习

有些GAN是经过配对数据集学习的,有些则对错配对数据集。因而要在丢失函数中参加第二项,一致非配对和配对学习的丢失:

承继teacher鉴别器

虽然方针是紧缩生成器,可是鉴别器会存储学习到GAN常识,因为它会发现当时生成器的缺陷。

因而,咱们选用相同的鉴别器架构,运用teacher预练习的权重,并与咱们的紧缩生成器一同对鉴别器进行微调。预练习的鉴别器能够辅导student生成器的练习。

初始化的student鉴别器D运用来自teacher鉴别器D’的权重。

中心特征蒸馏

蒸馏是CNN中广泛运用的模型紧缩办法。

CNN模型紧缩的一种广泛运用的办法是常识蒸馏。经过匹配输出层的logits,能够将常识从teacher模型转移到student模型,然后进步后者的体现。

终究完好的丢失函数为:

其间超参数λrecon和λdistill操控后两项的权重。

高效的生成器规划空间

挑选规划杰出的student体系结构关于终究进行常识蒸馏至关重要。

简略地缩小teacher模型的通道数并不能发生紧凑的student模型,一旦核算量的紧缩比超越4倍,功能就会开端显着下降。

猜测或许的原因之一是,现有的生成器选用的图画辨认模型,或许不是图画组成使命的最佳挑选。

下面,作者展现了怎么从现有的cGAN生成器中取得更好的架构规划空间,并在该空间内履行神经架构查找(NAS)。

卷积分化和层灵敏性

近来高效的CNN规划,广泛选用了卷积分化的办法,证明了在功能与核算之间的权衡取舍。作者发现运用分化的卷积,也有利于cGAN中的生成器规划。

可是试验标明,将分化直接应用于一切卷积层,将大幅度的下降图画质量。可是能够只要某些层分化会下降功能,而某些层则更鲁棒。

在ResNet生成器中,resBlock层耗费了大部分模型参数和核算成本,而简直不受分化的影响。相反,上采样层的参数要少得多,可是对模型紧缩适当灵敏,适度的紧缩也会导致FID大幅下降。

NAS主动裁剪通道

现在的生成器在一切层上都运用手动规划,因而通道数会有冗余。为了进一步紧缩模型,作者运用通道修剪主动挑选生成器的通道宽度削减冗余,能够二次削减核算量。

关于每个卷积层,能够从8的倍数中挑选通道数,能够平衡MAC和硬件并行性。

解耦练习和结构查找

为了处理该问题,作者遵从one-shot神经体系结构查找办法的最新作业,将模型练习与体系结构查找别离 。

先练习一个支撑一切通道的“once-for-all”网络,具有不同数量通道的每个子网络都经过平等练习,能够独立运转,子网络与“once-for-all”网络同享权重。

在练习了“once-for-all”网络后,经过直接在验证集上评价每个候选子网络的功能来找到最佳子网。因为“once-for-all”网络经过权重同享的全面练习,因而无需进行微调。

经过这种办法,咱们我们能够将练习和查找生成器体系结构别离开来:只需求练习一次,在无需进一步练习的情况下评价一切或许的通道装备,并挑选最佳的作为查找成果。

试验成果

终究试验成果如下:

GAN紧缩将乘法累加运算(MAC)的数量减了9~21倍。

这种办法将CycleGAN的核算量削减了20倍以上,将pix2pix的核算量削减了9倍,将GauGAN的核算量削减了9倍。

并且不只能在GPU上加快,在各种各式各样的CPU上也能轻松完成加快,并且加快作用在CPU上更显着。

代码开源

现在,这一GAN紧缩结构现已开源,数据集和预练习模型均可下载。

假如想要上手亲测,需求的环境是:

Linux

Python 3

CPU or NVIDIA GPU + CUDA CuDNN

一起,研讨团队也预备了CycleGAN和pix2pix两个版别的PyTorch Colab,在线即可体会。

试试用CycleGAN把一般马变斑马的作用。

首先把GAN Compression这个项目克隆下来:

!git clone https://github.com/mit-han-lab/gan-compression.git

下载测验数据集:

!bash datasets/download_cyclegan_dataset.sh horse2zebra

下载预练习模型:

python scripts/download_model.py —model pix2pix —task edges2shoes-r —stage full

python scripts/download_model.py —model pix2pix —task edges2shoes-r —stage compressed

下面,便是见证换皮的时间:

作用距离大不大,肉眼看了不算,仍是要核算一下FID(用于评价GAN生成图画的质量,分数越低代表与实在图画越类似)。

该项目供给了几个数据集的实在计算信息:

bash ./datasets/download_real_stat.sh horse2zebra A

bash ./datasets/download_real_stat.sh horse2zebra B

测验的成果显现,原始CycleGAN的FID是65.687,紧缩后,模型的FID是65.312,两者距离不大。

但在MAC、参数规划和推迟方面,紧缩模型都要远远小于原始模型。

上海交大本科生一作,朱俊彦&韩松加持

论文一作,是上海交通大学ACM班大四本科生李沐阳。

2019年7月-本年1月,李沐阳师从MIT韩松教授和朱俊彦教授,在MIT Han Lab担任研讨助理,这篇CVPR 2020论文便是在此期间产出。

现在,李沐阳的研讨喜好在于机器学习、体系以及核算机图形学等范畴,他计划在本年结业之后继续读博进修。

科研之余,李沐阳同学的一大喜好是歌唱。在他的个人主页上,他还共享了自己的唱吧链接,以及个人MV。

论文的别的几位作者,分别是:

Ji Lin,本科结业于清华大学,现于MIT就读博士。

丁尧尧,同样是来自上海交大ACM班的本科生,和李沐阳同在MIT Han Lab担任研讨助理,受韩松教授辅导。

Zhijian Liu,本科结业于上海交大,现于韩松教授门下就读博士。

朱俊彦,李沐阳的辅导者之一。这位青年大牛无需多介绍,CycleGAN作者,世界顶会ACM SIGGRAPH 2018最佳博士论文奖取得者。现为Adobe研讨科学家,本年秋天将回归母校CMU担任助理教授。

韩松,MIT EECS助理教授,同样是AI业界大牛。博士结业于斯坦福大学,曾斩获ICLR 2016最佳论文、FPGA 2017最佳论文。

— 完 —