【论文阅读】(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,图片中奖杯信息,蛋糕上人名等词语。所以文章中提到的能够自动生成标签的方法很有意义。但是,分析最后生成标签的结果,还有有不少生成标签是与图像内容无关的,考虑可以想办法改进。

 

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

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

相关文章

python采集小破站视频弹幕

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用]: Python 3.8 Pycharm模块使用]: import requests 数据请求 import jieba 分词 import wordcloud 词云 import re 正则通过爬虫程序采集数据 分析数…

海康设备、LiveNVR等通过GB35114国密协议对接到LiveGBS GB28181/GB35114平台的详细操作说明

一、LiveNVR通过GB35114接入LiveGBS 1.1 开启LiveGBS 35114功能 信令服务livecms.ini配置文件中[sip]增加一行gm1 启动LiveCMS 1.2 生成设备端证书 我们用LiveNVR做为设备端向LiveGBS注册,这里先生成LiveNVR的设备证书,并将LiveNVR的设备证书给LiveGB…

每日一题----昂贵的婚礼

#include <iostream> #include <algorithm> #include <cstring> #include <queue> #include <vector> using namespace std; //本题酋长的允诺也算一个物品,最后一定要交给酋长&#xff0c;那么等级不能超过酋长的等级范围const int N 150 * 15…

【漏洞复现】浙大恩特客户资源管理系统 fileupload.jsp 任意文件上传漏洞

文章目录 前言声明一、系统概述二、漏洞描述三、资产探测四、漏洞复现五、修复建议 前言 杭州恩软信息技术有限公司客户资源管理系统fileupload.jsp接口存在安全漏洞&#xff0c;攻击者可通过上传恶意脚本应用&#xff0c;获取服务器控制权限。 声明 请勿利用文章内的相关技术…

day2324_jdbc

今日内容 零、 复习昨日 一、作业 二、SQL注入 三、PreparedStatement 四、事务 五、DBUtil 零、 复习昨日 一、引言 1.1 如何操作数据库 使用客户端工具访问数据库&#xff0c;需要手工建立连接&#xff0c;输入用户名和密码登录&#xff0c;编写 SQL 语句&#xff0c;点击执行…

PC端微信@所有人逻辑漏洞

&#xff08;一&#xff09;过程 这个漏洞是PC端微信&#xff0c;可以越权让非管理员艾特所有人&#xff0c;具体步骤如下 第一步&#xff1a;找一个自己的群&#xff08;要有艾特所有人的权限&#xff09;“123”是我随便输入的内容&#xff0c;可以更改&#xff0c;然后按c…

深度学习_13_YOLO_图片切片及维度复原

需求&#xff1a; 在对获取的图片进行识别的时候&#xff0c;如果想减少不必要因素的干扰&#xff0c;将图片切割只对有更多特征信息的部分带入模型识别&#xff0c;而剩余有较多干扰因素的部分舍弃&#xff0c;这就是图片切割的目的&#xff0c;但是又由于模型对图片的维度有较…

【Docker】五分钟完成Docker部署Java应用,你也可以的!!!

文章目录 前言一、部署步骤1.项目结构2.Dockerfile3.docker-compose.yml4.启动5.常用命令 总结 前言 本文基于Docker Compose部署Java应用&#xff0c;请确保你已经安装了Docker和Docker Compose。 十分钟就能上手docker&#xff1f;要不你也试试&#xff1f; 一、部署步骤 1…

GPT 5也要来了?看看​OpenAI CEO Sam Altman最近的采访

OpenAI CEO Sam Altman 在接受金融时报采访中&#xff0c;透露了更多OpenAI的计划&#xff1a;他们正在寻求从微软获得更多资金支持&#xff0c;以构建真正的通用人工智能&#xff08;AGI&#xff09;。同时还透露了关于GPT 5的一些信息和公司AGI愿景目标&#xff01;他认为&am…

软件测试/测试开发丨接口自动化测试学习笔记,加密与解密

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/28019 一、原理 在得到响应后对响应做解密处理&#xff1a; 如果知道使用的是哪个通用加密算法的话&#xff0c;可以自行解决。如果不了解对应的加密算法…

C++入门(1)—命名空间、缺省参数

目录 一、什么是C 1、C关键字(C98) 2、C兼容C 二、C程序预处理指令 三、命名空间 1、命名冲突 第一种&#xff1a; 第二种&#xff1a; 2、域作用限定符 3、实现命名空间 4、命名空间冲突 5、访问命名空间 6、命名空间“std” 四、输入输出 1、定义 2、自动识…