Data Driven Crowd全文翻译

基于生成对抗网络的数据驱动人群模拟(CASA2019)

 

本文提出了一种新的数据驱动的人群模拟方法,可以模拟给定环境下行人的观察交通。给定一组观察到的轨迹,我们使用一种最近形式的神经网络,生成性对抗网络(GANS),来学习这个集合的属性,并生成具有类似属性的新轨迹。我们定义了一种模拟行人(代理)在处理局部碰撞避免时遵循这样的轨迹的方法。因此,系统可以生成行为类似于观察的人群,同时仍然能够实现代理之间的实时交互。通过对真实世界数据的实验,我们表明我们的模拟轨迹保持了它们输入的统计特性。我们的方法实时模拟与现有人群相似的人群,同时还允许插入额外的代理,与其他模拟方法组合,以及用户交互。

 

1 INTRODUCTION

人体人群运动的真实感模拟是一个庞大的研究课题,包括人工智能、计算机动画、运动规划、心理学等方面。通常,人群模拟算法的目标是用表现出视觉上令人信服的行为的人群填充虚拟场景。模拟应实时运行,以便可用于交互式应用程序,如游戏、培训软件和虚拟现实体验。许多模拟都是基于代理的:它们将每个行人建模为具有单独属性和目标的独立智能代理。

 

为了模拟复杂的行为,数据驱动的群组模拟方法使用真实世界的输入数据(如摄影机镜头)来生成匹配的群组运动。通常,这些方法不容易生成不是输入的一部分的新行为。此外,它们通常难以用于代理需要实时调整其运动的应用,例如,因为用户是人群中的一部分。

 

在本文中,我们提出了一种新的数据驱动的人群模拟方法,它在很大程度上避免了这些限制。我们的系统能够实时模拟行为类似于观察的代理,同时允许它们在需要时偏离其轨迹。更具体地说,我们的方法:

 

(1)学习输入轨迹的总体属性,并可以生成具有相似属性的新轨迹;

(2)将这些轨迹嵌入到人群模拟中,其中代理跟踪轨迹,同时允许局部交互。

 

对于项目1,我们使用生成性对抗网络(GANS)[4],这是机器学习中的一种新技术,用于基于现有数据生成新内容。对于第2项,我们将“路线跟随”的概念[6]扩展到具有时间方面的轨迹,规定了可能随时间变化的速度

 

以真实世界的数据集为例,我们将展示我们的方法生成具有匹配样式的新轨迹。例如,我们的系统可以(例如)用额外的代理再现现有的场景,并且它可以很容易地与其他人群模拟方法相结合。

 

2 RELATED WORK

 

基于Agent的人群模拟算法将行人建模为单个智能Agent。在这种模式下,许多研究人员使用微观算法关注行人之间的局部交互(例如,避免碰撞)[2,5]。在有障碍的环境中,这些需要与全局路径规划结合成一个整体框架[12]。一个日益增长的研究课题在于通过测量(真实或模拟的)人群运动的两个片段之间的相似性来衡量模拟的“真实性”[13]。

 

复杂的现实生活行为很难用简单的局部规则来描述。这激发了数据驱动的模拟方法,这些方法将人群运动直接基于真实世界的轨迹,通常从视频片段中获得。一类这样的方法将输入轨迹存储在数据库中,然后在运行时将最匹配的片段粘贴到模拟中[7,8]。另一种技术是创建具有周期性重复人群运动的预先计算的面片,这些面片可以在整个环境中复制和粘贴[15]。这样的模拟在计算上很便宜,但是很难适应交互的情况。

[7] Lee, K., Choi, M., Hong, Q., and Lee, J. Group behavior from video: A datadriven approach to crowd simulation. In Proc. ACM SIGGRAPH/Eurographics Symp. Computer Animation (2007), pp. 109–118.

[8] Lerner, A., Chrysanthou, Y., and Lischinski, D. Crowds by example. Computer Graphics Forum 26, 3 (2007), 655–664.

[15] Yersin, B., Maïm, J., Pettré, J., and Thalmann, D. Crowd patches: Populating large-scale virtual environments for real-time applications. In Proc. Symp. Interactive 3D Graphics and Games (2009), pp. 207–214.

