【论文阅读】A Survey of Image Synthesis Methods for Visual Machine Learning --- 图像生成,计算机视觉

论文原文地址:A Survey of Image Synthesis Methods for Visual Machine Learning

,是对目前image synthesis方法的一个总结和归类。本文是从计算机图形学的角度研究的(通过构建3D模型,然后用虚拟照相机模拟光线效果得到image;用光栅化和光线追踪对image做rendering得到新的image;等),所以如果想了解关于机器学习方面的图像合成、图像生成等内容(比如用VAE,GAN等方法生成image),本文可以不用看了。

本博客基本上是对上述论文原文的翻译,但是具体内容根据个人的理解和表达方式所写,没有对原文进行逐句翻译。欲知详情可自行阅读原文。

摘要:

为机器学习应用所设计的image synthesis提供了一种方法:有效地生成高质量的图像训练数据,同时控制生成过程,以提供图像的最佳分布和图像内容的多样性。随着深度学习应用的发展,合成数据在训练pipeline中很有可能成为非常重要的部分。最近一段时间,大量的训练数据生成方法被提出。image synthesis未来的发展,急需将这些方法放在一起进行比较和分类。本篇综述提供了视觉机器学习方面现存的imag synthesis方法的一个完整列表。这些方法以图像生成的context进行归类,采用基于modelling和rendering的分类标准,同时对这些方法所关注的计算机视觉应用进行一个分类。我们关注这些方法的计算机图形学方面,以促进未来的机器学习图像生成。最后,根据质量和性能对每种方法进行了评估,展示了其预期的学习潜力。本文作为一个综合参考,同时针对应用和数据开发方的两个群体。本文提到的所有方法和论文可以在以下链接中找到:A Survey of Image Synthesis Methods for Visual Machine Learning

一、引言:

我们正在见证机器学习的广泛应用,尤其是深度学习DL方面。在很多领域,比如推荐系统、医药、NLP、CV等,DL都是非常关键的部分,引领了state-of-the-art。DL中的技术和计算资源都在快速发展,但是有限的训练数据及其质量问题成为了它的瓶颈。无论一个DL模型有多么强大的学习能力,如果它的训练数据不能完整cover原始数据的分布,模型性能一定会受到影响。

数据的获取是困难的,一方面capture原始数据难,一方面有监督问题中数据的标注难以获取(人工标注费时费力,自带标签的数据太少),而且数据的多样性、cover多方面特征也是困难的。因此,充分利用已有的训练数据非常重要。对现有数据进行增强是目前DL中一个重要步骤。data augmentation虽然可以看做是一种数据合成和生成,但是合成的数据受限于已有数据。因此purely synthetic的数据生成方式逐渐收到更多关注。

对合成数据的需求带来了另一个有意思的改进,如何规范训练数据。比如:针对某些特定场景,oversample复杂数据可能比完美reflect真实数据分布更好;为了学习domain randomization,数据可以更加unrealistic。

鉴于image synthesis的重要性,本文对其在计算机视觉领域的方法做一个综述。

【论文阅读】A Survey of Image Synthesis Methods for Visual Machine Learning --- 图像生成,计算机视觉_第1张图片

 本文只关注图像生成过程中的计算机图形学方面,的image data。In computer graphics, image synthesis, or rendering, is used to transform a geometric scene description into an image by simulating or approximating the lighting interactions in the scene and onto the sensor of a virtual camera device.在计算机图形学中,图像合成或渲染是用于将几何场景描述转换为图像,通过模拟或近似光线交互或者虚拟相机设备的传感器。本文对image synthesis的定义进行了限制,因此本文只收录能够create一个独立训练数据集的方法,而不包括只为了做测试进行的数据增加或合成图像的工作。

本文从image generation perspective对image synthesis方法进行分类。重点关注于计算机图形学方面,也就是scene modelling和rendering。分类同时也考虑这些方法中训练数据在哪些计算机视觉应用中使用。----------就是说本文的分类依据和标准。

