【平价数据】SimGAN:活用合成数据和无监督数据
来源:互联网 发布:2015年疲劳驾驶数据 编辑:程序博客网 时间:2024/04/29 21:32
Shrivastava, Ashish, et al. “Learning from simulated and unsupervised images through adversarial training.” IEEE Conference on Computer Vision and Pattern Recognition.2017
概述
本文是Apple在机器学习领域的首秀,同时也是CVPR 2017的两篇Best Paper之一。
在使用深度学习结局实际问题时,我们常常遇到以下的局面:
本文举了两个例子:视线方向识别和手势识别。
- 两种问题的标定都十分困难,使得监督数据昂贵而稀少。
- 可以用CG模型合成数据。这些数据的视线方向和手关节位置已知,但画面不够真实。
本文利用GAN思想,通过无监督数据提升合成数据的质量,同时不改变合成数据的标记。之后使用优化过的合成数据训练模型。
方法
系统框架
类似GAN网络,本文系统中包含两个核心模块
- 改善器
R :输入合成数据,输出改善结果。 - 鉴别器
D :判断输入是真实数据还是经过改善的合成数据。
注意,训练的最终目的是生成改善后的合成数据。而不是改善器或者鉴别器本身。
优化
相关的代价有三种
- 代价1:鉴别器识别改善图像的错误率。
- 代价2:鉴别器识别真实图像的错误率。
- 代价3:改善图像和原始图像的逐像素差。
其中,代价3保证改善图像和原始图像的类标相同。例如,保证手势姿态不变,保证视线方向不变。除了直接比较像素,还可以提取图像特征之后在做差。
在每一轮迭代中:
- 最大化代价1,最小化代价3,优化改善器
R 的参数。共执行Kr 次SGD。 - 最小化代价1,最小化代价2,优化鉴别器
D 的参数。共执行Kd 次SGD。
经过若干次迭代得到的改善器
- 品质和真实图像难以分辨
- 保持合成样本原有类标不变
改进:局部损失
问题
随着迭代进展,鉴别器
举例:真实图像中可能只包含几个固定视线方向的样本,但合成图像的视线方向则均匀而连续。于是鉴别器“剑走偏锋”地以视线方向作为真假样本的判别标准。1
解决
本文在训练鉴别器
除了避免全局信息引入artifact之外,这种方法还能够增加训练样本的数量。
改进:历史信息
问题
随着每一次迭代,改善器
- 对抗训练不收敛2
- 改善器
R 会重新引入之前出现过、但已经被鉴别器D 忘记的artifact
解决
本文设置一个buffer来储存迭代中生成的改善图像。
- 在每个大小为
b 的mini-batch中,有一半数据来源于这个buffer,另一半来源于当前改善器R 的输出。 - 完成迭代后,用当前改善器的输出替换
b/2 个buffer中的样本。
实验
视线方向估计
数据
真实数据:214K的MPIIGaze数据库
合成数据:1.2M使用UnityEyes生成图像,使用单一渲染环境
由于合成图像和真是图像在颜色上差别较大,在计算代价3时使用RGB三通道平均值之差代替逐像素差。
由于视线方向估计是在灰度图上进行,使用灰度代价即可。
结果
改善图像(中)能够保持原始图像(左)的视线方向,同时其品质接近真实图像(右),即使真人也难以分辨。
使用改善图像训练的分类器,效果大大超出使用原始合成图像训练的分类器。
与state of the art相比,错误率也有明显降低。
手势识别
数据
真实数据:NYU hand pose。70K训练,8K测试。未标定。裁剪缩放为224×224深度图像。
合成数据:数量未提及。包含14个关节标定结果。
结果
改善数据能够逼真模拟真实数据中的噪声。
使用改善数据训练的分类器指标具有明显优势。
- 原文未详述,此处为个人理解。 ↩
- 原因未详述 ↩
- 【平价数据】SimGAN:活用合成数据和无监督数据
- 【平价数据】GAN用于半监督学习
- 机器学习中的标签数据和无标签数据(监督、非监督和半监督学习)
- 数据挖掘之无监督学习篇
- 无监督对话数据清洗利器:Data Purification Framework
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- 【Scikit-Learn 中文文档】无监督学习: 寻求数据表示
- PAT乙级 1026. 程序运行时间(15)--浮点数四舍五入,格式化输出
- 【自考】-数据结构第二遍导图
- TCP/IP协议的学习
- 理解Profiles, Services,Characteristics,UUID等值
- 用xshell5连接ubuntu系统教程,以及一些其它的问题
- 【平价数据】SimGAN:活用合成数据和无监督数据
- ScrollView can host only one direct child
- LeetCode
- SQLI labs 第七课(神游太虚)
- 点击事件不响应的问题
- [读书笔记] 《Python 机器学习》
- jquery的一些小小实例
- http://www.imooc.com/note/460?sort=last
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能