【论文阅读】(CGAN)Conditional Generative Adversarial Nets

 论文地址:[1411.1784] Conditional Generative Adversarial Nets (arxiv.org)

- 条件生成式对抗网络;

解读:

这篇论文中的Conditional GAN和原生GAN在结构上没有太大差别,时间也是紧随着原生GAN出来的,它的思想应该后续很多GAN网络的基础。简单来说,原生的GAN是无监督的,包括DCGAN,输出是完全随机的,比如在人脸上训练好的网络,最后生成什么样的人脸是完全没办法控制的,所以在这篇文章中,作者在输入的时候加入了条件(类别标签或者其他模态的信息),比如在MNIST训练好的网络,可以指定生成某一个具体数字的图像,这就成了有监督的GAN。同时,在文章中,作者还使用网络进行了图像自动标注。

一、本文做的工作

介绍了GAN的条件版本:Conditional GAN。通过简单地为数据增加label y进行构造,G和D的输入都加上了label。本文做了两个基于条件GAN的实验:1、根据类标签生成数字,(以类标签作为条件)使用MNIST手写数据集。2、演示了如何使用该模型来学习一个多模态模型,并提供了一个应用于图像标记的初步示例,在其中演示了该方法如何生成不属于训练标签的描述性标记。(利用CGAN自动为图像打标签)

二、介绍

简单的介绍GAN的优势;传统的Unconditioned GAN不能控制生成器生成数据的模式(mode),为模型加上额外的信息作为条件,可以引导数据生成过程。条件信息可以基于图像修补的部分,或者数据的多模态信息。CGAN可以应用于图像修补,多模态深度学习。

Notes: 多模态深度学习是深度学习中的一类特殊问题.,多模态是在输入的类型上有了改变,指多个类型的输入。例如: 通过红外,图像,声波等多种形态的输入,来预测场景中是否有人存在,或者做多类型的标注问题。多模态信息融合可以用到目标检测上。

三、相关工作

图像标记的多模式学习的两个挑战及可能的解决方法:

  • 庞大的预测输出类别
  • 大部分工作集中在输入输出一对一映射(但实际中,存在一对多的映射。比如一张图片由于不同人来标记有不同的注释但是描述的都是同一张图片。)

解决方法:

  • 帮助解决第一个问题的方法之一是利用来自其他模式的额外信息。
  • 解决第二个问题的一种方法是使用条件概率生成模型,将输入作为条件变量,将一对多映射实例化为条件预测分布。(在后面CGAN的loss函数上可以体现出来。)

四、CGAN网络结构

如果生成器G和鉴别器D都以一些额外的信息y为条件,则生成对抗网络可以扩展到条件模型。y可以是任何类型的辅助信息,例如类标签或来自其他模式的数据。我们可以通过输入y到鉴别器和生成器作为额外的输入层来实现条件设置。在生成器中,先前的输入噪声p(z)和y被组合在联合隐藏表示中。在鉴别器D中,x和y组合在一起作为输入,送到判别函数。

可以看到,和原始GAN一样,整体还是基于多层感知器。在原生GAN中,判别器的输入是训练样本x,生成器的的输入是噪声z,在conditional GAN中,生成器和判别器的输入都多了一个y,这个y就是那个条件。以手写字符数据集MNIST为例,这时候x代表图片向量,y代表图片类别对应的label(one-hot表示的0~9)。
对于判别器D,训练的时候,输入的时候把训练样本x(或G产生的样本)和y同时输入,在第一个hidden layer后合并,最后的输出是在y的条件下训练样本x(或G产生的样本)是真样本的概率,然后反向优化。
对于生成器G,输入是噪声z和y,经过感知器最终输出产生的标签y对应的图片,然后把生成的图片和y送入判别器,进而反向优化。

 

CGAN的优化目标:

五、实验

a.单模态(mnist实验)

以mnist数据集的lable(0-9)作为条件信息,编码为one-hot向量(独热码)。

G网里,噪声z和label y分别被映射到大小分别为200,1000的隐藏层,激活函数都是Relu。再用大小为1200的隐藏层(combined hidden ReLu layer)拼接这两个层的输出,再接着进行生成784(28*28)图片的过程。

D网也顺从这个思路,结合(combine)img和label,一起判断打分,判断真假,最后一层是sigmoid。

这里比较简单,具体的训练过程上面已经提到了,下图就是给训练好的生成器指定的标签y和噪声z,生成的对应图片。

b.多模态(自动为图片打上标签)

在本节中,我们将演示使用多标签预测来自动标记图像,并使用条件对抗网生成基于图像特征的标记向量(可能是多模式的)分布。

