CGAN解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

最近看了好多大神的博客之后越来越觉得自己写的简直不忍直视,不过后来发现不找点事情做就天天吃鸡打dota颓废的不行,,,,
这两个月天天搞gan,做了好多实验,有了点感觉,准备写几篇博客,算是一个总结,其中会附上自己做的一些实验,说说图像方面gan存在的问题、主要的模型等等,先从CGAN开始。
gan那篇论文里,作者用mlp的D和G在mnist,tfd,cifar10上做了实验,用卷积的D和反卷积的G在cifar10上做了实验,看上去效果是不错的,但是亲手做过实验的表示,作者很有可能是从几十张中选出了几张能看的,而且就我的实验结果来看,mode collapse的现象还是挺严重的,当然也可能我受制于硬件效果没那么好。文章在future work这一块列出了未来可以做的方向,其中就包括了五个月之后的这篇CGAN,也就是我今天要说的。
先看paper吧,原理上这篇paper其实很简单,就是在原有的gan上加了一个先验y,公式如下:
1
那么主要的问题就回到了工程上,这里的D和G作者用的都是MLP,结构如下:
2
原文如下:“We trained a conditional adversarial net on MNIST images conditioned on their class labels, encoded as one-hot vectors.
In the generator net, a noise prior z with dimensionality 100 was drawn from a uniform distribution within the unit hypercube. Both z and y are mapped to hidden layers with Rectified Linear Unit (ReLu) activation [4, 11], with layer sizes 200 and 1000 respectively, before both being mapped to second, combined hidden ReLu layer of dimensionality 1200. We then have a final sigmoid unit layer as our output for generating the 784-dimensional MNIST samples.
The discriminator maps x to a maxout [6] layer with 240 units and 5 pieces, and y to a maxout layer with 50 units and 5 pieces. Both of the hidden layers mapped to a joint maxout layer with 240 units and 4 pieces before being fed to the sigmoid layer. (The precise architecture of the discriminator is not critical as long as it has sufficient power; we have found that maxout units are typically well suited to the task.)

这里的G引入了一个one hot encoder独热编码,其实就是把一个有m个状态的变量变成了m个有两个状态的变量,比如2就是0010000000,5就是0000100000,然后把这个作为输入,经过一层全连接后合并到一起,最后output是784个单元。
而D的话作者采用了maxout,当然作者也说,只需要D有足够的鉴别能力就可以,我采用的是cnn作为D,但是后来我知道了perfect discriminator的问题,现在想想可能对于mnist来说mlp就够了,关于完美鉴别器之后再讲。
以下是作者的实验结果:
3
接下来作者做了一个比较有意思的,也是工业上可能会有用的,就是利用UGM(user generated metadata)去给图像生成标签,原文说的很复杂,但是说的很专业,贴出来作为参考:“In this section we demonstrate automated tagging of images, with multi-label predictions, using conditional adversarial nets to generate a (possibly multi-modal) distribution of tag-vectors conditional on image features.”
简单讲一下原理,这里的G有两个input,一个是size100的noise,一个是size4096的image feature vector(类比one hot vector),output是word vector,结构是mlp;D的input也是两个,一个是500size的word vector,一个是size1200的image feature vector,输出是一个代表生成数据真假的值。
综上,CGAN提出了一种可以人为控制的生成模型,并从工程上讲了如何去实现。

目录
相关文章
|
数据可视化
ShapeNet数据集及dataset代码分析
ShapeNet数据集及dataset代码分析
627 0
|
XML 存储 数据格式
【30】yolov5的数据集准备 | 处理Pascal voc格式的数据集
【30】yolov5的数据集准备 | 处理Pascal voc格式的数据集
458 0
【30】yolov5的数据集准备 | 处理Pascal voc格式的数据集
|
机器学习/深度学习 监控 数据可视化
【31】yolov5的使用 | 训练Pascal voc格式的数据集
【31】yolov5的使用 | 训练Pascal voc格式的数据集
995 0
【31】yolov5的使用 | 训练Pascal voc格式的数据集
|
28天前
|
计算机视觉
数据集学习笔记(三):COCO创建dataloader用于训练
如何使用COCO数据集创建dataloader进行训练,包括安装环境、加载数据集代码、定义数据转换、创建数据集对象以及创建dataloader。
38 5
|
28天前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
37 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
4月前
|
机器学习/深度学习 存储 算法
查询模型的方法knn_model.pkl
【7月更文挑战第28天】
41 3
|
3月前
|
API 算法框架/工具
【Tensorflow+keras】使用keras API保存模型权重、plot画loss损失函数、保存训练loss值
使用keras API保存模型权重、plot画loss损失函数、保存训练loss值
30 0
|
机器学习/深度学习 自然语言处理 算法
KMeans算法全面解析与应用案例
KMeans算法全面解析与应用案例
1315 0
|
机器学习/深度学习 Linux PyTorch
Dataset and DataLoader 加载数据集
Dataset and DataLoader 加载数据集
144 0
|
6月前
|
机器学习/深度学习 缓存 测试技术
Nice Trick | 不想标注数据了!有伪标签何必呢,Mixup+Mosaic让DINO方法再继续涨点
Nice Trick | 不想标注数据了!有伪标签何必呢,Mixup+Mosaic让DINO方法再继续涨点
201 0