CMU 提出全新 GAN 结构,GAN 自此迈入预训练大军!

0d01f4594b6d83adb2777a091a063ab5.png

文|林锐

众所周知,现在 GAN 的应用是越来越宽泛了,尤其是在 CV 领域。不仅可以调个接口生成新头像图一乐,也可以用 GAN 做数据增强让模型更加健壮。

10f7e246086968bf9eee5ae9e187e16e.png
▲嘉然你带我走吧嘉然!

在CV领域,不像分类、目标检测等任务可以使用预训练好的backbone来加速训练、提升精度,GAN的训练基本上是从头开始!!因为GAN的判别器好坏直接影响生成器的梯度,判别器太好将导致生成器的梯度消失,网络就没法训练了。

本文的作者为了打破这种局限性,今年 CVPR'2022的一篇Oral 引入了叫做 Vision-aided GAN(以下简称VAG)的全新结构,使得 GAN 也能够采用预训练+精调的范式。此外,VAG 只用1%的训练数据就达到了与StyleGAN相匹配的水准,使得训练难度显著降低。

论文题目:
Ensembling Off-the-shelf Models for GAN Training

论文链接:
https://arxiv.org/abs/2112.09130

Github:
https://github.com/nupurkmr9/vision-aided-gan

352a0a1624755b1387d99349aa4effec.png背景13c51b97ee195f12fbb2cd8c62182811.png

首先简要介绍GAN网络的训练模式。   

8985f3961c399a73b6f8f2e65da0daeb.png
▲图一:GAN的基本结构

2014年,Goodfellow发明了GAN网络,GAN的训练过程分为:

1.先固定住生成器,接着训练判别器,使这个判别器能够分辨生成的数据和真实的数据。

2.一定step后固定住判别器,接着训练生成器,使生成器生成的图片骗过判别器。一定step后继续此循环,直到达到纳什平衡的状态。

为什么不一开始就用一个预训练的最优判别器呢? 因为判别器太强将导致梯度消失,这也就是为什么GAN网络一般是从头开始训练。98f14798d3728f5aee74e45b8c7faf66.gif

本文的作者提出的 VAG 结构不但克服了GAN网络训练中常见的过拟合的问题,还避免了因判别器过强引发的梯度消失。因此VAG能使用预训练过的大型模型作为判别器来提高训练精度、简化训练过程,可谓神奇。下图为VAG模型结构图。

d1d15360d2a96de606379d94db3ae937.png
▲图二:VAG结构图

3504cb82f9a534065ea5fd22b91f92bd.png实现方法c134c22fa5d545febfd15696a9ed5308.png

1.训练思路

这张结构图表达的训练思想非常简单,首先搭建好一个的预训练模型库,然后从模型库中取出若干个模型再接上分类头组成的新判别器,再跟初始GAN网络的判别器并联。因此模型的训练Loss就变成了下面的样子。

402 Payment Required

也就是说并联的判别器会跟原始判别器一起去训练,由于原始的判别器不够强,所以能一定程度上避免梯度消失,又因为新的判别器是用大数据集训练好的模型,其中蕴含的丰富特征也让GAN网络不至于在某个数据集上过拟合。

2.预训练模型选择

细心的同学也能发现,loss中存在一个系数K,这个K是指在总量为N的预训练模型库中选择K个模型加入到训练中来,这个选择也不是乱选的啊,那必须是要有备而来。

作者先做了K=1情况下的GAN训练实验,在模型库中选一个模型,固定住参数,然后接上一个可训练的分类头,去判断传导进网络的图片是真的还是假的。这个二分类的结果称为Linear Probe Accuracy(以下简称LPA),并比较了不同LPA的模型和最终GAN网络训练评价指标FID的相关性,下图为实验结果。

69b20010729c0016ae5017bbb5c43077.png
▲图三:LPA和FID的关系

由上图可知,LPA和FID基本上称线性关系,Acc越高,FID也越好。那么当K不等于1的情况下要怎么样把更多的模型加到训练里去呢?作者采用K-progressive model selection策略来逐步添加模型到原始结构里,并在这个基础上达到了SOTA的效果。如何挑选要添加的模型后面实验有进一步解释。

0e5f1594990f868c3f6aff4e7a37ca47.png实验9e4066dce029aa06d63d83e67a48ddd8.png

1.模型有效性

首先下图显式地展现了在GAN网络中引入预训练模型后,只需要用极少量的数据就能达到SOTA的效果,用100%的数据训练实现了新的SOTA。

1f786a1b02de9c7f5add181c4acf0014.png
▲图四:VAG的训练结果

2.K-progressive Model Selection的有效性

首先从下图中可以看出来,逐步把预训练的模型添加到网络训练中后,GAN的FID在大部分数据集中都能得到显著的提升。说明增加预训练模型的方式是有效的,作者进一步分析了如何去做Model Selection。

7c7312f9e3eb7dcf099163b2e241b648.png
▲图五:K-progressive Model Selection策略有效性分析

下图展现了3种不同添加model的方式,第一行是逐渐加入在此数据集下LPA最好、次好的模型,第二行是随机选择,第三行是选择最差、次差的模型,很明显逐渐加入最好的那一批模型最终的训练效果最好。

b62b076c79084dec6b64a5400ceaa5f9.png
▲图六:不同Selection方式的有效性分析

0e696e8fac32ec0f164b58f5fecf462e.png总结152f831210f50af06bb50b48ed3efe9d.png