首先是数据集的特殊性。像Flickr这样的照片网站是一个丰富的标记数据源,其形式是图像及其相关的用户生成元数据(UGM user-generated metadata ),特别是用户标记。这些标记在语义上更接近人们对图片的描述,而不是简单地进行目标识别。UGM 的另一个特殊之处是近义词,不同人对同一个图片有着不同的描述,但描述的都是同一个对象。因此用一个有效的方法来规范化这些标签变得很重要。概念词嵌入(Conceptual word embeddings)在这里非常有用,因为相关的概念词最终由相似的向量表示。

简单来说,这个实验最终的目的就是把一副图像作为条件y,希望生成的文本(单词)都是和图片相关的,这样就可以进行图像的自动标注。

具体的实现还是基于上面的网络结构,只是每层的神经元数量有变化。在这个实验中,条件y就是图片,已经利用在ImageNet训练好的网络的FC层的feature来表示成了一维向量。训练样本x是在经过训练好的language model上同意转换成了尺寸为200的词向量,这些样本时来自于用户标注。
然后进行训练,下图是实验结果,Generated tags是在同一个条件y下通过给不同的噪声生成100个样本,然后挑出了Top10.

这个模型的训练分为以下几个步骤:

  • 首先分别用两个数据集(ImageNet,YFCC100M)提前训练两个模型,提取图像和tag(词向量)的特征,以便于在GAN中结合(combine)两者特征进行训练。
  • 然后我们用训练好的两个模型来提取 MIR Flickr 25,000 dataset的图像和标签特征。在实验中,去掉了没有标签的图像,一个图像有多个标签的(一张图有多个描述词),我们在训练集中重复它,image 和其中一个标签作为训练数据,重复至用上了它的所有标签。

为了进行评估,我们为每幅图像生成100个样本,并使用词汇表中词汇向量表示的余弦相似性来找到最接近的前20个单词。然后我们从100个样本中选出10个最常见的单词。

六、未来工作

这篇文章的工作更像是一种准备工作,阐述了CGAN的潜力,和一些应用场景。在将来的探索中,我们希望提出更好的模型。

在当前的实验中,我们只单独使用每个标签。但是如果同时使用多个标签(有效地将生成问题作为“集合生成”问题之一),我们希望获得更好的结果。另一个明显的方向是建立一个共同的训练方案来学习语言模型。以前有工作表明,我们可以学习适合特定任务的语言模型。

七、思考

现在大多数网络数据都存在标签缺失的情况,例如这篇论文用到的MIR Flickr数据集,25000张图片的标签中,出现20次以上的词才1300多,而且其中有很多标签词并不与图片内容有关,例如notmycat,图片中奖杯信息,蛋糕上人名等词语。所以文章中提到的能够自动生成标签的方法很有意义。但是,分析最后生成标签的结果,还有有不少生成标签是与图像内容无关的,考虑可以想办法改进。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

理解Vue源码,从0开始撸了一个简版Vue

vue 的双向绑定、虚拟dom、diff算法等等面试常见问题你可能在几年前就学过了,其中有些人可能看过Vue的源码,了解过Vue是如何实现数据监听和数据绑定这些技术的。不过让从零开始实现一个 vue,你可以吗? 模板语法其实早就存在,在V…

03-学成在线内容管理模块之课程查询

课程查询 需求分析 教学机构人员点击课程管理按钮进入课程查询界面,在课程列表页面输入查询条件查询课程的信息 当不输入查询条件时默认会全部课程信息,输入查询条件会查询符合条件的课程信息,约束条件是本教学机构查询本机构的课程信息 数据模型(model工程) 课程查询功能…

MAT工具定位分析Java堆内存泄漏问题方法

原创/朱季谦 一、MAT概述与安装 MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题。该工具提供了两种使用方式,一种是插件版,可以安装到Eclipse使用,另一种是独立版…

论文浅尝 | 用于开放式文本生成的事实增强语言模型

笔记整理:李煜,东南大学硕士,研究方向为知识图谱 链接:https://proceedings.neurips.cc/paper_files/paper/2022/hash/df438caa36714f69277daa92d608dd63-Abstract-Conference.html 1. 动机 生成式语言模型(例如 GPT-3…

【图论】最小生成树(python和cpp)