数据问题将会是未来DL中最重要的问题。而image synthesis就是解决一系列数据问题的关键。同时在训练数据的生成中仍然存在许多问题需要我们探讨解决,比如生成图像和真实图像之间的gap;生成场景描述这类问题in an optimal sense。

总之,本文主要贡献点在于:

  • 对image formation和rendering的背景介绍,包括传统的和近来learning-based的image synthesis技术。(第二章)
  • 从图像生成的角度对视觉中image synthesis方法的归类总结。同时分析从合成的训练数据中获益的一些计算机视觉应用。(第三、四章)
  • 对image synthesis目前方法的survey和overview。(第五章)
  • 对这些方法的定性评估,主要关注使用synthesized数据时的模型性能和这些数据的复杂性。(第六章)
  • 对目前使用合成训练数据的ML的situation的讨论,对未来主要的challenges和opportunities的讨论。(第七章)

二、背景:

本章是介绍image formation和synthesis的背景的。

2.1 历史回顾

直到1970s,一些基础的图像合成工作才出现,比如shading着色、bump mapping凹凸贴图、ray tracing光线追踪。随后由于计算机游戏、广告、医疗、虚拟现实、科学、工程等应用场景的出现,计算机图形学才开始爆发。

然后ML领域逐渐发展,Bayes's Theorem贝叶斯理论,least squares最小二乘法,Markov chains马尔科夫链,thingking machines,Perceptron感知机,RNN,back-propagation反向传播,Reinforcement learning强化学习,CNN等等。同时许多techniques也发展了起来,dropout,batch normalizationg,residual connections残差网络等。

但是计算机视觉和计算机图形学generated images之间的交互直到1980s才出现。optical flow需要真是标注数据,而人工标注基本上不可能,因此optical flow成了最依赖于合成数据的领域。2011年Baker等人引入了Middlebury数据集,一个独立的可以学习optical flow的训练集才available。从那以后,图像训练数据的生成开始发展。

最近5年,semantic segmentation语义分割非常火。它的人工标注虽然可行但是费时,所以它也成为了需要synthesis数据的重要领域。

还有其他任务,比如行人检测,姿势预测,目标检测,会使用合成的训练数据。

总之,以后synthesis数据非常重要。

2.2 视觉数据生成

visual data generation的过程可以分成两个部分:content/scene generation(生成特征,这些特征构成了图像的环境)和rendering(模拟环境中的光线变化,以及照相机或者其他传感器如何measure这个世界)。用于ML算法的训练和测试data应该满足以下要求(用来说明generated数据也应该满足这些要求,那些synthesis方法生成出的数据要满足):

  • 生成数据的特征是多样化的,覆盖特征内尽可能多的领域,以代表真实数据的特征分布。
  • 从生成数据到真实数据的shift是最小的,要么直接合成要么用domain transfer model可得。
  • 最关键的是生成数据的注释和meta-data一定是能够自动获得且是高质量的。
  • 数据的生成过程是scale easily的,both内容生成和渲染模拟部分。

然后给出content creation和iamge synthesis的一些基本原则。

content creation就是生成虚拟世界、元素和环境的过程。

一种方式是直接生成完整的虚拟世界,包含所有的元素和特征,然后使用虚拟的传感器作用于它,就得到images,videos等。这种方法通常借助于3D工具,而且依赖人工和艺术作品,且生成的世界中元素有限,不够好。

另一种方式是只生成需要的元素,然后用虚拟传感器获取结果。但是这种方法比上一种time-consuming(比如,要一个一个元素生成,才能得到每一个的image;而上面的方法直接生成整个世界包含所有元素,就能一下子得到所有image)。然而本方法很实用,这种称之为procedural methods的生成过程相当于对一系列参数进行采样和组合,比如几何设置、材料、光线等,因此生成的虚拟环境可随意设置,改变也方便、内容变化多样。

