CN113168505A - 用于自主驾驶机器的基于回归的线检测 - Google Patents

用于自主驾驶机器的基于回归的线检测 Download PDF

Info

Publication number
CN113168505A
CN113168505A CN201980061007.5A CN201980061007A CN113168505A CN 113168505 A CN113168505 A CN 113168505A CN 201980061007 A CN201980061007 A CN 201980061007A CN 113168505 A CN113168505 A CN 113168505A
Authority
CN
China
Prior art keywords
pixel
line
pixels
image
machine learning
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.)
Granted
Application number
CN201980061007.5A
Other languages
English (en)
Other versions
CN113168505B (zh
Inventor
M·帕克
林晓琳
H-J·徐
D·尼斯特
N·茨维耶蒂奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN113168505A publication Critical patent/CN113168505A/zh
Application granted granted Critical
Publication of CN113168505B publication Critical patent/CN113168505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0055Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots with safety arrangements
    • G05D1/0077Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots with safety arrangements using redundant signals or controls
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs
    • G05D1/22Command input arrangements
    • G05D1/228Command input arrangements located on-board unmanned vehicles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2155Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the incorporation of unlabelled data, e.g. multiple instance learning [MIL], semi-supervised techniques using expectation-maximisation [EM] or naïve labelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2411Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0418Architecture, e.g. interconnection topology using chaos or fractal principles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/457Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by analysing connectivity, e.g. edge linking, connected component analysis or slices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/48Extraction of image or video features by mapping characteristic values of the pattern into a parameter space, e.g. Hough transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/751Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/766Arrangements for image or video recognition or understanding using pattern recognition or machine learning using regression, e.g. by projecting features on hyperplanes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/776Validation; Performance evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/588Recognition of the road, e.g. of lane markings; Recognition of the vehicle driving pattern in relation to the road

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Game Theory and Decision Science (AREA)
  • Business, Economics & Management (AREA)
  • Electromagnetism (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Traffic Control Systems (AREA)

Abstract

在不同示例中,公开了保留来自机器学习模型的输入分辨率的丰富空间信息以在输入图像中的线上回归的系统和方法。机器学习模型可以被训练为在部署中预测输入分辨率的输入图像的每个像素到被确定为对应于输入图像中的线的线像素的距离。机器学习模型可以进一步被训练为预测线的角度和标记类。可以使用嵌入算法来训练机器学习模型以预测线像素的集群,每个线像素对应于输入图像中的相应线。在部署中,在各种自主机器应用中,机器学习模型的预测可以被用作理解周围环境(例如用于更新世界模型)的辅助。

Description

用于自主驾驶机器的基于回归的线检测
背景技术
准确和精确地检测环境中的车道线、车道边缘、道路边界、文本、和/或其他特征的能力对于在所有自主级别的自主机器应用(例如,半自主车辆到全自主车辆)是必要的。由于道路标记质量的变化、车道和道路标记惯例的地理差异,以及由于磨损和撕裂引起的道路标记障碍、退化和/或遮挡,天气条件、照明条件、临时标记(例如,由于建造或救灾)等,在行驶期间在环境中可能遇到的车道标志的多样性非常高。
用于车道或线检测的一些常规方法已经使用深度神经网络(DNN)处理,其中,驾驶表面的高分辨率图像以及车道和线的相关注释被用于训练DNN(例如,卷积神经网络(CNN))以识别车道线。这些常规方法已经训练DNN为通过将图像的每个像素分类为或者不分类为车道线的部分来生成显示图像中的车道线的一般位置的分割掩码。然而,由于在通过卷积运算进行DNN处理期间DNN执行的增量下采样,这些常规方法在DNN的输出处遭受分辨率的损失。例如,作为下采样的结果,对应于车道线的DNN的输入分辨率的各个像素可变成DNN的输出分辨率的模糊像素斑点。这种用于推理车道线或边缘的关键空间信息的损失降低了车道或线检测的精度和准确度。
此外,使用DNN来预测车道或线类别的常规系统需要针对每个类别的单独的输出通道(例如,单独的预测)。照此,这些常规系统的DNN需要针对每个输出通道的每个像素单独处理并生成预测。使用这种方法,增加了系统的运行时间,从而使用于车道或线预测的实时部署成为需要额外的计算资源、能量和处理功率的繁重的任务。这些常规系统还采用重要的后处理步骤,所述后处理步骤需要使用由DNN输出的分割掩码(以空间信息已经损失的较低分辨率)来重构车道或线。然而,该方法不仅增加了运行时的处理时间,还导致系统对车道和线的最终预测较不准确。最终,这些常规系统的DNN的预测影响自主车辆(实时)获得对驾驶表面的准确和精确理解的能力,同时需要大量处理、能量和计算资源。
发明内容
本公开的实施例涉及用于自主驾驶机器的基于回归的线检测。公开了通过提供与输入图像的空间分辨率或维度相比大小减小的空间分辨率或维度的压缩信息,来通过深度学习模型保留丰富的空间信息的系统和方法。照此,本公开的实施例涉及用于自主驾驶机器的线检测,其包括但不限于车道线、道路边界、道路上的文本、或标志(例如,杆、街道标志等)。
与常规系统(如以上所描述的那些系统)相比,本公开的系统可以训练机器学习模型,来针对输入分辨率的输入图像的每个像素预测与被确定为与输入图像中的线(或其他标签类)相对应的线像素(或与任何其他标签类相对应的像素)的距离(一维(1D)或二维(2D))。因此,即使机器学习模型的输出分辨率可小于输入分辨率(例如,小两倍、小四倍等),距离也可以用于保留输入分辨率的空间信息,以便精确地重新创建输入分辨率的线。照此,通过使用用于处理的较高输入分辨率生成较低输出分辨率的预测,系统的运行时间减少,而空间信息的保留维持预测的准确性。
除了线像素的位置之外,可以由机器学习模型计算在每个线像素的位置处的线的角度,以帮助系统理解线的整体几何形状——从而增加由系统使用的线重新创建的准确度。为了进一步减少用于系统的实时操作的运行时间,一个或更多个机器学习模型可以被训练为使用位编码过程来预测标签类,从而移除需要针对每个输出通道(例如,针对每个类)的每个像素进行预测的常规系统的约束。与常规系统进一步对比——并且为了减少系统的总体后处理负担——机器学习模型可以被训练成使用嵌入算法来预测线像素的集群,其中,每个集群对应于单独的线。
附图说明
下面参考附图详细描述用于自主驾驶机器的基于回归的线检测的本系统和方法,其中:
图1A是示出根据本公开的一些实施例的用于使用机器学习模型的线预测的示例过程的数据流程图;
图1B是根据本公开的一些实施例的使用机器学习模型来为图像重新创建线的示例图示;
图2A-图2B是根据本公开的一些实施例的用于解码线预测的投票方法的示例图示;
图2C是根据本公开的一些实施例的用于对线角度进行解码的方法的示例图示;
图3是根据本公开的一些实施例的使用机器学习模型的预测来重新创建图像的线的可视化示例;
图4是示出根据本公开的一些实施例的用于使用机器学习模型预测图像中的线的方法的流程图;
图5是示出根据本公开的一些实施例的用于训练用于线预测的机器学习模型的示例过程的数据流程图;
图6是根据本公开的一些实施例的用于训练用于线预测的机器学习模型的地面实况注释的可视化示例,数据流程图示出了使用机器学习模型的线预测的示例过程;
图7A是根据本公开的一些实施例的用于保存机器学习模型的输入的空间信息的编码方法的示例图示;
图7B是根据本公开的一些实施例的用于训练机器学习模型以预测线角度的编码方法的示例图示;
图8是根据本公开的一些实施例的用于训练机器学习模型以预测线集群的编码方法的示例图示;
图9是示出根据本公开的一些实施例的用于训练机器学习模型以预测图像中的线的方法的流程图;
图10A是根据本公开的一些实施例的示例自主车辆的图示;
图10B是根据本公开的一些实施例的图10A的示例自主车辆的相机位置和视野的示例;
图10C是根据本公开的一些实施例的用于图10A的示例自主车辆的示例系统架构的框图;
图10D是根据本公开的一些实施例的用于在一个或更多个基于云的服务器与图10A的示例自主车辆之间通信的系统图;以及
图11是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
公开了用于自主驾驶机器的基于回归的相关线检测的系统和方法。尽管本公开可以关于示例自主车辆1000(可替代地在此被称为“车辆1000”或“自主车辆1000”,在此根据图10A-图10D来描述其示例)来描述,但这并非旨在进行限制。例如,本文所述的系统和方法可由非自主车辆、半自主车辆(例如,在自适应驾驶员辅助系统(ADAS)中)、机器人、仓库车辆、越野车辆、飞行船、船、客运车辆、汽车、卡车、公共汽车、应急车辆,穿梭车、电动或机动自行车、摩托车、消防车、警用车辆、救护车、建筑车辆、水下船只、无人机和/或另一类型的车辆(例如,无人机和/或容纳一名或更多名乘客的车辆)使用。此外,尽管本公开可关于自主驾驶来描述,但这并非旨在进行限制。例如,本文所述的系统和方法可用于机器人、航空系统、船运系统和/或其他技术领域中,例如用于感知、世界模型管理、路径规划、障碍物躲避和/或其他过程。
与诸如本文中所描述的那些常规系统相反,本公开的系统保留机器学习模型(例如,深度神经网络(DNN),诸如卷积神经网络(CNN))的输入分辨率下可用的丰富空间信息,同时维持机器学习模型进行的较低分辨率处理的优点。因此,即使在机器学习模型通过卷积运算来处理输入以生成压缩输出时,也保留了车道线、道路边界、文本和/或环境的其他特征的预测的准确度。例如,可以对用作机器学习模型的输入的图像数据进行编码,以使得在机器学习模型处理期间引入的量化或下采样期间不损失高分辨率信息。可以以创建足够的冗余以在机器学习模型(尤其是CNN)中固有的处理期间保留丰富的空间信息的方式对地面实况数据(例如,对应于车道线、道路边界、文本和/或其他特征的带注释的标签)执行编码。本公开的系统和方法的一些非限制性益处是增加车道检测范围、增加车道边缘精度或查全率、以及保留高分辨率图像中可用的丰富空间信息,同时利用较低分辨率图像处理的能力——从而减少车载推理的计算负担。另外,在一些实施例中,编码(例如,在训练期间)和解码(例如,在推理期间,在部署中)两者可以GPU加速,诸如通过并行化算法以用于通过若干计算内核(例如,NVIDIA的CUDA的CUDA内核)进行编码和/或解码,以减少部署中的运行时间和训练期间的处理时间。
本公开的机器学习模型可以被训练为在部署中预测从每个像素到属于线的最接近的像素的一维(1D)和/或二维(2D)距离、沿着该线的角度和/或线类型(例如,实线、虚线、道路边界、文本、符号等)。可计算1D和/或2D距离以保留输入分辨率下的图像数据的空间信息。例如,因为可以用对应于到线像素(例如,被确定为对应于图像中的线或者对应于机器学习模型被训练来预测的另一特征类型的像素)的距离的像素距离来编码每个像素,即使当在处理期间丢失像素信息时,像素距离也可被用于恢复高分辨率图像中对应于所述线的原始像素的位置。照此,机器学习模型的输出分辨率可以小于输入分辨率,并且解码过程可以被用于从机器学习模型的输出重构输入分辨率图像的线信息。在解码期间,基于经编码像素数据的投票方法可被用于重构输入分辨率图像的线形成。例如,来自输出的像素值中的每一个可用于对输入分辨率图像中的像素投票,且其中对像素投出投票的阈值数目,可确定所述像素属于输入图像中的线。
沿着线的角度可以用于重构线的形状,其中线的形状(shape)或几何形状(geometry)可以由自主车辆用于车道保持、在车道中和在车道之间处理等。在训练期间,可针对对应于线的每个像素计算和编码角度(例如,使用地面实况线注释来确定代表性像素)。可针对像素中的每一个编码所述角度的0到360度值,其中相对于沿着正针对其编码所述角度的像素的像素的行延伸的水平线来计算所述角度值。代替对角度本身进行编码,在一些实施例中,可对角度值的余弦分量和正弦分量进行编码。可使用平滑技术来克服像素到像素变化。在解码期间,由机器学习模型输出的值可以对应于像素位置处的线的角度。
可以训练该机器学习模型来检测供该自主车辆在确定该环境内的适当行为时使用的线类型。作为非限制性示例,每当检测到虚线时,车辆可以能够执行车道改变或超车操作。同样,当检测到实黄线时,车辆的自主控制系统可理解任何操纵不可越过实黄线。对于不同的线类别,可以分配不同的值。然而,与可能需要输出来表示N个不同线类别中的每一个的常规系统相反,当前系统可编码每个不同线类别的位值。通过对位值进行编码,机器学习模型可以仅需要输出log2(N)个输出,而不是针对N个不同线类别中的每一个的输出。机器学习模型因此可以输出与机器学习模型被训练来预测的位数相对应的二进制序列(例如,四位二进制序列生成四个输出通道,每个位一个输出通道)。因此,机器学习模型训练可以快速地扩展到另外的类别,而不需要机器学习模型被训练来预测针对每个类别的另外的输出通道。
在一些实施例中,为了确定哪些线像素对应于同一条线,机器学习模型可以使用高维嵌入算法来预测集群(或连接点),以便推理线的完整几何形状。例如,每个线像素可以在空间中将高维向量与不属于同一条线的其他高维向量分离的方式映射到高维向量。可针对图像的每个线像素完成此过程。然后机器学习模型可以使用高维向量的关系(或接近度)来确定线像素之间的集群或连接性。具有在第一阈值距离(2×dwithin)内的相关联向量(其中dwithin对应于集群内方差)的像素可以被聚类在一起,并且具有相隔大于第二阈值距离(例如,4×dwithin)的相关联向量的像素可以被确定为属于不同的集群。例如,第一向量可登记为第一集群(例如,对应于图像中的第一线)。第二向量可用于计算第一向量与第二向量之间的欧几里德距离。如果距离小于第一阈值,那么可将第一向量和第二向量指派给第一集群,且如果距离大于第二阈值,那么可将第二向量登记为第二集群。在一些实施例中,可以使用dwithin的内核半径来执行均值漂移聚类。
在解码期间,由于每个线像素可映射到输入图像中的像素坐标位置,且线像素可映射到高维向量,因此可使用逆映射来确定对应于高维向量集群的线像素。为了生成图像中的所得线的几何拟合,可执行最小二乘多元拟合过程以产生表示完整线的多项式系数。在一些非限制性示例中,可使用三阶多元拟合(例如,四个系数)。
使用机器学习模型的线预测
现在参见图1A,图1A是根据本公开的一些实施例的示出用于使用机器学习模型进行线预测的示例过程100的数据流程图。在高级别,过程100可以包括一个或更多个机器学习模型104,其接收一个或更多个输入,诸如图像数据102,并且生成一个或更多个输出,诸如像素距离108、角度110、线类别112和/或集群向量114。图像数据102可以由自主车辆(例如,车辆1000,如在此至少关于图10A-图10D所描述的)的一个或更多个相机生成。在一些实施例中,图像数据102可附加地或替代地包括其他类型的传感器数据,诸如来自一个或更多个LIDAR传感器1064的LIDAR数据、来自一个或更多个RADAR传感器1060的RADAR数据、来自一个或更多个麦克风1096的音频数据等。一个或更多个机器学习模型104可以被训练为生成输出106,其可以由一个或更多个感知组件、一个或更多个世界模型管理组件、一个或更多个规划组件、一个或更多个控制组件和/或自主驾驶软件栈的其他组件使用。例如,关于车辆1000,线122可被用于通知环境的自主车辆1000的控制器1136、ADAS系统1138、SOC1104和/或其他部件,以帮助自主车辆1000在环境内执行一个或更多个操作(例如,路径规划、地图绘制等)。
在一些实施例中,图像数据102可以包括表示车辆的一个或更多个相机的视野的图像的数据,诸如一个或更多个立体相机1068、一个或更多个广角相机1070(例如,鱼眼相机),一个或更多个红外相机1072、一个或更多个环绕相机1074(例如,360度相机)、一个或更多个远程和/或中程相机1098,和/或自主车辆1000的其他相机类型(图10A-图10D)。在一些示例中,图像数据102可以由具有相对于车辆1000的水平轴(例如,从左到右)的前置的、基本上居中的视野的单个相机来捕获。在非限制性实施例中,可使用一个或更多个前置相机(例如,中心或近中心安装的一个或更多个相机),例如广角相机1070、环绕相机1074、立体相机1068和/或远程或中程相机1098。从该视角捕获的图像数据可以有助于导航时的感知(例如,在车道内、通过车道变换、通过转弯、通过交叉路口等),因为前置相机可以包括视野(例如,图10B的前置立体相机1068和/或广角相机1070的视野),该视野包括车辆1000的当前行驶车道、车辆1000的行驶的一个或更多个相邻车道和/或行驶表面的边界。在一些示例中,可以使用多于一个相机或其他传感器(例如,LIDAR传感器、RADAR传感器等)来合并多个视野或传感视野(例如,图10B的远程相机1098、前置立体相机1068和/或前置广角相机1070的视野)。
在一些示例中,图像数据102可以一种格式(例如,RCCB、RCCC、RBGC等)捕获,且然后转换(例如,在图像数据的预处理期间)为另一格式。在一些其他示例中,图像数据102可作为输入提供到图像数据预处理器(未示出),以生成经预处理的图像数据。许多类型的图像或格式可以用作输入;例如,诸如联合图像专家组(JPEG)、红绿蓝(RGB)或亮度/色度(YUV)之类格式的压缩图像,作为源自压缩视频格式(例如,H.264/高级视频编码(AVC)、H.265/高效视频编码(HEVC)、VP8、VP9、开放媒体视频联盟1(AV1)、通用视频编码(VVC)或任何其他视频压缩标准)的帧的压缩图像,诸如源自红透明蓝(RCCB)、红透明(RCCC)或其他类型的成像传感器的原始图像。在一些示例中,与用于推理(例如,在自主车辆1000中部署一个或更多个机器学习模型104期间)不同的格式和/或分辨率可用于训练一个或更多个机器学习模型104。
图像数据预处理器可使用表示一个或更多个图像的图像数据(或其他数据表示,诸如LIDAR深度图),并将传感器数据以多维数组/矩阵(在一些示例中替代地称为张量,或更具体地称为输入张量)的形式加载到存储器中。数组尺寸可被计算和/或表示为WxHxC,其中W代表以像素为单位的图像宽度,H代表以像素为单位的高度,并且C代表颜色通道的数量。在不损失一般性的情况下,输入图像分量的其他类型和排序也是可能的。另外,当使用批处理时,批大小B可用作维度(例如,额外的第四维度)。批处理可以用于训练和/或推理。由此,输入张量可表示维度WxHxCxB的数组。维度的任何排序都有可能,其可取决于用于实现图像数据预处理器的特定硬件和软件。可以选择该排序以最大化一个或更多个机器学习模型104的训练和/或推理性能。
在一些实施例中,图像数据预处理器可以采用预处理图像管线来处理由一个或更多个传感器(例如,一个或更多个相机)采集的和包括在图像数据102中的一个或更多个原始图像,以产生可以表示到一个或更多个机器学习模型104的一个或更多个输入层(例如,图1C的一个或更多个特征提取器层142)的一个或更多个输入图像的经预处理的图像数据。合适的预处理图像管线的示例可以使用来自传感器的原始RCCB拜耳(例如,1-通道)类型的图像,并且将该图像转换成以固定精度(例如,每通道16位)格式存储的RCB(例如,3-通道)平面图像。预处理图像管线可以包括分解(decompanding)、降噪、去马赛克、白平衡、直方图计算和/或自适应全局色调映射(例如,按该顺序或按替代顺序)。
在图像数据预处理器采用降噪的情况下,其可包括拜耳域中的双边去噪。在图像数据预处理器采用去马赛克的情况下,其可包括双线性内插。在图像数据预处理器采用直方图计算的情况下,其可涉及计算C通道的直方图,且在一些示例中可与分解或降噪合并。在图像数据预处理器采用自适应全局色调映射的情况下,其可包括执行自适应伽玛-对数变换。这可包括计算直方图、获得中间色调等级和/或用中间色调等级来估计最大亮度。
一个或更多个机器学习模型104可以使用如由图像数据102表示的一个或更多个图像或其他数据表示(例如,LIDAR数据、RADAR数据等)作为输入来生成一个或更多个输出106。在非限制性示例中,一个或更多个机器学习模型104可以采用以下项中的一项或更多项作为输入:由图像数据102表示的(例如,在预处理之后)用于生成像素距离108的一个或更多个图像、角度110、线类别112和/或集群向量114。尽管在本文中关于使用神经网络并且具体地使用CNN作为一个或更多个机器学习模型104来描述示例,但这并非旨在进行限制。例如但不限于,在此描述的一个或更多个机器学习模型104可以包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最近邻(Knn)、K均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(LSTM)、霍普菲尔德、玻尔兹曼、深度信念、解卷积、生成式对抗、液态机器等)的一个或更多个机器学习模型,和/或其他类型的机器学习模型。
一个或更多个机器学习模型104的输出可以包括像素距离108、角度110、线类别112、集群向量114和/或其他输出类型。为了对一个或更多个机器学习模型104的输出进行解码,在一些非限制性示例中,可以实现GPU加速。例如,并行处理平台(例如,NVIDIA的CUDA)可以被实现用于通过用于对输出进行解码的若干计算内核对算法进行并行化——由此减少运行时间。
对于图像中的每个像素,像素距离108可包括图像空间中到并入如图像中所描绘的线(例如线像素)的最近像素的距离。像素距离108可包括单个维度(1D)中的距离和/或两个维度(2D)中的距离。例如,对于1D距离,像素距离108可包括沿着像素的行到右方向上的最近线像素(d_R)和/或左方向上的最近线像素(d_L)的距离(例如,如图2A中所示)。照此,一个或更多个机器学习模型104可以针对输出分辨率的每个个像素计算到沿着像素的行的左边以及沿着像素的行的右边的最近线像素的距离的输出。作为另一示例,对于2D距离,像素距离108可包括到沿着图像的像素的行(d_X)和沿着图像的线像素的列(d_Y)的最近线像素的距离(例如,如图2B中所示)。照此,一个或更多个机器学习模型104可以针对输出分辨率的每个像素计算沿着像素的列到最近线像素的距离和沿着像素的行的距离的输出,其中沿着列和行的距离可用以确定像素与线像素之间的距离的大小。
作为一个或更多个机器学习模型104的处理的结果,由一个或更多个机器学习模型104计算的像素距离108可以对应于比输入图像的空间分辨率更低的空间分辨率输出。然而,如本文中所描述的,本公开的优点是使用像素距离108来保留来自一个或更多个机器学习模型104的较高输入分辨率的空间信息。例如,来自一个或更多个机器学习模型104的输出的像素位置可以在解码116期间被转换成输入分辨率的像素位置。作为非限制性示例,其中输出对应于低四倍因子的相对空间分辨率(例如,输出对应于为输入分辨率的四分之一的分辨率),在输出处的每个[y,x]像素位置可乘以四(例如,在输出处的[1,1]可在对应于输入图像的分辨率下变为[4,4])。如此,对应于在输出处的像素位置的像素距离108可以被确定为对应于在输入的分辨率下的像素位置——从而保留来自输入分辨率的空间信息。
作为1D解码的示例,图2A包括根据本公开的一些实施例的用于解码线预测的投票方法的示例说明。在1D示例中的解码116期间,由一个或更多个机器学习模型104输出的像素距离108的预测可以首先被转换回输入分辨率的像素位置。例如,表格202可表示沿输入分辨率的像素的行的像素距离108。照此,因为在图2A的示例中,输出可对应于较小(例如,除以四)的分辨率,像素距离108可以仅由机器学习模型104针对像素行中的每四个像素(例如,在0、4、8、12、16等处)相对于输入分辨率来输出。照此,一旦到沿着像素的行的右边(d_R)和左边(d_L)的最近线像素的像素距离108已与输入分辨率的适当像素位置相关联,那么投票方法可作为解码116的部分来执行。例如,每个像素距离108可对线像素的位置投票,如表204中所示。投票可为左投票(voting_L)与右投票(voting_R)的组合,使得可计算最终投票值(vote all,投票全部)。作为示例,关于左投票,在从表202的行中的像素4处的为0的像素距离108可在表204的输出分辨率下投放对像素4的投票,在从表202的行中的像素8处的为4的像素距离108可在输出分辨率204下投放对像素4的另一投票等等。类似地,对于右投票,在从表202的行中的像素0处的为4的像素距离108可在表204的输出分辨率下投放对像素4的投票,在从表202的行中的像素8处的为5的像素距离108可在表204的输出分辨率下投放对像素13的投票,等等。可接着清点或添加表204的行中的每个像素的左投票及右投票以确定最终投票值。在一些示例中,一旦针对输出分辨率的像素计算阈值数目的投票,便可确定所述像素为线像素。在一些非限制性示例中,阈值数目可为1、2、4、6或另一阈值。
解码116像素距离108的过程可针对图像中的像素的每个行重复。照此,可使用图2A的投票方法来确定输入分辨率的图像中的每个线像素。尽管图2A的示例包括以因子四进行下采样,但这不旨在进行限制。在一些示例中,一个或更多个机器学习模型104可以不产生对应于比输入分辨率低的分辨率的输出,或者可以产生对应于比输入分辨率低两倍、四倍、五倍、六倍和/或另一因子的分辨率的输出,而不背离本公开的范围。另外,虽然图2A的表202和204在输入分辨率沿着像素的行仅包括20个像素位置(例如,0至19),但这仅用于示例目的。照此,像素的数量可对应于任何输入分辨率宽度,诸如2048、1920、560和/或任何其他输入分辨率宽度。进一步,尽管本文中针对1D像素距离的示例相对于像素的行来描述,但这不旨在进行限制。在一些示例中,除了像素的行之外或替代像素的行,可使用像素的列来确定1D像素距离,和/或可针对至少一个像素在上下方向上而非左右方向上执行编码。
作为2D解码的示例,图2B包括根据本发明的一些实施例的用于解码线预测的投票方法的示例说明。表206可以表示一个或更多个机器学习模型104关于针对2D预测的像素距离108的输出。例如,类似于上文,一个或更多个机器学习模型104可以输出对应于比输入分辨率(例如,编码的分辨率)低四倍的分辨率图像空间的预测。照此,输出分辨率的像素位置(例如,如表206中所示)可在解码116期间转换成输入分辨率的像素位置(例如,如表208中所示)。x(dx)和y(dy)方向上的像素距离108可用于投放针对输入分辨率的像素的投票。在一些示例中,像素距离108可进一步包括负X方向(-dx)和负y方向(-dy)。照此,在最近线像素沿负方向上的x轴(例如,图像的宽度)或y轴(例如,图像的高度)的情况下,像素距离108的值可对应于-dx和/或-dy输出。例如,在解码116期间,表206中输出分辨率的像素位置[0,1]可被转换成输入分辨率的像素位置(0,4)。照此,在表208中,可使用dx=0和dy=1的像素距离来投放针对像素[0,5]的投票作为线像素。类似地,在解码116期间,表206中输出分辨率的像素位置[1,1]可被转换成输入分辨率的像素位置(4,4)。照此,在表208中,dx=0和dy=0的像素距离可用于投放针对像素[4,4]的投票作为线像素(例如,来自键210的线像素本身)。类似于本文中所描述的1D方法,一旦已针对像素投放阈值数目的投票,便可确定所述像素为线像素。假定作为非限制性示例,投票的阈值数目为一,那么像素[2,3]、[0,5]、[5,0]和[4,4]可各自接收一个投票(基于表206),且因此可确定为线像素。
使用2D方法可允许捕获车道边缘的任意定向(例如,水平、垂直、任意成角度等)以及任意车道标记形状。在一些示例中,像素距离108可用欧几里德坐标表示,而在其他示例中,可使用极坐标。此外,在一些1D和/或2D实施例中,针对像素的投票可被不同地加权。例如,线像素的自投票可比来自其他像素的投票权重更大。
一个或更多个机器学习模型104的另一输出106可以是角度110。角度110可表示线像素处的线的角度(例如,图2C的表208的线像素的角度212)。在一些实施例中,一个或更多个机器学习模型104可以输出角度值(例如,从0-360度)。在这些实施例中,解码116角度110可以包括在一个或更多个机器学习模型104的输出处读出角度的二进制值。在一些示例中,不是读出角度110的值,而是可以从一个或更多个机器学习模型104的输出确定360度角度的余弦分量和正弦分量(例如,如图2C的角度212D所示)。余弦分量和正弦分量可接着用于确定线像素处的角度值。输出分辨率的每个像素可包括针对其投放投票的线像素的角度110。例如,在[0,4]处的像素可提供针对在[0,5]处的像素的角度212D的至少一个投票或值。作为另一示例,在[4,4]处的像素可提供针对在像素[4,4]处的角度212C的值的至少一个投票,因为[4,4]为线像素本身。在一些示例中,角度的值可在两个或两个以上投票上不同。在一些示例中,可使用平均来找到平均角度,和/或可使用加权以使得像素角度值中的一些具有较大权重(例如,线像素自身可比来自其他像素的角度权重更大)。
在一些示例中,角度110可进一步包括在线像素的位置处的线的切线值。在一些示例中,一个或更多个机器学习模型104可以被训练为在每个线像素处输出线的切线值,使得可以确定线的几何形状的更准确的表示。另外,通过使用所述切线,确定哪些线像素属于同一条线可更有效(例如,如果第一线像素具有表示所述线处于前向和左定向的切线值,且邻近于或在所述第一线像素的阈值距离内的第二线像素具有表示所述线处于后向和左定向的切线值,那么所述第一线像素和所述第二线像素可能不是同一条线)。
一个或更多个机器学习模型104可以进一步输出线类别112。线类别112可对应于车道线(例如,虚线、实线、黄色、白色)或边界线(例如,高速公路或街道的边界上的线)。在一些示例中,线类别112可包括杆、字母、道路标记类型(例如,转弯箭头、停止指示等)、人行横道等。在其他示例中,诸如在车辆或驾驶应用中不使用一个或更多个机器学习模型104的情况下,可以在由一个或更多个机器学习模型104预测的线类别112中包括任何类型的线。如本文在此更详细描述的,一个或更多个机器学习模型104可以将线类别112输出为位值,一个或更多个机器学习模型104不需要生成针对模型104被训练为进行预测的每个类别类型的输出(例如,置信度)。因此,在常规方法可以输出针对N个类别的N个预测的情况下,一个或更多个机器学习模型104可以输出log2(N)预测,这更加有效并且需要更少的计算资源。虽然一个或更多个机器学习模型104可以将线类别112输出为位值,但是这不旨在进行限制,并且在其他示例中,一个或更多个机器学习模型104输出针对每个类别类型的置信度或预测(例如,其中,位编码不用于训练一个或更多个机器学习模型104)。在任何示例中,可以通过使用一个或更多个机器学习模型104的输出的值并且确定与该值相关联的线类别112来确定线类别112(例如,如果实线是线类别112,并且与值3相关联,则当一个或更多个机器学习模型104输出[0 0 1 1]作为等于3的位值时,系统可以知道线类别112是实线黄线)。
在一些可选的实施例中(如由图1A和图5中的虚线所指示的),可以由一个或更多个机器学习模型104输出集群向量114(或集群向量114的集群)。例如,一个或更多个机器学习模型104可以被训练(如在此更详细地描述的)以预测针对每个像素或线像素的高维向量(或其值),从而使得与类似的高维向量(或集群向量114)相关联的线像素可以被确定为与图像中的同一条线相对应。例如,如本文在此更详细描述,可使用dbetween和dwithin的值来确定线像素何时对应于图像中的同一条线。取得由一个或更多个机器学习模型104输出的集群向量114的集群并且确定对应于同一条线的线像素的过程在本文中可以被称为聚类118(例如,可选的过程,如由图1A中的虚线所指示的)。例如,因为在位置(xi,yi)处的每个像素可以被映射到高维向量H(xi,yi),所以可以执行逆映射以从由一个或更多个机器学习模型104输出的集群向量114的集群的集合转到由图像数据102所表示的图像的图像像素。照此,映射到高维度空间中的单个向量集群的向量的像素可以映射到图像空间中的单个线。
几何拟合120可在聚类118的输出上执行(例如,一旦已确定线像素对应于同一条线)。几何拟合120可以包括可以产生表示实线的多项式系数的最小二乘多项拟合方法。例如,三阶多项拟合(例如,四个系数)可以用于执行几何拟合120。然而,这并不旨在进行限制,并且可以在不脱离本公开的范围的情况下使用其他几何方法变体。
照此,在一些示例中,像素距离108可用以确定图像中线像素的位置,角度110(和/或切线)可用以确定对应于线像素中的每个的线的定向或几何结构,线类别112可以被用于确定该线是什么类型的线,和/或集群向量114可用以确定对应于同一条线122的线像素。此信息可以被用于确定在一个或更多个相机(例如,自主机器,如车辆1000、行李转盘处的相机、购物中心中的相机等)的视野中的线122的布局和标识。例如,参见图3,图3是根据本公开内容的一些实施例的使用机器学习模型的预测来为图像重新创建线122的示例可视化302。可视化302可以包括道路的线304(例如,线304A-304G等)(例如,车道线、边界线等),其中,在可视化302中用其向量或几何结构来表示像素,以提供如从一个或更多个机器学习模型104的输出所确定的图像中的线的位置和方向的图示。例如,每个箭头可以表示作为单位向量绘制的预测线角度。另外,线304用不同箭头类型示出以指示线类别112(例如,线304A包括虚线箭头,线304B包括实线箭头等)。虽然没有在视觉上表示,但是可以使用集群向量114和/或正切值来确定哪个箭头属于线304中的每个。
现在参见图1B,图1B是根据本公开的一些实施例的使用机器学习模型来为图像重新创建线的示例图示。图1B的一个或更多个机器学习模型104A可以是在过程100中使用的一个或更多个机器学习模型104的一个示例。然而,图1B的一个或更多个机器学习模型104A不旨在是进行限制,并且一个或更多个机器学习模型104可以包括额外的和/或与图1B的一个或更多个机器学习模型104A不同的机器学习模型。一个或更多个机器学习模型104A可以包括或被称为卷积神经网络(CNN),并且因此在此可以可替代地被称为卷积神经网络104A、卷积网络104A或CNN104A。
CNN104A可使用图像数据102(和/或其他传感器数据类型)(有或没有任何预处理)作为输入。例如,CNN 104A可以使用图像数据102(如由图像124表示的)作为输入。图像数据102可以表示由一个或更多个相机(例如,本文中关于图10A-10C描述的相机中的一个或更多个)生成的图像。例如,图像数据102可以表示一个或更多个相机的视场。更具体地,图像数据102可表示由一个或更多个相机生成的个体图像,并且图像数据102表示一个或更多个个体图像在CNN 104A的每次迭代中被输入到CNN104A中。除了图像数据102之外,在一些实施例中,除了图像数据102之外或替代图像数据102,还可将传感器数据输入到CNN104A。传感器数据可以表示如由一个或更多个传感器(如,一个或更多个LIDAR传感器、一个或更多个RADAR传感器、一个或更多个麦克风、一个或更多个SONAR传感器等)观察到的物理环境(例如,感测场)的视角。
CNN104A的一个或更多个层可包括输入层。一个或更多个输入层可保持与图像数据102和/或传感器数据相关联的值。例如,关于图像数据102,一个或更多个输入层可以将表示一个或更多个图像的原始像素值的值保持为体(volume)(例如,宽度W、高度H和颜色通道C(例如,RGB),诸如32x32x3)和/或批大小B。
一个或更多个层可以包括卷积层。图像数据102(和/或传感器数据)可被输入CNN104A的一个或更多个卷积层(例如,在一个或更多个输入层和/或其他层类型之后)。卷积层可以计算连接到输入层中的局部区域的神经元的输出(例如,输入层),每个神经元计算它们的权重与它们在输入体中连接的小区域之间的点积。卷积层的结果可以是另一个体,其中一个维度基于所应用的滤波器的数量(例如,宽度、高度和滤波器的数量,诸如32x32x12,如果12是滤波器的数量)。
一个或更多个层可以包括整流线性单元(ReLU)层。一个或更多个ReLU层可以应用元素智能激活函数,例如max(0,x),例如零阈值化。得到的ReLU层的体积可以与ReLU层的输入的体积相同。
一个或更多个层可以包括池化层。池化层可以沿着空间维度(例如,高度和宽度)执行下采样操作,这可以导致比池化层的输入更小的体(例如,来自32x 32x 12输入体的16x 16x 12)。在一些示例中,CNN104A可不包括任何池化层。在这样的示例中,可以使用条纹卷积层代替池化层。
一个或更多个层可包括全连接层。一个或更多个全连接层中的每个神经元可连接到先前体积中的每个神经元。全连接层可计算类得分,且所得体积可为1x1x类的数量。
尽管在本文中关于CNN104A讨论了输入层、卷积层、池化层、ReLU层和全连接层,但这不旨在是进行限制。例如,可使用额外或替代层,例如正规化层、SoftMax层和/或其他层类型。
根据实施例,可使用CNN104A的层的不同顺序和数量。因此,CNN104A的层的顺序和数量不限于任何一种架构。此外,一些层可包括参数(例如,重量和/或偏置),诸如卷积流的层和/或一个或更多个输出层,而其他层可不包括,诸如ReLU层和池化层。在一些示例中,可以在训练期间(例如,在图5的过程500内)学习参数。进一步,一些层可以包括附加的超参数(例如,学习速率、步幅、时期、内核大小、滤波器的数量、用于池化层的池化类型等),诸如卷积层、一个或更多个输出层和池化层,而其他层可以不包括,诸如ReLU层。可以使用各种激活函数,包括但不限于ReLU、泄漏(leaky)ReLU、S形、双曲线正切(tanh)、指数线性单元(ELU)等。参数、超参数和/或激活函数不受限制并且可以取决于实施例而不同。
CNN 104A的输出108可经历解码116、(可选的)聚类118和/或几何拟合120,以生成可在可视化126中表示的线122。线122可表示来自图像124的车道线和/或道路边界。线122和对应信息(例如,线类别112、角度110等),自主驾驶软件栈的一个或更多个层(例如,感知层、世界模型管理器、规划层、控制层等)可以用于帮助通过物理环境(例如,通过图像124的驾驶表面)控制或确定车辆1000的控制。
现在参见图4,在此描述的方法400的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法400还可以体现为存储在计算机存储媒质上的计算机可用指令。方法400可由独立应用、服务或托管服务(独立服务或与另一托管服务组合)或另一产品的插件来提供,仅举几例。此外,通过举例的方式,关于图1的过程100来描述方法400。然而,方法400可附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文描述的那些系统。
图4是示出根据本公开的一些实施例的用于使用机器学习模型预测图像中的线的方法的流程图。在框B402处,方法400包括接收表示图像的图像数据。例如,可接收表示由图像传感器俘获的图像的图像数据102。在一些示例中,除了图像数据102之外或替代图像数据102,可俘获和/或接收传感器数据。
在框B404处,方法400包括将第一空间分辨率的图像数据应用于机器学习模型。例如,图像数据102可以第一空间分辨率被应用于一个或更多个机器学习模型104。
在框B406处,方法400包括计算针对对应于小于第一空间分辨率的第二空间分辨率的多个像素中的每个像素的像素距离。例如,可以由一个或更多个机器学习模型104针对与第二空间分辨率相对应的每个像素计算像素距离108(例如,由于一个或更多个机器学习模型104已经被训练为使用较高分辨率输入输出较低分辨率预测)。像素距离108可表示第一空间分辨率的像素与对应于图像中的线的第一空间分辨率的最近线像素之间的距离。结果,即使像素距离108被输出以对应于第二空间分辨率,像素距离108的值对应于第一空间分辨率的值,使得通过由一个或更多个机器学习模型104的处理来保留空间信息。
在框B408处,方法400包括将像素的第二像素坐标转换成第一空间分辨率的第一像素坐标。例如,像素在输出分辨率的坐标可被转换回其输入分辨率的坐标。
在框b410处,方法400包括使用像素距离确定图像中的线像素的位置。例如,可使用输入分辨率的坐标处的像素距离来确定图像中线122的线像素的位置。
训练机器学习模型以预测图像中的线
现在参见图5,图5是示出根据本公开的一些实施例的用于训练用于线预测的机器学习模型的示例过程500的数据流程图。地面实况数据502可包括注释数据,诸如标签。地面实况数据502可通过手动加标签和/或自动加标签来产生。例如,用于地面实况数据502的标签或其他注释数据可以合成地产生(例如,从计算机模型生成或渲染),真实产生(例如,从真实世界数据设计和产生)、机器自动化(例如,使用特征分析和学习以从数据提取特征且接着产生标签),人注释的(例如,标签者或注释专家定义标签的位置)和/或其组合(例如,人注释的折线点,以及光栅化器从折线点生成完整多边形)。在一些示例中,对于每个输入图像或对于每个输入传感器数据表示,可存在对应标签或注释作为地面实况数据502。
作为示例,并且关于图6,图6是根据本公开的一些实施例的用于训练用于线预测的机器学习模型的地面实况注释的示例可视化602。地面实况数据502可包括标签604或注释604,例如可视化602中示出的那些(例如,标签604A-604D)。例如,可为场景中的对象的类(诸如道路标记、交叉口、人行横道、道路边界、杆和标志和/或其他对象)生成不同类型的标签或注释(如按键606所指示的)作为用于与可视化602中的图像(例如,由训练图像数据510表示)相关联的地面实况数据502。在进一步的实施例中,可以为对象的子类生成不同的标签和注释。例如,道路标记可以进一步在实线和虚线车道、单和双车道线、转弯箭头和直线箭头之间区分,和/或通过颜色(例如,白色和黄色车道线)区分;同样,在非限制性示例中,杆和标志可进一步区分交通标志、街道标志、灯杆等。可视化602仅是出于示例目的,并且不旨在是进行限制。例如,过程500可被用于除了驱动应用之外或作为其替代的任何应用。
可以对地面实况数据502执行编码504以生成用于训练一个或更多个机器学习模型104以预测像素距离108、角度110、线类别112和/或集群向量114的经编码的地面实况数据506。为了编码地面实况数据502以产生经编码的地面实况数据506,在一些非限制性示例中,可实施GPU加速。例如,并行处理平台(例如,NVIDIA的CUDA)可以被实现用于通过用于生成经编码的地面实况数据506的若干计算内核来并行化算法——由此减少用于编码504的处理时间。
像素距离108可在1D或2D实施例中编码,如本文所述。例如,地面实况数据502可以被用于确定从每个像素到最近的线像素的像素距离108(例如,如使用对应于训练图像数据510的线的标签或注释确定的)。对于1D实施例,对于图像的像素的每行中的每个像素,可以从地面实况数据502对沿着像素的行的到左边最近的线像素的距离(d_L)和到右边最近的线像素的距离(d_R)进行编码。例如,关于图7A,图7A是根据本公开的一些实施例的用于保留机器学习模型的输入的空间信息的编码方法的示例图示。在图像702中,可存在四个线704。图7A可为确定和编码沿着像素706的行的四条线704(例如,其可包括19个像素的宽度)的像素距离108的示例。可针对图像中的像素的每个行重复此过程,且图7A可提供像素的单行706示例。在像素的行706处,四条线中的两条线可在位置x=4和x=13处交叉。照此,表708中的d_L和d_R值可以表示用于训练一个或更多个机器学习模型104输入分辨率的像素距离108的编码值。通过对像素的行中的每个像素的像素距离108进行编码,甚至在具有减小的分辨率的图像域中也可保留输入分辨率的线像素的位置,所述减小的分辨率实际上等于下采样。类似于在此相对于过程100所描述的非限制性示例,相对于图7A的较低分辨率可包括下采样的因数为四的等效物。因此,(例如,在表708中)输入分辨率的每四个值可被保留在(例如,在表710中)输出分辨率。因此,输出分辨率的像素距离108可被转换回输入分辨率,如本文中至少关于图2A所描述的,从而尽管输出的较低的分辨率域,但仍保留输入分辨率的空间信息。因为相对分辨率相对于图7A可低四倍,每隔四个像素(例如,像素0、4、8、12和16)可称为锚点,因为那些像素及其相关联的像素距离108可以始终是在一个或更多个机器学习模型104的输出分辨率输出的值。在当前像素的左边或右边的行中不存在线像素的情况下,无限或空的值可以被编码为用于训练一个或更多个机器学习模型104的像素距离108的值。
对于2D实施例,对于图像的每个像素,在x方向(例如,沿着图像的宽度)和y方向(例如,沿着图像的高度)上到最近线像素的距离可被编码为距地面实况数据502的像素距离108。类似于图7A,像素的每个行中的每四个像素可以保留在输出分辨率。照此,在下采样之后的剩余像素可在本文中称为锚点。
地面实况数据502可进一步用于对图像的像素中的每个像素的角度110进行编码,其中每个像素的角度110对应于最近的线像素的角度。例如,关于图7B,图7B包括根据本公开的一些实施例的用于训练机器学习模型以预测线角度的编码方法的示例图示。线712A和712B可以表示来自地面实况数据502的图像(由训练图像数据510表示)中的线的注释。例如,关于道路的图像,线712A和712B可以表示车道线。虚拟线714可为用以确定用于编码的角度110的虚拟线。例如,可扫描像素的行中的像素以确定线像素相对于线712A和/或712B的角度θ。角度110可以是相对于虚拟线714(例如,水平地延伸)在0-360度之间的角度。可针对沿着像素的每个行的所有线像素来编码每像素角度信息。可通过角度平滑技术(例如,本文中所描述的技术)来克服像素到像素角度变化。在一些示例中,可代替地编码360度角的余弦分量和正弦分量,而不是编码在0-360度之间的值。
在一些实施例中,可相对于每个线像素的切线来编码每个像素的切线。例如,可将每个线像素的切线值编码为投放用于所述线像素的投票(包括自投票)的每个像素。所述切线值可被用以确定每个线像素处的行的几何结构或方向,其可被用以帮助确定哪些线像素属于图像内的同一线。
地面实况数据502可用于将标签类112编码到像素中的每个(例如,对应于像素投票的一个或更多个线像素)。标签类112可各自由不同值表示,例如对于实线为0,对于虚线为1,对于道路边界线为2,对于柱为3,对于标志为4,对于道路标记为5等等。照此,地面实况数据502可以指示图像中的每个线的标签类112(例如,在生成注释之前,可以选择或应用类类型注释器或标签器)。照此,关于图6,不同标签类112中的每个可以被注释为用于训练的地面实况数据502。如本文中所描述,可使用位编码技术来编码标签类112,使得可使用log2(N)个输出标签类来编码关于N个不同标签类的语义信息。通过仅使用log2(N)个输出标签类,一个或更多个机器学习模型104可以是更高效的,从而减少运行时间以及减少所使用的计算资源。作为示例,对于N=16分类问题,使用位编码,可将5(例如,道路标记)的标记类别112编码为四位序列[0101],可将7的标记类别编码为四位序列[0111],等等。取决于实施例和标签类112的数量,一个或更多个机器学习模型104被训练的位的数量可以改变。例如,在只有两个标签类的情况下,可以只有一个位,在有三个类的情况下,可以有两个位,在有十六个标签类的情况下,可以有四个位,等等。
作为在此描述的过程的结果,除了线的角度110(和/或方向)和线像素所属的标签类112之外,还可以使用一个或更多个机器学习模型104来确定线像素的精确位置。为了确定线122的完整几何结构(例如,以连接点),可以采用基于聚类的高维嵌入算法。
例如,给定坐标(xi,yi)处的像素,可以训练一个或更多个机器学习模型104来将此像素映射到高维度向量H(xi,yi),其方式为此高维度向量可与高维度空间中的其他向量分离。尽管空间的维数可具有任意整数值D,其中D小于N,且N表示输出通道的总数,但在一些实施例中,可选择高维度空间中的维数。对于非限制性示例,高维度空间中的维度可被选择为四,使得D=4。当D=4时,H(xi,yi)可以包括四个元素,并且原始像素(xi,yi)与对应于H(xi,yi)的元素的四通道输出之间的映射可以由一个或更多个机器学习模型104通过训练数据(例如,地面实况数据502和训练图像数据510)直接学习(例如,作为集群向量114)。
通过针对图像中的所有像素(例如,针对在一个或更多个机器学习模型104的输出处的每个(xi,yi)位置处的每个像素)重复该过程,可以计算可分离的D维向量的集合(例如,作为集群向量114)。继续D=4的示例,可能的情况是H(xi,yi)的某些子集彼此足够接近以形成集群向量114的集群,而其他向量可以足够远地分开以不被视为相同集群的部分(并且可能替代地属于集群向量114的不同集群)。照此,一个或更多个机器学习模型104可以被训练成不仅将像素映射到D维集群向量114,而且还确定这些集群向量114中的哪些与集群向量114中的其他集群向量形成集群以及存在多少不同的集群。这在语义上可能是重要的,因为D维空间中的集群向量114的集群可对应于现实世界中(例如,世界空间中)的完整线。类似地,集群向量114的集群的总数目可对应于在任一时间一个或更多个相机和/或一个或更多个传感器的视场内的环境中的线的总数目。
例如,为了训练一个或更多个机器学习模型104以预测集群向量114的集群,可以将集群数据编码为相对于训练图像数据510的地面实况数据502。在此示例中,训练图像中的每个线可标记为集群(例如,可相对于训练图像中的每个线的训练图像应用标签或注释)。然后可以训练一个或更多个机器学习模型104以将彼此靠近的高维集群向量114(例如,使用阈值化方法)视为单个集群的成员,并且可以训练以将彼此远离的高维集群向量114视为不同集群的成员。在数学术语中,并且作为非限制性示例,一个或更多个机器学习模型104可以被训练成最小化集群内方差dwithin,以及最大化集群间方差dbetween。在训练期间,一个或更多个机器学习模型104还学习了对不同集群的数量的预测,并且每个集群可以表示不同的线边缘。关于集群向量114的集群的输出,一个或更多个机器学习模型104可以被训练成如本文中所描述的使用一个或更多个损失函数508(诸如以下等式(1)和(2)的那些)来输出D通道:
Figure BDA0002981011720000231
Figure BDA0002981011720000232
其中,Lwithin表示集群内损失函数508,Lbetween表示集群间损失函数508,K是地面实况数据502中的集群示例的数量,并且ci,i=1,2,3,…是集群ID。在一些实施例中,最终损失函数508可以是Lwithin和Lbetween之间的线性组合。可将总损失与阈值进行比较以确定高维集群向量114属于相同集群还是不同集群。
参照图8,图8是根据本公开的一些实施例的用于训练机器学习模型以预测线集群的编码方法的示例性示图。如本文中所使用,dbetween可对应于集群内方差。例如,如图8所示,不同集群向量114可以是可分离的,只要满足dbetween>4(dwithin)的条件即可。当查看集群向量114中的两个H(xi,yi)和H(xj,yj)时,例如,如果不存在现有的集群,则可以将向量H(xi,yi)注册为第一集群。可替代地,如果存在现有集群,则可以计算两个集群向量114之间的距离(例如,欧几里德距离),并且可以将距离值与2(dwithin)进行比较。如果该值小于2(dwithin),则可以将H(xi,yi)添加到现有集群,如果该值大于2(dwithin),则可以将H(xi,yi)注册为新集群。可以针对每个集群向量114重复该过程。
在一些实施例中,使用聚类的高维嵌入算法可以通过使用dwithin的内核半径执行均值漂移聚类来被执行。例如,从任何给定的集群向量114H(xi,yi),可以执行均值漂移操作,直到集群向量114收敛。然后,可以将收敛的集群与现有集群中心(或者与每个现有集群的中心)进行比较。如果不存在现有集群,则收敛的向量可以被注册为集群。如果存在现有集群,则可以计算两个向量之间的距离(例如,欧几里德距离),并且如果小于2(dwithin),则可以将集群向量114注册为属于同一集群。可替代地,转换的集群可以被注册为新的集群。可以针对集群向量114中的每个重复该过程。在一些示例中,可以基于超参数优化来执行阈值化。
一个或更多个损失函数508可以用于测量一个或更多个机器学习模型104的输出中相对于地面实况数据502和/或经编码的地面实况数据506的损失(例如,误差)(例如,一个或更多个机器学习模型104的预测与对应于地面实况数据的标签或注释相比的误差)。例如,可使用基于梯度下降的损失函数、二进制交叉熵损失函数、均方差(L2)损失函数、L1损失函数和/或其他损失函数类型作为损失函数508。在一些实施例中,可使用两个或更多个不同的损失函数。例如,在存在两个或更多个输出的情况下,一个或更多个损失函数可以用于一个或更多个机器学习模型104的输出的每种类型,或者两个或更多个损失函数可以用于单个输出类型。在两个或更多个损失函数用于单个输出类型(例如,高维嵌入算法)的情况下,可相对于彼此对损失函数进行加权以产生加权损失函数。可执行后向通行计算以递归地计算损失函数相对于训练参数(例如,权重、偏差等)的梯度,如过程500中所指示。在一些示例中,一个或更多个机器学习模型104的权重和偏差可以用于计算这些梯度。
现在参见图9,在此描述的方法900的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法900还可体现为存储在计算机存储介质上的计算机可用指令。仅举几例,方法900可以由独立应用、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件来提供。此外,举例来讲,关于图5的过程500描述了方法900。然而,方法900可另外或替代地由任一系统或系统的任何组合执行,所述系统包括(但不限于)本文中所描述的系统。
图9是示出根据本公开的一些实施例的用于训练机器学习模型以预测图像中的线的方法的流程图。方法900在框B902处包括接收表示图像的图像数据。例如,可接收训练图像数据510,其中训练图像数据510可表示图像。
方法900在框B904处包括接收表示与图像相关联的标签和对应标签类的注释数据。例如,可接收对应于图像中的线和标签类112的注释和/或标签的地面实况数据502。
方法900在框B906处包括确定距与所述标签中的标签相关联的最近线像素的像素距离。例如,对于图像中的每个像素,可确定像素与最近线像素之间的距离。在一些示例中,此可包括距离沿着像素的像素的行向左和/或向右的距离。在其他示例中,此可包括像素与线像素之间沿着行的距离和沿着列的距离(例如,以确定量值)。
方法900在框B908处包括将像素距离和与到像素的标签相关联的标签类编码以产生地面实况数据。例如,在编码504期间,将像素距离108和与每个像素相关联的标签类编码,以将像素作为经编码的地面实况数据506。除了像素距离和标签类之外,可将如本文所述的类别、角度、距离信息、可选地聚类信息和/或其他信息编码到像素。
方法900在框B910处包括使用第一地面实况数据和第二地面实况数据来训练神经网络。例如,在一些示例中,经编码的地面实况数据506可以用于训练一个或更多个机器学习模型104,其中,一个或更多个机器学习模型104可以包括神经网络(例如,CNN)。
示例自主车辆
图10A为根据本公开一些实施例的示例自主车辆1000的图示。自主车辆1000(可替代地,在本文称为“车辆1000”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、应急车辆、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、建筑车辆、水下船、无人机和/或另一种类型的车辆(例如,无人驾驶和/或容纳一名或更多名乘客)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related to Driving AutomationSystems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1000可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1000可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆1000可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1000可以包括推进系统1050,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统1050可以连接到可以包括变速器的车辆1000的传动系以便实现车辆1000的推进。可以响应于接收到来自油门/加速器1052的信号而控制推进系统1050。
可以包括方向盘的转向(steering)系统1054可以用来在推进系统1050操作时(例如在车辆运动时)使车辆1000转向(例如沿着希望的路径或路线)。转向系统1054可以接收来自转向执行器1056的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统1046可以用来响应于接收到来自制动执行器1048和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)1004(图10C)和/或一个或更多个GPU的一个或更多个控制器1036可以向车辆1000的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动执行器1048操作车辆制动器、经由一个或更多个转向执行器1056操作转向系统1054、经由一个或更多个油门/加速器1052操作推进系统1050的信号。一个或更多个控制器1036可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1000。一个或更多个控制器1036可以包括用于自主驾驶功能的第一控制器1036、用于功能性安全功能的第二控制器1036、用于人工智能功能(例如计算机视觉)的第三控制器1036、用于信息娱乐功能的第四控制器1036、用于紧急情况下的冗余的第五控制器1036和/或其他控制器。在一些示例中,单个控制器1036可以处理上述功能中的两个或更多,两个或更多控制器1036可以处理单个功能,和/或其任意组合。
一个或更多个控制器1036可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1000的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器1058(例如全球定位系统传感器)、RADAR传感器1060、超声传感器1062、LIDAR传感器1064、惯性测量单元(IMU)传感器1066(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1096、立体相机1068、广角相机1070(例如鱼眼相机)、红外相机1072、环绕相机1074(例如360度相机)、远程和/或中程相机1098、速度传感器1044(例如用于测量车辆1000的速率)、振动传感器1042、转向传感器1040、制动传感器(例如作为制动传感器系统1046的部分)和/或其他传感器类型。
控制器1036中的一个或更多个可以接收来自车辆1000的仪表组1032的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器1034、听觉信号器、扬声器和/或经由车辆1000的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图10C的HD地图1022)、位置数据(例如,车辆1000例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1036所感知的关于对象和对象状态的信息等等。例如,HMI显示器1034可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆1000进一步包括网络接口1024,其可以使用一个或更多个无线天线1026和/或调制解调器通过一个或更多个网络通信。例如,网络接口1024可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线1026也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图10B为根据本公开一些实施例的用于图10A的示例自主车辆1000的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1000上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆1000的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、1020fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆1000前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1036和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1070,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图10B中图示出仅仅一个广角相机,但是在车辆1000上可以存在任意数量的广角相机1070。此外,远程相机1098(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1098也可以用于对象检测和分类以及基本的对象跟踪。
一个或更多个立体相机1068也可以包括在前置配置中。立体相机1068可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机1068可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1068。
具有包括车辆1000的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1074(例如如图10B中所示的四个环绕相机1074)可以置于车辆1000上。环绕相机1074可以包括广角相机1070、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1074(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆1000的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1098、立体相机1068、红外相机1072等等)的相机。
图10C为根据本公开一些实施例的用于图10A的示例自主车辆1000的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图10C中车辆1000的部件、特征和系统中的每个被图示为经由总线1002连接。总线1002可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆1000内部的网络,用来辅助控制车辆1000的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线1002描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线1002,但是这并不意图是限制性的。例如,可以存在任意数量的总线1002,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1002可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1002可以用于碰撞避免功能,并且第二总线1002可以用于驱动控制。在任何示例中,每条总线1002可以与车辆1000的任何部件通信,并且两条或更多总线1002可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1004、每个控制器1036和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1000的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆1000可以包括一个或更多个控制器1036,例如本文关于图10A所描述的那些控制器。控制器1036可以用于各种各样的功能。控制器1036可以耦合到车辆1000的任何其他不同的部件和系统,并且可以用于车辆1000的控制、车辆1000的人工智能、用于车辆1000的信息娱乐和/或类似物。
车辆1000可以包括一个或更多个片上系统(SoC)1004。SoC 1004可以包括CPU1006、GPU 1008、处理器1010、高速缓存1012、加速器1014、数据存储1016和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 1004可以用来控制车辆1000。例如,一个或更多个SoC 1004可以在系统(例如车辆1000的系统)中与HD地图1022结合,所述HD地图可以经由网络接口1024从一个或更多个服务器(例如图10D的一个或更多个服务器1078)获得地图刷新和/或更新。
CPU 1006可以包括CPU集群或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU1006可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 1006在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 1006可以包括四个双核集群,其中每个集群具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 1006(例如CCPLEX)可以被配置为支持同时集群操作,使得CPU 1006的集群的任意组合能够在任何给定时间是活动的。
CPU 1006可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核集群进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核集群进行功率门控。CPU 1006可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、集群和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 1008可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 1008可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 1008可以使用增强张量指令集。GPU 1008可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU1008可以包括至少八个流式微处理器。GPU 1008可以使用计算应用编程接口(API)。此外,GPU 1008可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 1008进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 1008。然而,这并不意图是限制性的,并且GPU 1008可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 1008可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 1008可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 1008直接访问CPU 1006页表。在这样的示例中,当GPU 1008内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 1006。作为响应,CPU 1006可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 1008。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 1006和GPU 1008二者的内存,从而简化了GPU 1008编程和将应用程序移(port)到GPU 1008。
此外,GPU 1008可以包括访问计数器,其可以跟踪GPU 1008访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 1004可以包括任意数量的高速缓存1012,包括本文描述的那些高速缓存。例如,高速缓存1012可以包括CPU 1006和GPU 1008二者可用的L3高速缓存(例如,其连接到CPU 1006和GPU 1008二者)。高速缓存1012可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)跟踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC1004可以包括一个或更多个加速器1014(例如硬件加速器、软件加速器或者其组合)。例如,SoC1004可以包括硬件加速集群,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速集群能够加速神经网络和其他计算。硬件加速集群可以用来补充GPU 1008,并且卸载GPU 1008的一些任务(例如释放GPU1008的更多周期以用于执行其他任务)。作为一个示例,加速器1014可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器1014(例如硬件加速集群)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单示例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 1008的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 1008针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 1008和/或其他加速器1014。
加速器1014(例如硬件加速集群)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 1006访问系统内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速集群中,并且任意数量的向量处理器可以包括在这些PVA中的每个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体系统安全性。
加速器1014(例如硬件加速集群)可以包括片上计算机视觉网络和SRAM,以提供用于加速器1014的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独通道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 1004可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。
加速器1014(例如硬件加速器集群)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆1000取向、距离相关的惯性测量单元(IMU)传感器1066输出,从神经网络和/或其他传感器(例如LIDAR传感器1064或RADAR传感器1060)获得的对象的3D位置估计等。
SoC 1004可以包括一个或更多个数据存储1016(例如内存)。数据存储1016可以是SoC 1004的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1016可以容量足够大以存储神经网络的多个示例。数据存储1012可以包括L2或L3高速缓存1012。对数据存储1016的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器1014关联的内存的引用。
SoC 1004可以包括一个或更多个处理器1010(例如嵌入式处理器)。处理器1010可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 1004启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 1004热和温度传感器管理和/或SoC 1004功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 1004可以使用环形振荡器检测CPU 1006、GPU 1008和/或加速器1014的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 1004置于较低功率状态和/或将车辆1000置于司机安全停车模式(例如使车辆1000安全停车)。
处理器1010可以进一步包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器1010可以进一步包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器1010可以进一步包括安全集群引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全集群引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器1010可以进一步包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器1010可以进一步包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器1010可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1070、环绕相机1074和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个示例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 1008无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 1008上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 1008的负担以提高性能和响应能力。
SoC1004可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 1004可以进一步包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 1004可以进一步包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC1004可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器1064、RADAR传感器1060等等)的数据,来自总线1002的数据(例如车辆1000的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器1058的数据。SoC 1004可以进一步包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 1006。
SoC 1004可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 1004可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 1006、GPU 1008和数据存储1016结合时,加速器1014可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速集群,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 1020)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU1008上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆1000的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 1004提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风1096的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 1004使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器1058所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1062的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC1004的CPU1018(例如分立的CPU或dCPU)。CPU 1018可以包括例如X86处理器。CPU 1018可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 1004之间潜在地不一致的结果,和/或监控控制器1036和/或信息娱乐SoC 1030的状态和健康状况。
车辆1000可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC1004的GPU 1020(例如分立的GPU或dGPU)。GPU 1020可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆1000的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆1000可以进一步包括网络接口1024,该网络接口可以包括一个或更多个无线天线1026(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1024可以用来使能通过因特网与云(例如与服务器1078和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1000提供关于接近车辆1000的车辆(例如车辆1000前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1000的协作自适应巡航控制功能的部分。
网络接口1024可以包括提供调制和解调功能并且使得控制器1036能够通过无线网络通信的SoC。网络接口1024可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆1000可以进一步包括可包括片外(例如SoC 1004外)存储装置的数据存储1028。数据存储1028可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个位的数据的其他部件和/或设备。
车辆1000可以进一步包括GNSS传感器1058。GNSS传感器1058(例如GPS和/或辅助GPS传感器)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器1058,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆1000可以进一步包括RADAR传感器1060。RADAR传感器1060可以甚至在黑暗和/或恶劣天气条件下也由车辆1000用于远程车辆检测。RADAR功能安全级别可以是ASILB。RADAR传感器1060可以使用CAN和/或总线1002(例如以传输RADAR传感器1060生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器1060可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器1060可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器1060可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1000的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1000的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达1060m(前面)或80m(后面)的范围以及高达42度(前面)或1050度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于盲点检测和/或变道辅助。
车辆1000可以进一步包括超声传感器1062。可以置于车辆1000的前面、后面和/或侧面的超声传感器1062可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1062,并且不同的超声传感器1062可以用于不同的检测范围(例如2.5m、4m)。超声传感器1062可以操作于功能安全级别的ASIL B。
车辆1000可以包括LIDAR传感器1064。LIDAR传感器1064可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器1064可以为功能安全级别的ASIL B。在一些示例中,车辆1000可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器1064(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器1064可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器1064可以具有例如近似1000m的广告范围,精度为2cm-3cm,支持1000Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1064。在这样的示例中,LIDAR传感器1064可以实现为可以嵌入到车辆1000的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器1064可以甚至对于低反射率对象提供高达1020度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器1064可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1000的每个侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器1064可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以进一步包括IMU传感器1066。在一些示例中,IMU传感器1066可以位于车辆1000的后轴的中心。IMU传感器1066可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1066可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器1066可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器1066可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器1066可以使得车辆1000能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器1066的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器1066和GNSS传感器1058可以结合到单个集成单元中。
该车辆可以包括置于车辆1000中和/或车辆1000周围的麦克风1096。除别的以外,麦克风1096可以用于应急车辆检测和识别。
该车辆可以进一步包括任意数量的相机类型,包括立体相机1068、广角相机1070、红外相机1072、环绕相机1074、远程和/或中程相机1098和/或其他相机类型。这些相机可以用来捕获车辆1000整个外围周围的图像数据。使用的相机类型取决于实施例和车辆1000的要求,并且相机类型的任意组合可以用来提供车辆1000周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每个在本文关于图10A和图10B更详细地进行了描述。
车辆1000可以进一步包括振动传感器1042。振动传感器1042可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1042时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆1000可以包括ADAS系统1038。在一些示例中,ADAS系统1038可以包括SoC。ADAS系统1038可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器1060、LIDAR传感器1064和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆1000前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆1000改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口1024和/或无线天线1026经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆1000前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆1000前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1060。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1000穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆1000开始离开车道,那么LKA系统提供纠正车辆1000的转向输入或制动。
BSW系统检测并向驾驶员警告汽车盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆1000倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1000中,在冲突结果的情况下,车辆1000本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1036或第二控制器1036)的结果。例如,在一些实施例中,ADAS系统1038可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统1038的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 1004的部件和/或作为SoC 1004的部件而被包括。
在其他示例中,ADAS系统1038可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统1038的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统1038由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆1000可以进一步包括信息娱乐SoC 1030(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 1030可以包括可以用来向车辆1000提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、Wi-Fi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 1030可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、Wi-Fi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器1034、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 1030可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统1038的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 1030可以包括GPU功能。信息娱乐SoC 1030可以通过总线1002(例如CAN总线、以太网等)与车辆1000的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC 1030可以耦合至监督MCU,使得在主控制器1036(例如车辆1000的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 1030可以如本文所描述的将车辆1000置于司机安全停车模式。
车辆1000可以进一步包括仪表组1032(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组1032可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组1032可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 1030和仪表组1032之间共享。换言之,仪表组1032可以作为信息娱乐SoC1030的部分而被包括,或者反之亦然。
图10D为根据本公开一些实施例的基于云的服务器与图10A的示例自主车辆1000之间的通信的系统示意图。系统1076可以包括服务器1078、网络1090以及包括车辆1000在内的车辆。服务器1078可以包括多个GPU1084(A)-1084(H)(这里统称为GPU 1084)、PCIe交换机1082(A)-1082(H)(这里统称为PCIe交换机1082)和/或CPU 1080(A)-1080(B)(这里统称为CPU 1080)。GPU 1084、CPU 1080和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口1088之类的高速互连和/或PCIe连接1086互连。在一些示例中,GPU 1084经由NVLink和/或NVSwitchSoC连接,并且GPU 1084和PCIe交换机1082经由PCIe互连连接。尽管图示出八个GPU 1084、两个CPU 1080和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器1078中的每个可以包括任意数量的GPU 1084、CPU 1080和/或PCIe交换机。例如,服务器1078中的每个可以包括八个、十六个、三十二个和/或更多GPU 1084。
服务器1078可以通过网络1090并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1078可以通过网络1090并且向车辆传输神经网络1092、更新的神经网络1092和/或地图信息1094,包括关于交通和道路状况的信息。对地图信息1094的更新可以包括对于HD地图1022的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1092、更新的神经网络1092和/或地图信息1094可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或至少部分地基于数据中心处执行的训练(例如使用服务器1078和/或其他服务器)的经验产生。
服务器1078可以用来至少部分地基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1090传输至车辆),和/或机器学习模型可以由服务器1078用来远程地监控车辆。
在一些示例中,服务器1078可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1078可以包括由GPU 1084供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器1078可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器1078的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1000中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1000的定期更新,例如图像序列和/或车辆1000已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1000识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1000中的AI发生故障的结论,那么服务器1078可以向车辆1000传输信号,指示车辆1000的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器1078可以包括GPU 1084和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图11为适合用于实现本公开一些实施例的示例计算设备1100的框图。计算设备1100可以包括直接或间接耦合下列设备的总线1102:内存1104,一个或更多个中央处理单元(CPU)1106,一个或更多个图形处理单元(GPU)1108,通信接口1110,输入/输出(I/O)端口1112,输入/输出组件1114,电源1111,以及一个或更多个呈现组件1118(例如显示器)。
尽管图11的各个框被示为经由具有线路的总线1102连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件1118可以被认为是I/O组件1114(例如如果显示器为触摸屏)。作为另一个示例,CPU 1106和/或GPU 1108可以包括内存(例如,内存1104可以表示除了GPU 1108、CPU 1106和/或其他组件的内存以外的存储设备)。换言之,图11的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图11的计算设备的范围内。
总线1102可以表示一条或更多条总线,例如地址总线、数据总线、控制总线或者其组合。总线1102可以包括一种或更多种总线类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的总线。
内存1104可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备1100访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,内存1104可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备1100访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
通信介质可以在诸如载波之类的调制数据信号或其他传输机制中包括计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,通信介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
CPU 1106可以被配置为执行计算机可读指令以便控制计算设备1100的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 1106中的每个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 1106可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备1100的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备1100的类型,处理器可以是使用精简指令集计算(RISC)实现的ARM处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备1100还可以包括一个或更多个CPU 1106。
GPU 1108可以由计算设备1100用来渲染图形(例如3D图形)。GPU1108可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU 1108可以响应于渲染命令(例如经由主机接口接收的来自CPU 1106的渲染命令)而生成用于输出图像的像素数据。GPU1108可以包括诸如显示内存之类的用于存储像素数据的图形内存。显示内存可以作为内存1104的部分而被包括。GPU 1108可以包括(例如经由链路)并行操作的两个或更多GPU。当组合在一起时,每个GPU 1108可以生成用于输出图像的不同部分或者用于不同输出图像的像素数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的内存,或者可以与其他GPU共享内存。
在其中计算设备1100不包括GPU 1108的示例中,CPU 1106可以用来渲染图形。
通信接口1110可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备700能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口1110可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口1112可以使得计算设备1100能够逻辑地耦合到包括I/O组件1114、呈现组件1118和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备1100中。说明性I/O组件1114包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件1114可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些示例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备1100的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备1100可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备1100可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1100用来渲染沉浸式增强现实或者虚拟现实。
电源1116可以包括硬接线电源、电池电源或者其组合。电源1116可以向计算设备1100供电以使得计算设备1100的组件能够操作。
呈现组件1118可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件1118可以接收来自其他组件(例如GPU 1108、CPU 1106等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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所述的方法,其中所述第二空间分辨率包括相比所述第一空间分辨率小因子N的分辨率,并且将所述第二像素坐标转换到所述第一像素坐标包括:将所述第二像素坐标乘以N。
3.根据权利要求1所述的方法,其中使用相对于所述第一空间分辨率的所述第一像素坐标的所述像素距离来确定所述图像中的所述线像素的所述位置包括:至少部分地基于所述像素距离来确定针对所述第一空间分辨率的所述第一像素中的每个第一像素的投票的数目;以及针对具有大于阈值投票数的投票的所述第一像素中的每个第一像素,确定所述线像素之一位于所述第一像素处。
4.根据权利要求3所述的方法,其中针对所述第一像素的自投票被给予比针对所述第一像素的其他像素投票更高的权重。
5.根据权利要求1所述的方法,进一步包括:由所述机器学习模型至少部分地基于所述图像数据来计算与所述第二空间分辨率的所述第二像素中的每个第二像素相对应的标签类。
6.根据权利要求5所述的方法,其中所述标签类被计算为对应于所述标签类的位值。
7.根据权利要求1所述的方法,进一步包括:由所述机器学习模型至少部分地基于所述图像数据来计算与所述第二空间分辨率的所述第二像素中的每个第二像素相对应的角度;以及使用所述角度来确定所述图像中的线的至少部分的几何形状。
8.根据权利要求1所述的方法,进一步包括:由所述机器学习模型至少部分地基于所述图像数据来计算与所述线像素中的每个线像素相对应的切线值;以及使用所述切线值来确定所述图像中的线的至少部分的几何形状。
9.根据权利要求1所述的方法,进一步包括:由所述机器学习模型至少部分地基于所述图像数据来计算高维向量的集群;
至少部分基于所述集群确定对应于所述图像中的同一条线的所述线像素;以及使用对应于所述同一条线的所述线像素来生成相对于所述图像的所述线的表示。
10.一种方法,包括:接收表示图像的图像数据;
接收表示与所述图像相关联的一个或更多个标签和相应的标签类的注释数据;针对所述图像的像素中的每个像素:确定到与所述一个或更多个标签中的标签相关联的最近线像素的像素距离;以及
对到所述像素的所述像素距离以及与所述标签相关联的标签类进行编码以生成地面实况数据;以及使用所述地面实况数据来训练神经网络。
11.根据权利要求10所述的方法,进一步包括:针对对应于所述一个或更多个标签的所述像素中的每个标签像素:确定平行于所述线像素中的像素的行延伸的水平线与对应于所述线像素的标签之间的角度;以及用所述地面实况数据编码对应于所述角度的角度数据;以及
进一步使用所述地面实况数据与经编码的角度数据来训练所述神经网络。
12.根据权利要求10所述的方法,其中对与所述标签相关联的所述标签类进行编码包括:对与所述标签相对应的位值进行编码。
13.根据权利要求10所述的方法,其中确定到所述最近线像素的所述像素距离包括:确定到所述像素中的像素的行中的所述最近线像素的所述像素距离;以及对到所述像素的所述像素距离进行编码包括:对沿着所述像素中的像素的行的所述像素距离进行编码。
14.根据权利要求10所述的方法,其中确定到所述最近线像素的所述像素距离包括:确定到与所述标签相关联的所述最近线像素的所述像素距离为沿着所述像素中的像素的行的第一像素距离和沿着所述像素中的像素的列的第二像素距离;以及对到所述像素的所述像素距离进行编码包括:将所述像素距离编码为沿着所述像素中的像素的行的所述第一像素距离和沿着所述像素中的像素的列的所述第二像素距离。
15.根据权利要求10所述的方法,进一步包括:针对对应于所述一个或更多个标签的所述像素中的每个线像素:确定在所述线像素处的所述标签的切线;以及用所述地面实况数据编码对应于所述线像素的所述切线的切线数据;以及进一步使用所述地面实况数据与经编码的切线数据来训练所述神经网络。
16.根据权利要求10所述的方法,其中所述注释数据进一步表示所述标签的集群标签,且所述方法进一步包括:将所述像素映射到高维向量;确定所述高维向量之间的距离;以及至少部分地基于使用所述集群标签作为第三地面实况数据来训练所述神经网络,以将到其他所述高维向量在阈值距离内的所述高维向量聚类在一起。
17.根据权利要求16所述的方法,其中其他所述高维向量的所述阈值距离内的所述高维向量被确定为对应于所述图像中的同一条线。
18.一种方法,其包括:接收表示图像的图像数据,所述图像由具有物理环境的视场的车辆的图像传感器生成;
将第一空间分辨率的所述图像数据应用于机器学习模型;由所述机器学习模型并且针对第二空间分辨率的每个像素计算:所述第一空间分辨率的所述像素的第一位置与所述第一空间分辨率的最近线像素的第二位置之间的像素距离;以及在所述第二位置处的对应于所述最近线像素的线的角度;至少部分地基于针对每个像素的所述像素距离和所述角度来确定所述线的几何形状;以及将所述几何形状发送到至少一个其他应用程序。
19.根据权利要求18所述的方法,其中由所述机器学习模型并且针对所述第二空间分辨率的每个像素计算进一步包括:计算与所述最近线像素的线类别相对应的位值;以及至少部分地基于所述位值来确定所述线类别;以及进一步至少部分地基于所述线类别执行一个或更多个操作。
20.根据权利要求18所述的方法,进一步包括:由所述机器学习模型并且使用嵌入算法来计算高维向量的集群,所述高维向量中的每个高维向量对应于相应的线像素,其中至少部分地基于所述集群确定所述线的几何形状。
CN201980061007.5A 2018-07-17 2019-07-17 用于自主驾驶机器的基于回归的线检测 Active CN113168505B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862699669P 2018-07-17 2018-07-17
US62/699,669 2018-07-17
PCT/US2019/042225 WO2020018679A1 (en) 2018-07-17 2019-07-17 Regression-based line detection for autonomous driving machines

Publications (2)

Publication Number Publication Date
CN113168505A true CN113168505A (zh) 2021-07-23
CN113168505B CN113168505B (zh) 2024-04-09

Family

ID=69163101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980061007.5A Active CN113168505B (zh) 2018-07-17 2019-07-17 用于自主驾驶机器的基于回归的线检测

Country Status (5)

Country Link
US (3) US11604944B2 (zh)
EP (2) EP3824408B1 (zh)
JP (1) JP7295234B2 (zh)
CN (1) CN113168505B (zh)
WO (1) WO2020018679A1 (zh)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10643084B2 (en) 2017-04-18 2020-05-05 nuTonomy Inc. Automatically perceiving travel signals
US10908614B2 (en) * 2017-12-19 2021-02-02 Here Global B.V. Method and apparatus for providing unknown moving object detection
DE112019000048T5 (de) 2018-03-15 2020-01-16 Nvidia Corporation Bestimmung eines befahrbaren freiraums für autonome fahrzeuge
EP3824408B1 (en) 2018-07-17 2024-03-06 NVIDIA Corporation Regression-based line detection for autonomous driving machines
EP3845430A4 (en) * 2018-08-29 2022-05-11 Korea Advanced Institute of Science and Technology METHOD AND APPARATUS FOR ESTIMATING A TYPE OF ROAD SURFACE USING AN ULTRASOUND SIGNAL
US11199847B2 (en) * 2018-09-26 2021-12-14 Baidu Usa Llc Curvature corrected path sampling system for autonomous driving vehicles
US11048977B1 (en) * 2018-09-27 2021-06-29 Apple Inc. Method and device for pixel-level object segmentation
US10832062B1 (en) * 2018-09-28 2020-11-10 Zoox, Inc. Image embedding for object tracking
US11068724B2 (en) * 2018-10-11 2021-07-20 Baidu Usa Llc Deep learning continuous lane lines detection system for autonomous vehicles
US10878282B2 (en) * 2018-10-15 2020-12-29 Tusimple, Inc. Segmentation processing of image data for LiDAR-based vehicle tracking system and method
US10878580B2 (en) * 2018-10-15 2020-12-29 Tusimple, Inc. Point cluster refinement processing of image data for LiDAR-based vehicle tracking system and method
US10984540B2 (en) 2018-10-15 2021-04-20 Tusimple, Inc. Tracking and modeling processing of image data for LiDAR-based vehicle tracking system and method
US10896116B1 (en) 2018-10-19 2021-01-19 Waymo Llc Detecting performance regressions in software for controlling autonomous vehicles
JP7077910B2 (ja) * 2018-10-22 2022-05-31 トヨタ自動車株式会社 区画線検出装置及び区画線検出方法
US10823855B2 (en) * 2018-11-19 2020-11-03 Fca Us Llc Traffic recognition and adaptive ground removal based on LIDAR point cloud statistics
US10902303B2 (en) * 2019-01-22 2021-01-26 Honda Motor Co., Ltd. Methods and systems for visual recognition using triplet loss
GB2589247B (en) * 2019-01-29 2023-07-05 Motional Ad Llc Traffic light estimation
US10762393B2 (en) * 2019-01-31 2020-09-01 StradVision, Inc. Learning method and learning device for learning automatic labeling device capable of auto-labeling image of base vehicle using images of nearby vehicles, and testing method and testing device using the same
WO2020185779A1 (en) * 2019-03-11 2020-09-17 Nvidia Corporation Intersection detection and classification in autonomous machine applications
US11550320B2 (en) * 2019-03-18 2023-01-10 Pony Ai Inc. Vehicle redundant processing resource usage
US10853129B1 (en) * 2019-03-19 2020-12-01 Amazon Technologies, Inc. Accelerator based inference service
US11718324B2 (en) 2019-04-11 2023-08-08 Isee, Inc. Instance segmentation imaging system
US11630209B2 (en) * 2019-07-09 2023-04-18 Waymo Llc Laser waveform embedding
US11453404B2 (en) * 2019-09-05 2022-09-27 Baidu Usa Llc Gear based vehicle load inference system
EP3809316A1 (de) * 2019-09-24 2021-04-21 Elektrobit Automotive GmbH Vorhersage eines strassenverlaufs auf basis von radardaten
US11409304B1 (en) 2019-09-27 2022-08-09 Zoox, Inc. Supplementing top-down predictions with image features
US11380108B1 (en) * 2019-09-27 2022-07-05 Zoox, Inc. Supplementing top-down predictions with image features
CN110782481B (zh) * 2019-10-18 2023-09-05 华中光电技术研究所(中国船舶重工集团有限公司第七一七研究所) 无人艇智能决策方法及系统
US11443142B2 (en) * 2020-02-14 2022-09-13 Samsung Electronics Co., Ltd. In-storage-based data processing using machine learning
US11195033B2 (en) 2020-02-27 2021-12-07 Gm Cruise Holdings Llc Multi-modal, multi-technique vehicle signal detection
CN115190987A (zh) * 2020-02-27 2022-10-14 祖克斯有限公司 垂直切入训练
KR20210111557A (ko) * 2020-03-03 2021-09-13 현대자동차주식회사 심층 학습 기반의 객체 분류 장치 및 그 방법
JP7132271B2 (ja) * 2020-03-31 2022-09-06 本田技研工業株式会社 挙動制御システム
EP3907472A1 (en) * 2020-05-05 2021-11-10 Bayerische Motoren Werke Aktiengesellschaft Detecting lane markings based on lidar data
US11763544B2 (en) 2020-07-07 2023-09-19 International Business Machines Corporation Denoising autoencoder image captioning
US11651522B2 (en) * 2020-07-08 2023-05-16 International Business Machines Corporation Adaptive cycle consistency multimodal image captioning
EP3944158A1 (de) * 2020-07-21 2022-01-26 Volkswagen Aktiengesellschaft Computer-implementiertes verfahren für maschinelles lernen zum betrieb einer fahrzeugkomponente und verfahren zum betrieb einer fahrzeugkomponente
CN111885155B (zh) * 2020-07-22 2021-06-18 大连理工大学 一种车联网资源融合的车载任务协作迁移方法
EP3943969A1 (en) * 2020-07-24 2022-01-26 Aptiv Technologies Limited Methods and systems for predicting a trajectory of an object
CN111986172B (zh) * 2020-08-18 2024-06-04 华北电力科学研究院有限责任公司 一种面向电力设备的红外图像故障检测方法及装置
CN111860699B (zh) * 2020-08-26 2021-04-13 重庆大学 一种基于波动率的通勤出行模式识别方法
CN112766056B (zh) * 2020-12-30 2023-10-27 厦门大学 一种基于深度神经网络的弱光环境车道线检测方法、装置
KR20220144456A (ko) * 2021-04-19 2022-10-27 현대모비스 주식회사 Svm 원 영상을 기반으로 근접 주행 환경을 인식하는 방법 및 시스템
US20220373354A1 (en) * 2021-05-18 2022-11-24 Argo AI, LLC Automatic generation of vector map for vehicle navigation
ES2886582A1 (es) * 2021-06-03 2021-12-20 Ostirion S L U Procedimiento y equipo de deteccion de posicion y velocidad de un vehiculo ferroviario
US12008788B1 (en) * 2021-10-14 2024-06-11 Amazon Technologies, Inc. Evaluating spatial relationships using vision transformers
US12039663B2 (en) 2021-10-28 2024-07-16 Nvidia Corporation 3D surface structure estimation using neural networks for autonomous systems and applications
US11810574B1 (en) * 2022-11-15 2023-11-07 Leslie Helpert Voice-driven internal physiological imaging
CN116069889B (zh) * 2023-03-01 2023-07-14 航天宏图信息技术股份有限公司 一种线状要素单线拓扑状态的判断方法和装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130051519A1 (en) * 2011-08-31 2013-02-28 Dong Yang Methods and apparatus for super resolution scanning for cbct system and cone-beam image reconstruction
US20160239725A1 (en) * 2015-02-12 2016-08-18 Mitsubishi Electric Research Laboratories, Inc. Method for Denoising Time-of-Flight Range Images
US20160335795A1 (en) * 2015-05-13 2016-11-17 Google Inc. Deepstereo: learning to predict new views from real world imagery
CN106682675A (zh) * 2016-12-29 2017-05-17 中国电子科技集团公司第五十四研究所 一种面向高光谱图像的空谱联合特征提取方法
EP3171297A1 (en) * 2015-11-18 2017-05-24 CentraleSupélec Joint boundary detection image segmentation and object recognition using deep learning
CN107085585A (zh) * 2016-02-12 2017-08-22 奥多比公司 用于图像搜索的准确的标签相关性预测
US20170330319A1 (en) * 2016-05-12 2017-11-16 Siemens Healthcare Gmbh Multiple landmark detection in medical images based on hierarchical feature learning and end-to-end training
CN107958460A (zh) * 2016-10-18 2018-04-24 奥多比公司 实例级语义分割系统
US20180129912A1 (en) * 2016-11-07 2018-05-10 Nec Laboratories America, Inc. System and Method for Learning Random-Walk Label Propagation for Weakly-Supervised Semantic Segmentation

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073279B2 (en) * 2008-07-08 2011-12-06 Harris Corporation Automated atmospheric characterization of remotely sensed multi-spectral imagery
AU2009344148B2 (en) * 2009-04-09 2015-10-22 Commonwealth Scientific And Industrial Research Organisation Enhancing image data
US8558884B2 (en) * 2011-05-04 2013-10-15 Raytheon Company In-scene determination of aerosol parameters from imagery
US9221461B2 (en) * 2012-09-05 2015-12-29 Google Inc. Construction zone detection using a plurality of information sources
US9396528B2 (en) * 2013-03-15 2016-07-19 Digitalglobe, Inc. Atmospheric compensation in satellite imagery
US9129161B2 (en) 2013-05-31 2015-09-08 Toyota Jidosha Kabushiki Kaisha Computationally efficient scene classification
US11630800B2 (en) 2015-05-01 2023-04-18 Nvidia Corporation Programmable vision accelerator
CN106290090A (zh) * 2015-05-14 2017-01-04 株式会社日立制作所 评估颗粒物浓度的方法和装置
US10019652B2 (en) 2016-02-23 2018-07-10 Xerox Corporation Generating a virtual world to assess real-world video analysis performance
JP6656988B2 (ja) * 2016-03-30 2020-03-04 株式会社エクォス・リサーチ 画像処理装置、半導体装置、画像認識装置、移動体装置、及び画像処理方法
US10289469B2 (en) 2016-10-28 2019-05-14 Nvidia Corporation Reliability enhancement utilizing speculative execution systems and methods
US11214273B2 (en) 2017-06-23 2022-01-04 Nvidia Corporation Method of using a single controller (ECU) for a fault-tolerant/fail-operational self-driving system
US11334086B2 (en) * 2017-09-27 2022-05-17 Intel Corporation Autonomous robots and methods of operating the same
US10628671B2 (en) * 2017-11-01 2020-04-21 Here Global B.V. Road modeling from overhead imagery
CN111095291B (zh) 2018-02-27 2024-04-09 辉达公司 由自动驾驶车辆实时检测车道和边界
EP3824408B1 (en) 2018-07-17 2024-03-06 NVIDIA Corporation Regression-based line detection for autonomous driving machines
US10650498B2 (en) * 2018-08-02 2020-05-12 Nec Corporation System, method, and non-transitory, computer-readable medium containing instructions for image processing
US10885698B2 (en) 2018-08-10 2021-01-05 Nvidia Corporation Method for programmable timeouts of tree traversal mechanisms in hardware
CN111006761B (zh) * 2019-11-27 2020-11-17 武汉大学 一种面向双通道光谱系统的简易光学定标方法
CN111402162B (zh) * 2020-03-13 2023-11-07 北京华云星地通科技有限公司 卫星遥感图像的晴空数据集处理方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130051519A1 (en) * 2011-08-31 2013-02-28 Dong Yang Methods and apparatus for super resolution scanning for cbct system and cone-beam image reconstruction
US20160239725A1 (en) * 2015-02-12 2016-08-18 Mitsubishi Electric Research Laboratories, Inc. Method for Denoising Time-of-Flight Range Images
US20160335795A1 (en) * 2015-05-13 2016-11-17 Google Inc. Deepstereo: learning to predict new views from real world imagery
EP3171297A1 (en) * 2015-11-18 2017-05-24 CentraleSupélec Joint boundary detection image segmentation and object recognition using deep learning
CN107085585A (zh) * 2016-02-12 2017-08-22 奥多比公司 用于图像搜索的准确的标签相关性预测
US20170330319A1 (en) * 2016-05-12 2017-11-16 Siemens Healthcare Gmbh Multiple landmark detection in medical images based on hierarchical feature learning and end-to-end training
CN107958460A (zh) * 2016-10-18 2018-04-24 奥多比公司 实例级语义分割系统
US20180129912A1 (en) * 2016-11-07 2018-05-10 Nec Laboratories America, Inc. System and Method for Learning Random-Walk Label Propagation for Weakly-Supervised Semantic Segmentation
CN106682675A (zh) * 2016-12-29 2017-05-17 中国电子科技集团公司第五十四研究所 一种面向高光谱图像的空谱联合特征提取方法

Also Published As

Publication number Publication date
JP2021532512A (ja) 2021-11-25
EP3824408B1 (en) 2024-03-06
CN113168505B (zh) 2024-04-09
US11921502B2 (en) 2024-03-05
EP4339905A3 (en) 2024-06-26
EP4339905A2 (en) 2024-03-20
US20230333553A1 (en) 2023-10-19
US20200026960A1 (en) 2020-01-23
US20230152801A1 (en) 2023-05-18
EP3824408A1 (en) 2021-05-26
JP7295234B2 (ja) 2023-06-20
US11604944B2 (en) 2023-03-14
WO2020018679A1 (en) 2020-01-23

Similar Documents

Publication Publication Date Title
CN113168505B (zh) 用于自主驾驶机器的基于回归的线检测
US11915145B2 (en) Leveraging multidimensional sensor data for computationally efficient object detection for autonomous machine applications
US12013244B2 (en) Intersection pose detection in autonomous machine applications
US11604967B2 (en) Stereo depth estimation using deep neural networks
CN113811886B (zh) 自主机器应用中的路口检测和分类
US11966838B2 (en) Behavior-guided path planning in autonomous machine applications
US11651215B2 (en) Landmark detection using curve fitting for autonomous driving applications
US20200324795A1 (en) Neural network training using ground truth data augmented with map information for autonomous machine applications
CN114008685A (zh) 用于自主机器应用的路口区域检测和分类
CN113228042A (zh) 自主机器应用中障碍物检测的距离
US20210406679A1 (en) Multi-resolution image patches for predicting autonomous navigation paths
CN113139642A (zh) 在自主驾驶应用中使用神经网络执行故障检测
US20210312203A1 (en) Projecting images captured using fisheye lenses for feature detection in autonomous machine applications
CN113609888A (zh) 利用平面单应性和自监督的场景结构理解进行对象检测
US20240071064A1 (en) Object detection using deep learning for real-time streaming applications
US12026955B2 (en) Assigning obstacles to lanes using neural networks for autonomous machine applications
US20240320986A1 (en) Assigning obstacles to lanes using neural networks for autonomous machine applications
US20240176017A1 (en) Sensor fusion using ultrasonic sensors for autonomous systems and applications
US20240087333A1 (en) Techniques for identifying occluded objects using a neural network

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
GR01 Patent grant
GR01 Patent grant