文章目录 一、声明二、简介三、代码C代码Python代码 一、声明 本帖持续更新中如有纰漏望指正! 二、简介 (a)点云建立的k近邻图(b)k近邻图上建立的最小生成树 最小生成树 (Minimum Spanning Tree,简称 M…

使用Tauri开发桌面应用

本文是对视频 Tauri入门教程[1]的学习与记录 Tauri官网[2] 对 node版本有要求 创建项目及目录介绍: 项目的目录结构如下 可以安装推荐的插件 执行npm run tauri build出错,根据 https://github.com/tauri-apps/tauri/issues/7430 执行 yarn add -D tauri-apps/cli && y…

缺陷预测(一)——论文复现

运行CGCN文件 问题一:CNN输入维度的问题出现的问题解决问题原因 问题二:mix时,输入的train_in和train_gen.inputs数据格式不一致出现的问题解决问题 最终结果 问题一:CNN输入维度的问题 出现的问题 数据集改好之后,出…

Python Flask: 构建轻量级、灵活的Web应用

大家好,我是涛哥,今天为大家分享 Python Web开发框架 Flask,文章3400字,阅读大约15分钟,大家enjoy~~ Flask是一个流行的Python Web框架,以其轻量级、灵活和易学的特性受到开发者的喜爱。本文将深入探讨Flas…

微服务简单理解与快速搭建

分布式和微服务 含义 微服务架构 微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服…

C语言进阶之指针(2)

✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》 🎈跟着猪巴戒,一起学习C语言🎈 目录 前情回顾 1.数组参数,指针参数 1.1一维数组传参 1.2二维数组传参 1.3一级指针传参 1.4二级指针传参 思考&#xf…

算法萌新闯力扣:同构字符串

力扣题:同构字符串 开篇 对于字符串相关的题目,哈希表经常会使用到,这道题更是如此,还用到了两个哈希表。拿下它,你对字符串题目的理解就会更上一层楼。 题目链接:205.同构字符串 题目描述 代码思路 看完题目后&a…

Django实战项目-学习任务系统-任务完成率统计

接着上期代码内容,继续完善优化系统功能。 本次增加任务完成率统计功能,为更好的了解哪些任务完成率高,哪些任务完成率低。 该功能完成后,学习任务系统1.0版本就基本完成了。 1,编辑urls配置文件: ./mysi…

原论文一比一复现 | 更换 RT-DETR 主干网络为 【ResNet-50】【ResNet-101】【ResNet-152】| 对比实验必备

本专栏内容均为博主独家全网首发,未经授权,任何形式的复制、转载、洗稿或传播行为均属违法侵权行为,一经发现将采取法律手段维护合法权益。我们对所有未经授权传播行为保留追究责任的权利。请尊重原创,支持创作者的努力,共同维护网络知识产权。 更深层的神经网络更难训练。…

香港科技大学广州|机器人与自主系统学域博士招生宣讲会—电子科技大学专场!!!(暨全额奖学金政策)

在机器人和自主系统领域实现全球卓越—机器人与自主系统学域 硬核科研实验室,浓厚创新产学研氛围! 教授亲临现场,面对面答疑解惑助攻申请! 一经录取,享全额奖学金1.5万/月! 🕙时间:…

基于谐波参数空间的卷积神经网络自动三维牙齿分割

论文连接:https://www.sciencedirect.com/science/article/abs/pii/S1524070320300151 机构: a英国卡迪夫大学计算机科学与信息学院 b中国科学院大学北京 c中国科学院计算技术研究所北京 d深圳大数据研究院,深圳518172 代码链接&#x…

4路光栅尺磁栅尺编码器解码转换5MHz高速差分信号转Modbus TCP网络模块 YL97-RJ45

特点: ● 光栅尺磁栅尺解码转换成标准Modbus TCP协议 ● 光栅尺5V差分信号直接输入,4倍频计数 ● 模块可以输出5V的电源给光栅尺供电 ● 高速光栅尺磁栅尺计数,频率可达5MHz ● 支持4个光栅尺同时计数,可识别正反转 ● 可网…

Looking for downloadable pre-built shared indexes关闭

这个功能很烦,把他关闭就行了 PyCharm的“Looking for downloadable pre-built shared indexes”是指PyCharm IDE中的一个功能,用于搜索和下载可共享的预构建索引。 这个功能的主要用途是帮助开发人员在开发过程中快速地获取和使用预构建的索引,以提高…

算法笔记-第七章-链表(未完成)

算法笔记-第七章-链表 链表的遍历链表结点的个数链表的头插法!链表删除元素链表反转例题思路一:原地反转思路二:头插法链表去除重复元素(有些复杂了)思路题目一题目二链表的遍历 #include<cstdio> const int N = 100; struct Node {int data, next;//表示的是当前数据和…

基于K7的PXIPXIe数据处理板(Kintex-7 FMC载板)

基于PXI&PXIe总线架构的高性能数据预处理FMC 载板&#xff0c;板卡具有 1 个 FMC&#xff08;HPC&#xff09;接口&#xff0c;1 个 X8 PCIe 和1个PCI主机接口&#xff1b;板卡采用 Xilinx 的高性能 Kintex-7 系列 FPGA 作为实时处理器&#xff0c;实现 FMC 接口数据的采集…

网络安全-学习手册

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习…