image synthesis, or rendering,就是估计rendering equation的稳态平衡来进行的。该公式模拟光从光源出发,经过各种物体表面,最终到达相机的过程. 因为光线是无限的,经过的物体也很多,甚至物体内部也会通过光,所以计算量非常大。不同的rendering方法就是在计算量和精确度之间做trade-off。

常用rendering技术分为光栅化(用pixel processing,在计算机游戏引擎中使用更多)和光线/路径追踪(用Monte Carlo方法,在拍摄电影方面使用更多)。光栅化通常更快,因为它用GPU,但是limited,因为通常需要预计算才能得到好结果。光线追踪更普遍,因为可以模拟任意类型的光线传播,适用很多传感器,不需要预计算,在合成数据的需求大量、多样性要求高的情况下,更好。

2.3 learning-based image synthesis

随着DL中生成模型的发展,出现了一种全新的image synthesis类别,不同于传统的方法,比如VAE,GAN等。它们直接作用于pixel space,然后从神经网络产生一个完整的image输出结果。使用GAN的无监督模型通常由一个生成器和一个判别器构成。生成器输入一个来自正态分布或者其他分布的数据,生成一张image;判别器判断生成的image和真实image的真假。生成器要生成尽可能像真的image,骗过判别器;判别器要努力分辨生成的假image。通过它俩的对抗学习,最终模型达到一个平衡状态,意味着生成器生成的image足以以假乱真,使判别器无法区分。但是原始GAN公式有缺点,比如梯度消失、mode collapse。后来者针对这些问题提出了许多解决技巧,比如,Wasserstein GAN等。

原始GAN基本是随机生成image的,为了控制GAN的输出结果,比如分解latent space的维度、控制每个神经元生成结果来做可解释性、将生成分成不同level来做等,人们又研究了很多。

自然 一种GAN和传统方法混合的思路出现了。比如用传统方式生成没有元素、材料、质地、光线的scene,然后用GAN做rendering的工作,最终得到完整image。这样其实相当于image from one domain to another,就是image to image了。

2.4 数据增强

本文限定范围是能产生一个完整training set的image synthesis方法,所以data augmentation也能被算在内。数据增强通常是根据一些预定规则对现有数据进行transform得到的。数据增强在处理过拟合问题、增强领域适应性、增加模型鲁棒性等方面有很好作用。

传统的数据增强可能不太接近image synthesis,但是更复杂的增强方法也有很多呢,也能接近image synthesis,所以本文对大部分的common数据增强方法、一些非传统的方法和策略进行了总结和说明:

  • 简单转换:比如几何转换(旋转平移剪切等),颜色强度转换,模糊,加噪声等;
  • 复杂转换:比如风格改变;
  • 基于学习的:比如用强化学习从许多增强策略中选择对当前任务最好的,用GAN增强数据等;
  • 使用额外的资源:比如从其他地方拿素材补充、增强原始training set;
  • 混合:通常用于分类任务中,将不同类别的object进行拼接插入image等,提高模型的判断力。

想看更多数据增强的内容,参考[SK19](见论文原文参考文献),本文后续不再关注这方面。

三、基于image synthesis的训练数据生成方法的分类

为了方便,本文将image synthesis过程分为两个连续的部分(其实和第二章分成content generation和rendering是一致的):

  1. modelling:构建场景中所有元素的过程,包括目标,材质,光等;
  2. rendering:从场景中得到image的过程,也就是模拟照相机等传感器工作的过程。

【论文阅读】A Survey of Image Synthesis Methods for Visual Machine Learning --- 图像生成,计算机视觉_第2张图片

3.1 modelling

所有元素都可以通过procedurally 或者 non-procedurally的过程产生(一级分类)。

procedurally:使用算法和数学公式来决定元素及其特征。本质上是将生成过程参数化了,因此能应用于很多场景content,并且可控性好、灵活性高、多样性丰富。