研究人员还使用输入轨迹来训练(微观)仿真模型的参数[14],以便调整代理的局部行为参数以匹配输入数据。然而,这不能捕获任何复杂的(社会)规则,这些规则不是所使用的模拟模型的一部分。

 

为了在更高的水平上复制代理如何在环境中移动,一些算法将环境细分为细胞,并学习行人如何在它们之间移动[11,16]。我们的目标是相似的(在完整轨迹级别再现行人运动),但我们的方法不同:我们学习完整轨迹的空间和时间属性,生成具有相似属性的新轨迹,并让代理灵活地跟踪这些轨迹。

 

我们的工作使用生成性对抗性网络(Gans)[4],这是一种最近的人工智能发展,用于生成新的数据。Gans已经成功地生成了创造性的内容,如Faces[3]。最近,研究人员开始采用GANS进行行人运动的短期预测[1]。据我们所知,我们的工作是首次将Gans应用于全轨迹水平的人群模拟。

 

3 GENERATING TRAJECTORIES

 

在本节中,我们描述了基于GaN的方法,用于生成与训练数据中的示例类似的轨迹。

 

就像在大多数人群模拟研究中一样,我们假设一个平面环境,并将代理建模为磁盘。我们将轨迹定义为映射Data Driven Crowd全文翻译,它描述了代理在T秒的时间段内如何在环境中移动。注意,轨迹编码速度信息:我们的系统应该捕获代理何时加速、减速或静止。

 

在实践中,我们将用Data Driven Crowd全文翻译点的序列来表示轨迹Data Driven Crowd全文翻译由固定的时间间隔∆t分隔;即,每个Data Driven Crowd全文翻译具有相应的时间戳Data Driven Crowd全文翻译。在我们的实验中,我们使用Data Driven Crowd全文翻译,因为我们的输入数据也使用此值。我们将使用符号Data Driven Crowd全文翻译来表示从Data Driven Crowd全文翻译Data Driven Crowd全文翻译的子轨迹。

 

给定轨迹数据集Data Driven Crowd全文翻译,我们的生成器应该学习生成具有类似于Π中的属性的新轨迹。我们假设所有轨迹都在感兴趣区域R的边界上开始和结束,该区域可以具有任何形状,并且对于每个环境可以是不同的。

 

在内部,G和D都是人工神经网络;让θG和θD作为它们各自的权重。G用作将m维噪声矢量z转换为伪样本x=G(z;θG)的函数。D充当将(真实的或伪的)样本x转换为指示x为真实的概率的值D(x;θD)∈[0,1]的函数。训练GaN代表以下优化问题:

Data Driven Crowd全文翻译

其中V(θD,θG)称为损失函数。它的第一项表示随机实样本的D的预期输出。当D正确地将更多的输入样本分类为实数时,这个值会更高。相反,当D将更多生成的样本分类为伪时,第二项的值更高。这里,px和pz分别是发送到G的真实数据和噪声向量的概率分布

 

我们的系统概述。图1显示了我们的GaN系统的概述。生成器和鉴别器都有两个任务:生成或评估轨迹π的入口点(即前两个点P0π和P1π),以及生成或评估轨迹的连续性(即在子轨迹P0:πk之后的下一个点pkπ+1)。对于延续任务,我们使用来自所谓的“条件Gans”的概念,因为生成器和鉴别器接受额外的数据作为输入。现在我们将更详细地描述该系统。参数设置将在第5节中提到。

 

Data Driven Crowd全文翻译

图1:我们用于学习和生成行人轨迹的GAN架构

 

生成器。为了生成入口点,生成器G将随机向量z馈送到完全连接(FC)的神经元块。它的输出是一个4D矢量,其中包含p0π和p1π的坐标。

 

为了生成轨迹Data Driven Crowd全文翻译的延续,生成器G将Data Driven Crowd全文翻译和噪声矢量z馈送到应对相关轨迹动态进行编码的长期短期记忆(LSTM)层。LSTM是用于处理顺序数据的常见递归神经网络。这个lstm块的输出被发送到一个fc块,它最终产生一个坐标为pkπ+1的2D向量。让Data Driven Crowd全文翻译表示这个结果。理想情况下,这一点将取自Data Driven Crowd全文翻译的可能后续行动的(未知)分布。

 

鉴别器。鉴别器D将整个(真实或虚假)轨迹π作为输入。它将鉴别分成两个具有与G中类似结构的任务。对于入口点部分,FC块将Data Driven Crowd全文翻译求值为[0,1]中的标量,我们用Data Driven Crowd全文翻译表示。对于延续部分,Data Driven Crowd全文翻译块分别评估每个点Data Driven Crowd全文翻译给定子轨迹Data Driven Crowd全文翻译。我们用Data Driven Crowd全文翻译表示第k个点的结果。

 

因此,对于Data Driven Crowd全文翻译个点的全轨迹π,鉴别器计算Data Driven Crowd全文翻译−1个标量,这些标量一起指示π为真实的可能性。培训阶段在其损失函数中使用这些数字

 

训练。每个训练迭代让G为不同的(序列)噪声矢量生成N个轨迹的集合Π‘。然后我们让D对所有轨迹(真实和虚假)进行分类。我们的GaN的损耗函数是两个分量的总和:

·区分所有入口点的成功率:

 

Data Driven Crowd全文翻译

·区分所有其他点的成功率:

Data Driven Crowd全文翻译

为了让我们的GaN训练得更快,我们添加了第三个组件。对于每个真实轨迹π∈Π,我们采用长度为5的所有有效子轨迹Data Driven Crowd全文翻译,并让G生成给定Data Driven Crowd全文翻译Data Driven Crowd全文翻译的它自己的版本。我们增加了损失函数:

Data Driven Crowd全文翻译

即我们对实点和生成点之间的欧几里得距离求和。我们观察到,这个额外的组件导致更快的收敛和更好的反向传播。

 

为了减少“模式崩溃”的机会(即收敛到有限的样本范围),我们使用了“展开”的GaN[9]。这是一种扩展的GaN,其中θG的每个优化步骤都使用鉴别器的改进版本,即u步前进(其中u是参数)。

 

4 CROWD SIMULATION

 

回想一下,我们的目标是在实时交互式人群模拟中使用我们的轨迹,如果需要,代理应该可以自由偏离他们的轨迹。本节介绍如何将我们的轨迹生成器与人群模拟器相结合。

 

我们的方法适合多层次人群模拟的范例[12],其中全局规划(即计算轨迹)与模拟循环分离。此循环由离散的时间步长组成。在每个步骤中,可能会添加新的代理,每个代理都试图遵循其轨迹,同时避免冲突。

 

轨迹跟踪。在模拟循环的每一帧中,每个代理都应尝试沿其轨迹π前进,同时避免碰撞。与经典的“路线跟随”[6]的主要区别是,我们的轨迹有一个时间成分:它们规定了一个代理应该以什么速度移动,这个速度可能会随着时间的推移而改变。因此,我们提出了一种方法,让Agent在尊重其空间和时间数据的同时,灵活地跟随π。我们的算法计算首选速度vpref,该速度vpref将使代理沿着π更远。该vpref然后可以被馈送到任何现有的冲突避免算法,以计算接近vpref的速度,同时避免与其他代理的冲突

 

两个参数定义了代理如何跟随π:时间窗口w和最大速度smax。代理始终尝试沿π移动到前方w秒的点,同时考虑Smax。在模拟过程中,假设t是自插入代理以来经过的时间。理想情况下,代理现在应该已经到达π(T)。我们的算法由以下几个步骤组成:

 

  1. 计算吸引点Data Driven Crowd全文翻译,其中Data Driven Crowd全文翻译Data Driven Crowd全文翻译,T为π的结束时间。因此,Data Driven Crowd全文翻译是比Data Driven Crowd全文翻译早w秒的点,如果需要,夹紧到π的末尾。
  2. 将首选速度Data Driven Crowd全文翻译计算为Data Driven Crowd全文翻译,其中p是座席的当前位置。因此,Data Driven Crowd全文翻译是将代理发送到Data Driven Crowd全文翻译的速度,其速度基于t和Data Driven Crowd全文翻译之间的差异。
  3. 如果Data Driven Crowd全文翻译,则缩放Data Driven Crowd全文翻译,以便Data Driven Crowd全文翻译。这可以防止代理在被阻塞很长一段时间后接收到非常高的速度。

 

