程序员

Learning from Simulated and Unsu

2019-03-02  本文已影响11人  hyhchaos

reference: https://arxiv.org/abs/1612.07828

作者 Ashish Shrivastava, Tomas Pfister, Oncel Tuzel, Josh Susskind, Wenda Wang, Russ Webb

Abstract

随着图像领域的进步,用生成的图像训练机器学习模型的可行性越来越高,大有避免人工标注真实图像的潜力。但是,由于生成的图像和真实图像的分布有所区别,用生成的图像训练的模型可能没有用真实图像训练的表现那么好。为了缩小这种差距,论文中提出了一种模拟+无监督的学习方式,其中的任务就是学习到一个模型,它能够用无标注的真实数据提高模拟器生成的图片的真实性,同时还能够保留模拟器生成的图片的标注信息。论文中构建了一个类似于 GANs 的对抗性网络来进行这种模拟+无监督学习,只不过论文中网络的输入是图像而不是随机向量。为了保留标注信息、避免图像瑕疵、稳定训练过程,论文中对标准 GAN 算法进行了几个关键的修改,分别对应“自我正则化”项、局部对抗性失真损失、用过往的美化后图像更新鉴别器。 论文中表明这些措施可以让网络生成逼真的图像,并用定性的方法和用户实验的方法进行了演示;定量测试则是用生成的数据训练模型估计目光注视方向、估计手部姿态。结果表明,经过模型美化后的生成图像可以为模型表现带来显著提升,在 MGIIGaze 数据集中不依靠任何有标注的真实数据就可以取得超过以往的表现。


image.png

Introduction

现在网络容量越来越大,对大型标注数据集的需求也在增长。但是给数据集进行标注是一个很贵且耗时的事。所以,使用合成图像进行训练变得有吸引力。但是通过合成图像训练出的网络会学到合成图片的特征,与实际图片会有差别。
所以本文使用了一个S+U(Simulated+Unsupervised)方法来将合成图片变得更真实。
方法概要如下图


image.png

本文贡献:
1、提出S+U学习来用未标记的真实数据修正合成图像
2、用了对抗损失和自正则化损失来帮助修正网络改善合成图片
3、对GAN进行了几处修改来稳定训练过程以及防止修正网络生成人工痕迹
4、通过大量有效实验验证了方法,取得了很好的结果

Related Work

基本都是GAN相关文章

S+U Learning with SimGAN

S+U学习的目的是用一系列未经标注的真实数据y_i\in y 来学习一个修正器R_\theta(x),以此修正合成图片x,其中\theta是函数参数。设修正后的图片为\widetilde{x},那么\widetilde{x}:=R_\theta(x)。为了学习\theta,本文提出了以下损失公式:

L_R(\theta)=\sum\limits_{i} l_{real}(\theta;x_i,y)+\lambda l_{reg}(\theta;x_i)

其中x_i是第i个合成训练图像。损失函数的第一部分l_{real}将现实因素加入合成图像,而第二部分l_{reg}保留了标注信息。

Adversarial Loss with Self-Regularization

为了使合成图片变得真实,一个理想的修正器需要对抗鉴别器D_\Phi来辨别真实图片和修正过的图片,其中\Phi是鉴别器的参数。鉴别器通过最小化以下损失来更新参数。
L_D(\Phi)=-\sum\limits_i log(D_\Phi(\widetilde{x}_i))-\sum\limits_j log(1-D_\Phi(y_j))
本文将D_\Phi的输出当作输入图片是合成的还是真实图片的概率。输入是随机采样的,且通过SGD进行收敛。在本文的实现中,现实损失函数l_{real}的公式如下:
l_{real}(\theta;x_i,y)=-log(1-D_\Phi(R_\theta(x_i)))
通过对损失函数的最小化,就能渐渐让鉴别器区分不出真实和修正图片。
为了生成真实图片,修正网络要保留模拟器中的标注信息。比如,视线估计中,转换不能修改视线方向;在手势估计中,关节的位置不能改变。这是确保修正后的图片还能使用模拟器的标注的核心要素。
为了达到这个目标,本文提出了通过使用自正则化损失来最小化合成与修正图片的特征迁移中单个像素的差距。
l_{reg}=\|\Psi(\widetilde{x})-x\|_1
其中\Psi是从图片空间到特征空间的映射,\|.\|_1是L1正则。特征迁移可以是恒等映射,比如
\Psi(x)=x,或者通道平均,或者卷积神经网络。在本文中用的是恒等映射。所以完整的损失函数如下:
L_R(\theta)=-\sum\limits_i log(1-D_\Phi(R_\theta(x_i)))+\lambda\|\Psi(R_\theta(x_i))-\Psi(x_i)\|_1

本文使用不带步幅和池化的全卷积神经网络,这样就能在保持保持图片全局结构和标注不变的情况下进行像素级的修改。本文通过最小化L_R(\theta)L_D(\Phi)来训练修正器和鉴别器,当更新R_\theta的参数时,固定\Phi的值,反之亦然。整个训练过程如算法1所示

image.png

Local Adversarial Loss

另一个修正器的关键要求是它应当在不引入任何人为因素的情况下对真实图片建模。当在训练一个单独的鉴别器网络时,修正器往往过分强调一些图片特征来欺骗鉴别器,导致引入了漂移和人工因素。一个关键点是任何修正过的图片中的局域斑点和真实图片中的斑点应当有相似的统计信息。本文中将鉴别器设计成输出为w*h维概率图的全卷积网络。w*h是图片中局部斑点的数量。当训练修正器时,对所有概率图中的块算交叉熵损失函数。如图3所示


image.png

Updating Discriminator using a History of Refined Images

另一个问题是鉴别器的训练过程仅仅针对最近的修正图片。这就会导致
1、对抗训练的分歧
2、修正器再度引入了鉴别器忘记的人为因素
为了增加鉴别器的稳定性,本文会使用历史的修正图片,而不是仅仅在当前批次中的。所以设置了一个大小为B的缓冲区保存之前的训练图片。在鉴别器的每次训练中,当前批次的b张图取一半,另外在缓冲区中取b/2张。缓冲区的大小是不变的,在每次训练之后,随机将当前训练批次中的一半替换缓冲区中的图。整个过程如下图所示


image.png

Experiment

使用MPIIGaze数据集,

Qualitative Results

如图5所示,学会了纹理和虹膜


image.png

Self-regularization in Feature Space

如果将恒等映射换成RGB通道平均,那么还能学到真实的颜色,如图6所示


image.png

‘Visual Turing Test’

找人来看,表示区分不出,结果表1所示


image.png

Quantitative Results

用合成图片及修正图片来训练视觉定向CNN,确实结果有差距,有22.3%的增长。如果使用更多图片,比如全部的训练集,那么还会有更大的增长。数据如表2所示


image.png

在修正图片上训练的CNN在MPIIGaze数据集上相比其他模型有21%的提升,如表3所示


image.png

Preserving Ground Truth

对合成图片的修正没有到改变标注信息的程度

Implementation Details

主要介绍了网络的构造

Hand Pose Estimation from Depth Images

另一个测试数据集

Ablation Study

本文表示使用历史数据和使用局部对抗损失来修正图片会更真实
如下图所示


image.png image.png

Conclusions and Future Work

未来准备对噪声分布建模来针对同个合成图片生成几张修正图片。也会把目光放在视频的修正上。

上一篇 下一篇

猜你喜欢

热点阅读