non-procedurally:进一步根据如何model分类(二级分类):

  • 数据驱动:给定元素的测量值建立的一个统计模型,比如大小长短胖瘦等,来建模。所以该方法对无法度量的元素就不可model了。通常用于人脸和身体建模;
  • 基于物理规则:根据物理规则构建的模型。比如一个大象比一个猫大10倍的模型可以,而一个猫比一个大象大10倍的模型就不属于这一类,因为它违反了我们世界的物理常识;
  • 不基于物理规则:任何不依赖于物理规则的modelling都属于这一类。通常是随机的scheme,或者是根据科幻或者抽象的内容;

3.2 rendering

从三个方向来区分rendering:

  • 实时渲染 real-time rendering:这种方法要么从实时游戏环境获取合成image,要么使用虚拟模拟器产生实时image。比如,游戏中使用游戏引擎模拟好的场景下,使用开源修改对其进行微调,然后直接获取自己想要的synthetic image;或者直接在游戏的开发平台上做修改得到一个合成图像模型。另一方面,3D开发平台对虚拟场景的建模也非常成熟,很多技术可以用于合成图像。游戏引擎和3D大多使用光栅化方式做rendering,所以计算量大。最近也有探索使用光线追踪或者两者混合方式的技术。最后,除了上面两种,其他类型的模拟器,比如驾驶模拟器、物理引擎等,也可以作为合成数据的来源。
  • 离线渲染 offline rendering:这种方法通常对速度要求不高,可以使用CPU和GPU。不仅可以用光栅化和光线追踪技术,还可以用基于物理的光线追踪(我不明白它和前面的区别是啥。。)。离线渲染是实现照片写实的唯一方法。现有的离线渲染器有独立的,也有集成到开源的或商用3D软件的。
  • 对象注入 object infusion:通常是对一个或多个目标objects做渲染,然后插入其他background中,合成最终的image。本文在该分类下也包含了从image中剪切objects出来,再渲染插入其他image的方法。

四、从计算机视觉看训练数据生成方法

文中表1列举了使用合成数据做训练集、从合成数据训练集中获益的一些计算机视觉应用,最后一列展示了这些应用中使用的合成数据技术。此外,表1还包括了一些对合成数据进行改进的算法。从表1后面的合成方法的发表时间中可以看出,不同应用的发展现状。同时某一种合成数据算法也能适用于多个不同应用,体现了合成数据的重要性和有效性。根据参考文献[Sze10],本文将这些应用大致分为6类,具体分类的应用类别和各自的介绍见原文,跟我想了解的东西关联不大,这里不再详说,表1也见原文。

五、image synthesis方法的overview

本章对许多image synthesis方法做详细的解释说明,为了便于理解,按照第三章中对image synthesis过程的分解来进行讲解。不同方法的介绍顺序按照第四章的应用分类来进行。

先介绍两个重要概念:domain随机化是为了解决生成数据和实际数据之间的gap出现的(也有training data和testing data之间的gap),在生成方法中很普遍。生成数据的来源都是随机的content,因为提供了随机的足够多的content多样性,我们可以认为testing/real数据也是某一种随机结果。另一方面,渲染随机化是将光线条件和照相机参数随机化,这个很直观,模拟真实世界中各种不同的光线条件,和不同的相机。

5.2 feature-based alignment 基于特征对齐 ...... 5.7

这部分对image synthesis方法进行了详细的介绍,包括合成数据的过程、使用的技术等,这些方法大多是从计算机图形学的层面做的合成,而不是机器学习方面合成的。如果想了解的最好去看第五章的原文,博主不研究这个方向,就不写了。

六、定性比较

对上述方法的性能和生成图像的质量做了对比和分析。欲知详情请看原文。

七、讨论

显然,image synthesis非常重要,本文接下来介绍该方向未来可能的挑战和机遇。