避免碰撞。由我们的算法计算的优选速度Vpref可以用作任何碰撞避免例程的输入。在我们的实现中,我们使用流行的ORCA方法[2]。在初步测试中,其他方法如社会力量[5]证明不太适合我们的目的。

 

5实验和结果

设置。我们已经使用PyTorch库(https://pytorch.org/).)实现了我们的GaN。输入噪声矢量是三维的,并且是从均匀随机分布中提取的。在G和D中,入口点FC块由3层组成,分别具有128,64和32个隐藏神经元。对于延续部分,LSTM块由62个单元组成,而FC块包含2层64和32个隐藏神经元。为了节省时间和内存,LSTM块仅考虑子轨迹的最后4个样本

 

为了训练GaN,所有FC层都使用Leaky-Relu**函数(具有负斜率0.1),以让梯度始终反向传播,这避免了梯度消失问题。我们使用展开参数u=10.CASA‘19,2019年7月1-3日,法国巴黎,训练GaN进行50,000次迭代

 

Data Driven Crowd全文翻译

图2:由三种不同的方法创建的入口点的分布。

Data Driven Crowd全文翻译

图3:轨迹热图:输入数据、生成的轨迹和最终模拟的代理运动。

 

在人群模拟中,我们将代理建模为半径为0.25m的磁盘,并使用固定帧长为0.1s的模拟循环。在每一帧中,所有代理都执行我们的路由跟踪算法(w=5,smax=2m/s),然后是原始作者实现的ORCA算法[2]。当代理到达其轨迹的末端时,我们将其移除。

 

我们在ETH数据集[10]上测试了我们的方法,该数据集包含大学建筑入口周围记录的轨迹。我们已经将感兴趣区域R定义为轴对齐的边界框,并且我们仅使用进入和退出R的241条轨迹。

 

结果1:入口点。为了显示我们的GaN在学习入口点分布方面的性能,我们计算了ETH场景中的500(假)入口点,并计算了样本在R边界上的分布。我们还将这些结果与其他两种生成方法进行了比较:具有3个分量的高斯混合模型(GMM)和不使用展开机制的“香草”GaN变体。如图2所示,展开的GaN(右)的入口点比其他两种方法的入口点更接近实际数据。

 

结果2:轨迹。接下来,我们使用我们的系统生成了352条新的轨迹,并用它们来模拟人群。图3中的前两个热图显示生成的轨迹(中间)与真实数据(左)类似地分布在环境中。第三个热图显示了模拟代理的最终运动,具有路径跟踪和冲突避免。在这种情况下,代理能够很好地遵循其给定的轨迹。

 

计算时间。我们使用CUDA在具有4 GB GDDR5内存的NVIDIA Quadro M1200 GPU上运行GAN。使用这种设置,生成一批1024条轨迹(最大长度为40个点)花费了152毫秒,这意味着平均生成时间为每条轨迹0.15毫秒。因此,在训练之后,系统足够快,可以将轨迹实时插入人群中。

 

6结论与未来工作

我们已经提出了一种数据驱动的人群模拟方法,它使用Gans来学习输入轨迹的属性,然后生成具有相似属性的新轨迹。结合考虑时间信息的灵活路线跟踪,轨迹可用于实时人群模拟。例如,我们的系统可以用来创建具有不同密度的场景的变体。它可以很容易地与其他模拟方法相结合,并且允许交互式应用。

在未来,我们将对我们的系统产生的轨迹进行彻底的分析,并将它们与其他算法进行比较。

我们还将调查可靠培训的确切要求。此外,我们的系统为个人生成轨迹,假设代理不会影响彼此的选择。因此,它还不能对组行为进行建模,并且在代理无法独立行动的高密度场景中性能更差。我们希望在今后的工作中处理这些限制。