作者提出了Vision-aided GAN的结构,率先引入了预训练的模型辅助GAN训练并取得了新的SOTA,为之后的GAN网络训练提供了新的范式。

小编认为这篇文章的思路很直观,但是在实验中如何平衡新引入的GAN判别器Loss和原始判别器Loss是一个很难的抉择问题,因为在训练过程中,由于原始判别器Loss始终处于一个主导地位,很有可能模型直接摆烂完全不优化第二部分判别器的Loss,所以能把这种方法做work的才是真正的大佬呀。

c089d64a0538175c225861c5ba9ebf4a.png后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

70620c400cf8bb6a43d45853339925c8.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在传统Spring应用中使用spring-boot-actuator模块提供监控端点

在之前发布的《Spring Boot Actuator监控端点小结》一文中,我们介绍了Spring Boot Actuator模块为应用提供的强大监控能力。在Spring Boot应用中,我们只需要简单的引入spring-boot-starter-actuator依赖就能为应用添加各种有用的监控端点。其中&#xff…

剑指Offer - 面试题38. 字符串的排列(全排列,排序,回溯+剪枝)

1. 题目 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s "abc" 输出:["abc","acb","bac","bca&q…

我手撸了一个乞丐版深度学习框架,已开源!

文 | 王桂波知乎源 | 极市平台当前深度学习框架越来越成熟,对于使用者而言封装程度越来越高,好处就是现在可以非常快速地将这些框架作为工具使用,用非常少的代码就可以构建模型进行实验,坏处就是可能背后地实现都被隐藏起来了。在…

使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建。而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也可以通过《Spring Boot快速入门》一文中提到的SPRING INITIALIZR页面工…

剑指Offer - 面试题61. 扑克牌中的顺子

1. 题目 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 1…

超越CLIP!谷歌发布首个大规模MoE架构的视觉语言模型

文 | 明敏(发自凹非寺)源 | 量子位多模态模型常见,但是基于稀疏化的还是头一个。谷歌带来最新成果LIMoE,首次将稀疏化方法用在了图像文本混合模型上。要知道,随着大模型参数呈指数级增加,训练成本也是一路飙…

新年彩蛋:Spring Boot自定义Banner

在2016年的最后一天,借用Spring Boot的Banner向各位程序猿同仁们问候一声:Happy New Year。 接下来我们就来介绍一下这个轻松愉快的自定义banner功能。实现的方式非常简单,我们只需要在Spring Boot工程的/src/main/resources目录下创建一个ba…

剑指Offer - 面试题58 - II. 左旋转字符串

1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入…

硬刚Meta!字节把元宇宙跳动到了美国

文 | 好困 拉燕源 | 新智元字节跳动招兵买马,组队「杀向」西海岸。如今元宇宙火得一塌糊涂,跟互联网挂钩的公司都想来掺一脚。最近,就连字节跳动也要进军元宇宙了!你给我等等,这是什么陈年旧闻?别急&#x…

Spring Boot应用的后台运行配置

酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式。在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类使用Maven的Spring Boot插件mvn spring-boot:run来运行打成jar包后&#xff0c…

Spring Boot Actuator监控端点小结

在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源。它完全是一个用于暴露自身信息的模块,所以很明显,它的主要作用是用于监控与管理,它就是:spr…

剑指Offer - 面试题60. n个骰子的点数(动态规划)

1. 题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出…

经典著作《动手学深度学习》中文版2.0beta版发布!开源下载!

2020年疫情刚开始的时候,《动手学深度学习》的英文版相较中文版已经多出不少内容了。我们书第一版的不少老读者表示,疫情在家虽然想学习,但第一版早就刷完,于是只好刷阿信和小抖。沐神和我的第一反应是:这样对眼睛不好…

使用Spring StateMachine框架实现状态机

Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻,该框架目前差不多也才刚满一岁多。它的主要功能是帮助开发者简化状态机的开发过程,让状态机结构更加层次化。前几天刚刚发布了它的第三个Release版本1.2.0,其中增加了…

滴滴退市了

文 | 彭小伟, 编 | 刘芳源 | 网约车焦点美东时间6月10日,滴滴正式在纽交所退市。根据官方通告,滴滴在完成退市后,其股份会转移到OTC(Over-the-Counter,场外交易市场)进行交易,交易代码为“DIDIY…

剑指Offer - 面试题62. 圆圈中最后剩下的数字(约瑟夫环 递推公式)

1. 题目 0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个…

Spring Boot中使用MyBatis注解配置详解

之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见的情况举例说明用法。 在…

何恺明团队的“视频版本MAE”,高效视频预训练!Mask Ratio高达90%时效果也很好!...

文 | 小马源 | 我爱计算机视觉本篇文章分享论文『Masked Autoencoders As Spatiotemporal Learners』,由何恺明团队提出视频版本的 MAE,进行高效视频预训练!Mask Ratio 高达 90% 时效果很好!详细信息如下:论文链接&…

剑指Offer - 面试题45. 把数组排成最小的数(字符串排序)

1. 题目 输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102"示例 2: 输入: [3,30,34,5,9] 输出: "3033459"提示: 0 < nums.length < 100 说明…

Spring Boot整合MyBatis

最近项目原因可能会继续开始使用MyBatis&#xff0c;已经习惯于spring-data的风格&#xff0c;再回头看xml的映射配置总觉得不是特别舒服&#xff0c;接口定义与映射离散在不同文件中&#xff0c;使得阅读起来并不是特别方便。 Spring中整合MyBatis就不多说了&#xff0c;最近…