optimal image synthesis:最优图像生成,目前合成数据的使用大多是标签数据不容易获得的监督任务中,但是随着合成image质量的发展,会有更多应用使用合成数据。由于合成image的可控性以及可大规模生产数据,未来可以为不同的learning任务创造具有特定性质的训练集,这样当然更好。真实数据有偏置,合成的可以控制没有偏置。

Benchmarking:基准测试,目前大多任务是在合成数据构成的训练集上进行train,然后在真实数据上进行evaluate。然而,随着合成数据的质量提高,可以探索在合成数据上进行模型evaluate。合成数据的多样性能为模型带来更好的普遍性,同时合成数据可以大规模生产,不会受限于实际。就能针对模型的痛点难点,合成有针对性的test数据;或者对一些在实际生活中不容易获取的样例,可以用合成的数据,比如自动驾驶的车祸情况等。另一方面,因为合成数据自带一些meta-info,它们描述目标特征,或者描述模拟场景,比如深度、相机参数、遮挡数据等(这些参数在实际图像中难以获取,或者无法得知)。就可以和其他传感器测量值(real图像也携带的参数)一起用来进一步分析model和data。

Domain gap:目前生成方法的一大难题仍然是synthesis和real的domain gap。原因在scene modelling和rendering中都存在。由于目前photorealistic rendering能够生成非常逼真的图像,那么问题主要在于计算资源,以及模拟所有细节上。此外,如果考虑将合成数据和real数据组合起来,它们之前的差异如何消除也很重要。同时,从real生成synthesis data之间的domain shift比从real data到real data之间generalize 的domain shift更小,这种情况也是存在的。

Learning-based image generation:基于学习的生成方法主要就是GAN,而它的问题在于:还需要进一步控制生成的图像,比如物理限制、更详细的场景信息等;生成结果依赖于训练集,它难以生成outside训练集的图像。一些工作尝试将传统方法(计算机图形学的方法,content generation和rendering)和GAN结合,比如用两个GAN分别控制rendering和scene modelling。另外GAN还可以用来bridge 合成数据和real数据间的 gap,比如无监督的domain adaptation研究。

Privacy and ethics:大数据时代下,图像等数据,很有可能包含个人隐私信息。而合成数据scheme可以保证数据的多样性同时保护个人隐私。

八、总结

ML尤其是DL中的算法的发展很大程度上依赖于其训练数据。image synthesis在生成数据方面的能力是有目共睹的,在数量和质量上都能保证,且生成过程灵活、高度可控。

本文深度总结了视觉ML中的image synthesis方法,从计算机图形学的角度(泪目TAT),基于计算机视觉应用。为了描述和归类这些generation方法,本文将image synthesis过程分为modelling和rendering两个步骤。然后根据不同计算机视觉应用使用的训练数据的生成方法,对相关image synthesis methods进行了详细的介绍。还对这些方法进行了定性比较,从数据复杂度、image视觉复杂度、生成image所需efforts、在ML任务上的reported性能等方面逐一分析。同时,还强调了synthetic数据的重要性,能解决real-world data存在的问题,比如获取和标注难、偏置、隐私问题、可控性差等。未来,我们认为image synthesis可以在优化训练数据分布上下功夫,比如从real data中拿分布的main mode,而synthetic数据用来生成分布中rare的样本(甚至unrealistic的)。

结束。

博主看到第四章才发现本文和自己想看的东西有些差距,差距还不是一般的大,无奈不想半途而废,仍然坚持看完了。收获还是很多的,至少知道了什么样的图像生成方法是我以后不需要去仔细看的了 TAT。本文对计算机图形学方面的image synthesis的介绍非常容易理解,作为一个初入image领域的人,也能看懂,真的非常棒。有兴趣的同学可以去看原文~~~

你可能感兴趣的:(论文阅读笔记,深度学习,机器学习,图像处理,视觉检测,经验分享)