论文原文地址: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的重要性,本文对其在计算机视觉领域的方法做一个综述。
本文只关注图像生成过程中的计算机图形学方面,的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和synthesis的背景的。
直到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数据非常重要。
visual data generation的过程可以分成两个部分:content/scene generation(生成特征,这些特征构成了图像的环境)和rendering(模拟环境中的光线变化,以及照相机或者其他传感器如何measure这个世界)。用于ML算法的训练和测试data应该满足以下要求(用来说明generated数据也应该满足这些要求,那些synthesis方法生成出的数据要满足):
然后给出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,因为通常需要预计算才能得到好结果。光线追踪更普遍,因为可以模拟任意类型的光线传播,适用很多传感器,不需要预计算,在合成数据的需求大量、多样性要求高的情况下,更好。
随着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了。
本文限定范围是能产生一个完整training set的image synthesis方法,所以data augmentation也能被算在内。数据增强通常是根据一些预定规则对现有数据进行transform得到的。数据增强在处理过拟合问题、增强领域适应性、增加模型鲁棒性等方面有很好作用。
传统的数据增强可能不太接近image synthesis,但是更复杂的增强方法也有很多呢,也能接近image synthesis,所以本文对大部分的common数据增强方法、一些非传统的方法和策略进行了总结和说明:
想看更多数据增强的内容,参考[SK19](见论文原文参考文献),本文后续不再关注这方面。
为了方便,本文将image synthesis过程分为两个连续的部分(其实和第二章分成content generation和rendering是一致的):
所有元素都可以通过procedurally 或者 non-procedurally的过程产生(一级分类)。
procedurally:使用算法和数学公式来决定元素及其特征。本质上是将生成过程参数化了,因此能应用于很多场景content,并且可控性好、灵活性高、多样性丰富。
non-procedurally:进一步根据如何model分类(二级分类):
从三个方向来区分rendering:
文中表1列举了使用合成数据做训练集、从合成数据训练集中获益的一些计算机视觉应用,最后一列展示了这些应用中使用的合成数据技术。此外,表1还包括了一些对合成数据进行改进的算法。从表1后面的合成方法的发表时间中可以看出,不同应用的发展现状。同时某一种合成数据算法也能适用于多个不同应用,体现了合成数据的重要性和有效性。根据参考文献[Sze10],本文将这些应用大致分为6类,具体分类的应用类别和各自的介绍见原文,跟我想了解的东西关联不大,这里不再详说,表1也见原文。
本章对许多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领域的人,也能看懂,真的非常棒。有兴趣的同学可以去看原文~~~