CN112347829A - 利用障碍物和车道检测来确定环境中对象的车道分配 - Google Patents
利用障碍物和车道检测来确定环境中对象的车道分配 Download PDFInfo
- Publication number
- CN112347829A CN112347829A CN202010350455.1A CN202010350455A CN112347829A CN 112347829 A CN112347829 A CN 112347829A CN 202010350455 A CN202010350455 A CN 202010350455A CN 112347829 A CN112347829 A CN 112347829A
- Authority
- CN
- China
- Prior art keywords
- lane
- vehicle
- fence
- data
- lanes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/588—Recognition of the road, e.g. of lane markings; Recognition of the vehicle driving pattern in relation to the road
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/12—Edge-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/58—Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/01—Detecting movement of traffic to be counted or controlled
- G08G1/0104—Measuring and analyzing of parameters relative to traffic conditions
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/01—Detecting movement of traffic to be counted or controlled
- G08G1/0104—Measuring and analyzing of parameters relative to traffic conditions
- G08G1/0125—Traffic data processing
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/09—Arrangements for giving variable traffic instructions
- G08G1/0962—Arrangements for giving variable traffic instructions having an indicator mounted inside the vehicle, e.g. giving voice messages
- G08G1/0968—Systems involving transmission of navigation instructions to the vehicle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20132—Image cropping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30248—Vehicle exterior or interior
- G06T2207/30252—Vehicle exterior; Vicinity of vehicle
- G06T2207/30256—Lane; Road marking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30248—Vehicle exterior or interior
- G06T2207/30252—Vehicle exterior; Vicinity of vehicle
- G06T2207/30261—Obstacle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Analytical Chemistry (AREA)
- Chemical & Material Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Traffic Control Systems (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了利用障碍物和车道检测来确定环境中对象的车道分配。在各种示例中,与自我车辆检测到的对象相对应的对象围栏可用于确定对象围栏与驾驶表面上的车道的重叠。可以生成与驾驶表面上的车道相对应的车道掩码,并且可以将对象围栏与车道掩码的车道进行比较以确定重叠。在对象围栏位于一个以上车道中的情况下,可以使用边界计分方法来确定边界围栏从而物体与每个车道的重叠率。与每个对象的一个或更多个车道的重叠可用于确定对象的车道分配,并且自我车辆可使用车道分配来确定沿着驾驶表面的路径或轨迹。
Description
背景技术
自主驾驶系统和高级驾驶员辅助系统(ADAS)可以利用诸如摄像机 之类的传感器来执行各种任务,例如车道保持、车道变更、车道分配、摄 像机校准和定位。例如,为了自主和ADAS系统独立且有效地运行,可生 成对车辆的周围环境实时或近乎实时的了解。这种了解可以包括关于对象 和/或障碍物在环境中相对于各种标界(例如,车道、道路边界、交叉路口 等)的位置的信息。车辆在做出决定时可以使用周围环境的信息,例如要 遵循的路径或轨迹,是否加速或减速,变道或其他操作当前是否安全等。
在常规系统中,可以从使用各种计算机视觉或机器学习技术处理的实 时图像(例如,从经由图像处理识别的视觉指示符)中内插用于对象(例 如,车辆、行人等)的车道(或其他位置)分配。例如,可以分析包括车 道和车辆的所捕获的驾驶表面的图像,以确定车辆和车道之间的相关性。 但是,由于可能会使用整个车辆与车道的交互,因此在常规系统中可能无 法准确识别车辆的实际行驶车道。例如,在图像空间中,并且取决于摄像 头的视角,车辆可能看起来延伸到了相邻车道(例如,当摄像头的视角从 车辆左侧看时,车辆的顶部可能看起来延伸到了车辆的左侧相邻车道), 即使车辆实际上在单个车道上也是如此。当试图了解周围环境时,这可能 无法提供最准确的结果供自主系统和/或ADAS系统使用,从而降低了此环 境信息的整体有效性和可靠性。
发明内容
本公开的实施例涉及利用障碍物和车道检测来确定环境中对象的车道 分配。公开了提供用于利用对象检测、自由空间检测、对象围栏(fence) 检测和/或车道检测来有效且准确地将对象分配给环境的各个车道或其他 定义的部分的系统和方法。与如上所述的常规方法相比,当前系统提供用 于使用来自车辆的多个传感器(例如,摄像机、RADAR传感器、LIDAR 传感器等)的输出实时或接近实时地检测并分配对象到车道的技术。本公 开的实施例可以组合各种计算机视觉或机器学习算法的输出以用于路径检 测、车道检测和/或对象或障碍物检测,以将对象分配给车辆周围的车道。 例如,当前系统可以学习使用来自任何数量的传感器的传感器数据来检测 图像空间中被一个或更多个对象占据的像素和相应的车道。可以使用与实 际占据车道的对象的一部分相对应的对象围栏或区域来确定对象的像素占 据率。例如,可以确定对象的占用空间(footprint),使得仅占用空间用于 确定对象占据的空间。通过更准确地识别对象的对象围栏或占用空间,确 定车道分配的过程可以相对减少计算费用,因为可以分析减少的像素数量 (例如,对象围栏的像素,而不是整个车辆的像素),以确定车道分配。 作为回报,计算费用的减少可以减轻确定对象的车道分配的负担,从而为 其他高级驾驶员辅助系统(ADAS)或自主任务释放处理能力,同时减少运行时间。
附图说明
下面参考所附附图详细描述用于利用障碍物和车道检测来确定环境中 对象的车道分配的本系统和方法,其中:
图1是根据本公开的一些实施例的、示出用于确定环境中的对象的车 道分配的示例过程的示例数据流程图;
图2A是根据本公开的一些实施例的、在由车辆传感器生成的图像中 检测到的车辆的示例边界形状预测的图示;
图2B是根据本公开的一些实施例的、在图像中检测到的车辆的示例 裁剪后的边界形状的图示;
图2C是根据本公开的一些实施例的、在环境中的示例可驾驶的自由 空间预测的图示;
图2D是根据本公开的一些实施例的、使用可驾驶的自由空间预测和 边界形状预测生成的用于车辆的对象围栏的图示;
图3是示出根据本公开的一些实施例的、用于确定环境中的对象的车 道分配的示例过程的流程图;
图4是根据本公开的一些实施例的、由围栏生成算法生成的用于车辆 的对象围栏的图示;
图5是根据本公开的一些实施例的、示出用于确定环境中的对象的车 道分配的示例过程的流程图;
图6A是根据本公开的一些实施例的、由车道检测算法生成的界定车 道的折点(poly-point)的图示;
图6B是根据本公开的一些实施例的、连接折点的折线(polyline)的 图示,该折点界定由车道检测算法生成的车道;
图6C是根据本公开的一些实施例的、在检测到的车道上执行车道三 角测量以生成车道掩码的图示;
图6D是根据本公开的一些实施例的、使用车道数据生成的车道掩码 的图示;
图6E是根据本公开的一些实施例的、在车道掩码上执行车道延伸以 延伸车道的图示;
图7A是根据本公开的一些实施例的、为对象围栏生成顶点以确定对 象围栏与车道掩码的车道的重叠的图示;
图7B是根据本公开的一些实施例的、当对象围栏越过车道边界时为 对象围栏生成顶点以确定对象围栏与车道掩码的车道的重叠的图示;
图8是示出根据本公开的一些实施例的、用于确定环境中的对象与两 个车道之间的像素重叠比的示例过程的流程图。
图9A是根据本公开的一些实施例的、示例自主车辆的图示;
图9B是根据本公开的一些实施例的、图9A的示例自主车辆的摄像机 位置和视野的示例;
图9C是根据本公开的一些实施例的、图9A的示例自主车辆的示例系 统架构的框图;
图9D是根据本公开的一些实施例的、用于在一个或更多个基于云的 服务器与图9A的示例自主车辆之间进行通信的系统图;和
图10是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
公开了与利用障碍物和车道检测确定环境中的对象的车道分配有关的 系统和方法。本文描述的系统和方法可以用于增强现实、虚拟现实、机器 人技术、安全和监视、医学成像、自主机器应用和/或可以实现对象检测和 分配的任何其他技术空间中。尽管可以关于示例自主车辆900(在本文中可 替代地称为“车辆900”或“自主车辆900”,其示例关于图9A-图9D进 行描述)来描述本公开,但这是并非旨在进行限制。例如,本文描述的系 统和方法可以由但不限于由非自主车辆、半自主车辆(例如,在一个或更 多个自适应驾驶员辅助系统(ADAS)中)、机器人、仓库车辆、越野车辆、 飞行船只、轮船、穿梭车、应急车辆、摩托车、电动或机动自行车、飞机、 建筑车辆、水下航行器、无人机和/或其他车辆类型中使用。此外,尽管本 文描述的检测主要涉及诸如车辆和/或行人之类的对象,但是本公开不旨在 仅限于这些检测。对于非限制性示例,本文所述的过程可用于检测任何对 象或特征,例如但不限于道路标志、飞机、船、穿梭车、自行车、摩托车、 交通信号灯、行李、标志、电线杆、动物、树木、字符、字母、物品、产 品、障碍、数字水印和/或解剖对象。
如上所述,与常规系统相比,当前系统提供准确且计算高效的方法, 以使用来自车辆的多个传感器(例如,摄像机、LIDAR传感器、RADAR 传感器、SONAR传感器等)的输出来实时或接近实时地检测对象并将其分 配给车道。例如,在车道分配之前,可以确定对象围栏或占用空间。在一 些实施例中,可以使用输入的组合来确定对象围栏。例如,可以使用机器 学习模型(例如,训练为检测对象的卷积神经网络(CNN))和/或计算机 视觉对象检测算法来生成对象检测输入。对象检测输入可以包括与对象相 对应的边界形状,例如盒子。在一些示例中,在非限制性示例中,可以裁 剪边界形状的至少一部分,诸如以将边界形状减小到形状的底部五分之一。 另一输入可以包括可驾驶的自由空间输入,该可驾驶的自由空间输入可以 类似地使用机器学习模型和/或计算机视觉算法来生成。可驾驶的自由空间输入可用于裁剪(或进一步裁剪)或切出(carve out)与可驾驶的自由空间 相对应的边界形状的一部分。结果,边界形状的剩余部分(例如,具有切 出的可驾驶的自由空间的边界形状)可以被称为二维(2D)图像空间内的 对象围栏或占用空间。可以针对自我车辆(ego-vehicle)的视野或自我车辆 的传感器的感测野(sensory field)中的每个对象执行该过程。使用此方法, 可以减少假阳性车道分配,因为对象的顶部或上部可能不太可能与世界空 间中的车道实际相交(尽管它看起来似乎与图像空间中的车道相交,这是 常规方法的缺点)。
在一些示例中,可以使用专门编程(或在该算法是机器学习模型的示 例中被训练)为检测对象并生成对象的围栏的围栏检测算法来生成对象围 栏。例如,来自任何数量的传感器(例如,摄像机、RADAR传感器、LIDAR 传感器、SONAR传感器等)的传感器数据都可以用作围栏检测算法的输入, 并且围栏检测算法可以生成世界空间(例如三维世界空间)中的对象围栏。 可以使用生成传感器数据的传感器的固有和/或外部参数,将对象围栏从三 维(3D)世界空间转换到2D图像空间。
在一些实施例中,除了对象围栏之外,还可以使用传感器数据(例如, LIDAR数据、SONAR数据、图像数据、RADAR数据等)来确定环境中对 象的未来位置。例如,一旦确定了对象围栏,就可以使用传感器数据来确 定环境中对象的路径或轨迹,以确定一个或更多个未来位置(例如,将来 0.5秒、将来1秒等),并且可以在未来位置应用对象围栏。这样,使用对象的当前位置和对应于对象的速度和/或加速度数据,可以使用一种或更多 种算法和/或机器学习模型来确定对象的未来位置,从而确定在未来位置处 对象的相应对象围栏的位置。在一些示例中,缩放(scaling)因子可以被 用作对象的未来位置相对于车辆位置的改变(例如,随着对象移动得更远, 对象围栏可以从当前大小减小,随着对象由于减速而移动得更近,例如, 对象围栏的大小可能会增加,依此类推)。然后,该信息可用于通知车辆 将来可能定位对象的车道或环境的其他部分,以帮助轨迹或路径规划、避 障和/或车辆的其他操作。
然后,可以将对象围栏与车道数据结合使用,以确定对象围栏与环境 (例如,驾驶表面)中的车道的重叠从而确定与每个对象关联的一个或 更多个车道。车道数据可以以车道图和/或地图(例如,导航级地图、高清 晰度(HD)地图等)的形式被接收。车道数据可以用于生成表示2D图像 空间中与每个车道相对应的像素的车道掩码。在一些示例中,车道图、地 图和/或其组合可以用于确定环境中的车道的数量和位置。例如,可以使用 车道掩码算法,该车道掩码算法接收车道数据作为输入并且可以生成车道 掩码。在实施例中,车道可以由折线(polyline)定义(例如,包括沿着界 定(demarcate)车道的线的点)。这样,为了从折线生成掩码,在一些实 施例中,可以使用三角测量方法。三角测量方法可以沿着折线连接点(例 如,对于每个车道,以从一条折线到另一条折线的交叉(crisscross)方式 每隔一点连接一次)。作为非限制性示例,三角测量方法可以包括单调多 边形三角测量。三角测量的结果可以包括2D图像空间中的多边形,每个多 边形对应于一车道,使得针对给定车道的多边形内的每个像素被确定为对 应于该车道。
在一些示例中,在车道掩码生成期间可能无法确定车道的全部或可用 延伸。在这样的示例中,可以使用车道延伸算法(例如,曲线拟合、车道 外推等)来延伸车道。通过延伸车道,可以减少假阳性。在其他示例中, 可能没有车道检测数据以供系统使用。在这样的示例中,可以生成虚拟车 道。例如,在一些实施例中,可以生成至少三个车道,包括自我车道(例 如,自我车辆的车道)和任一侧上的相邻车道。通过生成虚拟车道,即使 不是完全准确,也可以将对象分配给虚拟车道,以使自我车辆更好地理解 相对于自我车辆的路径(例如,自我车道)的对象的位置。
一旦确定了对象围栏和车道掩码,就可以通过确定2D图像空间中对 象围栏和车道掩码的像素之间的重叠来将对象与车道相关联。可以基于对 象围栏中的像素与车道掩码中的车道像素的重叠,将对象分配给车道掩码 中的一个或更多个车道。在一些示例中,可以基于简单像素计数将每个对 象分配给一个或更多个车道。在其他示例中,对象围栏可以由沿着对象围 栏的周边的顶点(或与其对应的像素)表示。在对象位于单个车道中的情况下,可以计算、累加和归一化两个周边像素的每组之间的像素距离,以 创建每车道相交比,对于单个车道,该每车道相交比为1/1。在对象位于一 个以上车道中的情况下,则可以确定一组与车道边界交叉的点。一旦确定 了两个像素,就可以在两个像素之间的交叉处生成新顶点。然后可以使用 该像素来确定新顶点与交点任一侧上的每个其他周边像素或顶点之间的距 离。可以计算出第一车道的新顶点和第一组周边像素之间的距离的第一和,以及可以计算出第二车道的新顶点和第二组周边像素之间的距离的第二 和。在一些实施例中,然后可以将这些和归一化。最终,可以使用第一和 与第二和来确定每车道相交比。知道相交比以及该相交比从帧到帧如何变 化,可以提供对象的轨迹的指示(例如,切换车道、转向、保持车道等)。
在一些实施例中,时间平滑可用于利用对象的先前帧的先前车道分配。 例如,由于随着对象离车辆更近时车道分配可能更准确,因此随着车辆向 远处移动,可以利用先前的车道分配在更远的距离处提供对对象车道分配 的更准确的预测,其中车道倾向于看起来在2D图像空间中合并。
最终,表示对象的车道分配的数据然后可以被编译并发送到感知层、 世界模型管理层、规划层、控制层和/或自主驾驶软件栈的另一层,以辅助 自主车辆和/或具有ADAS功能的车辆安全且高效地驶过驾驶表面。
参考图1,图1是根据本公开的一些实施例的示例数据流程图,其示 出了用于确定环境中的对象的车道分配的示例过程100。虽然关于图1描述 的检测类型是车道检测,但这仅出于示例目的,不旨在是限制。例如,在 不脱离本公开的范围的情况下,过程100可以用于检测环境的路径、轨迹、 行、线和/或其他部分,并为其分配对象。
过程100可以包括从车辆900的一个或更多个传感器生成和/或接收传 感器数据102。传感器数据102可以由车辆900使用,并且在过程100内使 用,以实时或接近实时地将对象分配给车道或环境的其他定义区域。传感 器数据102可以包括但不限于来自车辆900(和/或其他车辆或对象,在一 些示例中,诸如机器人设备、VR系统、AR系统等)的任何传感器的传感 器数据102。例如,并且参考图9A-图9C,传感器数据102可以包括由不 限于一个或更多个全球导航卫星系统(GNSS)传感器958(例如,一个或 更多个全球定位系统传感器)、一个或更多个RADAR传感器960、一个或 更多个超声波传感器962、一个或更多个LIDAR传感器964,一个或更多 个惯性测量单元(IMU)传感器966(例如,一个或更多个加速度计、一个 或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等)、一个 或更多个麦克风996、一个或更多个立体照相机968、一个或更多个广角照 相机970(例如鱼眼照相机)、一个或更多个红外照相机972、一个或更多 个环绕照相机974(例如360度照相机)、一个或更多个远程和/或中程照 相机998、一个或更多个速度传感器944(例如,用于测量车辆900的速度) 和/或其他传感器类型生成的数据。
在一些示例中,传感器数据102可以包括由一个或更多个前向传感器 (例如,照相机(例如,一个或更多个在中心或近中心处安装的照相机) 和/或其他传感器类型(例如,安装在保险杠上的RADAR传感器))生成 的传感器数据。当导航时(例如,在车道内、通过车道变更、通过转弯、 通过十字路口等),该传感器数据102对于计算机视觉和/或感知可能有用, 因为前向照相机可包括既包括车辆900的当前行驶车道,也包括车辆900 的一个或更多个相邻行驶车道和/或驾驶表面的边界的视野(例如,图9B 的前向立体照相机968和/或广角照相机970的视野)。在一些示例中,除 了前向传感器之外,还可以采用侧视传感器和/或后视传感器,例如在车道 分配要包括车辆900的侧面和/或车辆900的后方的对象的情况下。在一些 示例中,不止一个照相机或其他传感器(例如,LIDAR传感器964、RADAR 传感器960等)可用于合并多个视野(例如,图9B的远程照相机898、前 向立体照相机868和/或前向广角照相机870的视野),和/或(例如,LIDAR 传感器964、RADAR传感器960等的)感测野。
传感器数据102可以包括表示一个或更多个图像的图像数据、表示视 频的图像数据(例如,视频的快照)和/或表示传感器的感测野的表示的传 感器数据(例如,用于LIDAR传感器的深度图、用于超声波传感器的值图 等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图 像数据格式,例如但不限于例如联合图像专家组(JPEG)或亮度/色度(YUV) 格式的压缩图像,作为源自诸如H.264/高级视频编码(AVC)或H.265/高 效视频编码(HEVC)之类的压缩视频格式的帧的压缩图像,诸如源自红透 明蓝(RCCB)、红透明(RCCC)或其他类型的成像传感器的原始图像和 /或其他格式。另外,在一些示例中,可以在过程100内使用传感器数据102, 而无需任何预处理(例如,以原始格式或捕获的格式),而在其他示例中, 传感器数据102可以进行预处理(例如,噪声平衡、去马赛克、缩放、裁 剪、增强、白平衡、色调曲线调整等,例如使用传感器数据预处理器(未 示出))。如本文中所使用的,传感器数据102可以参考未处理的传感器 数据、预处理的传感器数据或其组合。
传感器数据102可以用于为由车辆900的传感器捕获的环境中的一个 或更多个对象生成对象围栏110。对象围栏110可以使用多种不同方法中的 任何一种来生成,例如但不限于本文所述的那些。在一些示例中,对象围 栏110可以使用自由空间检测106和对象检测104的组合来生成,而在其 他示例中,对象围栏110可以使用围栏生成算法108来生成。在任一示例 中,对象围栏110可以用作过程100内的车道检测和分配的输入。
在使用对象检测104和自由空间检测106生成对象围栏110的实施例 中,传感器数据102可以用作对象检测104和自由空间检测106的输入。 例如,对象检测104可以使用传感器数据102(例如,来自一个或更多个照 相机的图像数据,来自一个或更多个LIDAR传感器的LIDAR数据,来自 一个或更多个RADAR传感器的RADAR数据等)来检测对象(例如,车 辆、行人、自行车、碎片等)并为检测到的对象生成边界形状(例如边界 框、圆形、多边形等)。对象检测104可以使用机器学习模型(例如,深 度神经网络(DNN),诸如卷积神经网络(CNN)),计算机视觉算法和 /或另一种对象检测算法类型来检测对象并生成对象的边界形状。在机器学 习模型用于对象检测104的情况下,机器学习模型可以包括但不限于使用 线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最 近邻(Knn)、K均值聚类、随机森林、降维算法、梯度提升算法、神经网 络(例如,自动编码器、卷积、循环、感知器、长期/短期记忆(LSTM)、 霍普菲尔德(Hopfield)、玻尔兹曼(Boltzmann)、深度信念、反卷积、 卷积、生成对抗、液态机等)的一个或更多个机器学习模型和/或其他类型 的机器学习模型。
使用对象检测104输出的边界形状可以表示一个或更多个图像的部分 (由传感器数据102表示),其对应于(例如,在车辆900的驾驶表面上 的)对象。例如,参看图2A中的可视化200,可以使用对象检测104为车 辆202生成边界形状204,以识别与车辆202相对应的图像的一部分。在非 限制性示例中,对象检测104的输出可以包括一个或更多个图像中确定对 象所位于的点(例如,像素)。在这样的示例中,这些点可以包括边界形 状内的每个点或每个像素。除了在边界形状内生成的对象掩码之外,边界 形状还可以定义与对象相对应的每个像素,可以针对每一帧中的任意数量 的对象执行对象检测104的该过程。
在一些实施例中,为了确定对象围栏110,可以裁剪每个检测到的对 象的边界形状的至少一部分。例如,由于边界形状内的对象中的至少一些 可能不对应于该对象在驾驶表面上的占用空间(例如,在2D图像空间中, 车辆202的上部可延伸超过行车道),则可以裁剪边界形状的至少一部分。 如图2B的可视化220所示,可以裁剪边界形状204以生成与车辆202相对 应的经裁剪的边界形状222。在一些示例中,可以裁剪边界形状的预定部分、 预定量或预定百分比,例如但不限于边界形状的上半部分,上部四分之三, 上部五分之四,上部四分之二和底部四分之一等等。通过裁剪边界形状的 至少一部分,可以减少假阴性,因为所得到的经裁剪的边界形状更准确地 对应于车辆202在驾驶表面上的占用空间。除了相对于对象占用空间的准 确度优势外,裁剪边界形状的一部分还可以减少用于确定对象围栏110的 计算费用(例如,通过减少用于应用自由空间检测106的有效面积)和/或 使用对象围栏110进行车道分配的计算费用(例如,通过减少可在计算中 使用的边界形状的裁剪掉部分中的像素数目)。
如本文所述,自由空间检测106的输出可以与在对象检测104期间生 成的边界形状和/或经裁剪的边界形状结合使用。例如,传感器数据102可 以由一个或更多个计算机视觉算法、机器学习模型和/或用于可驾驶的自由 空间的其他检测算法使用,以确定车辆900的传感器的一个或更多个视野 和/或一个或更多个感测野内的环境部分。可用于自由空间检测106的机器 学习模型可以包括但不限于本文描述的那些(例如,相对于上面的对象检测104)。作为非限制性示例,可驾驶的自由空间可以使用在2019年3月 15日提交的美国非临时申请No.16/355,328中描述的方法来确定,该申请的 全部内容通过引用合并于此。
自由空间检测106的输出可以表示(在由车辆900的一个或更多个照 相机捕获的图像内表示的)环境的一部分,其对应于驾驶表面上的可驾驶 的自由空间和/或不可驾驶空间。可驾驶的自由空间可以表示环境中可由车 辆900穿过或驾驶的部分(例如,道路可以是可驾驶的,而人行道或建筑 物可以是不可驾驶的)以及不可驾驶空间(例如,建筑物、公园等)。图 2C的可视化230可以表示应用于经裁剪的边界形状222的自由空间检测 106的至少一部分。例如,可以在经裁剪的边界形状222中裁剪出在自由空 间检测106期间确定的可驾驶的自由空间232的一部分以生成对象围栏110 (如图2D的可视化240所表示的)。这样,如图2C所示,在可驾驶的自 由空间232被裁剪出之后,对象围栏110可表示经裁剪的边界形状222内 的不可驾驶空间234。在使用完整边界形状204的示例中,可以裁剪出完整 边界形状204内的可驾驶的自由空间。在一些示例中,自由空间检测106 可以包括图像中的点(例如,像素),其中检测到可驾驶的自由空间和/或 不可驾驶空间,以及可以使用这些点来执行边界形状的裁剪和/或对象围栏 110的生成。在这样的示例中,可以将与可驾驶的自由空间相对应的点从与 边界形状(或其经裁剪版本)相对应的点中移除,以生成对象围栏110。可 以针对表示车辆900的传感器的视野或感测野的一个或更多个输入图像中 检测到的每个对象执行裁剪过程。
在一些实施例中,除了或代替使用对象检测104和自由空间检测106, 还可以使用围栏生成算法108来生成对象围栏110。围栏生成算法108可以 包括机器学习模型、计算机视觉算法和/或对象检测算法。在使用机器学习 模型的情况下,机器学习模型可以包括但不限于本文(例如,以上关于对 象检测104)描述的机器学习模型。围栏生成算法108可以被训练和/或编 程为使用传感器数据102作为输入以检测对象并为每个检测到的对象生成对象围栏110(例如,如图2D所描绘的)。例如,来自任何数量的传感器 (例如,照相机、RADAR传感器960、LIDAR传感器964、超声传感器 962等)的传感器数据102可用作围栏生成算法108的输入。在一些实施例 中,围栏生成算法108可以在2D或3D世界空间中生成对象围栏110,并 且生成传感器数据102的相应传感器的固有和/或外部参数可以用于将对象 围栏110从世界空间转换到图像空间。例如,为了准确地确定世界空间坐 标和图像坐标之间的关系,可以使用3D到2D投影。例如,可以使用一个 或更多个固有的(例如,焦距f、光心(u0,v0)、像素纵横比α、偏斜s 等)和/或外部的(例如3D旋转R、平移t等)相机参数来校准传感器。此 外,在一些非限制性示例中,还可以施加一个或更多个约束,例如要求3D 点始终位于驾驶表面的地平面上。在一些示例中,一个或更多个传感器的 一个或更多个参数可以是动态的(例如,由于振动、运动、取向等),并 且结果可以动态地更新3D至2D投影。
在一些实施例中,一个或更多个对象围栏110可以被生成为对应于一 个或更多个对象围栏110的多边形的点(例如,像素和/或顶点)。这样, 通过连接顶点,可以生成与一个或更多个对象围栏110相对应的多边形, 并且一个或更多个对象围栏110内的像素可以被确定为与用于车道分配的 对象相对应。可以(使用本文所述的任何方法)在车道分配120之前生成 一个或更多个对象围栏110,以通过更接近地定义驾驶表面上的对象的形状 或占用空间来提高车道分配预测的准确性和可靠性。例如,一旦确定了对 象围栏110,就可以将对象围栏110与车道掩码116结合使用,以进行用于 车道分配120的重叠确定118。
在一些实施例中,可以使用传感器数据102(例如,LIDAR数据、 SONAR数据、图像数据、RADAR数据等)和对象围栏110来确定环境中 对象的未来位置和/或分配。例如,一旦确定了对象围栏110,则表示速率、 速度、加速度、偏航率等的传感器数据102就可用于确定环境中对象的未 来路径或轨迹,以确定一个或更多个未来位置(例如,未来0.5秒、未来1 秒,等等)。例如,线性动态模型(例如,未来位置=当前位置+(速度× 时间))、恒定加速度模型、恒定转弯速率模型、机器学习模型、另一种 算法类型和/或其组合可以使用传感器数据(或由此表示的数据)来确定对 象的一个或更多个未来位置(例如,在世界空间中)。一旦知道了一个或 更多个未来位置,就可以使用该未来位置和对象围栏110信息来(例如, 在图像空间中)生成对象围栏110。在一些示例中,缩放因子可以被用作对 象的相对于车辆900的位置的未来位置改变(例如,随着对象移动得更远, 对象围栏110可以从当前尺寸减小,随着对象由于减速而移动得更近,例 如,对象围栏110的尺寸可能会增加等等。然后,该信息可以用于将未来 时间对象可能位于的车道或环境的其他部分通知车辆900,以帮助轨迹或路 径规划、规避障碍物和/或车辆的其他操作。车道分配120的确定对于未来 的对象围栏位置与对于当前的对象围栏位置可以是相似的,并且车辆的当 前和未来的对象围栏110的组合可以提供对随着时间的推移(例如,接下 来的一秒、两秒等)预计对象所占据的环境内的面积或体积的更详细的理 解。
车道检测112可以使用传感器数据102和/或车道数据126来确定一个 或更多个车道、划分、分割和/或驾驶表面的边界的位置。例如,车道检测 112可以使用计算机视觉算法、机器学习模型和/或对象检测算法来确定车 道(或车道线)的位置、划分、分割、边界和/或驾驶表面的其他区域。在 使用机器学习模型的情况下,机器学习模型可以包括但不限于本文(例如, 以上关于对象检测104)描述的机器学习模型。作为非限制性示例,诸如在2019年2月15日提交的、申请号为16/286,329的美国非临时申请和在2019 年7月17日提交的、申请号为16/514,404的美国非临时申请中描述的方法 中的每一个都通过引用将其全部内容合并于此。
在一些示例中,车道检测112可以使用车道数据226,其中车道数据 226可以包括一个或更多个车道曲线图和/或地图(例如,导航级地图,高 清晰度(HD)地图)。例如,车道数据226可以表示驾驶表面上的多个车 道和/或环境中的出口坡道、合并、划分和/或其他特征。这样,可以使用传 感器数据102、车道数据226或其组合来生成车道检测112。例如,可以使 用传感器数据102结合车道检测算法或机器学习模型来识别一个或更多个 车道,并且可以使用车道数据226(例如,来自地图应用程序)来识别一个 或更多个其他车道。车道检测的输出可以包括与驾驶表面的车道线、边界 线、合并线、划分线和/或其他线相对应的线(例如,由多个顶点表示的折 线)。
在非限制性示例中,车道检测112的输出可包括一个或更多个图像中 车道边界(例如,图6A的可视化600的折点602A-602H和604A-604F)) 被确定为位于其中的点(例如,像素)。折线(例如,图6B的可视化620 的折线622A-622G和624A-624E)可以通过连接各个车道和/或边界的相邻 折点来生成,其中折线之间的连接可以定义车道线的范围或图像的边界。 这样,折点和/或折线可以在传感器数据102(例如,图像)和/或地图数据 226(例如,车道图和/或地图)表示的环境中界定或勾勒检测到的车道、 下坡道、上坡道、边界和/或其他特征。
为了确定车道掩码116,在一些实施例中,可以执行车道三角测量114。 例如,使用车道检测112的输出(例如,对应于折线的折点),车道三角 测量114可以用于生成车道掩码116。在这样的示例中,车道三角测量114 可以连接图案(例如交叉图案)中相邻折线之间的折点。在非限制性示例 中,如图6C所示,每个折点可以以交叉方式连接到与同一条线相对应的相 邻折线的折点(例如,来自左侧车道线的折点可以连接到来自右侧车道线 的折点)。第一折线的第一折点(例如,最底端的折点)可以连接到第二 折线的第一(或第二)折点,以及第二折线的第一(或第二)折点可以连 接到第一折线的第二折点,依此类推,直到每个折点均被连接以形成三角 形为止,如图6C的可视化640所示。在一些非限制性示例中,车道三角测 量114可以使用单调多边形三角测量来生成车道掩码116。折线可以被假定 为在至少一个轴(例如,方向)上是单调的并且是非弯曲的。可以在各自 车道中的终点折线点和起点折线点之间确定向量。然后,向量可以用于生 成三角形(例如,图6D的三角形642A-642X)以渲染车道掩码116,从而 确定图像内与每个车道、上坡道、下坡道或驾驶表面的其他界定部分相对 应的像素。
在一些实施例中,车道回归算法可以用于车道三角测量114以生成车 道掩码116。车道回归算法可以使线回归通过折线以生成三角形。例如,可 以使用任何已知的回归算法来生成三角形。可以使用由车道三角测量116 为每个车道生成的三角形来生成车道掩码116。渲染的三角形的组合可以在 图像空间中形成多边形,其中每个多边形可以对应于车道。
作为车道三角测量114和/或另一种掩码生成方法的结果,可以生成车 道掩码116以表示图像空间中的像素,该像素对应于车道或驾驶表面的其 他部分。在一些示例中,车道掩码116中的每个像素可以被索引为对应于 相应车道的颜色(例如,相对于图6D的可视化660、左车道662的像素可 以是第一颜色或图案,中间或自我车道664的像素可以是第二颜色或图案, 而第三车道666的像素可以是第三颜色或图案)。
在实施例中,比例因子可以用于按比例缩小(scale down)车道掩码 116。例如,可以以预定比例因子(例如,一半、四分之一等)按比例缩小 车道掩码,以提高性能或减少运行时间。即使在缩放之后,车道掩码116 也可以保留用于生成车道掩码116的一个或更多个源图像、一个或更多个 地图和/或一个或更多个图形的保真度,因为在实施例中,可以基于比例执 行查找,使得传感器数据102中的每个像素都可以以比例因子按比例缩小, 从而即使在较低的按比例缩小的分辨率下也可以保留较高空间分辨率的信 息。在这样的示例中,可以在车道三角测量114之前按比例缩小传感器数 据102,并且可以使用光栅化器按比例缩小传感器数据102(例如,图像)。 然后按比例缩小的传感器数据102可以用于车道三角测量114。在这样的实 施例中,对象围栏110(例如,对象围栏110的像素)也可以按相同的比例因子按比例缩小。
在一些示例中,车道延伸122和/或虚拟车道生成124可以用于延伸检 测到的车道和/或在车道掩码116中生成车道,例如作为车道检测112和/ 或车道三角测量114的结果,在没有为车道掩码116生成完整或可用范围 的车道的情况下。车道的预定长度可以用于确定是否可以执行车道延伸122 来延伸一个或更多个车道。在这样的示例中,车道延伸算法或机器学习模 型(例如本文所述的那些)可以用于延伸一个或更多个车道。可以使用任 何已知的车道延伸算法(例如但不限于曲线拟合和/或车道外推)来生成车 道延伸(例如,图6E的可视化680中的车道延伸682、684、686和688)。 这样的车道延伸可以通过为车道掩码116生成更多的深度来减少针对检测 到的对象的车道分配的假阳性。此外,在一些示例中,车道延伸算法可以 配置成当延伸与另一车道边界相交时限制车道延伸。
可以在未检测到一个或更多个车道(例如,低于阈值数量的车道)的 情况下执行虚拟车道生成124。这样,当存在用于车道检测112的有限的车 道数据126和/或传感器数据102时,可以使用虚拟车道生成124。在实施 例中,可以使用预定数量的车道来确定是否应当生成虚拟车道。例如,在 阈值是三个车道的情况下,当未检测到三个车道时,可以生成虚拟车道以 填充间隙。在这样的示例中,三个车道可至少包括车辆900的自我车道, 以及在自我车道的任一侧上的相邻车道。类似于车道延伸122,可以使用算 法或机器学习模型来确定要生成的虚拟车道的数量以及要生成的虚拟车道 的位置。通过生成虚拟车道,即使不如实际检测那样准确,也可以将对象 分配给虚拟车道,以向车辆900提供对对象相对于自我车辆的路径的位置 的更好理解。
一旦生成一个或更多个对象围栏110和车道掩码116,就可以执行重 叠确定118,以确定哪些对象围栏或其部分在每个车道或环境的其他界定部 分中。这样,重叠确定118可以使用车道掩码116和对象围栏110来确定 对象围栏110和车道掩码116的像素和/或边界之间的重叠(例如,在2D 图像空间中)。
在一些示例中,可以基于对象围栏110中的像素与车道掩码116中的 车道像素的重叠,在车道分配120期间,将对象分配给车道掩码中的一个 或更多个车道。像素计数132可以用于确定对象围栏110与车道掩码116 的像素之间的重叠,从而可以基于像素计数将具有相应对象围栏110的每 个对象分配给一个或更多个车道。可以将在整个对象围栏110中的像素与 车道掩码116中的每个车道的车道像素进行匹配,并且可以基于每个车道 中的对象围栏110像素的像素计数,将对象分配给一个或更多个车道。然 后,与车道掩码116相关联的像素索引(例如,颜色或图案,如关于图6D 所描述的)可以用于确定特定像素与什么车道重叠。在一些示例中,为了 将对象与车道相关联,可能需要多个重叠像素大于阈值(例如,大于二十 个像素、大于四十个像素、大于对象围栏110的百分之十的像素等)。通 过使用阈值,可以减少假阳性,因为与车道稍微重叠的对象围栏110可以 被认为不重要(这可以解释对象围栏110中的一些不准确性)。
在一些实施例中,除了像素计数132之外或替代像素计数132,还可 以执行边界计分134以确定对象围栏110和车道掩码116的像素之间的重 叠。在这样的示例中,对象围栏110可以由沿对象围栏110周边的顶点(例 如,像素)(例如,顶点702A,702B,702C,…,702N)表示。可以确 定对象围栏110的顶点之间的像素距离以确定重叠。例如,在对象位于单 个车道的情况下,可以对每组两个周边像素之间的像素距离进行计算、累 加和归一化,以创建每车道相交比对于单个车道,该比为1/1。
在对象可能在一个以上车道中的示例中,可以确定与车道边界相交的 一组点。例如,可以确定顶点702B和顶点702C沿着车道线分开。这样, 可以通过在车道线上的顶点702B和702C之间找到一个点来确定交点722A (或新顶点)。一旦交点或新顶点可用于确定新顶点与彼此周边像素或在 相交的任一侧上的对象围栏110的顶点之间的距离(例如,沿着直线、沿 着对象围栏100的边界的像素距离等)。可以计算在第一车道中新顶点与 对应于对象围栏110的第一组周边像素之间的距离的第一和,以及可以计 算在第二车道中的新顶点与对应于对象围栏110的第二组周边像素之间的 距离的第二和。在一些实施例中,然后可以将这些和归一化。最终,可以 基于距离的第一和与距离的第二和来确定每车道相交比。知道相交比以及 该比从帧到帧如何变化,可以提供对象的轨迹的指示(例如,切换车道、 转向、保持车道等)。此外,在车道分配120期间,相交比可以用于将对 象分配给多个车道。
重叠确定118可以用于为具有各自的对象围栏110的每个对象确定车 道分配120。在一些示例中,像素计数132可以提供与车道掩码116像素重 叠的对象围栏110像素的像素计数,并且重叠可用于确定车道分配。作为 另一示例,对象围栏110的每车道相交比(由边界评分134确定)可用于 将对象分配给两个或更多车道。车道分配120可以表示相应对象的当前行 驶车道。车辆900在做出决定时可以使用车道分配120,例如,车辆900 应遵循或可以遵循什么路径或轨迹,是否制动、加速或改变车道,和/或其 他决定类型。
在一些实施例中,可以执行时间平滑142以利用对象的一个或更多个 先前帧和/或一个或更多个图像的先前的车道分配120,来估计对象在一个 或更多个后续帧和/或一个或更多个图像中的位置和/或车道分配。例如,由 于当对象靠近车辆900的一个或更多个传感器时车道分配可以更准确,所 以随着对象移动得更远,可以利用先前的车道分配120来提供对对象位置 的更准确的预测,以及对更远的距离处(例如,车道在图像空间中看起来 合并的位置)的车道分配的更准确的预测。在这样的示例中,可以相对于 车道分配120的当前预测对一个或更多个先前的预测进行加权(例如,当 前预测90%/一个或更多个先前预测10%,当前预测70%/紧接在前的预测 20%/两个先验预测10%等)。因此,时间平滑可以利用先前的预测来改善 过程100内的车道分配120的准确性。
现在参考图2A-图2D,图2A-图2D示出了根据本公开的一些实施例 的使用对象检测104和自由空间检测106在图像中生成用于车辆的对象围 栏的过程。图2A示出了在由车辆传感器生成的图像中检测到的车辆的边界 形状。可以使用对象检测算法和/或机器学习模型为(如可视化200中所表 示的)车辆202生成边界形状204。在一些示例中,边界形状204可以是围 绕车辆202的边界框。边界形状204可以表示为输入图像200中车辆202 可能位于的点(例如,对应于边界形状204的每个像素,沿边界形状204 的周边的顶点或其组合)。
图2B示出了根据本公开的一些实施例的在图像中检测到的车辆202 的经裁剪的边界形状222。例如,如本文所述,可裁剪边界形状204的至少 一部分以生成经裁剪的边界形状222。
图2C示出了根据本公开的一些实施例的使用可驾驶的自由空间确定 来定义对象围栏。例如,可驾驶的自由空间232(如本文所述)可以被裁剪 出边界形状204和/或经裁剪的边界形状222,以生成对象围栏110。尽管 在图2C的经裁剪的边界形状222内仅示出为可驾驶的自由空间323和不可 驾驶空间234,但这不意图是限制性的。在一些示例中,每个图像的一些或 全部可以被界定为可驾驶的自由空间或不可驾驶空间,并且与边界形状204和/或经裁剪的边界形状222相对应的该输出的部分可以用于生成对象围栏 110。
图2D示出了根据本公开的一些实施例的通过从对象边界形状中去除 可驾驶的自由空间而生成的用于车辆的对象围栏。如图2D所示,可驾驶的 自由空间232可以从经裁剪的边界形状222中移除以生成对象围栏110。
现在参看图3,本文描述的方法300的每个框包括可以使用硬件、固 件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理 器执行存储在存储器中的指令来实行。该方法还可以体现为存储在计算机 存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管 服务(独立地或与另一托管服务组合地)或另一产品的插件(仅举几例) 提供。另外,通过示例的方式,针对用于确定图1的环境中的对象的车道 分配的过程100描述了方法300。然而,该方法可以附加地或替代地由任何 一个系统或系统的任何组合来执行,包括但不限于本文所述的系统。
图3是根据本公开的一些实施例的示出用于确定环境中的对象的车道 分配的方法300的流程图。在框B302处,方法300包括:接收表示与图像 中描绘的对象相对应的边界形状的对象检测数据。例如,在对象检测112 之后,可以接收与(例如,由传感器数据102表示的)图像中描绘的对象 (例如,车辆、行人、碎片等)相对应的边界形状。在一些示例中,边界 形状可以是表示边界形状的一部分的经裁剪的边界形状(例如,图2B的经 裁剪的边界形状222)。
在框B304处,方法300包括:接收表示被确定为包括可驾驶的自由 空间的边界形状的至少一部分的自由空间数据。例如,在对传感器数据102 执行自由空间检测106之后,可以接收表示被确定为包括可驾驶的自由空 间的边界形状的至少一部分的自由空间数据。
在框B306处,方法300包括:裁剪出边界形状的该部分,以从边界 形状内生成对象围栏。例如,可以通过裁剪出来自对象检测102的边界形 状的该部分来生成对象围栏110,该部分表示来自自由空间确定106的自由 空间数据。
在框B308处,方法300包括:接收表示图像内的多个车道线的位置 的车道数据。例如,可以在执行车道检测112之后接收表示传感器数据102 和/或车道数据126内的多个车道线的位置的车道数据。
在框B310处,方法300包括:使用车道数据生成车道掩码。例如, 可以例如使用车道三角测量114,由从车道检测112接收的车道数据生成车 道掩码116。
在框B312处,方法300包括:确定对象围栏与由车道掩码定义的一 个或更多个车道之间的重叠。例如,对象围栏110与由车道掩码116定义 的一个或更多个车道之间的重叠可以通过使用像素计数132和/或边界评分 134的重叠确定110来确定。
在框B314处,方法300包括:至少部分地基于该重叠将对象分配给 一个或更多个车道中的至少一个。例如,车道分配120可以用于将对象分 配给来自车道掩码116的一个或更多个车道中的至少一个。
参看图4,图4示出了根据本公开的一些实施例的通过围栏生成算法 生成的用于车辆的对象围栏404。如本文所述,围栏生成算法108可以用于 生成用于车辆402的对象围栏404。
现在参看图5,本文描述的方法500的每个框包括可以使用硬件、固 件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理 器执行存储在存储器中的指令来实行。该方法还可以体现为存储在计算机 存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管 服务(独立地或与另一托管服务组合地)或另一产品的插件(仅举几例) 提供。另外,通过示例的方式,针对用于确定图1的环境中的对象的车道 分配的过程100描述了方法500。然而,该方法可以附加地或替代地由任何 一个系统或系统的任何组合来执行,包括但不限于本文所述的系统。
图5是根据本公开的一些实施例的示出用于确定环境中的对象的车道 分配的方法500的流程图。在框B502处,方法500包括:将由一个或更多 个传感器生成的传感器数据应用于对象围栏生成算法。例如,可以将由一 个或更多个传感器生成的传感器数据102应用于围栏生成算法108。
在框B504处,方法500包括:使用对象围栏算法识别用于一个或更 多个传感器中的至少一个传感器的感测视野内的对象的世界空间对象围 栏。例如,对象围栏算法108可以用于识别用于在一个或更多个传感器中 的至少一个传感器的感测野内的对象的世界空间中的对象围栏110,从该一 个或更多个传感器接收传感器数据102。
在框B506处,方法500包括:至少部分地基于与一个或更多个传感 器中的至少一个传感器相对应的传感器参数,将世界空间对象围栏转换为 图像空间对象围栏。例如,围栏生成算法108可以用于至少部分地基于与 一个或更多个传感器中的至少一个相对应的传感器参数,将对象围栏110 从世界空间转换到图像空间。
在框B508处,方法500包括:接收表示由传感器数据表示的图像内 的多个车道线的位置的车道数据。例如,可以经由车道检测112接收表示 由传感器数据102表示的图像内的多个车道线的位置的车道数据。
在框B510处,方法500包括:使用车道数据生成车道掩码。例如, 车道掩码116可以使用在车道检测112之后接收的车道数据(例如使用车 道三角测量114)来生成。
在框B512处,方法500包括:确定图像空间对象围栏与由车道掩码 定义的一个或更多个车道之间的重叠。例如,对象围栏110与由车道掩码 116定义的一个或更多个车道之间的重叠可以通过重叠确定110使用像素 计数132和/或边界评分134来确定。
在框B514处,方法500包括:至少部分地基于该重叠将对象分配给 一个或更多个车道中的至少一个。例如,车道分配120可以用于将对象分 配给车道掩码116中的一个或更多个车道中的至少一个。
现在参看图6A-图6E,图6A-图6E示出了根据本公开的一些实施例的 用于使用车道数据生成车道掩码的过程。图6A示出了由车道检测算法生成 的界定车道的折点。车道检测算法可以从传感器数据102中检测输入图像 中的车道线。车道线可以包括在车辆900的驾驶表面上界定车道的折点 602A-602H和604A-604F。折点可以是沿着车道线的点(例如,像素)。
图6B示出了根据本公开的一些实施例的折线,该折线连接由车道检 测算法生成的界定车道的折点。车道检测算法可以通过分别在每个车道的 车道线上连接相邻的折点602A-602H和604A-604F来生成折线622A-622G 和624A-624E。折线可以表示图像中表示车辆900的驾驶表面的车道边界 (例如,线)。
图6C示出了根据本公开的一些实施例的在检测到的车道上执行的车 道三角测量以生成车道掩码。可以通过使用车道三角测量114以交叉的方 式将车道边界的折点602A-602Z与相邻车道边界的折点604A-604Z连接在 一起来生成三角形(例如,三角形620A-620L,以及其他未编号的三角形)。 通过在各个车道边界之间生成三角形以界定车道,可以对每个车道进行车 道三角测量。
图6D示出了根据本公开的一些实施例的使用车道数据生成的车道掩 码660。车道掩码660可以包括三角形的车道662、664和668。每个车道 可以用不同颜色的索引来表示。然后可以将每个车道内的像素存储在相应 车道颜色下的索引中。车道掩码660表示车辆900的驾驶表面上的一些或 全部车道。
图6E示出了根据本公开的一些实施例的在车道掩码680上执行的车 道延伸以延伸车道。例如,如果未确定车道的全部或可用范围(如车道延 伸682、684、686和688所示),则车道延伸122可用于延伸车道掩码中 的检测到的车道。
现在参看图7A-图7B,图7A-图7B示出了根据本公开的一些实施例 的为对象围栏生成的顶点以确定对象围栏与车道掩码中的车道的重叠。图 7A示出了当对象围栏相对于特定帧在一个车道内时,为确定对象围栏与车 道掩码中的车道的重叠而为对象围栏生成的顶点。对象围栏706可以由沿 着图像中车辆704的对象围栏706的周边的顶点(例如,像素)702A、702B、 702C、…、702N表示。可以确定对象围栏706的顶点702之间的像素距离, 以确定对象围栏和车道掩码的车道708之间的重叠。例如,在对象位于单 个车道中的情况下,可以对每组两个周边像素之间的像素距离进行计算、 累加和归一化,以创建每车道相交比,对于单个车道,该比为1/1。
图7B示出了根据本公开的一些实施例的当对象围栏与车道边界相交 时为对象围栏生成的顶点,以确定对象围栏与车道掩码中的车道的重叠。 在车辆704在一个以上车道(例如,车道708和710)中的情况下,可以确 定与车道边界相交的一组点,交点722A和722B。一旦确定了交点722, 就可以使用这些新的顶点来确定新的顶点与该交点的任一侧上的对象围栏 的每个其他周边像素或顶点之间的距离,如本文所述。
现在参看图8,本文描述的方法800的每个框包括可以使用硬件、固 件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理 器执行存储在存储器中的指令来实行。该方法还可以体现为存储在计算机 存储介质上的计算机可用指令。该方法可以由独立应用程序、服务或托管 服务(独立地或与另一托管服务组合地)或另一产品的插件(仅举几例) 提供。另外,通过示例的方式,针对用于确定图1的环境中的对象的车道 分配的过程100描述了方法800。然而,该方法可以附加地或替代地由任何 一个系统或系统的任何组合来执行,包括但不限于本文所述的系统。
图8是根据本公开的一些实施例的示出用于确定环境中的对象与两个 车道之间的像素重叠比的方法800的流程图。在框B802处,方法800包括: 至少部分地基于对象围栏与表示第一车道和第二车道的车道掩码,确定对 象围栏与第一和第二车道中的每一个部分重叠。例如,重叠确定118可以 确定对象围栏110与车道掩码116中的至少两个车道重叠。
在框B804处,方法800包括:识别与对应于对象围栏的顶点的像素 对,该像素对由划分第一车道和第二车道的车道线隔开。例如,由划分第 一车道(例如,图7B的车道708)与第二车道(例如,图7B的车道710) 的车道线(例如,车道边界)隔开的对象围栏(例如,对象围栏110,对象 围栏706)的像素对(例如,图7B的顶点702A和702B)可以经由重叠确 定118来识别。
在框B806处,方法800包括:确定与像素对之间的车道线相对应的 像素。例如,可以通过边界计分134来确定与像素对(例如,图7B的顶点 702A和702B)之间的车道线相对应的像素(例如,图7B的交点722A)。
在框B808处,方法800包括:计算像素与第一车道中对象围栏的多 个第一顶点中的每个顶点之间的距离的第一和以及像素与第二车道中的对 象围栏的多个第二顶点中的每个顶点之间的距离的第二和。例如,边界计 分134可以计算像素(例如,图7B的交点722A)与第一车道(例如,图 7B的车道708)中的对象围栏(例如,对象围栏110、对象围栏706)的多个第一顶点中的每个顶点之间的距离的第一和以及像素与第二车道(例如, 图7B的车道710)中的对象围栏的多个第二顶点中的每个顶点之间的距离 的第二和。
在框B810处,方法800包括:至少部分地基于距离的第一和确定第 一车道中的对象围栏的第一重叠比,以及至少部分地基于距离的第二和确 定第二车道中的对象围栏的第二重叠比。例如,边界计分134可以至少部 分地基于距离的第一和来确定第一车道(例如,图7B的车道708)中的对 象围栏110(或图7B的对象围栏706)的第一重叠比,以及至少基于距离 的第二和确定第二车道(例如,图7B的车道710)中的对象围栏的第二重 叠比。
在框B812处,方法800包括:至少部分地基于第一重叠比和第二重 叠比执行至少一个操作。例如,车道分配120可以基于经由边界评分134 确定的第一重叠比和第二重叠比将对象分配给车道。
示例自主车辆
图9A为根据本公开一些实施例的示例自主车辆900的图示。自主车 辆900(可替代地,在本文称为“车辆900”)可以包括但不限于乘客用车, 例如汽车、卡车、公共汽车、第一响应车、穿梭车、电动或机动自行车、 摩托车、消防车、警车、救护车、船、建筑车、水下航行器、无人机和/或 另一种类型的车辆(例如,无人车和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局 (NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related to DrivingAutomation Systems for On-Road Motor Vehicles”(2018 年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准 No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进 行描述。车辆900可能够实现符合自主驾驶级别的3级-5级中的一个或更 多个的功能。例如,取决于实施例,车辆900可能够实现条件自动化(3 级)、高自动化(4级)和/或全自动化(5级)。
车辆900可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8 个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆900可 以包括推进系统950,例如内燃机、混合动力发电厂、全电动发动机和/或 另一种推进系统类型。推进系统950可以连接到可以包括变速器的车辆900 的传动系以便实现车辆900的推进。可以响应于接收到来自油门/加速器952 的信号而控制推进系统950。
可以包括方向盘的转向(steering)系统954可以用来在推进系统950 操作时(例如在车辆运动时)使车辆900转向(例如沿着希望的路径或路 线)。转向系统954可以接收来自转向执行器956的信号。对于全自动(5 级)功能而言,方向盘可以是可选的。
制动传感器系统946可以用来响应于接收到来自制动执行器948和/ 或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)904(图9C)和/或一个或更 多个GPU的一个或更多个控制器936可以向车辆900的一个或更多个部件 和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以 发送经由一个或更多个制动执行器948操作车辆制动器、经由一个或更多 个转向执行器956操作转向系统954、经由一个或更多个油门/加速器952 操作推进系统950的信号。一个或更多个控制器936可以包括一个或更多 个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传 感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/ 或辅助人类驾驶员驾驶车辆900。一个或更多个控制器936可以包括用于自 主驾驶功能的第一控制器936、用于功能性安全功能的第二控制器936、用 于人工智能功能(例如计算机视觉)的第三控制器936、用于信息娱乐功能的第四控制器936、用于紧急情况下的冗余的第五控制器936和/或其他控 制器。在一些示例中,单个控制器936可以处理上述功能中的两个或更多, 两个或更多控制器936可以处理单个功能,和/或其任意组合。
一个或更多个控制器936可以响应于接收自一个或更多个传感器的传 感器数据(例如传感器输入),提供用于控制车辆900的一个或更多个部 件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系 统传感器958(例如全球定位系统传感器)、RADAR传感器960、超声传 感器962、LIDAR传感器964、惯性测量单元(IMU)传感器966(例如加 速度计、陀螺仪、磁罗盘、磁力计等)、麦克风996、立体照相机968、广 角照相机970(例如鱼眼照相机)、红外照相机972、环绕照相机974(例 如360度照相机)、远程和/或中程照相机998、速度传感器944(例如用 于测量车辆900的速率)、振动传感器942、转向传感器940、制动传感器 (例如作为制动传感器系统946的部分)和/或其他传感器类型。
控制器936中的一个或更多个可以接收来自车辆900的仪表组932的 输入(例如由输入数据表示),并且经由人机接口(HMI)显示器934、听 觉信号器、扬声器和/或经由车辆900的其他部件提供输出(例如输出数据、 显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地 图数据(例如图9C的HD地图922)、位置数据(例如,车辆900例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息, 如控制器936所感知的关于对象和对象状态的信息等等。例如,HMI显示 器934可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通 灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做 出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆900进一步包括网络接口924,其可以使用一个或更多个无线天 线926和/或调制解调器通过一个或更多个网络通信。例如,网络接口924 可能够通过LTE、WCDMA、UMTS、GSM、CDMA 2000等通信。一个或 更多个无线天线926也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之 类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或 更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备 等等)之间的通信。
图9B为根据本公开一些实施例的用于图9A的示例自主车辆900的 照相机位置和视野的示例。照相机和各自的视野是一个示例实施例,并不 意图是限制性的。例如,可以包括附加的和/或可替换的照相机,和/或这些 照相机可以位于车辆900上的不同位置。
用于照相机的照相机类型可以包括但不限于可以适于与车辆900的部 件和/或系统一起使用的数字照相机。所述照相机可以在汽车安全完整性级 别(ASIL)B下和/或在另一个ASIL下操作。照相机类型可以具有任何图 像捕获率,例如60帧每秒(fps)、920fps、240fps等等,这取决于实施例。 照相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。 在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白 白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3 滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列 和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB 和/或RBGC滤色器阵列的照相机之类的清晰像素照相机可以用在提高光敏 感度的努力中。
在一些示例中,所述照相机中的一个或更多个可以用来执行高级驾驶 员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如, 可以安装多功能单目照相机以提供包括车道偏离警告、交通指示牌辅助和 智能前照灯控制在内的功能。所述照相机中的一个或更多个(例如全部照 相机)可以同时记录和提供图像数据(例如视频)。
所述照相机中的一个或更多个可以安装在诸如定制设计的(3-D打印 的)组件之类的安装组件中,以便切断可能干扰照相机的图像数据捕获能 力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的 反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得照相 机安装板匹配翼镜的形状。在一些示例中,一个或更多个照相机可以集成 到翼镜中。对于侧视照相机而言,一个或更多个照相机也可以集成到驾驶 室每个拐角的四根柱子内。
具有包括车辆900前面的环境部分的视野的照相机(例如前置照相机) 可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器 936和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆 路径至关重要的信息。前置照相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置照相机也可以用 于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制 (“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的照相机可以用于前置配置中,包括例如包括CMOS(互补 金属氧化物半导体)彩色成像仪在内的单目照相机平台。另一个示例可以 是广角照相机970,其可以用来感知从周边进入视野的对象(例如行人、十 字路口交通或者自行车)。尽管图9B中图示出仅仅一个广角照相机,但是 在车辆900上可以存在任意数量的广角照相机970。此外,远程照相机998 (例如长视立体照相机对)可以用于基于深度的对象检测,尤其是用于尚 未针对其训练神经网络的对象。远程照相机998也可以用于对象检测和分 类以及基本的对象跟踪。
一个或更多个立体照相机968也可以包括在前置配置中。立体照相机 968可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单 个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑 (FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像 中的所有点的距离估计。可替代的立体照相机968可以包括紧凑型立体视 觉传感器,其可以包括两个照相机镜头(左右各一个)以及可以测量从车 辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制 动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者 可替代地,可以使用其他类型的立体照相机968。
具有包括车辆900的侧面的环境部分的视野的照相机(例如侧视照相 机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警 告的信息。例如,环绕照相机974(例如如图9B中所示的四个环绕照相机 974)可以置于车辆900上。环绕照相机974可以包括广角照相机970、鱼 眼照相机、360度照相机和/或类似物。四个示例,四个鱼眼照相机可以置 于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个 环绕照相机974(例如左边、右边和后面),并且可以利用一个或更多个其 他照相机(例如前向照相机)作为第四环视照相机。
具有包括车辆900的后面的环境部分的视野的照相机(例如后视照相 机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。 可以使用各种各样的照相机,包括但不限于也适合作为如本文所描述的前 置照相机(例如远程和/或中程照相机998、立体照相机968、红外照相机 972等等)的照相机。
图9C为根据本公开一些实施例的用于图9A的示例自主车辆900的 示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作 为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他 的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一 些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以 实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组 合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/ 或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而 实现。
图9C中车辆900的部件、特征和系统中的每一个被图示为经由总线 902连接。总线902可以包括控制器区域网络(CAN)数据接口(可替代 地,本文称为“CAN总线”)。CAN可以是车辆900内部的网络,用来辅 助控制车辆900的各种特征和功能,例如制动器、加速、制动、转向、挡 风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个 节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN 总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/ 或其他车辆状态指示符。CAN总线可以是ASILB兼容的。
尽管这里将总线902描述为CAN总线,但是这并不意图是限制性的。 例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。 此外,尽管用单条线来表示总线902,但是这并不意图是限制性的。例如, 可以存在任意数量的总线902,其可以包括一条或更多条CAN总线、一条 或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用 不同协议的其他类型的总线。在一些示例中,两条或更多总线902可以用 来执行不同的功能,和/或可以用于冗余。例如,第一总线902可以用于碰 撞避免功能,并且第二总线902可以用于驱动控制。在任何示例中,每条 总线902可以与车辆900的任何部件通信,并且两条或更多总线902可以 与相同的部件通信。在一些示例中,车辆内的每个SoC 904、每个控制器 936和/或每个计算机可以有权访问相同的输入数据(例如来自车辆900的 传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆900可以包括一个或更多个控制器936,例如本文关于图9A所 描述的那些控制器。控制器936可以用于各种各样的功能。控制器936可 以耦合到车辆900的任何其他不同的部件和系统,并且可以用于车辆900 的控制、车辆900的人工智能、用于车辆900的信息娱乐和/或类似物。
车辆900可以包括一个或更多个片上系统(SoC)904。SoC 904可以 包括CPU 906、GPU 908、处理器910、高速缓存912、加速器914、数据 存储916和/或未图示出的其他部件和特征。在各种各样的平台和系统中, SoC 904可以用来控制车辆900。例如,一个或更多个SoC 904可以在系统 (例如车辆900的系统)中与HD地图922结合,所述HD地图可以经由 网络接口924从一个或更多个服务器(例如图9D的一个或更多个服务器 978)获得地图刷新和/或更新。
CPU 906可以包括CPU簇或者CPU复合体(可替代地,本文称为 “CCPLEX”)。CPU 906可以包括多个核和/或L2高速缓存。例如,在一 些实施例中,CPU 906在一致性多处理器配置中可以包括八个核。在一些 实施例中,CPU 906可以包括四个双核簇,其中每个簇具有专用的L2高速 缓存(例如2MB L2高速缓存)。CPU 906(例如CCPLEX)可以被配置为 支持同时簇操作,使得CPU 906的簇的任意组合能够在任何给定时间是活 动的。
CPU 906可以实现包括以下特征中的一个或更多个的功率管理能力: 各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE 指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个 核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时, 可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时, 可以独立地对每个核簇进行功率门控。CPU 906可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且 硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理 核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 908可以包括集成的GPU(可替代地,本文称为“iGPU”)。 GPU 908可以是可编程的,并且对于并行工作负载而言是高效的。在一些 示例中,GPU 908可以使用增强张量指令集。GPU 908可以包括一个或更 多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具 有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。 在一些实施例中,GPU 908可以包括至少八个流式微处理器。GPU 908可 以使用计算应用编程接口(API)。此外,GPU 908可以使用一个或更多个 并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 908进行功率优化以实现 最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 908。 然而,这并不意图是限制性的,并且GPU 908可以使用其他半导体制造工 艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理 核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个 处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64 核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量 核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存 器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径, 以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可 以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和 协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以 便在简化编程的同时提高性能。
GPU 908可以包括在一些示例中提供大约900GB/s的峰值内存带宽的 高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了 HBM内存之外或者可替代地,可以使用同步图形随机存取存储器 (SGRAM),例如第五代图形双倍数据速率同步随机存取存储器 (GDDR5)。
GPU 908可以包括统一内存技术,其包括访问计数器以允许内存页面 更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的 内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允 许GPU 908直接访问CPU 906页表。在这样的示例中,当GPU 908内存管 理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 906。作为 响应,CPU 906可以在其页表中寻找用于地址的虚拟-物理映射,并且将转 换传输回GPU908。这样,统一内存技术可以允许单个统一虚拟地址空间 用于CPU 906和GPU 908二者的内存,从而简化了GPU 908编程和将应用 程序移(port)到GPU 908。
此外,GPU 908可以包括访问计数器,其可以跟踪GPU 908访问其他 处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访 问这些页面的处理器的物理内存。
SoC 904可以包括任意数量的高速缓存912,包括本文描述的那些高 速缓存。例如,高速缓存912可以包括CPU 906和GPU 908二者可用的 L3高速缓存(例如,其连接到CPU906和GPU 908二者)。高速缓存912 可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如 MEI、MESI、MSI等)跟踪行的状态。取决于实施例,L3高速缓存可以包 括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 904可以包括一个或更多个加速器914(例如硬件加速器、软件 加速器或者其组合)。例如,SoC 904可以包括硬件加速簇,其可以包括优 化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM) 可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来 补充GPU 908,并且卸载GPU 908的一些任务(例如释放GPU 908的更多 周期以用于执行其他任务)。作为一个示例,加速器914可以用于足够稳 定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN) 等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包 括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于 对象检测)。
加速器914(例如硬件加速簇)可以包括深度学习加速器(DLA)。 DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万 亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执 行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而 优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能, 并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数, 支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后 处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任 何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使 用来自照相机传感器的数据进行对象识别和检测的CNN;用于使用来自照 相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行 应急车辆检测和识别与检测的CNN;用于使用来自照相机传感器的数据进 行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 908的任何功能,并且通过使用推理加速器,例 如,设计者可以使DLA或GPU 908针对任何功能。例如,设计者可以将 CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 908和/ 或其他加速器914。
加速器914(例如硬件加速簇)可以包括可编程视觉加速器(PVA), 其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置 为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR) 和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活 性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指 令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处 理器。
RISC核可以与图像传感器(例如本文描述的任何照相机的图像传感 器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包 括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协 议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可 以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备 实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 906访问系统内存。DMA 可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维 寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度 的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进 和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行 用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA 可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系 统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。 向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处 理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核 可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字 (VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用 内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于 其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可 以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中 的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区 域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的 图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的 部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件 加速簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。 此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体系统安全性。
加速器914(例如硬件加速簇)可以包括片上计算机视觉网络和 SRAM,以提供用于加速器914的高带宽、低延迟SRAM。在一些示例中, 片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少 4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级 外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何 类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的 主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和 DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确 定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提 供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据 传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508 标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 904可以包括例如在2018年8月10日提交的美 国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线 追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的 位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于 声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、 用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用 途。
加速器914(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可 以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。 PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换 言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功 率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的 平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象 检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在 一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性 的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如 来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目 照相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR 数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示 例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以 提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括 例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可 以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。 该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不 是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅 仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中, 假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此, 只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于 回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输 入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车 辆900取向、距离相关的惯性测量单元(IMU)传感器966输出,从神经 网络和/或其他传感器(例如LIDAR传感器964或RADAR传感器960)获 得的对象的3D位置估计等。
SoC 904可以包括一个或更多个数据存储916(例如内存)。数据存 储916可以是SoC 904的片上内存,其可以存储要在GPU和/或DLA上执 行的神经网络。在一些示例中,为了冗余和安全,数据存储916可以容量 足够大以存储神经网络的多个实例。数据存储912可以包括L2或L3高速 缓存912。对数据存储916的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器914关联的内存的引用。
SoC 904可以包括一个或更多个处理器910(例如嵌入式处理器)。 处理器910可以包括启动和功率管理处理器,其可以是用于处理启动功率 和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处 理器可以是SoC 904启动序列的一部分,并且可以提供运行时间功率管理 服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率 状态转换、SoC 904热和温度传感器管理和/或SoC 904功率状态管理。每 个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 904可以使用环形振荡器检测CPU 906、GPU 908和/或加速器914的温度。 如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例 程并且将SoC 904置于较低功率状态和/或将车辆900置于司机安全停车模 式(例如使车辆900安全停车)。
处理器910可以进一步包括可以用作音频处理引擎的一组嵌入式处理 器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口 的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在 一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专 用处理器核。
处理器910可以进一步包括始终在处理器上的引擎,其可以提供必要 的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引 擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中 断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器910可以进一步包括安全簇引擎,其包括处理汽车应用的安全 管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧 密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路 由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且 用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器910可以进一步包括实时照相机引擎,其可以包括用于处理实 时照相机管理的专用处理器子系统。
处理器910可以进一步包括高动态范围信号处理器,其可以包括图像 信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是照相机处 理管线的部分。
处理器910可以包括可以是(例如微处理器上实现的)处理块的视频 图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所 需的视频后处理功能。视频图像复合器可以对广角照相机970、环绕照相机 974和/或对驾驶室内监控照相机传感器执行镜头畸变校正。驾驶室内监控 照相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控, 被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的 地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。 某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况 下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例 如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近 帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频 图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图 像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当 操作系统桌面正在使用并且GPU 908无需连续地渲染(render)新的表面 时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 908上电 并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 908的负 担以提高性能和响应能力。
SoC 904可以进一步包括用于从照相机接收视频和输入的移动行业处 理器接口(MIPI)照相机串行接口、高速接口和/或可以用于照相机和有关 像素输入功能的视频输入块。SoC 904可以进一步包括可以由软件控制并且 可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 904可以进一步包括大范围的外围设备接口,以使能与外围设备、 音频编解码器、功率管理和/或其他设备通信。SoC 904可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)照相机、传感器(例如可以 通过以太网连接的LIDAR传感器964、RADAR传感器960等等)的数据, 来自总线902的数据(例如车辆900的速率、方向盘位置等等),来自(通 过以太网或CAN总线连接的)GNSS传感器958的数据。SoC 904可以进 一步包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引 擎,并且其可以用来从日常数据管理任务中释放CPU 906。
SoC 904可以是具有灵活架构的端到端平台,该架构跨越自动化3-5 级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗 余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合 功能安全架构。SoC 904可以比常规的系统更快、更可靠,甚至更加能量高 效和空间高效。例如,当与CPU 906、GPU 908和数据存储916结合时, 加速器914可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算 机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类 的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。 然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执 行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的 对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬 件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且 将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例 如GPU 920)上执行的CNN可以包括文本和单词识别,允许超级计算机读 取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA 可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语 义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同 时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连 同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以 由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌, 文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署 的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行) 当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作 部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的 灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 908上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自照相 机传感器的数据识别车辆900的授权的驾驶员和/或车主的存在。始终在传 感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开 灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 904提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦 克风996的数据来检测并且识别应急车辆警报(siren)。与使用通用分类 器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 904使用 CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中, 运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过 使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器958所识别 的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲 操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅 仅北美的警报。一旦检测到应急车辆,在超声传感器962的辅助下,控制 程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下 车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 904的CPU 918(例如分立的CPU或dCPU)。CPU 918可以包括例如X86处理器。 CPU 918可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS 传感器与SoC 904之间潜在地不一致的结果,和/或监控控制器936和/或信 息娱乐SoC 930的状态和健康状况。
车辆900可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦 合到SoC 904的GPU 920(例如分立的GPU或dGPU)。GPU 920可以例 如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且 可以用来基于来自车辆900的传感器的输入(例如传感器数据)来训练和/ 或更新神经网络。
车辆900可以进一步包括网络接口924,该网络接口可以包括一个或 更多个无线天线926(例如用于不同通信协议的一个或更多个无线天线,例 如蜂窝天线、蓝牙天线等等)。网络接口924可以用来使能通过因特网与 云(例如与服务器978和/或其他网络设备)、与其他车辆和/或与计算设备 (例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这 两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以 向车辆900提供关于接近车辆900的车辆(例如车辆900前面、侧面和/或 后面的车辆)的信息。该功能可以是车辆900的协作自适应巡航控制功能 的部分。
网络接口924可以包括提供调制和解调功能并且使得控制器936能够 通过无线网络通信的SoC。网络接口924可以包括用于从基带到射频的上 转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过 程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例 中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过 LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z 波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆900可以进一步包括可包括片外(例如SoC 904外)存储装置的 数据存储928。数据存储928可以包括一个或更多个存储元件,包括RAM、 SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据 的其他部件和/或设备。
车辆900可以进一步包括GNSS传感器958。GNSS传感器958(例 如GPS和/或辅助GPS传感器)用于辅助映射、感知、占用网格生成和/或 路径规划功能。可以使用任意数量的GNSS传感器958,包括例如且不限 于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆900可以进一步包括RADAR传感器960。RADAR传感器960 可以甚至在黑暗和/或恶劣天气条件下也由车辆900用于远程车辆检测。 RADAR功能安全级别可以是ASIL B。RADAR传感器960可以使用CAN 和/或总线902(例如以传输RADAR传感器960生成的数据)以用于控制 以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以 使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器 960可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多 普勒RADAR传感器。
RADAR传感器960可以包括不同的配置,例如具有窄视野的远程、 具有宽视野的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以 用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独 立扫描实现的广阔视野(例如250m范围内)。RADAR传感器960可以帮 助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和 前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多) 固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在 具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设 计为在更高速率下以来自邻近车道的最小交通干扰记录车辆900的周围环 境。其他两根天线可以扩展视野,使得快速地检测进入或离开车辆900的 车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达960m(前面)或80m (后面)的范围以及高达42度(前面)或950度(后面)的视野。短程 RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR 传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建 持续地监控后方和车辆旁边的盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于盲点检测和/或变道辅助。
车辆900可以进一步包括超声传感器962。可以置于车辆900的前面、 后面和/或侧面的超声传感器962可以用于停车辅助和/或创建和更新占用 网格。可以使用各种各样的超声传感器962,并且不同的超声传感器962 可以用于不同的检测范围(例如2.5m、4m)。超声传感器962可以操作于 功能安全级别的ASIL B。
车辆900可以包括LIDAR传感器964。LIDAR传感器964可以用于 对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器964 可以为功能安全级别的ASIL B。在一些示例中,车辆900可以包括可以使 用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器 964(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器964可能够对360度视野提供对象列 表及其距离。商业上可用的LIDAR传感器964可以具有例如近似900m的 广告范围,精度为2cm-3cm,支持900Mbps以太网连接。在一些示例中, 可以使用一个或更多个非突出的LIDAR传感器964。在这样的示例中, LIDAR传感器964可以实现为可以嵌入到车辆900的前面、后面、侧面和 /或拐角的小设备。在这样的示例中,LIDAR传感器964可以甚至对于低反 射率对象提供高达920度水平的和35度竖直的视野,具有200m的范围。 前面安装的LIDAR传感器964可以被配置用于45度与135度之间的水平 视野。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。 3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆 周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和 反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光 LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图 像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆900的每一侧 一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR照相机(例如非扫描LIDAR设备)。闪 光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以 以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪 光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传 感器964可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以进一步包括IMU传感器966。在一些示例中,IMU传感 器966可以位于车辆900的后轴的中心。IMU传感器966可以包括例如且 不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些 示例中,例如在六轴应用中,IMU传感器966可以包括加速度计和陀螺仪, 而在九轴应用中,IMU传感器966可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器966可以实现为微型高性能GPS辅助 惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高 灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。 这样,在一些示例中,IMU传感器966可以使得车辆900能够在无需来自 磁传感器的输入的情况下通过直接观察从GPS到IMU传感器966的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器966 和GNSS传感器958可以结合到单个集成单元中。
该车辆可以包括置于车辆900中和/或车辆900周围的麦克风996。除 别的以外,麦克风996可以用于应急车辆检测和识别。
该车辆可以进一步包括任意数量的照相机类型,包括立体照相机968、 广角照相机970、红外照相机972、环绕照相机974、远程和/或中程照相机 998和/或其他照相机类型。这些照相机可以用来捕获车辆900整个外围周 围的图像数据。使用的照相机类型取决于实施例和车辆900的要求,并且 照相机类型的任意组合可以用来提供车辆900周围的必要覆盖。此外,照 相机的数量可以根据实施例而不同。例如,该车辆可以包括六个照相机、 七个照相机、十个照相机、十二个照相机和/或另一数量的照相机。作为一 个示例且非限制性地,这些照相机可以支持千兆多媒体串行链路(GMSL) 和/或千兆以太网。所述照相机中的每一个在本文关于图9A和图9B更详细 地进行了描述。
车辆900可以进一步包括振动传感器942。振动传感器942可以测量 车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面 的变化。在另一个示例中,当使用两个或更多振动传感器942时,振动之 间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由 旋转轴之间存在振动差异时)。
车辆900可以包括ADAS系统938。在一些示例中,ADAS系统938 可以包括SoC。ADAS系统938可以包括自主/自适应/自动巡航控制(ACC)、 协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动 (AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、 后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC) 和/或其他特征和功能。
ACC系统可以使用RADAR传感器960、LIDAR传感器964和/或照 相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控 制到紧接在车辆900前方的车辆的距离,并且自动地调节车速以维持离前 方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆900 改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有 关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口924和/ 或无线天线926经由无线链路或者通过网络连接(例如通过因特网)间接 地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间 接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提 供关于紧接在前的车辆(例如紧接在车辆900前方且与其处于相同车道的 车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC 系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆900前方 车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且 降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正 措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置 照相机和/或RADAR传感器960,该专用处理器、DSP、FPGA和/或ASIC 电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统 可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可 以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地 应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC 的前置照相机和/或RADAR传感器960。当AEB系统检测到危险时,它典 型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员 没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者 至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰 撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉 警告,以在车辆900穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离 车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合 到专用处理器、DSP、FPGA和/或ASIC的前侧朝向照相机,该专用处理器、 DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆900开始离开车道,那么 LKA系统提供纠正车辆900的转向输入或制动。
BSW系统检测并向驾驶员警告汽车盲点中的车辆。BSW系统可以提 供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以 在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用 处理器、DSP、FPGA和/或ASIC的后侧朝向照相机和/或RADAR传感器960,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆900倒车时在后置照相机范围之外检测到对象 时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用 车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、 FPGA和/或ASIC的一个或更多个后置RADAR传感器960,该专用处理器、 DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类 的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼 并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并 且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而, 在自主车辆900中,在冲突结果的情况下,车辆900本身必须决定是否注 意(heed)来自主计算机或者辅助计算机(例如第一控制器936或第二控 制器936)的结果。例如,在一些实施例中,ADAS系统938可以是用于向 备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机 合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态 驾驶任务中的故障。来自ADAS系统938的输出可以提供给监督MCU。如 果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何 协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分, 指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督 MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致 的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机 指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之 间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被 配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警 报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计 算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系 统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计 算机是基于照相机的LDW系统时,监督MCU中的神经网络可以学习在骑 车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包 括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于 利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 904的部件和/或作为SoC 904的部件而 被包括。
在其他示例中,ADAS系统938可以包括使用传统计算机视觉规则执 行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视 觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、 安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity) 使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障 而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错 误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结 果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的 软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统938的输出可以馈送至主计算机的感知块 和/或主计算机的动态驾驶任务块。例如,如果ADAS系统938由于对象紧 接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该 信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练 并且因此如本文所描述的降低假阳性的风险。
车辆900可以进一步包括信息娱乐SoC 930(例如车载信息娱乐系统 (IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC, 并且可以包括两个或更多分立的部件。信息娱乐SoC 930可以包括可以用 来向车辆900提供音频(例如音乐、个人数字助理、导航指令、新闻、广 播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、 网络连接(例如LTE、Wi-Fi等等)和/或信息服务(例如导航系统,后停 车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、 油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和 软件的组合。例如,信息娱乐SoC 930可以包括收音机、盘播放器、导航 系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、Wi-Fi、方向 盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器934、远 程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和 /或与其交互)和/或其他部件。信息娱乐SoC 930可以进一步用来向车辆的 用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统938的信 息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车 辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 930可以包括GPU功能。信息娱乐SoC 930可以通过 总线902(例如CAN总线、以太网等)与车辆900的其他设备、系统和/ 或部件通信。在一些示例中,信息娱乐SoC 930可以耦合至监督MCU,使 得在主控制器936(例如车辆900的主和/或备用计算机)出现故障的情况 下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信 息娱乐SoC 930可以如本文所描述的将车辆900置于司机安全停车模式。
车辆900可以进一步包括仪表组932(例如数字仪表板、电子仪表组、 数字仪表面板等等)。仪表组932可以包括控制器和/或超级计算机(例如 分立的控制器或超级计算机)。仪表组932可以包括一套仪器,例如车速 表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、 安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统 信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可 以被显示和/或在信息娱乐SoC 930和仪表组932之间共享。换言之,仪表 组932可以作为信息娱乐SoC 930的部分而被包括,或者反之亦然。
图9D为根据本公开一些实施例的基于云的服务器与图9A的示例自 主车辆900之间的通信的系统示意图。系统976可以包括服务器978、网络 990以及包括车辆900在内的车辆。服务器978可以包括多个GPU 984(A)-984(H)(这里统称为GPU 984)、PCIe交换机982(A)-982(H)(这里 统称为PCIe交换机982)和/或CPU 980(A)-980(B)(这里统称为CPU980)。 GPU 984、CPU 980和PCIe交换机可以与诸如例如且不限于NVIDIA开发 的NVLink接口988之类的高速互连和/或PCIe连接986互连。在一些示例 中,GPU 984经由NVLink和/或NVSwitch SoC连接,并且GPU 984和PCIe 交换机982经由PCIe互连连接。尽管图示出八个GPU 984、两个CPU 980 和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器 978中的每一个可以包括任意数量的GPU 984、CPU 980和/或PCIe交换机。 例如,服务器978中的每一个可以包括八个、十六个、三十二个和/或更多GPU 984。
服务器978可以通过网络990并且从车辆接收图像数据,该图像数据 表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。 服务器978可以通过网络990并且向车辆传输神经网络992、更新的神经网 络992和/或地图信息994,包括关于交通和道路状况的信息。对地图信息 994的更新可以包括对于HD地图922的更新,例如关于建筑工地、坑洼、 弯道、洪水或其他障碍物的信息。在一些示例中,神经网络992、更新的神 经网络992和/或地图信息994可以已从新的训练和/或从环境中的任意数量 的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务 器978和/或其他服务器)的经验产生。
服务器978可以用来基于训练数据训练机器学习模型(例如神经网 络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏 引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督 学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标 记和/或预处理(例如在神经网络无需有监督学习的情况下)。一旦机器学 习模型被训练,机器学习模型可以由车辆使用(例如通过网络990传输至 车辆),和/或机器学习模型可以由服务器978用来远程地监控车辆。
在一些示例中,服务器978可以接收来自车辆的数据,并且将该数据 应用到最新的实时神经网络以用于实时智能推理。服务器978可以包括由 GPU 984供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA 开发的DGX和DGX站机器。然而,在一些示例中,服务器978可以包括 仅使用CPU供电的数据中心的深度学习基础设施。
服务器978的深度学习基础设施可能够快速实时推理,并且可以使用 该能力来评估并验证车辆900中的处理器、软件和/或关联硬件的健康状况。 例如,深度学习基础设施可以接收来自车辆900的定期更新,例如图像序 列和/或车辆900已经定位的位于该图像序列中的对象(例如经由计算机视 觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己 的神经网络以识别对象并且将它们与车辆900识别的对象相比较,如果结果不匹配并且该基础设施得出车辆900中的AI发生故障的结论,那么服务 器978可以向车辆900传输信号,指示车辆900的故障保护计算机进行控 制,通知乘客,并且完成安全停车操作。
为了推理,服务器978可以包括GPU 984和一个或更多个可编程推理 加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组 合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的 情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图10为适合用于实现本公开一些实施例的示例计算设备1000的框 图。计算设备1000可以包括直接或间接耦合下列设备的总线1002:内存 1004,一个或更多个中央处理单元(CPU)1006,一个或更多个图形处理 单元(GPU)1008,通信接口1010,输入/输出(I/O)端口1012,输入/输 出组件1014,电源1016,以及一个或更多个呈现组件1018(例如显示器)。
尽管图10的各个框被示为经由具有线路的总线1002连接,但是这并 不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸 如显示设备之类的呈现组件1018可以被认为是I/O组件1014(例如如果显 示器为触摸屏)。作为另一个示例,CPU 1006和/或GPU 1008可以包括内 存(例如,内存1004可以表示除了GPU 1008、CPU 1006和/或其他组件的 内存以外的存储设备)。换言之,图10的计算设备仅仅是说明性的。在诸 如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、 “客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电 子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类 的类别之间不进行区分,因为所有这些都被考虑在图10的计算设备的范围 内。
总线1002可以表示一条或更多条总线,例如地址总线、数据总线、 控制总线或者其组合。总线1002可以包括一种或更多种总线类型,例如行 业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标 准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe) 总线,和/或另一种类型的总线。
内存1004可以包括各种各样的计算机可读介质中的任何介质。计算 机可读介质可以是可以由计算设备1000访问的任何可用介质。计算机可读 介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而 言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可 移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或 其他数据类型之类的信息的任何方法或技术实现。例如,内存1004可以存 储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计 算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他 存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带 盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信 息且可以由计算设备1000访问的任何其他介质。当在本文使用时,计算机 存储介质并不包括信号本身。
通信介质可以在诸如载波之类的调制数据信号或其他传输机制中包 含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任 何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它 的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改 变。举例而言且非限制性地,通信介质可以包括诸如有线网络或直接有线 连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无 线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
CPU 1006可以被配置为执行计算机可读指令以便控制计算设备1000 的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。
CPU 1006中的每一个可以包括能够同时处理大量软件线程的一个或更多 个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 1006 可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于 实现的计算设备1000的类型(例如具有用于移动设备的较少核的处理器以 及具有用于服务器的更多核的处理器)。例如,取决于计算设备1000的类 型,处理器可以是使用精简指令集计算(RISC)实现的ARM处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处 理器或者诸如数学协处理器之类的补充协处理器之外,计算设备1000还可 以包括一个或更多个CPU 1006。
GPU 1008可以由计算设备1000用来渲染图形(例如3D图形)。GPU 1008可以包括能够同时处理数百或数千个软件线程的数百或数千个核。 GPU 1008可以响应于渲染命令(例如经由主机接口接收的来自CPU 1006 的渲染命令)而生成用于输出图像的像素数据。GPU1008可以包括诸如显 示内存之类的用于存储像素数据的图形内存。显示内存可以作为内存1004 的部分而被包括。GPU 1008可以包括(例如经由链路)并行操作的两个或 更多GPU。当组合在一起时,每个GPU 1008可以生成用于输出图像的不 同部分或者用于不同输出图像的像素数据(例如,第一GPU用于第一图像, 第二GPU用于第二图像)。每个GPU可以包括它自己的内存,或者可以 与其他GPU共享内存。
在其中计算设备1000不包括GPU 1008的示例中,CPU 1006可以用 来渲染图形。
通信接口1010可以包括一个或更多个接收器、发送器和/或收发器, 其使得计算设备1000能够经由电子通信网络与其他计算设备通信,包括有 线和/或无线通信。通信接口1010可以包括使能通过若干不同网络中的任 何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、 蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信)、低功 率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口1012可以使得计算设备1000能够逻辑地耦合到包括I/O组 件1014、呈现组件1018和/或其他组件在内的其他设备,其中一些可以内 置到(例如集成到)计算设备1000中。说明性I/O组件1014包括麦克风、 鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打 印机、无线设备等等。I/O组件1014可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以 传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔 识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手 势、头部和眼睛跟踪以及与计算设备1000的显示器关联的触摸识别(如下 文更详细地描述的)的任意组合。计算设备1000可以包括诸如立体照相机 系统之类的深度照相机、红外照相机系统、RGB照相机系统、触摸屏技术 以及这些的组合,以用于手势检测和识别。此外,计算设备1000可以包括 使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部 分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1000用来 渲染沉浸式增强现实或者虚拟现实。
电源1016可以包括硬接线电源、电池电源或者其组合。电源1016可 以向计算设备1000供电以使得计算设备1000的组件能够操作。
呈现组件1018可以包括显示器(例如监视器、触摸屏、电视屏幕、 平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈 现组件。呈现组件1018可以接收来自其他组件(例如GPU 1008、CPU 1006 等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之 类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器 可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程 序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现 特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这 些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备 等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行 的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释 为仅指一个元素或者元素组合。例如,“元素A、元素B和/或元素C”可 以包括仅仅元素A,仅仅元素B,仅仅元素C,元素A和元素B,元素A 和元素C,元素B和元素C,或者元素A、B和C。此外,“元素A或元素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个, 或者元素A中的至少一个和元素B中的至少一个。进一步,“元素A和元 素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个, 或者元素A中的至少一个和元素B中的至少一个。
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并 非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主 题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术 描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤” 和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语 不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除 非明确描述了各步骤的顺序。
Claims (20)
1.一种方法,包括:
接收表示与图像中描绘的对象相对应的边界形状的第一数据;
接收表示所述边界形状的至少部分的第二数据,所述第二数据被确定为包括可驾驶自由空间;
裁剪出所述边界形状的所述部分以从所述边界形状内生成对象围栏;
接收表示所述图像中的多个车道线的位置的第三数据;
使用所述第三数据生成车道掩码;
确定所述对象围栏与由所述车道掩码定义的所述图像中的一个或更多个车道之间的重叠;以及
至少部分地基于所述重叠将所述对象分配给所述一个或更多个车道中的至少一个车道。
2.根据权利要求1所述的方法,其中所述裁剪出所述边界的所述部分包括:
裁剪出所述边界形状的第一部分以生成裁剪后的边界形状,
裁剪出所述边界形状的第二部分以从所述裁剪后的边界形状生成对象围栏。
3.根据权利要求1所述的方法,其中所述确定所述重叠包括:
确定所述对象围栏的顶点对之间的距离;
计算所述距离之和;以及
使用所述距离之和至少部分地确定所述重叠。
4.根据权利要求1所述的方法,其中所述确定所述重叠包括:确定与所述图像中的所述对象围栏相对应的至少一个围栏像素是与对应于所述一个或更多个车道中的车道的至少一个车道像素相同的像素。
5.根据权利要求1所述的方法,其中所述第三数据是从车道检测算法或来自地图应用程序的第四数据中的至少一个确定的。
6.根据权利要求1所述的方法,其中所述确定所述重叠包括:比较在所述对象围栏和所述一个或更多个车道中的车道之间共享的像素数目超过像素阈值数目。
7.一种方法,包括:
将由一个或更多个传感器生成的第一数据应用于对象围栏生成算法;
使用所述对象围栏生成算法,识别所述一个或更多个传感器中的至少一个传感器的传感器视野内的对象的世界空间对象围栏;
至少部分地基于与所述一个或更多个传感器中的至少一个传感器相对应的传感器参数,将所述世界空间对象围栏转换为图像空间对象围栏;
接收表示由所述第一数据表示的图像中的多个车道线的位置的第二数据;
使用所述第二数据生成车道掩码;
确定所述图像空间对象围栏与由所述车道掩码定义的一个或更多个车道之间的重叠;以及
至少部分地基于所述重叠,将所述对象分配给所述一个或更多个车道中的至少一个车道。
8.根据权利要求7所述的方法,其中所述第二数据是从地图应用程序、车道检测算法或神经网络中的一个或更多个接收的。
9.根据权利要求7所述的方法,其中所述生成所述车道掩码包括:使用三角测量以交叉图案连接对应于同一车道的所述多个车道线中的车道线之间的顶点。
10.根据权利要求7所述的方法,其中:
所述图像空间对象围栏由多边形的多个顶点表示;以及
所述确定所述图像空间对象围栏与所述一个或更多个车道的所述重叠包括:
针对所述多个顶点中的每对顶点,计算所述顶点之间的距离;
将所述多个顶点中的每对顶点的所述距离相加以生成距离之和;以及
至少部分地基于所述距离之和确定所述重叠。
11.根据权利要求7所述的方法,其中:
图像空间对象围栏由多边形的多个顶点表示;以及
当所述图像空间对象围栏与第一车道和第二车道重叠时,所述确定所述重叠包括:
确定由所述多个车道线中的车道线划分的所述多个顶点中的顶点对;
确定所述顶点对之间的像素;
计算所述第一车道中所述像素与所述多个顶点中的每个顶点之间的距离的第一和以及所述第二车道中所述像素与所述多个顶点中的每个顶点之间的距离的第二和;以及
使用所述距离的第一和与所述距离的第二和来确定所述第一车道和所述第二车道中的每一个中所述图像空间对象围栏的重叠比。
12.根据权利要求7所述的方法,其中在所述对象的多个连续图像上确定图像空间对象围栏,以及所述图像空间对象围栏中的第一图像空间对象围栏的参数用于确定所述图像空间对象围栏中的第二图像空间对象围栏的第二参数。
13.根据权利要求7所述的方法,其中所述生成所述车道掩码包括:将所述一个或更多个车道中的车道延伸超过由所述第二数据表示的范围,延伸所述车道包括曲线拟合或外推中的至少一个。
14.一种系统,包括:
一个或更多个传感器,用于生成车辆周围的环境的传感器数据;
计算设备,包括一个或更多个处理设备和通信地耦合到所述一个或更多个处理设备的一个或更多个存储设备,所述一个或更多个存储设备在其上存储编程指令,所述编程指令在由所述处理器执行时会导致以下项实例化:
对象围栏生成器,用于至少部分地基于所述传感器数据来生成对应于所述环境中的对象的对象围栏;
车道分配器,用于比较所述对象围栏与所述环境中的车道,以确定所述对象的车道分配;以及
控制组件,用于使用所述车道分配来确定用于控制所述环境内的所述车辆的一个或更多个操作。
15.根据权利要求14所述的系统,还包括车道标识符,用于使用所述传感器数据或表示所述环境中的一个或更多个所述车道的车道数据中的至少一个来识别所述车道。
16.根据权利要求14所述的系统,其中所述对象围栏是通过将可驾驶的自由空间裁剪出与所述对象相对应的边界形状而生成的。
17.根据权利要求14所述的系统,其中所述对象围栏是使用围栏生成算法生成的,所述围栏生成算法使用所述传感器数据的至少部分作为输入。
18.根据权利要求14所述的系统,其中所述车道分配器还用于:
至少部分地基于所述对象围栏和表示所述车道中的至少第一车道和第二车道的车道掩码,确定所述对象围栏中的对象围栏与所述第一车道和所述第二车道中的每一个至少部分地重叠;
识别与所述对象围栏的顶点相对应的像素对,所述像素对由划分所述第一车道和所述第二车道的车道线隔开;
确定与所述像素对之间的所述车道线相对应的像素;
计算所述第一车道中所述像素与所述对象围栏的多个第一顶点中的每一个之间的距离的第一和以及所述第二车道中所述像素与所述对象围栏的多个第二顶点中的每一个之间的距离的第二和;以及
至少部分地基于所述距离的第一和来确定所述第一车道中的所述对象围栏的第一重叠比,以及至少部分地基于所述距离的第二和来确定所述第二车道中的所述对象围栏的第二重叠比。
19.根据权利要求18所述的系统,其中所述车道分配器还对所述距离的第一和以及所述距离的第二和进行归一化。
20.根据权利要求14所述的系统,其中所述一个或更多个操作对应于所述车辆通过所述车道的路径规划。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/535,440 US10997435B2 (en) | 2019-08-08 | 2019-08-08 | Leveraging obstacle and lane detections to determine lane assignments for objects in an environment |
US16/535,440 | 2019-08-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112347829A true CN112347829A (zh) | 2021-02-09 |
Family
ID=74188380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010350455.1A Pending CN112347829A (zh) | 2019-08-08 | 2020-04-28 | 利用障碍物和车道检测来确定环境中对象的车道分配 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10997435B2 (zh) |
JP (1) | JP7424866B2 (zh) |
CN (1) | CN112347829A (zh) |
DE (1) | DE102020117792A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113033030A (zh) * | 2021-05-25 | 2021-06-25 | 四川见山科技有限责任公司 | 一种基于真实道路场景的拥堵模拟方法及系统 |
CN113255619A (zh) * | 2021-07-09 | 2021-08-13 | 禾多科技(北京)有限公司 | 车道线识别及定位方法、电子设备和计算机可读介质 |
CN113467464A (zh) * | 2021-07-17 | 2021-10-01 | 普达迪泰(天津)智能装备科技有限公司 | 一种用于无人车轨迹模拟测试的卫星定位运动轨迹方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537139B2 (en) | 2018-03-15 | 2022-12-27 | Nvidia Corporation | Determining drivable free-space for autonomous vehicles |
US11648945B2 (en) | 2019-03-11 | 2023-05-16 | Nvidia Corporation | Intersection detection and classification in autonomous machine applications |
US11375275B2 (en) * | 2019-11-19 | 2022-06-28 | Charter Communications Operating, Llc | Method and system for using lip sequences to control operations of a device |
KR20210062477A (ko) * | 2019-11-21 | 2021-05-31 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
KR20210132496A (ko) * | 2020-04-27 | 2021-11-04 | 한국전자기술연구원 | 영상 기반 차선 검출 및 주행 차로 인식 방법 및 장치 |
US11560154B1 (en) | 2020-06-02 | 2023-01-24 | Aurora Operations, Inc. | Autonomous vehicle remote teleoperations system |
US11595619B1 (en) * | 2020-06-02 | 2023-02-28 | Aurora Operations, Inc. | Autonomous vehicle teleoperations system |
US11644830B1 (en) | 2020-06-02 | 2023-05-09 | Aurora Operations, Inc. | Autonomous vehicle remote teleoperations system with scenario selection |
WO2022006418A1 (en) | 2020-07-01 | 2022-01-06 | May Mobility, Inc. | Method and system for dynamically curating autonomous vehicle policies |
EP4260009A1 (en) | 2020-12-14 | 2023-10-18 | May Mobility, Inc. | Autonomous vehicle safety platform system and method |
JP2024500672A (ja) | 2020-12-17 | 2024-01-10 | メイ モビリティー,インコーポレイテッド | 自律エージェントの環境表現を動的に更新するための方法およびシステム |
JP2024512980A (ja) * | 2021-04-02 | 2024-03-21 | メイ モビリティー,インコーポレイテッド | 不完全な環境情報で自律エージェントを動作させる方法及びシステム |
WO2022267000A1 (en) * | 2021-06-25 | 2022-12-29 | Intel Corporation | Methods and apparatus for scale recovery from monocular video |
US20230099494A1 (en) * | 2021-09-29 | 2023-03-30 | Nvidia Corporation | Assigning obstacles to lanes using neural networks for autonomous machine applications |
DE102021127748A1 (de) | 2021-10-26 | 2023-04-27 | Valeo Schalter Und Sensoren Gmbh | Verfahren, computerprogrammprodukt, parkassistenzsystem und fahrzeug |
WO2023154568A1 (en) | 2022-02-14 | 2023-08-17 | May Mobility, Inc. | Method and system for conditional operation of an autonomous agent |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098751B2 (en) * | 2011-07-27 | 2015-08-04 | Gentex Corporation | System and method for periodic lane marker identification and tracking |
US9721471B2 (en) * | 2014-12-16 | 2017-08-01 | Here Global B.V. | Learning lanes from radar data |
US10262213B2 (en) * | 2014-12-16 | 2019-04-16 | Here Global B.V. | Learning lanes from vehicle probes |
US10586102B2 (en) | 2015-08-18 | 2020-03-10 | Qualcomm Incorporated | Systems and methods for object tracking |
CN110678915B (zh) | 2017-05-25 | 2022-03-11 | 本田技研工业株式会社 | 车辆控制装置 |
US10586456B2 (en) * | 2018-04-27 | 2020-03-10 | TuSimple | System and method for determining car to lane distance |
US10761535B2 (en) * | 2018-08-21 | 2020-09-01 | GM Global Technology Operations LLC | Intelligent vehicle navigation systems, methods, and control logic for multi-lane separation and trajectory extraction of roadway segments |
US10832439B1 (en) * | 2019-04-19 | 2020-11-10 | Zoox, Inc. | Locating entities in a mapped environment |
-
2019
- 2019-08-08 US US16/535,440 patent/US10997435B2/en active Active
-
2020
- 2020-03-04 JP JP2020036424A patent/JP7424866B2/ja active Active
- 2020-04-28 CN CN202010350455.1A patent/CN112347829A/zh active Pending
- 2020-07-06 DE DE102020117792.5A patent/DE102020117792A1/de active Pending
-
2021
- 2021-04-19 US US17/234,475 patent/US20210241004A1/en active Pending
- 2021-04-19 US US17/234,487 patent/US20210241005A1/en active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113033030A (zh) * | 2021-05-25 | 2021-06-25 | 四川见山科技有限责任公司 | 一种基于真实道路场景的拥堵模拟方法及系统 |
CN113033030B (zh) * | 2021-05-25 | 2021-08-03 | 四川见山科技有限责任公司 | 一种基于真实道路场景的拥堵模拟方法及系统 |
CN113255619A (zh) * | 2021-07-09 | 2021-08-13 | 禾多科技(北京)有限公司 | 车道线识别及定位方法、电子设备和计算机可读介质 |
CN113467464A (zh) * | 2021-07-17 | 2021-10-01 | 普达迪泰(天津)智能装备科技有限公司 | 一种用于无人车轨迹模拟测试的卫星定位运动轨迹方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210241004A1 (en) | 2021-08-05 |
US10997435B2 (en) | 2021-05-04 |
DE102020117792A1 (de) | 2021-02-11 |
JP7424866B2 (ja) | 2024-01-30 |
US20210042535A1 (en) | 2021-02-11 |
US20210241005A1 (en) | 2021-08-05 |
JP2021026752A (ja) | 2021-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113811886B (zh) | 自主机器应用中的路口检测和分类 | |
US11769052B2 (en) | Distance estimation to objects and free-space boundaries in autonomous machine applications | |
US10997435B2 (en) | Leveraging obstacle and lane detections to determine lane assignments for objects in an environment | |
US11675359B2 (en) | Path detection for autonomous machines using deep neural networks | |
CN113168505B (zh) | 用于自主驾驶机器的基于回归的线检测 | |
US11531088B2 (en) | Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications | |
EP3828592A1 (en) | Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications | |
EP3832341A1 (en) | Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications | |
US20210354729A1 (en) | Efficient safety aware path selection and planning for autonomous machine applications | |
CN113785302A (zh) | 自主机器应用中的路口姿态检测 | |
CN113228042A (zh) | 自主机器应用中障碍物检测的距离 | |
CN114008685A (zh) | 用于自主机器应用的路口区域检测和分类 | |
CN114902295A (zh) | 用于自主驾驶应用的三维路口结构预测 | |
CN113632095A (zh) | 使用适合停车位检测的倾斜多边形进行对象检测 | |
CN114631117A (zh) | 使用机器学习的用于自主机器应用的传感器融合 | |
CN110618678A (zh) | 自主机器应用中的行为引导路径规划 | |
CN111133448A (zh) | 使用安全到达时间控制自动驾驶车辆 | |
CN113906271A (zh) | 用于自主机器应用的使用地图信息增强的地面实况数据的神经网络训练 | |
CN113767389A (zh) | 从用于自主机器应用的经变换的真实世界传感器数据模拟逼真的测试数据 | |
CN115136148A (zh) | 投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征检测 | |
CN114450724A (zh) | 用于自主机器应用的多活动者环境中的未来轨迹预测 | |
US20230213945A1 (en) | Obstacle to path assignment for autonomous systems and applications | |
CN115218888A (zh) | 用于更新高清地图的系统和方法 | |
CN113609888A (zh) | 利用平面单应性和自监督的场景结构理解进行对象检测 | |
CN117516565A (zh) | 用于在自主系统和应用中导航的车道偏置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |