一篇一个CV模型,第(1)篇:StyleGAN

news2024/11/22 18:41:26

  写在前面:

  虽说自己肯定对外宣称自己是搞CV的,但是其实在自己接近两年半(🐔)的研究生生涯中,也没有熟练掌握过很多个CV领域的模型,或者说是CV领域的概念。我认为这个东西是必须得补的,不然作为CV算法工程师是肯定要被淘汰的。目前激发自己研究和学习热情的最好方式还是经营自己小小的博客,因此想开一个系列介绍自己在学习CV模型中收获与感悟,更重要的是罗列学习资源,以便日后读者或者我自己能够快速把这个学习过的模型重拾起来。

  参考资料:

  [论文链接]

  [论文源代码]

  [AdaIN补充材料]

  1. 研究动机 (Motivation)

  在Diffusion Model出现以前,GAN应当是深度生成模型中占据统治地位的,与其对标的是变分自编码器VAE。虽然普遍认为GAN的生成质量会比VAE好一些,但是二者其实是不分伯仲的。StyleGAN这篇文章是发表在CVPR2019上,它致力于分析和理解GAN是如何完成图片合成过程的。此前的GAN,其generator完全是一个黑匣子,为什么GAN生成的图片会有随机生成的特征(我的理解,例如:其他地方见到的人出现在另一张图片的背景里),GAN的latent space究竟控制了哪些东西,有哪些性质,这些我们都没有办法解释。本论文就是想探究这个GAN的可解释性的。

  2. 挑战(Challenge)

  考虑的是一个比较novel的方面,所以challenge这点没有写很多。

  3. 点子(Idea)

  上面说到StyleGAN对于GAN的主要创新在于Generator,而本论文对于Generator的创新又主要集中在latent space。一般的Generator的输入不是别的,就是在一个latent space中采样的一个z。然而,由于对z的可解释性很差,特征会在隐空间中互相缠绕,牵一发而动全身,我们想做的就是让图片的不同属性在特征空间中解耦。看一下作者的表述:

The input latent space must follow the probability density of the training data, and we argue that this leads to some degree of unavoidable entanglement. Our intermediate latent space is free from that restriction and is therefore allowed to be disentangled.

  作者的解决方法就是不直接把latent code输入到generator中,而是首先把latent code嵌入到一个中间的latent space。。。更多的理论分析... 倒是没有,但是他说只要这么做了就能解决隐空间中特征纠缠的问题。

  4. 方法(Method)

  主要的方法框图就是这样,z不直接作为generator的输入,而是先转换成wzw的过程是一系列MLP,记为函数f。而从w输入到主要generator的过程是首先经过了一个仿射变换生成$(\mathbf{y}_s,\mathbf{y}_b)$,然后经过了一个adaptive instance normalization(AdaIN)的操作。这里我有如下三点疑问:

  1. 文章在多处提到:"Our generator starts from a learned constant input",这个constant是什么?是z吗?到底是啥?
  2. Noise输入一定要加吗?为什么一定要加一个高斯噪声呢?
  3. 这个仿射变换A是什么?既然w的维度是512,经过一个仿射变化,它是如何在AdaIN中参与运算的?AdaIN公式如下:其中x为卷积那块儿的主要特征。

$$AdaIN(\mathbf{x}_i,\mathbf{y})=\mathbf{y}_{s,i}\frac{\mathbf{x}_i-\mu(\mathbf{x}_i)}{\sigma(\mathbf{x}_i)}+\mathbf{y}_{b,i}$$

  下面一个一个进行解答:

  1. 指的不是z,一般的GAN都有一个input layer把z转换成一个feature map,然后进行一系列upsample之类的出图,但是本论文发现其实把input layer删了直接替换成一个可学习的constant feature map,仅仅靠style就能生成很好的结果。下面是原文:

We then improve this new baseline further by adding the mapping network and AdaIN operations (C), and make a surprising observation that the network no longer benefits from feeding the latent code into the first convolution layer. We therefore simplify the architecture by removing the traditional input layer and starting the image synthesis from a learned 4 × 4 × 512 constant tensor (D). We find it quite remarkable that the synthesis network is able to produce meaningful results even though it receives input only through the styles that control the AdaIN operations.

  2. 作者通过实验发现显式地加入噪声输入可以帮助生成随机的照片细节,并用实验证明了这一点,具体为什么这样设计则在Section3.2和3.3讨论了很多,感兴趣的读者可以自己去阅读一下。主要的思想是这样的(我的理解):在自然图片中存在很多随机的地方,一千个人有一千张脸,但是头发呢?Generator可以在人头上绘制无数种有差分的头发,但丝毫不影响图片的质量,这是我我们想要的性质。传统的generator由于唯一的随机输入就是latent vector z,因此模型(“神经网络”)在对照片随机差分的处理是,努力地搞出一种伪随机数发生器,这一过程经常失败,因此我们加入noise的做法会有效,也正是在这一点上帮助了模型。下面是一个对比图,其中(b)是完全不加随机噪声的结果,可以看到其他的几个加了noise的结果在绘制头发上都比它要好,尤其是细节差分上:

  3. 看了一些参考资料后把AdaIN弄懂了,adaptive instance normalization(AdaIN) 是一种normalization的方法,我准备写在另一个博客里分析一下常见的normalization方法。写完之后链接会挂出来。

  5. 结果(Result)

  1)生成质量提高了

  这个就是作者发现使用了他们的generator设计后,图片的质量非但没有下降反而提高了。图表就不放了。

  2)风格迁移(Style Mixing)

   风格迁移涉及到两个latent vector z1, z2,mix的方法很简单,就是在进行AdaIN操作的时候时而用z1生成的w1,时而用z2生成的w2。可以看到效果还是比较明显的,比如最后一行,虽然coarse style是来自A的,控制了人脸的样子。但是fine style是来自B的,控制了发色。  

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

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

