本公开总体上涉及用于生成虚拟传感器数据的方法、系统和装置,并且更具体地涉及生成虚拟传感器数据以用于训练和测试检测对象或障碍物——例如车轮止动器(wheelstop)或停车障碍——的模型或算法。
背景技术:
机动车辆为商业、政府和私营企业提供很大一部分运输。由于机动车辆的高价值以及对乘客和驾驶员的潜在危害,驾驶员安全性和与其他车辆或对象发生事故或碰撞的避免极其重要。
技术实现要素:
根据本发明,提供一种方法,该方法包含:
模拟包含一个或多个对象的三维(3d)环境;
生成针对3d环境内一个或多个传感器的多个位置的虚拟传感器数据;
确定对应于多个位置中的每一个的虚拟地面实况,该地面实况包含关于虚拟传感器数据内至少一个对象的信息;以及
存储和关联虚拟传感器数据和虚拟地面实况。
根据本发明的一个实施例,该方法进一步包含提供虚拟传感器数据和虚拟地面实况中的一个或多个以用于训练或测试机器学习算法或模型。
根据本发明的一个实施例,其中机器学习模型或算法包含神经网络。
根据本发明的一个实施例,其中一个或多个对象包含停车障碍,并且其中训练机器学习算法或模型包含提供虚拟传感器数据的至少一部分和对应的虚拟地面实况以训练机器学习算法或模型以确定停车障碍的高度和位置中的一个或多个。
根据本发明的一个实施例,其中测试机器学习算法或模型包含将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定至少一个对象的分类或位置和将分类或位置与虚拟地面实况进行比较。
根据本发明的一个实施例,其中多个位置对应于车辆上传感器的规划位置。
根据本发明的一个实施例,其中虚拟传感器数据包含下列中的一个或多个:计算机生成的图像、计算机生成的雷达数据、计算机生成的lidar数据以及计算机生成的超声数据。
根据本发明的一个实施例,其中模拟3d环境包含随机生成针对下列中的一个或多个的不同条件:照明、天气、一个或多个对象的位置、以及一个或多个对象的分类或类型。
根据本发明的一个实施例,其中生成虚拟传感器数据包含在模拟3d环境内一个或多个传感器的运动期间周期性地生成虚拟传感器数据。
根据本发明的一个实施例,其中确定虚拟地面实况包含生成与虚拟传感器数据的帧互补的地面实况帧,其中地面实况帧包含针对对应于一个或多个对象的像素的相同颜色值。
根据本发明,提供一种系统,该系统包含:
环境部件,该环境部件被配置为模拟包含一个或多个障碍物的三维(3d)环境;
虚拟传感器部件,该虚拟传感器部件被配置为生成针对3d环境内一个或多个传感器的多个位置的虚拟传感器数据;
地面实况部件,该地面实况部件被配置为确定对应于多个位置中的每一个的虚拟地面实况,其中该地面实况包含关于一个或多个障碍物中的至少一个障碍物的信息;以及
模型部件,该模型部件被配置为将虚拟感知数据和地面实况提供至机器学习模型或算法以训练或测试机器学习模型或算法。
根据本发明的一个实施例,其中模型部件被配置为训练机器学习算法或模型,其中训练包含:
提供虚拟传感器数据的至少一部分和对应的虚拟地面实况以训练机器学习算法或模型以确定至少一个障碍物的分类或位置。
根据本发明的一个实施例,其中模型部件被配置为测试机器学习算法或模型,其中测试包含:
将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定至少一个障碍物的分类或位置;以及
将分类或位置与虚拟地面实况进行比较。
根据本发明的一个实施例,其中虚拟传感器部件被配置为生成虚拟传感器数据,该虚拟传感器数据包含下列中的一个或多个:计算机生成的图像、计算机生成的雷达数据、计算机生成的光探测和测距(lidar)数据和计算机生成的超声数据。
根据本发明的一个实施例,其中环境部件被配置为通过随机生成针对多个位置中的一个或多个的不同条件来模拟3d环境,其中不同条件包含下列中的一个或多个:
照明条件;
天气条件;
一个或多个障碍物的位置;以及
一个或多个障碍物的尺寸。
根据本发明,提供一种计算机可读存储介质,该计算机可读存储介质存储指令,当该指令由一个或多个处理器执行时,指令使一个或多个处理器:
生成针对模拟的三维(3d)环境内多个传感器位置的虚拟传感器数据,该模拟的3d环境包含一个或多个对象;
确定针对多个位置中的每一个的一个或多个模拟条件,其中模拟条件包含一个或多个对象中的至少一个对象的分类、位置和尺寸中的一个或多个;以及
存储虚拟传感器数据与模拟条件并且为虚拟传感器数据注释模拟条件。
根据本发明的一个实施例,其中该指令进一步使一个或多个处理器基于虚拟传感器数据和模拟条件中的一个或多个来训练或测试机器学习算法或模型。
根据本发明的一个实施例,其中:
该指令使一个或多个处理器通过以下方式来训练机器学习算法或模型:提供虚拟传感器数据的至少一部分和对应的模拟条件来训练机器学习算法或模型以确定至少一个对象的分类、位置和尺寸中的一个或多个;以及/或者
该指令使一个或多个处理器通过以下方式来测试机器学习算法或模型:将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定至少一个对象的分类、位置和尺寸中的一个或多个,并且将所确定的至少一个对象的分类、位置和尺寸与模拟条件进行比较。
根据本发明的一个实施例,其中生成虚拟传感器数据包含通过针对多个位置中的一个或多个使模拟条件中的一个或多个随机化来模拟3d环境,其中使一个或多个模拟条件随机化包含使下列中的一个或多个随机化:
照明条件;
天气条件;
一个或多个对象的位置;以及
一个或多个对象的尺寸。
根据本发明的一个实施例,其中确定模拟条件进一步包含生成与虚拟传感器数据的帧互补的地面实况帧,其中该地面实况帧包含针对对应于至少一个对象的像素的相同颜色值。
附图说明
本公开的非限制性和非穷尽性的实施方式参照以下附图进行描述,其中贯穿几个视图,相同的附图标记指代相同的部件,除非另有说明。参考以下说明书和附图,本公开的优点将变得更好理解,附图中:
图1是说明包括自动驾驶/辅助系统的车辆控制系统的实施方式的示意性框图;
图2是说明用于生成传感器数据的系统的实施方式的示意性框图;
图3是说明定位在停车轮挡(parkingchock)附近的车辆的侧视图的示意图;
图4是根据一个实施例说明虚拟停车场环境的示意性俯视图;
图5是传感器数据的示例帧;
图6是根据一种实施方式图5所说明的帧的示例互补帧;
图7是根据一种实施方式说明模拟部件的示例部件的示意性框图;以及
图8是根据一种实施方式说明用于生成虚拟传感器数据的方法的示意性流程图。
具体实施方式
车辆碰撞或事故的非常普遍的位置发生在驻车或离开停车位置期间。因为其他车辆、行人或其它对象的近距离,如果要避免损坏车辆,包括刮擦保险杠或侧板,则往往是小误差裕度。在许多停车场中,或在其他停车位置处,停车位(parkingstall)在至少一侧上通过某种停车障碍——例如停车轮挡、路缘或诸如此类——来标记或界定。停车障碍可以被用于使车辆不致于太向前(或向后)驶入车辆的另一排,并且当车轮遇到障碍时可以防止车辆移动太远。停车障碍可以包括,或在这里被称为,停车障碍、停车轮挡、停车止轮器、路缘或诸如此类。
当车辆被停放在停车场中时,它可能碰到车轮止动器或其他停车障碍。申请人已经认识到,车轮止动器的尺寸和高度可以显着变化。在一些情况下,驾驶员、自动驾驶系统或自动辅助系统无法检测到车轮止动器,并且车辆可能辗过它并且损坏前保险杠或后保险杠或护板(fascia)。为了避免这种碰撞,必须知道车轮止动器的位置和高度,以便可以避免碰到或刮擦车辆的底部。
然而,申请人已经认识到,如果通过车载感知来检测车轮止动器或停车障碍,以便可以向驾驶员、自动驾驶系统或自动辅助系统提供警告或者以便自主制动可以根据需要被启动,则检测算法将需要对大量不同的数据进行训练和测试。然而,真实世界传感器数据花费相当多的时间和资源来获取,通过设置物理测试或带着传感器四处驾驶以收集相关情景的数据。
本申请公开了用于生成合成或虚拟传感器数据和/或相关的地面实况的系统和方法。在一个实施例中,一种方法包括模拟包括一个或多个停车障碍的三维(3d)环境。该方法包括生成针对3d环境内一个或多个传感器的多个位置的虚拟传感器数据。该方法进一步包括确定对应于多个位置中的每一个的虚拟地面实况,其中该地面实况包括停车障碍中至少一个的高度。该方法进一步包括存储和关联虚拟传感器数据和虚拟地面实况。
一些实施方式将利用3d建模和动画工具创建的虚拟驾驶环境与传感器模型整合以在短时间内产生大量虚拟传感器数据。在记录的数据中,相关参数——例如车轮止动器的照明和定位——可以被随机化以确保具有最小偏差的多样化数据集。在一种实施方式中,传感器根据其在车辆上的规划位置而相对于道路或停车场(或其他虚拟驾驶环境)定位。虚拟传感器可以沿着虚拟环境中的虚拟路径被重新定位和/或被移动到它可以观察到对象或障碍物——例如车轮止动器——的位置。
在虚拟移动或重新定位期间,虚拟传感器可以周期性地记录数据或生成虚拟传感器数据。对于所记录的数据的每一个时间步长(timestep)——例如,摄像机数据的每一个帧,自动提供注释以记录关于传感器范围内所有车轮止动器的位置以及每一个车轮止动器的高度的地面实况信息。在摄像机数据的情况下,对于图像数据的每一个帧,地面实况数据可以包括显示相同视野的按像素分段的图像数据的互补帧。例如,互补帧中车轮止动器的所有像素可以是具有恒定值的纯色(例如,红-绿-蓝(rgb)),以便准确地知道哪些像素属于车轮止动器。地面实况信息可以被用于利用监督式学习来训练感知算法,或者用于测试现有算法并量化其性能。实施例可以生成针对摄像机、光测距和探测(lidar)系统、雷达系统、超声系统和/或不同的传感器系统或传感器类型的虚拟传感器。
本文所公开的系统和方法可以提供优于真实世界数据的显着益处。例如,相比于真实世界数据,虚拟数据在时间、金钱和资源方面更便宜。具体地,本文所公开的系统和方法可以在几分钟内生成针对各种条件的数千个虚拟图像,与获取相似数量的真实世界图像的数小时或数月不同。具有自动注释的虚拟传感器数据极大地改善了在获得对训练和测试对象检测或定位有用的地面实况或其他数据(例如用于车轮止动器检测算法)方面的易用性。
尽管本公开的一些实施例讨论了用于停车障碍的检测、分类和/或尺寸确定的模拟和虚拟数据,但是这些仅仅是通过示例的方式给出。本公开预期本文所公开的系统、方法和装置用于任何对象或障碍物的检测、分类、定位和尺寸检测的用途。例如,在驾驶环境中可以被车辆检测到的任何对象或障碍物的虚拟表示在本文中是可预期的。
现在参考附图,图1说明了可以被用于自动检测停车障碍的示例车辆控制系统100。自动驾驶/辅助系统102可以被用于自动或控制车辆的操作或向人类驾驶员提供辅助。例如,自动驾驶/辅助系统102可以控制车辆的制动、转向、加速、灯、警报、驾驶员通知、无线电、或任何其它辅助系统中的一个或多个。在另一个示例中,自动驾驶/辅助系统102可能无法提供对驾驶(例如,转向、加速或制动)的任何控制,但是可以提供通知和警报以辅助人类驾驶员安全地驾驶。自动驾驶/辅助系统102可以利用神经网络或其它模型或算法来确定停车障碍或轮挡存在,并且还可以确定对象或障碍物——例如停车障碍或轮挡——的大小、位置和/或尺寸。
车辆控制系统100还包括一个或多个传感器系统/装置,该一个或多个传感器系统/装置用于检测附近对象的存在或确定母车辆(例如,包括车辆控制系统100的车辆)的位置。例如,车辆控制系统100可以包括一个或多个雷达系统106、一个或多个lidar系统108、一个或多个摄像机系统110、全球定位系统(gps)112和/或一个或多个超声系统114。车辆控制系统100可以包括数据存储器116,该数据存储器116用于存储用于导航和安全性的相关或有用的数据,例如地图数据、驾驶历史或其他数据。车辆控制系统100还可以包括收发器118,收发器118用于与移动或无线网络、其他车辆、基础设施或任何其他通信系统进行无线通信。
车辆控制系统100可以包括车辆控制致动器120以控制车辆的驾驶的各个方面,例如电动马达、开关或其他致动器,以控制制动、加速、转向或诸如此类。车辆控制系统100还可以包括一个或多个显示器122、扬声器124或其他设备,以便可以向人类驾驶员或乘客提供通知。显示器122可以包括可以被车辆的驾驶员或乘客看到的抬头显示器、仪表板显示器或指示器、显示屏或任何其它视觉指示器。扬声器124可以包括车辆的音响系统的一个或多个扬声器,或者可以包括专用于驾驶员通知的扬声器。
可以领会的是,图1的实施例仅通过示例的方式给出。在不脱离本公开的范围的前提下,其他实施例可以包括更少或附加的部件。此外,示出的部件可以被组合或包括在其它部件内,而非限制。
在一个实施例中,自动驾驶/辅助系统102被配置为控制母车辆的驾驶或导航。例如,自动驾驶/辅助系统102可以控制车辆控制致动器120以在道路、停车场、行车道或其它位置的路径上行驶。例如,自动驾驶/辅助系统102可以基于由部件106-118中的任何一个提供的信息或感知数据来确定路径。传感器系统/装置106-110和114可以被用于获取实时传感器数据,以便自动驾驶/辅助系统102可以实时辅助驾驶员或驾驶车辆。自动驾驶/辅助系统102可以执行算法或利用模型——例如深度神经网络——来处理传感器数据并且识别停车障碍、对象或其他障碍物的存在、位置、高度和/或尺寸。然而,为了训练或测试模型或算法,可能需要大量的传感器数据。
现在参考图2,示出了用于生成传感器数据的系统200的一个实施例。该系统200包括模拟部件202、存储器204、训练部件206和测试部件208。模拟部件202可以被配置为模拟驾驶环境并且生成虚拟传感器数据210和作为虚拟传感器数据210的注释212的虚拟地面实况或其他信息。该注释可以包括任何类型的地面实况,例如模拟部件202所使用以生成驾驶环境和/或虚拟传感器数据210的模拟条件。例如,虚拟地面实况可以包括传感器与虚拟停车障碍之间的虚拟距离、虚拟停车障碍或任何其他对象或障碍物的一个或多个尺寸(例如,高度)。类似地,虚拟地面实况可以包括关于照明条件、天气条件、传感器位置、传感器取向、传感器速度和/或虚拟传感器类型(例如,传感器的特定模型)的一个或多个细节。模拟部件202可以为虚拟传感器数据的帧或集合注释对应的地面实况,或者存储虚拟地面实况与该虚拟地面实况属于的传感器数据的指示。
虚拟传感器数据210和/或包括在注释212中的任何信息可以被存储在存储器204中。存储器204可以包括例如硬盘的长期存储器或例如随机存取存储器(ram)的机器存储器。虚拟传感器数据210和任何相关的注释212可以被存储作为相同文件的一部分或者可以被存储在单独的文件中。训练部件206和/或测试部件208然后可以访问和利用虚拟传感器数据201和/或注释212来训练或测试停车障碍检测算法或模型。
训练部件206被配置为利用由模拟部件202生成的虚拟传感器数据和地面实况来训练机器学习算法。例如,训练部件206可以通过以下方式来训练机器学习算法或模型:提供虚拟传感器数据的至少一部分和对应的虚拟地面实况来训练机器学习算法或模型以确定一个或多个停车障碍、对象或其他障碍物的高度和位置中的一个或多个。训练部件206可以将虚拟传感器数据和虚拟地面实况提供至用于神经网络的训练算法。例如,训练部件206可以利用在某一时间的传感器数据和相关的地面实况的一个帧来训练神经网络。在一个实施例中,训练部件206可以训练识别虚拟传感器数据的不同方面的多个不同的机器学习模型。例如,一个模型可以被用于将虚拟传感器帧中的对象分类为停车障碍,而另外一个或多个其他模型可以被用于确定停车障碍、对象或其他障碍物的位置、取向、距离和/或尺寸。
测试部件208可以利用虚拟传感器数据和虚拟地面实况来测试机器学习算法或模型。例如,测试部件208可以将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定停车障碍、对象或其他障碍物的高度和位置中的一个或多个,并且将所确定的高度或所确定的位置与虚拟地面实况进行比较。测试部件208可以能够准确地确定模型或算法执行得如何,因为所确定的分类或值可以与虚拟地面实况进行比较。如果算法或模型足够精确,则它可以作为自动驾驶/辅助系统102的一部分来实施。
图3说明了车辆302和停车障碍304的侧视图。如果车辆302到达停车障碍304,则停车障碍304可能碰撞、刮擦或损坏车辆302的保险杠或其他部分。随着车辆移动得更近,通过车辆302的挡风玻璃停车障碍304可能不可见,并且安装在车辆302的发动机罩或车顶上或其附近的一个或多个传感器也可能无法检测到停车障碍304。因此,重要的是,获取停车障碍304的准确高度和位置,同时可检测到停车障碍,以便当车辆被停放或以其它方式驾驶靠近停车障碍304时,可以避免车辆302与停车障碍304之间的接触。另外,停车障碍304的位置可以被存储在存储器中,以便当驾驶员返回或车辆302被重新启动时,可以提醒驾驶员或自动驾驶/辅助系统102停车障碍304的存在和位置。
图4是具有多个停车位置和停车障碍404的虚拟停车场环境400的俯视图。例如,虚拟停车场环境400可以由模拟部件202生成和模拟。因此,虚拟停车场环境400和所有对象可以表示由模拟部件202生成的计算机模型或模拟。虚拟停车场环境400还可以包括一个或多个照明源或其他对象以模拟真实停车场环境。例如,照明可以模拟一天中的不同时间、各种天气类型和/或照明位置。还可以生成或模拟虚拟停车场环境400的一个或多个植物、路缘或周围环境。
在虚拟停车场环境400内,车辆402被示为它正在接近或驶入具有停车障碍404的特定停车位。停车障碍404包括停车轮挡。停车轮挡的实施例包括混凝土、橡胶或其他障碍,其被放置在停车位置处以防止车辆移动或行驶太远。虚拟停车场环境400包括用于每一个停车位的停车障碍404。然而,一些停车场对于停车障碍的包括可能不一致,使得驾驶员或系统不能基于其他停车位来假设特定停车位包括或不包括停车障碍。根据一个实施例,如线406所示,当车辆402驶入到停车位时,一个或多个传感器可以获取包括停车障碍404的一部分的数据(例如图像或帧)。如以上所讨论的,模拟部件202可以生成模拟车辆402上的传感器在虚拟停车场环境400是真实世界环境的情况下将拍摄到的内容的感知数据的虚拟帧。
在一个实施例中,车辆402(具有任何相关的虚拟传感器)沿着虚拟停车场环境400内的路径移动或在虚拟停车场环境400内被随机重新定位,并且感知数据的附加帧可以被生成。类似地,对应于模拟条件的信息可以与帧一起被保存,以便虚拟地面实况可用于每一个帧。在一个实施例中,虚拟停车场环境400内对象的位置和一个或多个其他条件可以针对多个不同的帧而被随机化。例如,照明、位置、天气条件或诸如此类可以在可接受的界限内随机生成,以生成针对宽范围的不同条件的虚拟传感器数据。
尽管图4说明了虚拟停车场环境400的平面图,但是车辆可以被停放在停车障碍404或停车轮挡可能存在的各种各样的位置中。例如,路边停车位置、行车道停车位置或任何其他停车位置还可以包括停车障碍、停车轮挡、车轮止动器、路缘或其他对象以限定停车位置或停车位。因此,可以在一个或多个其他虚拟环境中模拟车辆被驾驶或可以被停放的任何位置。
图5说明了由模拟部件202生成的传感器数据的示例帧500。例如,帧500可以包括由位于虚拟环境内模拟位置处的虚拟摄像机拍摄到的虚拟图像。帧500包括定位在虚拟环境内的停车障碍502。帧500内停车障碍502的形状和位置可以是停车障碍502以及“拍摄”帧500的虚拟摄像机的当前位置和取向的结果。帧500的虚拟地面实况可以与帧500一起被保存或者可以与帧500相关联,以便帧500的特定虚拟条件是已知的。虚拟地面实况可以包括传感器与停车障碍502之间的距离(例如,以英尺、米或其他测量单位为单位的模拟距离)、传感器的取向、停车障碍502的取向、停车障碍502的一个或多个尺寸、停车障碍502的材料、停车障碍502和拍摄帧500的传感器两者的具体位置、模拟的天气条件、模拟的一天中的时间、模拟的照明位置、模拟的照明颜色或关于拍摄帧500的模拟环境的任何其他附加信息。
图6说明了对应于图5的帧500的互补帧600的一个实施例。该互补帧包括纯色区域602,该纯色区域602对应于帧500中停车障碍502的像素所在的区域。在图6中,区域602是白色的,而互补帧600的其余部分是黑色的。然而,其他实施例可以类似于具有覆盖停车障碍602的区域的纯色的原始图像。例如,亮绿色可以被用于区域602,而互补帧600的黑色部分可以不是黑色,但是可以与原始帧500的对应区域/像素相同。在一个实施例中,互补帧600可以被包括在帧500的地面实况信息中,以便可以训练或测试算法。例如,互补帧600可以被提供有帧500以用于训练用于检测和/或识别停车障碍的尺寸的神经网络。
虽然上面关于摄像机图像讨论了图5和6,但是其他类型的传感器数据帧是可预期的并且落在本公开的范围内。例如,lidar帧、雷达帧、超声帧或任何其它类型的传感器数据帧可以被生成和被存储在任何模拟的地面实况内。另外,虽然本文提供的一些实施例和示例包括停车障碍的模拟和模型,但是任何其他类型的对象或数据可以被使用。例如,可以生成在驾驶环境中可能遇到的任何类型的对象的虚拟传感器数据。示例对象或障碍物可以包括停车障碍或路缘、其他车辆、道路或车道标线、停车标线、道路标志、行人、骑自行车的人、动物、道路碎屑、道路中的隆起或凹陷、或任何其他对象、障碍物或特征,这可能改变车辆应当操作的方式或改变车辆的路径。
图7是说明模拟部件202的示例部件的框图。在所描绘的实施例中,模拟部件202包括环境部件702、虚拟传感器部件704、地面实况部件706、存储部件708和模型部件710。部件702-710仅以说明的方式给出,并且可能不是全部都被包括在所有的实施例中。实际上,一些实施例可以包括部件702-710中的仅一个或两个或更多个的任意组合。部件702-710中的一些可以位于模拟部件202外部。
环境部件702被配置为生成和/或模拟虚拟环境。在一个实施例中,环境部件702模拟或生成3d停车或驾驶环境。环境部件702可以利用3d游戏或模拟引擎来创建、模拟和/或渲染车辆可以被驾驶或停放的环境。例如,用于驾驶游戏或任何其他游戏设计的游戏引擎可以被用于模拟真实世界环境的目的。
在一个实施例中,环境部件702模拟具有多个虚拟对象的环境。该虚拟对象可以包括停车障碍、车辆、树木、植物、路缘、涂漆线、建筑物、风景、行人、动物或可能在驾驶或停车环境中找到的任何其它对象。环境部件702可以模拟具有大量车辆、行人或其他对象的拥挤状况。环境部件702还可以模拟照明条件。例如,环境部件702可以模拟包括太阳、月光、路灯、建筑物灯、车辆前照灯、车辆制动灯或任何其它光源的光源。环境部件702还可以模拟阴影、在一天中的不同时间太阳或月亮的照明颜色、或天气条件。例如,环境部件702可以模拟多云、多雨、多雪和其他天气条件的照明。另外,环境部件702可以模拟虚拟环境中的道路、停车场和对象是湿的或被雪覆盖的湿或雪条件。
在一个实施例中,环境部件702可以使模拟条件随机化。例如,环境部件702可以周期性地使一个或多个模拟条件随机化以生成具有宽范围的条件的环境。在一个实施例中,环境部件702可以随机生成针对下列中的一个或多个的不同条件:照明、天气、一个或多个虚拟停车障碍或其他对象的位置、以及一个或多个虚拟停车障碍或其他对象的尺寸。
在一个实施例中,环境部件702可以模拟虚拟环境内传感器的位置。环境部件702可以模拟一个或多个传感器沿着虚拟环境内的路径的运动,或者可以使传感器定位随机化。例如,环境部件702可以基于车辆上的规划位置来模拟传感器的位置和/或取向。在一个实施例中,环境部件702可以使虚拟环境内传感器的位置、高度、取向或其他定位方面随机化。传感器的随机化位置或者虚拟环境的其他模拟条件可以在预定义的界限内被随机化,以增加虚拟环境类似于在真实世界情况下车辆可能遇到的状况的可能性。
虚拟传感器部件704被配置为生成由环境部件702生成或模拟的虚拟环境内虚拟传感器的传感器数据或感知数据。在一个实施例中,虚拟传感器部件704可以包括或利用将被车辆使用的一个或多个特定传感器的真实世界性能的模型。例如,传感器可以具有模拟传感器的真实世界性能的虚拟模型。虚拟传感器部件704可以模拟传感器如何生成帧。虚拟传感器部件704可以生成虚拟传感器数据,该虚拟传感器数据包括下列中的一个或多个:计算机生成的图像、计算机生成的雷达数据、计算机生成的lidar数据、计算机生成的超声数据或用于其他类型的感知传感器的其他数据。
在一个实施例中,虚拟传感器部件704被配置为周期性地生成传感器帧或传感器数据。例如,虚拟传感器部件704可以在类似于摄像机频繁地拍摄图像的模拟间隔内生成图像(或其他传感器)。在一个实施例中,虚拟传感器部件704创建针对由环境部件702模拟的每一个位置的传感器数据。例如,虚拟传感器部件704可以生成针对沿着虚拟环境内由虚拟车辆行驶的路径的位置的传感器数据。在一个实施例中,传感器数据的图像或帧中的一个或多个包括虚拟停车障碍或其他对象的一部分。例如,虚拟环境中停车障碍或其他对象的计算机生成的图像可以由虚拟传感器部件704产生。
地面实况部件706被配置为生成针对由虚拟传感器部件704生成的虚拟传感器数据的虚拟地面实况。例如,地面实况部件706可以确定针对由虚拟传感器部件704拍摄到的每一个图像或帧的模拟条件。在一个实施例中,环境部件702可以向地面实况部件706提供模拟条件。地面实况部件706可以基于针对特定虚拟传感器数据的模拟条件来选择一个或多个模拟条件作为地面实况,或者计算地面实况。例如,地面实况部件706可以选择停车障碍的尺寸(例如高度)作为计算机生成的图像或帧的地面实况。作为另一个示例,地面实况部件706可以接收停车障碍和传感器的虚拟位置,并且然后计算虚拟传感器与停车障碍之间的虚拟距离(例如,视线距离和/或水平距离)。关于虚拟环境内其他对象或障碍物的类似信息也是可预期的。
虚拟地面实况可以包括关于传感器的位置和取向、停车障碍或其他对象的位置和取向、停车障碍或其他对象的一个或多个尺寸、照明条件、天气条件、传感器与停车障碍或其他对象之间的距离、用于捕获传感器数据的传感器的类型的信息或关于模拟条件的任何其它信息。在一个实施例中,可以确定针对由虚拟传感器部件704生成的每一个帧或每一组传感器数据的一组相同的地面实况。例如,针对生成虚拟传感器数据的每一个位置的相同的地面实况信息(例如,传感器高度、距离等)可以被计算。
在一个实施例中,地面实况部件706可以生成由虚拟传感器部件704生成的传感器数据的帧的互补帧(参见图6)。例如,针对对应于一个或多个虚拟停车障碍的像素,互补帧可以具有相同的颜色值。例如,对应于虚拟停车障碍的每一个像素可以具有相同的颜色,以便训练算法或测试算法可以清楚地确定虚拟传感器数据的哪个部分对应于虚拟停车障碍。在一个实施例中,互补帧的每一个像素可以包括图像像素、雷达或lidar矢量、或虚拟传感器数据的其他像素或矩阵值。
存储部件708被配置为存储由虚拟传感器部件704生成的虚拟传感器数据和/或由地面实况部件706确定的任何地面实况。例如,存储部件708可以将虚拟传感器数据和/或地面实况存储在图2的存储器204中。在一个实施例中,存储部件708可以将虚拟传感器数据与对应的地面实况或关于模拟条件的其他信息相关联或为虚拟传感器数据注释对应的地面实况或关于模拟条件的其他信息。传感器数据和地面实况然后可以被用于各种目的,例如用于训练机器学习算法或模型或用于测试机器学习算法或模型。
模型部件710被配置为将虚拟传感器数据和/或地面实况提供至用于机器学习算法或模型的测试或训练的算法。例如,模型部件710可以将由虚拟传感器部件704和/或地面实况部件706提供的虚拟传感器数据和/或地面实况提供至图2的训练部件206或测试部件208。在另一个实施例中,模型部件710可以包括训练部件206和/或测试部件208。例如,虚拟传感器数据和/或虚拟地面实况可以被用于训练或测试用于检测、识别、确定停车障碍或其他对象的一个或多个性质的神经网络、深层神经网络和/或卷积神经网络(convolutionneuralnetwork)。例如,机器学习算法或模型可以被训练或测试以包括在图1的自动驾驶/辅助系统102中。
现在参考图8,说明了用于生成虚拟传感器数据和地面实况的方法800的示意性流程图。方法800可以由模拟部件或用于生成传感器数据的系统——例如图2或7的模拟部件202或图2的用于生成传感器数据的系统200——来执行。
在802,方法800开始,并且环境部件702模拟包含一个或多个停车障碍或其他对象的三维(3d)环境。在804,虚拟传感器部件704生成针对3d环境内一个或多个传感器的多个位置的虚拟传感器数据。在806,地面实况部件706确定对应于多个位置中的每一个的虚拟地面实况。该地面实况可以包括关于虚拟传感器数据内至少一个对象——例如在图像或其他传感器数据中捕获的具有一个或多个特征的对象——的信息。该信息可以包括关于在此所讨论的对象的任何信息,例如对象的尺寸、位置或取向。例如,地面实况可以包括停车障碍或其他对象中至少一个的高度。在808,存储部件708存储并关联虚拟传感器数据和虚拟地面实况。该方法还可以包括模型部件710将虚拟传感器数据和/或虚拟地面实况提供至图2的训练部件206或测试部件208以用于训练或测试机器学习算法或模型。在训练和/或测试模型(例如深层神经网络)之后,该模型可以被包括在图1的车辆控制系统100中以用于在真实世界驾驶条件期间激活对象或停车障碍检测和尺寸估算。
示例
以下示例涉及另外的实施例。
示例1是一种方法,该方法包括模拟包括一个或多个对象(例如停车障碍)的3d环境。该方法包括生成针对3d环境内一个或多个传感器的多个位置的虚拟传感器数据。该方法包括确定对应于多个位置中的每一个的虚拟地面实况。该地面实况包括关于传感器数据内至少一个对象的信息。例如,该地面实况可以包括至少一个停车障碍的高度。该方法还包括存储和关联虚拟传感器数据和虚拟地面实况。
在示例2中,示例1的方法进一步包括提供虚拟传感器数据和虚拟地面实况中的一个或多个以用于训练或测试机器学习算法或模型。
在示例3中,示例2中的机器学习模型或算法包括神经网络。
在示例4中,示例2-3中任一个中训练机器学习算法或模型包括提供虚拟传感器数据的至少一部分和对应的虚拟地面实况以训练机器学习算法或模型以确定一个或多个停车障碍或其他对象的高度和位置中的一个或多个。
在示例5中,示例2-4中任一个中测试机器学习算法或模型包括将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定至少一个对象的分类或位置并且将分类或位置与虚拟地面实况进行比较。
在示例6中,示例1-5中任一个中的多个位置对应于车辆上传感器的规划位置。
在示例7中,示例1-6中任一个中的虚拟传感器数据包括下列中的一个或多个:计算机生成的图像、计算机生成的雷达数据、计算机生成的lidar数据、和计算机生成的超声数据。
在示例8中,示例1-7中任一个中模拟3d环境包括随机生成针对下列中的一个或多个的不同条件:照明、天气、一个或多个对象的位置、以及一个或多个对象的分类或类型。
在示例9中,示例1-8中任一个中生成虚拟传感器数据包括在模拟3d环境内一个或多个传感器的运动期间周期性地生成虚拟传感器数据。
在示例10中,示例1-9中任一个中确定虚拟地面实况包括生成与虚拟传感器数据的帧互补的地面实况帧,其中该地面实况帧包括针对对应于一个或多个对象的像素的相同颜色值。
示例11是一种系统,该系统包括环境部件、虚拟传感器部件、地面实况部件和模型部件。环境部件被配置为模拟包含一个或多个虚拟对象或障碍物的3d环境。虚拟传感器部件被配置为生成针对3d环境内一个或多个传感器的多个位置的虚拟传感器数据。地面实况部件被配置为确定对应于多个位置中的每一个的虚拟地面实况,其中该地面实况包括关于一个或多个障碍物中至少一个障碍物的信息。模型部件被配置为将虚拟感知数据和地面实况提供至机器学习算法或模型以训练或测试机器学习算法或模型。
在示例12中,示例11中的模型部件被配置为训练机器学习算法或模型,其中训练包括提供虚拟传感器数据的至少一部分和对应的虚拟地面实况以训练机器学习算法或模型以确定至少一个障碍物的分类或位置。
在示例13中,示例11-12中任一个中的模型部件被配置为测试机器学习算法或模型。测试包括将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定至少一个障碍物或对象的分类或位置和将分类或位置与虚拟地面实况进行比较。
在示例14中,示例11-13中任一个中的虚拟传感器部件被配置为生成虚拟传感器数据,该虚拟传感器数据包含下列中的一个或多个:计算机生成的图像、计算机生成的雷达数据、计算机生成的lidar数据和计算机生成的超声数据。
在示例15中,示例11-14中任一个中的环境部件被配置为通过随机生成针对多个位置中的一个或多个的不同条件来模拟3d环境,其中不同条件包含下列中的一个或多个:照明条件;天气条件;一个或多个障碍物或对象的位置;以及一个或多个障碍物或对象的尺寸。
示例16是一种计算机可读存储介质,该计算机可读存储介质存储指令,当指令由一个或多个处理器执行时,指令使一个或多个处理器生成针对模拟的3d环境内多个传感器位置的虚拟传感器数据,该模拟的3d环境包含一个或多个虚拟对象。该指令使一个或多个处理器确定针对多个位置中的每一个的一个或多个模拟条件,其中模拟条件包含一个或多个对象中至少一个对象的分类、位置和尺寸中的一个或多个。该指令使一个或多个处理器存储虚拟传感器数据与模拟条件并且为虚拟传感器数据注释模拟条件。
在示例17中,示例16中的指令进一步使一个或多个处理器基于虚拟传感器数据和模拟条件中的一个或多个来训练或测试机器学习算法或模型。
在示例18中,示例16-17中任一个中的指令进一步使处理器执行下列操作中的一个或多个:通过以下方式训练机器学习算法或模型:提供虚拟传感器数据的至少一部分和对应的模拟条件以训练机器学习算法或模型以确定至少一个对象的分类、位置和尺寸中的一个或多个;以及通过以下方式测试机器学习算法或模型:将虚拟传感器数据的至少一部分提供至机器学习算法或模型以确定至少一个对象的分类、位置和尺寸中的一个或多个并且将所确定的至少一个对象的分类、位置和尺寸与模拟条件进行比较。
在示例19中,在示例16-18中任一个中生成虚拟传感器数据包括通过针对多个位置中的一个或多个使模拟条件中的一个或多个随机化来模拟3d环境,其中使一个或多个模拟条件随机化包含使下列中的一个或多个随机化:照明条件;天气条件;一个或多个虚拟对象的位置;以及一个或多个虚拟对象的尺寸。
在示例20中,示例16-19中任一个中确定模拟条件进一步包括生成与虚拟传感器数据的帧互补的地面实况帧,其中该地面实况帧包含针对对应于至少一个对象的像素的相同颜色值。
示例21是一种系统或装置,该系统或装置包括用于实施示例1-20中任一个的方法或实现示例1-20中任一个的系统或装置的手段。
在以上公开内容中,参考附图,附图形成本公开的一部分并且在附图中通过例证示出可以实践本公开的特定实施方式。应当理解的是,在不脱离本公开的范围的前提下,可以利用其他实施方式并且可以进行结构变化。说明书中引用“一个实施例”、“一实施例”,“一个示例实施例”等表明所描述的实施例可以包括特定特征、结构或特性,但每一个实施例可能未必包括特定特征、结构或特性。另外,这样的短语未必是指同一实施例。此外,当特定特征、结构、或特性关于一个实施例进行描述时,可以主张的是,无论是否明确描述,关于其他实施例改变这样的特征、结构或特性在本领域技术人员的知识的范围之内。
如本文所使用的,“自主车辆”可以是完全独立于人类驾驶员作用或操作的车辆;或者可以是在一些情况下独立于人类驾驶员作用或操作的车辆而在其他情况下人类驾驶员可以能够操作车辆;或者可以是主要由人类驾驶员操作但是具有自动驾驶/辅助系统的辅助的车辆。
本文所公开的系统、装置和方法的实施方式可以包含或利用专用或通用计算机,该专用或通用计算机包括计算机硬件,例如,一个或多个处理器和系统存储器,如本文所讨论的。在本公开的范围内的实施方式还可以包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(装置)。承载计算机可执行指令的计算机可读介质是传输介质。因此,举例来说,而非限制,本公开的实施方式可以包含至少两种明显不同种类的计算机可读介质:计算机存储介质(装置)和传输介质。
计算机存储介质(装置)包括随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、只读光盘存储器(cd-rom)、固态驱动器(“ssd”)(例如,基于ram)、闪速存储器、相变存储器(“pcm”)、其他类型的存储器、其它光盘存储器、磁盘存储器或其它磁性存储设备、或者可以被用于存储以计算机可执行指令或数据结构的形式的所需的程序代码手段并且可以由通用或专用计算机访问的任何其它介质。
本文所公开的装置、系统和方法的实施方式可以在计算机网络上进行通信。“网络”被定义为允许电子数据在计算机系统和/或模块和/或其他电子设备之间传输的一个或多个数据链路。当信息通过网络或另一通信连接(硬线连接、无线、或硬线连接或无线的组合)被传送或提供至计算机时,计算机适当地将该连接视为传输介质。传输介质可以包括可以被用于承载以计算机可执行指令或数据结构的形式的所需的程序代码手段并且可以由通用或专用计算机来访问的网络和/或数据链路。上述组合也应该被包括在计算机可读介质的范围之内。
计算机可执行指令包含例如指令和数据,当该指令和数据在处理器中执行时,使通用计算机、专用计算机、或专用处理设备来执行某些功能或功能组。计算机可执行指令可以是例如二进制、例如汇编语言的中间格式指令、或甚至源代码。虽然本发明主题已经以针对结构特征和/或方法论动作的语言进行了描述,但是应当理解的是,在所附权利要求中限定的发明主题不一定局限于所描述的特征或以上所述的动作。相反,所描述的特征和动作被公开作为实施权利要求的示例形式。
本领域技术人员将领会的是,本公开可以在网络计算环境中通过许多类型的计算机系统配置来实践,包括内置式车辆计算机、个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器或可编程的消费者电子产品、网络个人电脑(pc)、小型计算机、大型计算机、移动电话、个人数字助理(pda)、平板电脑、寻呼机、路由器、交换机、各种存储设备和诸如此类。本公开也可以在本地和远程计算机系统都执行任务的分布式系统环境中实践,本地和远程计算机系统通过网络链接(或者通过硬线数据链路、无线数据链路或者通过硬线和无线数据链路的组合)。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。
此外,在适当情况下,本文所描述的功能可以在下列中的一种或多种中执行:硬件、软件、固件、数字部件、或模拟部件。例如,一个或多个专用集成电路(asic)可以被编程为执行本文所描述的系统和程序中的一个或多个。在整个说明书和权利要求书中,某些术语被用来指代特定的系统部件。本领域技术人员将领会的是,部件可以通过不同的名称来称呼。本文不旨在区分名称不同但作用相同的部件。
应当指出的是,以上所讨论的传感器实施例可以包含计算机硬件、软件、固件或其任何组合以执行其功能的至少一部分。例如,传感器可以包括被配置为在一个或多个处理器中执行的计算机代码,并且可以包括由计算机代码控制的硬件逻辑/电子电路。本文提供这些示例设备是为了说明的目的,并不旨在进行限制。本公开的实施例可以在其他类型的设备中实施,如相关领域技术人员将已知的那样。
本公开的至少一些实施例涉及包含存储在任何计算机可用介质上的这样的逻辑(例如,以软件的形式)的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使设备如本文所描述的那样操作。
虽然以上已经描述了本公开的各种实施例,但是应当理解的是,它们已仅通过举例的方式呈现,而非限制。对相关领域的技术人员来说将显而易见的是,形式和细节的各种改变可以在不脱离本公开的精神和范围的前提下进行。因此,本公开的广度和范围不应该被上述示例性实施例中的任一个限制,而是应该仅根据下面的权利要求书及其等同物来限定。为了说明和描述的目的,前面的描述已被呈现。它不旨在是穷尽或将本公开限制为所公开的精确形式。鉴于以上教导,许多修改和变化是可能的。此外,应该指出的是,上述替代实施方式中的任一个或全部可以以任意所需的组合使用以形成本公开的附加混合实施方式。
此外,虽然本公开的特定实施方式已被描述和说明,但是本公开不被限于所描述和所说明的特定的形式或部件的布置。本公开的范围由所附的权利要求、本申请中和不同申请中所提交的任何未来的权利要求及其等同物来限定。