相关文章

嵌入式应用复习知识点总结

一.期末考试题型 1.单选题40’2.判断题10’3.简答题20’4.综合设计题(66108) 二.单选题知识点 1.嵌入式系统 1.定义 IEEE(国际电气和电子工程师协会)的定义: Devices used to control, monitor, or assist the op…

CDN能防住攻击吗?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是CDN&#xf…

撸一遍STM32最小系统板

采样的MCU型号为STM32F405RGT6,目前这款芯片价格便宜性能好。 1 电机控制会用到单片机的哪些功能? GPIO(通用输入/输出):单片机的GPIO引脚可以用于控制电机的开关、使能以及接收传感器的反馈信号。通过设置GPIO引脚的…

机器学习强基计划9-2:图解字典学习KSVD算法(附Python实战)

目录 0 写在前面1 字典学习2 问题形式化3 KSVD算法4 Python实现 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、…

基于Java+Swing实现的代码统计工具

基于JavaSwing实现的代码统计工具 一、系统介绍二、功能展示三、代码展示四、其他系统五、获取源码 一、系统介绍 系统可以统计C,C,Java代码的空行、注释、有效代码行数 使用说明 直接运行main方法即可 运行环境:idea jdk 二、功能展示 …

2023全国滋补健康产业创新发展交流会八月相聚上海

简介:2023全国滋补健康产业创新发展交流会,愉极2023年“优秀滋补品牌商”精英班&鲜炖鱼胶师培训考核班 愉极&燕博会 2023年“优秀滋补品牌商”精英班&鲜炖鱼胶师培训考核班 前言 在国家提倡全民养生,国民健康意识增强&#xf…

【从零开始学微服务】09.为什么需要服务注册发现?

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。 微服务调用的问题 在上一篇文章中,我们深入探讨了微服务架构的引入过程。在这种架构中,原本庞大且复杂的单体应用会根据业务需求被拆分成一系列精简的小型…

MySQL空间数据学习

一、MySQL空间数据形式 MKT 已知文本(WKT)格式。用已知文本(WKT)表示几何值是为用ASCII格式交换几何数据而设计的。OpenGIS规范提供了一个BackusNaur语法,它指定了写入WKT值的正式生成规则。 MKB 已知二进制&#xff…

【真题解析】系统集成项目管理工程师 2021 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2021 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析(问答题 4 道,75分)综合知识(选择题*75)1-10 题11-20 题21-30 题31-40 题41-50 题51-60 …

LNMP环境

目录 安装Nginx MySQL PHP安装搭建 部署Discuz!社区论坛 安装Nginx 1、关闭防火墙 2、安装依赖包 3、解包 4、配置路径编译安装 5、优化路径创建软连接 6、添加Nginx服务 7、赋权 8、启动服务 9、检查是否安装成功 MySQL 1、安装依赖环境 2、创建运行用户 3、…

带你深入学习“反射”技术

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

Git入门到精通全套教程(涵盖GitHub\Gitee码云)

一个小时搞定Git 对应的视频教程讲解: Git入门到精通全套教程(涵盖GitHub\Gitee码云)_哔哩哔哩_bilibili 目录 1. 为什么要使用版本控制软件 2. 市场上的版本控制软件 3. Git简介 3.1Git简介 3.2集中式vs分布式 3.3作用 二、Git的使用…

【MySQL基础 | 第二篇】数据处理之分组查询

前言 查询语句属于DML(Data Manipulation Language)数据操作语言的其中一种,用于从数据库中提取所需的数据。通过灵活的条件和组合,查询语句帮助用户有效地获取、过滤和排序数据,满足各种信息需求。 文章目录 前言1️⃣…

阿里企业邮箱注册申请流程(图文详解)

2023阿里云企业邮箱注册流程,企业邮箱分为免费版、标准版、集团版和尊享版,阿里云百科分享企业邮箱版本区别,企业邮箱收费标准,以及阿里企业邮箱详细注册开通流程,包括阿里云账号注册、实名认证、企业邮箱版本区别及选…

基于Fedora 38的Ultramarine Linux 38推出了System76的调度器

导读Ultramarine Linux 38已经发布,它是另一个基于Fedora Linux的发行版,具有Budgie、GNOME、KDE Plasma和 elementary OS的Pantheon桌面环境的四个版本。 基于Fedora Linux 38,但默认使用Linux内核6.3,Ultramarine Linux 38&…

人工智能的几个概念

一、什么是人工智能 人工智能不是最近几年才兴起的,它已经有几十年发展的历史,下面是业内公认的一种关于人工智能概念的定义:人工智能(Artificial Intelligence):缩写为AI,是研究开发用于模拟、…

报名开启!2023大模型应用创新挑战赛来啦

满脑创意无处落地? 满身技术无人看到? 飞桨邀你开启大模型应用创意挑战之旅 寻找那个最具创意的你 资深开发者指导,助你落地“黄金”项目 大模型从业者合作交流 找到创业道路上的partner 高额奖金、技能提升、优质项目 官方扶持落地&#xff…

MCScanX安装与使用

为什么要写这篇文章: 最近因为朋友需要用到MCScanX画两个物种的共线性点图,但是发现搜到的blog中所提供的安装方法都不太相同,且在都会出现或多或少的问题,所以来找我帮忙,我搜到的所有blog安装链接http://chibba.pgml…

Flink的TopN

1.为什么定时器的时间设置为,窗口的end值1ms就可以呢? 因为定时器是下游,水位线是取的多个上游的最小的, 水位线是跟在数据后面的,所以当定时器的时间到达时,上游一定计算完成了,并且数据已经在…

LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131384199 论文:DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs DrugChat,基…