CN112970029B - 用于自主机器应用中传感器视盲检测的深度神经网络处理 - Google Patents

用于自主机器应用中传感器视盲检测的深度神经网络处理 Download PDF

Info

Publication number
CN112970029B
CN112970029B CN201980074103.3A CN201980074103A CN112970029B CN 112970029 B CN112970029 B CN 112970029B CN 201980074103 A CN201980074103 A CN 201980074103A CN 112970029 B CN112970029 B CN 112970029B
Authority
CN
China
Prior art keywords
blind
image
blindness
vehicle
sensor
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.)
Active
Application number
CN201980074103.3A
Other languages
English (en)
Other versions
CN112970029A (zh
Inventor
H-J·徐
A·巴基帕耶
D·尼斯特
M·帕克
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
Priority claimed from PCT/US2019/051097 external-priority patent/WO2020112213A2/en
Publication of CN112970029A publication Critical patent/CN112970029A/zh
Application granted granted Critical
Publication of CN112970029B publication Critical patent/CN112970029B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • 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
    • 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/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24137Distances to cluster centroïds
    • G06F18/2414Smoothing the distance, e.g. radial basis function networks [RBFN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/30Noise filtering
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/047Probabilistic or stochastic 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
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30168Image quality inspection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)
  • Traffic Control Systems (AREA)
  • Image Processing (AREA)

Abstract

在各个示例中,使用区域和基于上下文的方法来训练深度神经网络(DNN)以用于传感器视盲检测。使用传感器数据,DNN可计算视盲或受损的可见性区域的位置以及相关联的视盲分类和/或与其关联的视盲属性。此外,DNN可以预测传感器数据的每个实例对于执行一个或更多个操作(诸如与半自主或自主驾驶相关联的操作)的可用性。DNN的输出的组合可以用于过滤掉传感器数据的实例,或过滤掉被确定为受损的传感器数据的实例的部分,这可导致***的一个或更多个操作的不准确或无效的结果。

Description

用于自主机器应用中传感器视盲检测的深度神经网络处理
背景技术
自主驾驶***和高级驾驶员辅助***(ADAS)可以利用传感器(如相机)来执行不同任务——诸如车道保持、车道变换、车道分配、相机校准和定位。例如,为了使自主***和ADAS***独立且高效地操作,可以生成实时或近实时地对车辆的周围环境的理解。为了准确且高效地理解车辆的周围环境,传感器必须生成可用的、未被遮挡的传感器数据(例如,图像、深度图等)。然而,传感器感知周围环境的能力可能受到各种源的损害——诸如传感器堵塞(例如,由碎屑、降水等)或模糊——这可能导致传感器视盲(blindness)。传感器视盲的潜在原因可包括雪、雨、眩光、太阳光晕、泥、水、信号故障等。
用于解决传感器视盲的常规***已经使用特征级方法来检测传感器视盲的各个视觉证据片段,并且随后将这些特征拼接在一起以确定存在传感器视盲事件。这些常规方法主要依赖于计算机视觉技术——如通过分析图像的区域中尖锐边缘特征(例如,梯度、颜色、强度的尖锐变化)的不存在,使用基于颜色的像素分析或其他低水平特征分析来检测潜在的传感器堵塞,和/或具有视盲输出与非视盲输出的二进制支持向量机分类。然而,这种基于特征的计算机视觉技术需要单独分析每个特征——例如,每个特征是否与传感器视盲相关——以及分析如何针对特定传感器视盲状况组合不同特征,因为在现实环境中大量且多种多样的条件和事件固有的复杂性(其会损害使用传感器观察到的数据),从而限制了这种方法的可扩展性。例如,由于执行这些常规方法的计算费用,使得它们对于实时或接近实时的部署是无效的。
进一步,常规***可能无法区分不同类型的传感器视盲,例如图像是模糊的还是被遮挡的。通过同等地处理每种类型的传感器视盲,较不奇异或有害的类型可能导致认为传感器数据的实例不可用,即使在此确定可能不是完全准确的情况下(例如,模糊图像可用于一些操作,而遮挡图像可能不可用)。此外,通过利用被硬编码的计算机视觉技术,常规***可能不能从历史数据学习,或在部署中随时间学习,由此限制这些***适应传感器视盲状况的新类型或出现的能力。
发明内容
本公开的实施例涉及用于自主机器应用中的传感器视盲检测的深度神经网络处理。公开了使用区域和基于上下文的检测技术来检测和分类环境的图像或其他传感器数据表示内的视盲区的***和方法,所述图像或其他传感器数据表示供自主车辆、半自主车辆、水运船、机器人和/或其他物体类型使用以做出自主或半自主控制决策。
与常规***(如以上所描述的那些***)相比,本公开的***可以实现深度学习解决方案(例如,使用深度神经网络(DNN),如卷积神经网络(CNN)),该深度学习解决方案检测和预测指示传感器视盲的上下文信息以帮助告知关于所收集的传感器数据的可用性做出的决策——例如,传感器数据是否是不可用的、可用的和/或可用性的程度。与常规***进一步对比,本公开的***可以通过利用某些区域中视盲的机器学习的重要性,使用基于区域的方法来识别传感器视盲。本公开的视盲区可以指由传感器数据表示的任何显式或隐式区域,其可以包括但不限于驾驶表面区域、自车区域、天空区域等。
使用本文描述的方法,传感器视盲区(例如,具有受损可见性或其他损害的区域)的识别和分类在常规方法是不可靠的或将以其他方式失败的环境(如天空或自车是视盲的原因)中是可能的,并且这样的视盲对于传感器数据的可用性不是实际致命的。此外,在使用DNN的实施例中,DNN的输出可以包括由传感器数据表示的区域,这些区域被标识为***不可用(需要很少后处理或不需要后处理)以确定视盲是否处于出于驾驶目的可能是致命的区域中。作为直接结果,并且与常规***相比,可以节省大量计算能力并且可以减小处理要求——由此加速运行时以允许实时部署,同时减小***的整体负担。
附图说明
下面参照所附附图详细描述用于自主机器应用中的传感器视盲检测的深度神经网络处理的本***和方法,其中:
图1是示出了根据本公开的一些实施例的用于在自主机器应用中检测和分类传感器视盲的示例过程的示例数据流程图;
图2A-2C包括根据本公开的一些实施例的关于传感器视盲的机器学习模型的输出的示例图示;
图3是示出了根据本公开的一些实施例的用于检测和分类传感器数据中的视盲的方法的流程图;
图4是示出了根据本公开的一些实施例的用于训练机器学习模型以用于传感器视盲检测的过程的数据流程图;
图5A-5D包括根据本公开的一些实施例的用作用于训练机器学习模型的地面实况数据的示例注释的图示;
图6是示出了根据本公开的一些实施例的用于训练机器学习模型以用于传感器视盲检测和分类的方法的流程图;
图7A是根据本公开一些实施例的示例自主车辆的图示;
图7B是根据本公开一些实施例的用于图7A的示例自主车辆的相机位置和视场的示例;
图7C是根据本公开一些实施例的用于图7A的示例自主车辆的示例***架构的框图;
图7D是根据本公开一些实施例的图7A的基于云的服务器与示例自主车辆之间通信的***图;以及
图8是适合用于实现本公开一些实施例的示例计算设备的框图。
具体实施方式
公开了涉及用于自主机器应用中的传感器视盲检测的深度神经网络处理的***和方法。本文描述的***和方法可以用于增强现实、虚拟现实、机器人、安全和监视、医学成像、自主或半自主机器应用和/或可以实施传感器视盲检测的任何其他技术空间。尽管本公开可以关于示例自主车辆700(可替代地在本文中称为“车辆700”或“自主车辆700”,其示例关于图7A至图7D进行描述)进行描述,但这并不旨在是限制性的。例如,本文描述的***和方法可由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助***(ADAS)中)、机器人、仓库车辆、越野车辆、飞船、船、穿梭车、应急响应车辆、摩托车、电动自行车或机动自行车、飞机、建筑车辆、水下飞机、无人机和/或其他车辆类型使用。
部署中的相机视盲检测
如本文所描述的,与传感器视盲检测的常规方法相比,当前***使用机器学习模型来检测并分类传感器视盲,所述机器学习模型被训练用于实时或接近实时地分析图像的多个特征。例如,深度神经网络(DNN)处理可以用于检测传感器视盲,并且用于对视盲的原因(其对于个体图像可能是多个)进行分类。例如,图像的两个或更多个不同区域可以被分类为视盲的或部分视盲的,并且原因(例如,模糊的、被遮挡的等)可以由DNN预测。此外,DNN可以被训练成生成指示传感器数据是否被认为对特定应用(例如,自主或半自主(ADAS)驾驶)有用的二进制(例如,真或假)输出。在一些实施例中,DNN的输出可包括表示图像中DNN已检测到视盲的特定区域的显著图(saliency map)。在实施例中,通过更准确地识别和分类传感器数据表示(例如,图像、深度图等)的多个区域中的传感器视盲(例如,基本上同时地),确定传感器视盲的过程及其原因可能比常规***在计算上相对较便宜。
参照检测和分类传感器视盲及其原因,可以从布置在车辆上或以其他方式与车辆相关联的传感器(例如,相机、LIDAR传感器、RADAR传感器等)接收传感器数据(例如,表示来自图像传感器的图像、来自LIDAR传感器的深度图等)。传感器数据可以应用于神经网络(例如,DNN,诸如卷积神经网络(CNN)),可以对该神经网络进行训练以识别与传感器视盲有关的传感器数据表示内的感兴趣区域,以及识别其原因(例如,模糊的、被遮挡的等)。更具体地,神经网络可以是被设计为推理视盲标记并输出分类的DNN,所述分类识别潜在的传感器视盲可能位于传感器数据中的何处、传感器视盲的原因、以及传感器数据或其部分是否可由***使用。
在一些示例中,DNN可以输出与所期望的分类的数量相对应的数量的通道(channel)。例如,通道可对应于标记类别,诸如被遮挡区域、模糊区域、反射区域、开放区域、车辆、天空、帧标签等,并且可进一步对应于标记类别的属性,诸如雨、眩光、损坏的透镜、光、泥、纸、人等。在一些示例中,神经网络可以进一步输出指示传感器数据至少部分可用(例如,真、是、0)的二进制决策(例如,真/假、是/否、0/1)和指示传感器数据不可用(例如,假、否、1)的第二决策。在数据被指示为不可用的情况下,传感器数据可被跳过、忽略和/或用于确定将控制移交给自主或半自主应用中的驾驶员。
一旦由DNN输出视盲区、分类和/或二进制决策,则可以执行任何数量的后处理步骤以最终确定传感器数据中的传感器视盲是致命的还是不可用的。在一些示例中,可以对DNN的输出执行后处理以确定视盲百分比,并且当视盲百分比超过预定阈值时,可以确定传感器数据可能不适合由车辆用于自主或半自主驾驶。在这样的示例中,可以采取纠正措施,诸如将车辆的控制移交给驾驶员。
在一些实施例中,DNN可生成每图像帧的显著图,其可指定DNN已确定对于自主或半自主驾驶是重要的图像的空间区域。例如,DNN可以学习(例如,在训练期间)图像中的道路是更重要的区域,而天空或树与不太重要的区域相关联。此外,在一些示例中,可以使用基于运动的传感器视盲检测算法来进一步验证DNN的结果。基于运动的传感器视盲算法可以利用随着时间在连续图像之间的特征追踪来确定图像的区域中的传感器视盲。可执行像素块的区域上的运动特征分析以确定区域包含传感器视盲的可能性。在一些实例中,基于Kanade-Lucas-Tomasi(KLT)的算法可用于运动追踪分析。在这样的示例中,如果在随着时间的若干连续图像中一图像是模糊的或被遮挡的,那么可在该图像中生成很少特征或不产生特征。可以分析针对每个非重叠像素块的特征轨迹的数量以及在其上已经检测到块中的特征的连续图像的数量。照此,如果已随时间检测到许多特征轨迹,那么像素块是模糊的或被遮挡的可能性被视为低。可以对被遮挡的或模糊的像素块的数量进行计数以确定被传感器视盲损害的总体图像的百分比。此百分比可以与由DNN输出的视盲百分比(例如,使用协议检查组件或协议验证器)进行比较,以检查DNN结果相对于如使用显著图确定的图像的重要区域的准确度。
参见图1,图1是示出了根据本公开的一些实施例的用于在自主机器应用中进行传感器视盲检测的示例过程100的示例数据流程图。虽然本文关于图1主要描述的检测类型是模糊或被遮挡检测,但这不旨在是限制性的,并且仅是出于示例目的。例如,过程100可以用于检测和分类任何数量的传感器视盲的属性和/或原因,例如本文描述的那些,而不脱离本公开的范围。
过程100可以包括生成和/或接收来自车辆700的一个或更多个传感器的传感器数据102。传感器数据102可以由车辆700使用,并且在过程100内,实时地或接近实时地检测和分类传感器视盲。传感器数据102可以包括但不限于来自车辆700的任何传感器(和/或其他车辆或物体,在一些示例中,如机器人设备、VR***、AR***等)的传感器数据102。例如,并且参考图7A至图7C,传感器数据102可以包括由以下项但不限于以下项生成的数据:全球导航卫星***(GNSS)传感器758(例如,全球定位***传感器),一个或更多个RADAR传感器760、一个或更多个超声传感器762、一个或更多个LIDAR传感器764、一个或更多个惯性测量单元(IMU)传感器766(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等)、一个或更多个麦克风776、一个或更多个立体相机768、一个或更多个广角相机770(例如,鱼眼相机),一个或更多个红外相机772、一个或更多个环绕相机774(例如,360度相机)、一个或更多个远程和/或中程相机778、一个或更多个速度传感器744(例如,用于测量车辆700的速度)和/或其他传感器类型。作为另一个示例,传感器数据102可以包括从虚拟车辆或其他虚拟对象的任何数量的传感器生成的虚拟传感器数据。在这样的示例中,虚拟传感器可以对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证神经网络性能),并且虚拟传感器数据可以表示由模拟或虚拟环境内的虚拟传感器捕获的传感器数据。照此,通过使用虚拟传感器数据,可以在模拟环境中使用模拟数据来测试、训练和/或验证本文中描述的一个或更多个机器学习模型104,这可以允许测试真实世界环境之外的更极端的场景,在真实世界环境中这样的测试可以是较不安全的。
传感器数据102可包括表示一个或更多个图像的图像数据、表示视频的图像数据(例如,视频的快照)、和/或表示传感器的传感场的表示的传感器数据(例如,LIDAR传感器的深度图、超声传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于压缩图像,如联合图像专家组(JPEG)或亮度/色度(YUV)格式,作为源自压缩视频格式(如H.264/高级视频编码(AVC)或H.265/高效视频编码(HEVC))的帧的压缩图像,原始图像(诸如源自红清蓝(RCCB)、红清(RCCC)、或其他类型的成像传感器),和/或其他格式。另外,在一些示例中,可在过程100内使用传感器数据102而无需任何预处理(例如,以原始格式或捕获的格式),而在其他示例中,传感器数据102可以经历预处理(例如,噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,诸如使用传感器数据预处理器(未示出))。如本文所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据或其组合。
传感器数据预处理器可以使用表示一个或更多个图像(或其他数据表示)的图像数据并且将传感器数据以多维数组/矩阵的形式(替代地称为张量,或在一些示例中更具体地称为输入张量)加载到存储器中。数组大小可被计算和/或表示为WxHxC,其中W代表以像素为单位的图像宽度,H代表以像素为单位的高度,并且C代表颜色通道的数量。在不失一般性的情况下,输入图像分量的其他类型和排序也是可能的。另外,当使用批处理时,批大小B可用作维度(例如,额外的第四维度)。批处理可以用于训练和/或推理。由此,输入张量可表示维度WxHxCxB的数组。维度的任何排序都是可能的,这可取决于用于实现传感器数据预处理器的特定硬件和软件。可以选择该排序以最大化机器学习模型104的训练和/或推理性能。
在一些实施例中,可以由传感器数据预处理器采用预处理图像管线来处理由一个或更多个传感器(例如,一个或更多个相机)采集的和包括在图像数据102中的一个或更多个原始图像,以产生可以表示到一个或更多个机器学***面图像。预处理图像管线可以包括分解、降噪、去马赛克、白平衡、直方图计算和/或自适应全局色调映射(例如,按该顺序或按替代顺序)。
在传感器数据预处理器采用降噪的情况下,其可以包括拜耳域中的双边去噪。在传感器数据预处理器采用去马赛克的情况下,其可包括双线性插值。在传感器数据预处理器采用直方图计算的情况下,其可包含计算C通道的直方图,且在一些实例中可与分解或降噪合并。在由传感器数据预处理器采用自适应全局色调映射的情况下,其可包括执行自适应伽玛-对数变换。这可包括计算直方图、获得中间色调等级、和/或用中间色调等级来估计最大亮度。
一个或更多个机器学习模型104可以使用如由传感器数据102表示的一个或更多个图像或其他数据表示(例如,LIDAR数据、RADAR数据等)作为输入来生成一个或更多个输出106、标量值114和/或显著图116。在非限制性示例中,一个或更多个机器学习模型104可以采用由传感器数据102(例如,在预处理之后)表示的一个或更多个图像作为输入以生成一个或更多个视盲区108、一个或更多个视盲分类110、一个或更多个视盲属性112、标量值114和/或显著图116。尽管本文中关于使用神经网络(并且具体地,DNN)作为机器学习模型104来描述示例,但这不旨在是限制性的。例如但不限于,本文描述的机器学习模型104可以包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最近邻(Knn)、K均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(LSTM)、霍普菲尔德、玻尔兹曼、深度信念、解卷积、生成式对抗、液态机等)的机器学习模型,和/或其他类型的机器学习模型。
一个或更多个机器学习模型104的一个或更多个输出可以包括一个或更多个视盲输出、标量值114、显著图116和/或其他输出类型。一个或更多个输出106可以包括一个或更多个视盲区108、一个或更多个视盲分类110和/或一个或更多个视盲属性112。一个或更多个视盲区108可以识别潜在的传感器视盲、受损可见性或其他损害可以位于传感器数据102中的何处(例如,像素位置)。在一些非限制性实施例中,一个或更多个视盲区108可以由一个或更多个机器学习模型104逐像素地输出。例如,每个像素(或至少与视盲预测相关联的像素)可以具有对应的一个或更多个视盲分类110。如此,具有相关联的视盲或受损可见性(例如,属于相同的视盲分类108的和/或在连续聚类或其他关系中)的像素中的每个像素可以被确定为视盲区108。在其他示例中,可将一个或更多个视盲区108输出为对应于视盲区108的多边形的顶点的像素位置。在这样的示例中,一个或更多个视盲区108(例如,与受损可见性相关联的区域)可以具有一个或更多个相关联的视盲分类110和/或一个或更多个视盲属性112,并且由一个或更多个视盲区108定义的多边形内的每个像素可以被确定为具有相关联的一个或更多个视盲分类110和/或一个或更多个视盲属性112。如此,一个或更多个视盲区108可以逐像素地定义——例如,使用聚类或用于确定视盲像素与相同区域相关联的其他关联技术——或者可以由定义或界定一个或更多个视盲区108的多边形的顶点(例如,其像素坐标)来定义。
一个或更多个视盲分类110可以包括多个视盲类型或类别,诸如但不限于本文描述的那些。一个或更多个视盲分类110可以表示与一个或更多个视盲区108中具有检测到的视盲的每个像素或像素集合相关联的视盲的一个或更多个原因。传感器数据表示(例如,图像、深度图等)可包含任何数目的不同视盲分类110。例如,单个视盲区108或像素可以具有一个、两个或更多个相关联的视盲分类110,而不脱离本公开的范围。在一些示例中,一个或更多个机器学习模型104可以输出与一个或更多个机器学习模型104被训练为预测的分类的数量相对应的多个通道(例如,每个通道可以对应于一个视盲分类110)。例如,一个或更多个视盲分类110可包括被遮挡的、模糊的、反射、开放、自车、天空、帧标记等中的一个或更多个,并且输出通道的数目可对应于所期望的分类的数目。在一些实施例中,一个或更多个视盲分类110可以作为置信度值输出。例如,对于一个或更多个视盲区108中的每个像素,或者对于每个视盲区108(或其顶点),可以针对一个或更多个机器学习模型104被训练为预测的视盲分类110中的每个视盲分类输出置信度值。作为非限制性示例,如果一个或更多个机器学习模型104被训练为预测三个视盲分类(例如,模糊区域、被遮挡区域、开放区域),则可以存在输出数组,所述输出数组包括针对每个像素或检测到视盲的每个视盲区108的三个视盲分类中的每个视盲分类的置信度值。因此,对于每个像素可以存在置信度值(例如,对应于一个或更多个视盲分类110),并且针对特定像素和/或视盲区108具有最高置信度值的视盲分类110可以被确定为针对该像素和/或视盲区108的视盲分类110。
一个或更多个视盲属性112可包括任何数量的属性或类,诸如但不限于本文描述的那些属性或类。一个或更多个视盲属性112可以进一步对与被确定为与一个或更多个视盲区108和/或其中包括的像素相关联的每个视盲分类110相关联的属性进行分类。在非限制性示例中,一个或更多个视盲属性112可以对应于在特定视盲区108和/或像素中检测到的视盲的子类(或子原因)。照此,在一些示例中,每个视盲属性112可以与作为传感器视盲的附加的、更具体的或描述性的原因的至少一个视盲分类110相关联。一个或更多个视盲属性112可包括子分类,包括但不限于雨、眩光、损坏的透镜、光、泥、纸、人等。例如,“被阻挡”的视盲分类110可以与一个或更多个视盲属性112相关联,如太阳、雾、水、霭、雪、冰冻窗格、白天、夜晚、损坏的透镜、自眩光、泥、纸、叶子等。以此方式,视盲属性112可以进一步描绘视盲区108和/或其像素中的视盲的原因。在一些示例中,视盲属性112可以包括视盲属性112的子类,例如以指示受损可见性的水平(例如,重、中、轻等)。一个或更多个机器学习模型104可以类似地具有与一个或更多个机器学习模型104被训练为预测的视盲分类110和/或对应的视盲属性112的数量一样多的输出通道。这在本文中至少关于图4的用于训练一个或更多个机器学习模型104的过程400更详细地描述。
在一些实施例中,一个或更多个机器学习模型104可以输出标量值114。标量值114可以包括二进制决策(例如,真/假、是/否、0/1),其指示传感器数据是否足够清楚以用于一个或更多个应用,诸如关于与自主或半自主驾驶相关联的一个或更多个操作。例如,第一决策(例如,真、是、0)可指示传感器数据102足够清楚或可用于当前应用,且第二决策(例如,假、否、1)可指示传感器数据102不足够清楚或可用于当前应用。在一些示例中,可以针对任何数量的不同应用和/或与其相关联的操作输出标量值114。例如,第一标量值114可以对应于传感器数据102是否可用于驾驶表面上的车道检测,并且第二标量值114可以对应于传感器数据是否可用于对象检测。在这样的示例中,一个或更多个机器学习模型104输出的通道的数量可以对应于一个或更多个机器学习模型104被训练为预测可用性的与其相关联的应用和/或操作的数量。可以训练一个或更多个机器学习模型104——如本文更详细描述的——以通过将标量值编码为地面实况数据来确定标量值114。
在一些实施例中,一个或更多个机器学习模型104可以输出显著图116。例如,在其中基于运动的传感器视盲算法132结合显著图116用于协议检查130(例如,由协议验证器)的实施例中,可作为输出生成显著图116。在这样的实施例中,一个或更多个机器学习模型104可以针对传感器数据中的每个实例输出显著图116。显著图116可以指定一个或更多个机器学习模型104已经学习或确定对于自主或半自主驾驶(或对于其他应用)是重要的图像的空间区域。例如,显著图116可将描绘道路的图像的区域指定为是重要的,而包含天空或树的另一区域可被指定为是不重要的。一个或更多个机器学习模型104可以随着时间推移学习传感器数据中所表示的什么环境区域是重要的——例如,用于执行关于半自主或自主驾驶的一个或更多个操作。在一些实例中,显著图116可包括图像的区域的重要性值。较高重要性值可指示对于特定应用来说图像的相应区域比具有较低重要性值的区域更重要。照此,输出显著图116可指示从传感器数据102检测到的一个或更多个视盲区108是对应于更重要/最重要的区域还是不太重要的区域。如果一个或更多个视盲区108处于更不太重要的区域中,则***可以学习忽略那些区域中的视盲或将较小的权重赋予那些区域中的视盲。在一些示例中,其中标量值114指示传感器数据102不可用,但是在一实施例中显著图116指示一个或更多个视盲区108(如由基于运动的传感器视盲算法所确认的)不在用于执行一个或更多个操作的更重要的区域内,协议检查130可以指示缺少协议并且可以将传感器数据102重新标记或分类为可用,或可生成已发生错误的信号(例如,用于错误检查或调试)。
在其他示例中,显著图116可用以确定传感器数据的在努力减少或过滤传感器数据102的需要由协议检查130进行比较的部分时重要的区域。例如,基于运动的传感器视盲算法130可以确定传感器数据102的视盲或部分视盲的区域,并且机器学习模型104可以预测视盲区108。照此,当比较基于运动的传感器视盲算法132和一个或更多个机器学习模型104的输出时,来自显著图116的更重要/最重要的区域的指示可以用于将协议检查130定制或聚焦在传感器数据102的重要区域上。对协议检查130的这种减少或过滤可减少运行时间和处理要求,同时提供对应于对执行***的操作最有用的传感器数据102的区域的结果。
在一些实施例中,输出106和/或标量值114可以在由一个或更多个机器学***滑。在一些实施例中,时间平滑可以用于通过基于单个帧来减少传感器视盲的假阳性(false positive)(通过并入对应于时间上相邻的帧的一个或更多个机器学***滑和减少一个或更多个机器学习模型104的输出中的噪声。在一些示例中,可以针对由机器学习模型104针对传感器数据102的一个或更多个先前实例所计算的值,对由机器学习模型104针对传感器数据102的当前实例所计算的值进行加权。在传感器数据102是代表图像的图像数据的情况下,例如,可以针对由机器学习模型104计算的用于一个或更多个时间上相邻的(例如,以前的和/或序列的)图像的输出106和/或标量值114,对由机器学习模型104计算的用于当前或最近图像的输出106和/或标量值114进行加权。照此,对应于传感器数据102的实例的最终值(例如,针对一个或更多个视盲区108或其像素、一个或更多个视盲分类110、一个或更多个视盲属性112和/或一个或更多个标量值114)可以通过针对与传感器数据102的实例相关联的当前值,对与传感器数据102的一个或更多个其他实例相关联的先前值进行加权来确定。
在一些实施例中,后处理118可进一步包括输出106的空间后处理。空间后处理可以包括强调对于给定应用和/或与其相关联的操作(例如,用于自主或半自主驾驶的车道检测或对象检测)比其他区域更重要的图像区域。在一些示例中,这可包括向车辆700的环境的每个区域分配或确定重要性值。重要性值可指示区域相对于其他区域的重要性。在一些示例中,可创建基于区域的掩码,其基于相应区域的重要性将掩码与图像中的区相关联。这可允许***基于检测到视盲的图像(或其他传感器数据表示)中的一个或更多个视盲区108或与其相关联的像素来选择性地确定图像的可用性或其缺乏。
可以分析时间平滑和/或空间后处理118的结果以确定关于传感器数据102的视盲百分比120和可驾驶性122。在未实现后处理118的情况下,可仅基于对应于传感器数据102的当前实例的输出来确定视盲百分比120和/或可驾驶性122。一个或更多个视盲区108可以用于确定图像中的视盲百分比120。在一些示例中,具有被确定为被遮挡区域和/或模糊区域的一部分的一个或更多个视盲分类110的像素可以用于计算图像中对应于相机视盲的像素的总体视盲百分比。在一些示例中,一个或更多个视盲区108中对于自主或半自主驾驶(或其他应用)不重要的像素可以不考虑用于计算视盲百分比120。在一些示例中,可至少部分地基于视盲百分比120低于预定阈值和/或基于标量值114(例如,在标量值114指示传感器数据102不可用的情况下,可驾驶性122可以是0,并且在标量值114指示传感器数据102可用的情况下,可驾驶性可以是对应于可驾驶性122的程度的百分比或得分)来确定可驾驶性122。在其他示例中,可驾驶性122可仅基于标量值114来确定。照此,可驾驶性122可指示传感器数据102的实例是否足够清楚或可用于与其相关联的给定应用或操作。在一些实施例中,可驾驶性122可包括指示图像对于给定应用是否有用的二进制决策。在任何示例中,视盲百分比120和/或可驾驶性122可针对每个不同的应用和/或与其相关联的操作被单独地计算,以通知***关于传感器数据102可如何使用以及在哪里被使用。
一个或更多个控制决策124可以是由***使用传感器数据102并且基于视盲百分比120和/或可驾驶性122(和/或直接基于输出106、一个或更多个标量值114、显著图116、和/或基于运动的传感器视盲算法132的输出)实时地或接近实时地做出的决策。例如,在不足够清楚或有用的情况下,传感器数据102中的一些或全部可相对于控制决策124中的一个或更多个控制决策被跳过或忽略。在一些示例中,诸如在传感器数据102不可用于车辆700的安全操作的情况下,控制决策124可包括将控制切换回驾驶员(例如,退出自主或半自主操作),或执行紧急或安全操纵(例如,停止、拉向路边或其组合)。如此,一个或更多个控制决策124可以包括建议用于有效和安全驾驶的一个或更多个校正措施——诸如忽略传感器数据的某些实例。在任何示例中,并且关于自主或半自主驾驶,一个或更多个控制决策124可以包括与自主驾驶软件栈(可替代地在本文中被称为“驱动栈”)的传感器数据管理器层相对应的任何决策,所述驱动栈的感知层、所述驱动栈的世界模型管理层,所述驱动栈的规划层、所述驱动栈的控制层、所述驱动栈的避障层,和/或驱动栈的致动层。照此,如本文所述,可针对对应于驱动栈的一个或更多个层的任何数量的不同操作单独地确定传感器数据102的可驾驶性122。作为示例,可关于驱动栈的感知层针对对象检测操作确定第一可驾驶性122,并且可关于驱动栈的规划层针对路径规划确定第二可驾驶性122。
在一些实施例中,如本文所描述的,可以针对基于运动的传感器视盲算法132的结果来检查输出106、标量值114和/或显著图116,以进一步验证机器学习模型104的结果的准确性。基于运动的传感器视盲算法132可以利用随着时间在连续图像之间的特征追踪来确定传感器数据102的图像的区域中的传感器视盲。基于运动的传感器视盲算法132可以使用传感器数据102作为输入。针对每x个像素(例如,两个、四个、六个、十个等)在像素块的区域上的运动特征分析可以被执行以确定包括传感器视盲的区域的可能性。在一些示例中,基于Kanade-Lucas-Thomas(KLT)的算法(或另一算法类型)用于连续帧上的每个像素块的运动追踪分析。在这样的示例中,如果图像随着时间在连续图像中是模糊的或被遮挡的,则基于运动的传感器视盲算法132可以确定或生成对应于图像的很少特征或没有特征。可分析每个非重叠像素块的特征轨迹的数目,以及已检测到块中的特征的连续图像的数目。照此,如果已随时间检测到许多特征轨迹,那么像素块是模糊或被遮挡的可能性被视为低。这可以是基于运动的传感器视盲算法132对在图像的区域中随时间存在的锐利边缘(例如,高空间和强度梯度)的依赖性的结果。可以对被遮挡或模糊的像素块的数量进行计数以确定被传感器视盲损害的总体图像的百分比。如果被遮挡或模糊的像素的数量和/或百分比超过阈值,则对于自主或半自主驾驶(或其他应用)而言,相应的图像可能被认为是无用的或致命的。在一些示例中,基于运动的传感器视盲算法132还可以被配置成去除在图像的天空区域中发现的特征的假阳性,因为对于某些应用,从传感器视盲的角度来看,天空区域可以被认为是不重要的。可以使用基于颜色的分析来执行假阳性移除,该基于颜色的分析包括检测图像的预期存在天空区域的区域中的像素的红-蓝-绿(RGB)色谱中的蓝色的范围。照此,基于运动的传感器视盲算法132可以输出图像中被遮挡或模糊的像素的位置和/或百分比,和/或可以输出指示图像对于高效且安全的自主驾驶或半自主驾驶是否有用的二进制决策。
如本文所描述的,在一些非限制性实施例中,协议检查130可以使用由基于运动的传感器视盲算法132确定的模糊或被遮挡的像素的百分比和/或二进制决策来针对由一个或更多个机器学习模型104计算的输出106和/或一个或更多个标量值114进行检查。可以将被遮挡的或模糊的像素的该百分比与视盲百分比120进行比较,以检查如使用显著图114所确定的机器学习模型104的结果相对于图像的重要区域的准确度。在这样的示例中,可驾驶性122以及因此控制决策124可基于协议检查130的结果来确定。例如,如果来自基于运动的传感器视盲算法132的模糊或被遮挡的像素的百分比在视盲百分比120的某阈值内,那么可如上文所描述作出控制决策124。这允许***执行一个或更多个机器学习模型104关于相机视盲的准确性检查以交叉检查确定,以减少假阳性。在一些示例中,可部署显著图116和基于运动的传感器视盲算法132以用于错误检查或调试。在这种示例中,显著图116和/或基于运动的传感器视盲算法132可始终不实现(例如,可周期性地、以一间隔、在部署之前、在训练期间等实现)。
现在参见图2A,图2A是根据本公开的一些实施例的关于传感器视盲的机器学习模型的示例输出的图示。例如,一个或更多个机器学习模型104可以使用表示输入图像210A的图像数据作为输入,并且可以输出包括图像视盲区212和214的图像掩码210B。在一个或更多个实施例中,图像210A的上部部分可通过降水(如图2A中所描绘)、碎屑或来自阳光的眩光或反射而被遮盖或是模糊的。不同的分类可以由不同的RGB颜色或指示符来表示。可以基于由一个或更多个机器学习模型104计算的一个或更多个视盲区108和相关联的一个或更多个视盲分类110和/或一个或更多个视盲属性112来生成图像掩码210B。例如,取决于视觉受损区域的幅度、密度(例如,与整个受影响区域的大小成比例)和/或半透明度,视盲区212可以被分类为被遮挡的或模糊区域,并且视盲区214也可以被分类为被遮挡的或模糊区域。视盲区212和214中的像素可以类似地被分类为被遮挡的或模糊的像素。视盲分类110可以包括置信度值,其表示每个视盲区212和214的区域对应于某个视盲分类110的可能性或置信度。除了视盲分类110之外,视盲区212和214还可以具有相关联的视盲属性112。例如,模糊分类可以具有相关联的属性,诸如眩光和/或光(如,中度)。可视化210C说明覆盖有图像掩码210B的图像210A。以此方式,传感器视盲可以以区域特定的方式被准确地确定和可视化。例如,关于图像210A,确定可驾驶性122可以是高,使得图像210A对于自主或半自主驾驶操作是有用的。这可能是因为图像210A的仅一部分(例如,如由视盲百分比120所指示的)是模糊的,并且该部分处于环境的天空中,在该处控制决策124可以不受影响。
参考图2B,图2B是根据本公开的一些实施例的关于传感器视盲的机器学习模型的另一个示例输出。例如,一个或更多个机器学习模型104可以使用表示输入图像220A的图像数据作为输入,并且可以输出包括图像视盲区224的图像掩码220B。在一些示例场景中,图像220A的大部分可能由于降水、碎屑、或来自阳光的眩光或反射而被遮挡或是模糊的(如由图像220A中的车辆和周围环境的模糊表示所指示的)。可以基于由一个或更多个机器学习模型104计算的一个或更多个视盲区108和相关联的一个或更多个视盲分类110和/或一个或更多个视盲属性112来生成图像掩码220B。例如,视盲区224可以被分类为模糊区域,并且视盲区224中的像素可以被分类为模糊像素。除了视盲分类110之外,视盲区224还可以具有相关联的视盲属性112。例如,模糊分类可具有相关联的属性,诸如眩光和/或重(指示重眩光)。可视化220C说明覆盖有图像掩码220B的图像220A。例如,关于图像220A,确定可驾驶性122可能是低,使得图像220A对于自主或半自主驾驶操作不可用。这可能是因为图像220A的大部分(例如,如由视盲百分比120所指示的)是模糊的,并且该部分包括控制决策124可能受到影响的驾驶表面。
参考图2C,图2C是根据本公开的一些实施例的关于传感器视盲的机器学习模型的另一个示例输出。例如,一个或更多个机器学习模型104可以使用表示输入图像230A的图像数据作为输入,并且可以输出包括图像视盲区232和234的图像掩码230B。虽然未清楚地说明,但图像230A的大部分可通过降水、碎片或来自阳光的眩光或反射而被遮挡或是模糊的(如由图像230A中的环境的模糊表示所指示的)。可以基于由一个或更多个机器学习模型104计算的一个或更多个视盲区108和相关联的一个或更多个视盲分类110和/或一个或更多个视盲属性112来生成图像掩码230B。例如,视盲区232可以被分类为被遮挡区域,并且视盲区232中的像素可以被分类为被遮挡像素。另外,也可以将视盲区234分类为模糊区域,视盲区234中的像素可以被分类为模糊像素。除了视盲分类110之外,视盲区232和234还可以具有相关联的视盲属性112。例如,模糊分类可具有相关联的属性,例如眩光和/或重(指示重眩光),且被遮挡分类可具有相关联的属性,例如眩光、重和白天(其指示白天期间的重眩光)。可视化230C示出了覆盖有图像掩码230B的图像230A。例如,关于图像230A,确定可驾驶性122可以是低,使得图像230A对于自主或半自主驾驶操作没有用。这可能是因为图像230A的大部分(例如,如由视盲百分比120所指示的)是模糊的,并且该部分包括控制决策124可能受到影响的驾驶表面。作为另一个实例,假设计算视盲区234具有“轻”而不是“重”的视盲属性112,图像230A的对应于视盲区234的部分可以被确定为是可用的,因为视盲区234包括所有驾驶表面,而被遮挡的视盲区232仅包括天空。
关于图2A-2C描述的视盲分类110和视盲属性112仅是出于示例目的,并且不旨在是限制性的。照此,并且如所描述的,一个或更多个机器学习模型104可以被训练为计算任意数量的不同类型的视盲分类110和/或视盲属性112,而不背离本公开的范围。
现在参见图3,本文描述的方法300的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法300还可以体现为存储在计算机存储介质上的计算机可用指令。方法300可由独立应用、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件来提供,仅举几例。此外,通过举例的方式,关于图1的过程100来描述方法300。然而,该方法300可附加地或替代地由任何一个***或***的任何组合来执行,包括但不限于本文描述的那些***。
图3是示出了根据本公开的一些实施例的用于检测和分类传感器数据中的视盲的方法300的流程图。在框B302处,方法300包括:向神经网络应用表示车辆的图像传感器的视场的图像的图像数据。例如,来自车辆(例如,车辆700)的图像传感器的图像数据(例如,传感器数据102)可以被应用(例如,作为输入)到一个或更多个机器学习模型104(例如,神经网络,诸如DNN)。
在框B304处,方法300包括:使用神经网络并且至少部分地基于图像数据来确定具有受损可见性的图像的像素。例如,一个或更多个机器学习模型104可以计算一个或更多个视盲区108(例如,具有相关联的视盲、受损可见性、另一损害等等的区域)和/或与其相关联的像素。
在框B306处,方法300包括:使用神经网络并且至少部分地基于图像数据来计算针对图像的像素的至少一个视盲分类。例如,一个或更多个机器学习模型104可以确定对应于一个或更多个视盲区108和/或与其相关联的像素的一个或更多个视盲分类110。
在框B308处,方法300包括:使用神经网络并且至少部分地基于图像数据来计算对应于车辆对图像的可用性的标量值。例如,一个或更多个机器学习模型104可以确定对应于车辆700对图像的可用性的标量值114。在标量值114指示可用性的情况下,一个或更多个***可以处理传感器数据的实例以做出一个或更多个确定。可替代地,在标量值114指示缺乏可用性的情况下,一个或更多个***可忽略或过滤掉用于做出一个或更多个确定的传感器数据的实例。
在框B310处,方法300包括:当标量值指示图像可用时,使用图像并且至少部分地基于针对像素中的每个像素的一个视盲分类来执行一个或更多个操作。例如,可以基于标量值114、视盲分类110和/或视盲属性112执行一个或更多个控制决策124。在一些示例中,协议检查130的输出可进一步用于做出控制决策124的确定。在一些非限制性实施例中,一个或更多个操作可包括确定传感器数据或其实例是否可用。例如,在不可用的情况下,可生成指令以忽略或忽视***内对应于传感器数据的实例的预测(例如,不使用传感器数据的这个实例用于路径规划、世界模型更新等)。
训练用于传感器视盲检测的DNN
在训练期间,可用训练图像来训练DNN,所述训练图像用基于区域和上下文的标签和分类来编码。在一些示例中,训练图像还可经由颜色和空间增强来增强。例如,可以使用颜色增强来训练网络以忽略天空中的颜色。在另一示例中,空间增强可被用于训练神经网络以忽略由图像传感器被安装或以其他方式附连到其上以在图像的各部分中显现的自车引起的视盲。可以使用多次迭代用经标记的图像来训练神经网络,直到网络的损失函数的值低于阈值。损失函数可以用于测量与地面实况(例如,对应于视盲区和对应分类的标签或注释)相比的预测中的误差,并且在实施例中,损失函数的梯度可以相对于训练参数来迭代地计算。可以在训练期间使用优化器,诸如Adam优化器、随机梯度下降或另一类型的优化算法。可重复训练过程,直到经训练的参数收敛到最佳的、期望的或可接受的值为止。
现在参见图4,图4是根据本公开的一些实施例示出了用于训练用于传感器视盲检测的机器学习模型的过程400的数据流程图。过程400可以用于训练一个或更多个机器学习模型104中的任何机器学习模型,诸如但不限于本文中所描述的那些机器学习模型。可以使用传感器数据(例如,本文中所描述的传感器数据102)来训练一个或更多个机器学习模型104。在一些示例中,当用于训练时,传感器数据102可以被称为训练数据。尽管主要关于表示一个或更多个图像的图像数据来讨论传感器数据102,但这不旨在是限制性的。在一些实施例中,例如,传感器数据102可以包括来自一个或更多个LIDAR传感器、RADAR传感器、SONAR传感器、超声波传感器、IMU传感器和/或其他传感器类型(例如,关于图7A-7C所描述的传感器和/或相机)的数据。
用于训练的传感器数据102可包括原始图像(例如,如由一个或更多个图像传感器捕获的)、下采样图像、上采样图像、经裁剪或兴趣区(ROI)图像、针对其他***注释或从其他***输出的经标记图像、在轴上翻转或以其他方式经增强的图像和/或其组合。传感器数据102可以是由不同车辆(例如,车辆700)的一个或更多个传感器(例如,相机)捕获的图像,和/或可以是从用于测试和/或生成训练图像的虚拟环境内(例如,虚拟或模拟环境内的虚拟车辆的虚拟相机)捕获的图像。在一些示例中,传感器数据102可以包括来自训练图像(例如,驾驶表面的图像)的数据存储或储存库的图像。在一些其他示例中,传感器数据102可包括具有所应用的人工视盲分类(例如,模糊、遮挡)的图像。在其他示例中,传感器数据102可以包括训练图像和/或从其他神经网络导出的结果图像。
可以使用图像(和/或其他传感器数据102)以及对应的地面实况数据404来训练一个或更多个机器学习模型104。地面实况数据404可包含注释、标签、掩码和/或类似物。可以利用训练图像来训练一个或更多个机器学习模型104,所述训练图像利用基于区域和上下文的标签和分类来编码。在一些实施例中,可以基于一组预定义的规则或策略来生成地面实况数据404,以便对背景的基于区域的信息进行编码。当实时部署时,此信息稍后在基于上下文信息准确地检测和分类传感器视盲方面是有用的。
在一些实施例中,地面实况数据404可以包括一个或更多个视盲区406、一个或更多个视盲分类408,一个或更多个视盲属性410(例如,被编码为对应于一个或更多个视盲区或视盲区406中的像素的分类和属性),和/或对应于传感器数据102的当前实例的可用性的标量值412。在一些示例中,地面实况数据404可在绘图程序(例如,注释程序)、计算机辅助设计(CAD)程序、标记程序、适于产生地面实况数据404的另一类型的程序内生成,和/或可用手绘图。在任何示例中,地面实况数据404可以合成地产生(例如,从计算机模型或渲染生成),真实产生(例如,从真实世界数据设计和产生)、机器自动化(例如,使用特征分析和学习从数据提取特征且接着产生标签),人工注释(例如,标记器或注释专家,其定义标签的位置)和/或其组合(例如,人工识别折线的顶点,机器使用多边形光栅化器生成多边形)。在一些示例中,对于每个输入图像,可存在对应的地面实况数据404。
视盲区406可以包括对应于包括传感器视盲的区域的注释或其他标签类型。可以针对用于训练一个或更多个机器学习模型104的包括相关联的视盲的图像或传感器数据102的其他传感器数据表示中的每一个生成视盲区406。视盲区406的数量可以对应于相应图像中的区域的数量。如本文所描述的,一个或更多个视盲区406可以是机器自动化的、人工注释的和/或以其他方式生成的。取决于实施例,一个或更多个视盲区406可以对应于任意的、自由形式的一个或更多个形状或多边形。作为非限制性示例,可以生成对应于定义或描绘视盲区406的多边形的顶点(或多边形点),并且多边形光栅化器可以使用顶点来生成整个多边形。
一个或更多个视盲区406可以包括对应于一个或更多个视盲分类408和/或一个或更多个视盲属性410的相关联的注释或其他标签类型。每个视盲区可以与一视盲分类相关联。在一些示例中,一个或更多个视盲分类408可以包括标签类别,所述标签类别包括但不限于被遮挡区域(blocked area)标签、模糊区域标签、反射区域标签、开放区域标签、车辆或自车标签、天空标签、帧标签和/或另一类型。这些标签可以用于将视盲区域406分类,如由传感器数据所表示的。例如,在训练图像中,被遮挡区域标签可对被遮挡区域进行编码;模糊区域标签可对模糊区域(例如,未被完全遮挡)区域进行编码;反射区域标签可以编码包括车辆700(例如,自车)的反射的区域,开放区域标签可以编码捕捉所有(catch-all),这可以进一步使用视盲属性408(例如,光源、其他等)来定义;车辆标签可以对包括车辆700的一部分的区域进行编码;天空标签可以对包括天空的区域进行编码;并且帧标签可对与图像的整体相关的信息(例如,传感器信息)进行编码。在一些示例中,由传感器数据102表示的不包括相关联的视盲的区域可以如此被注释,如通过包括视盲分类408和/或包括“清晰”或“未被遮挡”的视盲属性410。
进一步,地面实况数据404还可包括针对视盲属性410的注释。一个或更多个视盲属性410可以与(例如,作为子分类)视盲分类408相关联。例如,视盲分类408中的一些或全部可以与一个或更多个视盲属性410相关联。视盲属性410可以编码原因(例如,太阳、雪等)、程度(例如,轻、重、中度)、结果(例如,眩光)、关联(例如,白天、夜晚)和/或对应于一个或更多个视盲区406的其他信息。例如,模糊或被遮挡区域的视盲分类可以与一个或更多个属性相关联,包括来自太阳的眩光、雾、水、霭、雪、冰冻窗格、白天、夜晚、破碎的镜片、自眩光、泥、纸张、叶子等。类似地,帧标签可以与包括相机左前方、相机右后方、相机右前方、相机右后方、相机后部中心、相机前部中心、视盲、非视盲等的一个或更多个属性相关联。开放区可与编码光源的属性相关联。
地面实况数据404可进一步包括标量值412。例如,传感器数据102的每个实例可用二进制或标量值(例如,真或假、0或1、是或否等)和/或非二进制值(例如,百分比、范围内的值等)来编码。照此,一个或更多个机器学习模型104可以被训练为学习哪些视盲分类408和/或视盲属性410以及它们相应的视盲区406的位置对传感器数据102的可用性具有最大影响。在一些实施例中,诸如在不同的标量值114与不同的应用和/或与其相关联的操作相关联的情况下,传感器数据102的每个实例可以具有针对每个应用和/或操作的相关联的标量值412的地面实况404。
在一些示例中,可以使用颜色增强、空间增强和/或其他类型的增强(如但不限于在此描述的那些)来增强传感器数据102和相关联的地面实况数据404(例如,一个或更多个视盲区406)。例如,传感器数据102可以经历颜色增强以训练机器学***线附近,如果可见的话)来将天空区域识别为具有天空区域的视盲分类。
在实施例中,传感器数据102和相关联的地面实况数据404可以经历空间增强以训练一个或更多个机器学习模型104——如忽略天空区域中的视盲和/或由在图像中描绘的车辆700(例如,自车)引起的视盲。进一步,可以在训练期间通过应用空间变换(例如,翻转、缩放、旋转)并且使用增强的传感器数据102来进一步训练一个或更多个机器学习模型104以基于空间上下文和像素级边缘或强度梯度来识别区域,而将空间增强应用于传感器数据102。
如本文所描述的,一个或更多个机器学习模型104的输出通道的数量可以取决于一个或更多个视盲分类408的数量、一个或更多个视盲属性410的数量和/或一个或更多个机器学习模型104被训练为预测的一个或更多个标量值412的数量。在一些示例中,输出通道的数目可等于分类的数目与属性的数目加上标量值412的额外通道的总和。在实施例中,一个或更多个机器学习模型104可以使用比部署时使用的更高数量的输出通道来训练。例如,一些通道(例如,对应于属性)可在部署期间被关闭,使得一个或更多个机器学习模型可以识别比其输出更多的上下文信息(例如,附加的上下文信息可以帮助更准确的预测,而不需要一个或更多个机器学习模型104针对一个或更多个经训练的视盲分类408和/或一个或更多个视盲属性410中的每一个生成输出)。
可以使用多次迭代利用传感器数据102来训练一个或更多个机器学习模型104,直到损失函数402的值低于预定阈值。损失函数402可以用于测量与地面实况数据404(例如,对应于一个或更多个视盲区406、一个或更多个视盲分类410、一个或更多个视盲属性410和/或标量值412的标签或注释)相比的输出(例如,一个或更多个机器学习模型104生成的预测)中的损失(例如,误差)。可使用任何类型的损失函数,例如交叉熵损失、均方误差、均值绝对误差、均值偏差误差和/或其他损失函数类型。在一些示例中,损失函数402的梯度可相对于训练参数来迭代地计算。在训练一个或更多个机器学习模型104的同时,可以使用优化器(例如,Adam优化器)、随机梯度下降或任何其他类型的优化算法来优化损失函数。可以迭代地训练一个或更多个机器学习模型104,直到训练参数收敛到最优的、期望的或接受的值。
图5A至图5D包括根据本公开的一些实施例的用作用于训练机器学习模型104的地面实况数据404(例如,一个或更多个视盲区406、一个或更多个视盲分类408、和/或一个或更多个视盲属性410)的示例注释的图示。图5A至图5D示出了本公开的几个优点。例如,通过生成并且分类一个或更多个视盲区404,用于训练如本文中所述一个或更多个机器学习模型104,机器学习模型104可以被训练成以基于区域的方式根据上下文预测传感器视盲及其原因,同时学习由传感器数据表示的重要区域以用于自主或半自主驾驶目的。为此,可以对与传感器数据相关联的视盲区进行注释,以使得***能够被训练,以通过基于在图像中检测到的上下文信息对测量进行个性化来实时地或接近实时地准确且高效地执行校正测量。
在图5A的实例中,三个区域可以被注释为一个或更多个视盲区406——视盲区502(例如,被遮挡区域(Blocked_area)、太阳眩光(Glare_from_sun))、视盲区504(例如,模糊区域(Blurred_area)、太阳眩光、雾(Fog)、轻(Light)、白天(Day))和视盲区506(例如,我自己的汽车(My_own_car))。使用这个信息,可以训练一个或更多个机器学习模型104以预测潜在的视盲区108以及与其相关联的一个或更多个视盲分类110和/或一个或更多个视盲属性112。三个视盲区可对应于图像500(例如,可对应于图像500的像素位置)。例如,视盲区502可以用折线或多边形点注释,并且包括被遮挡区域的视盲分类408和来自太阳的眩光的视盲属性410。视盲区504可以包括视盲分类408“模糊的”和一个或更多个视盲属性410“太阳眩光”、“雾”、“轻”和“白天”。视盲区506可以包括视盲分类408“我自己的汽车”或“自车”。在“自车”是视盲分类408的情况下,可能不存在相关联的视盲属性410,因为机器学习模型104可以被训练成忽略传感器数据102的对应于自车的区域。照此,图像可以被注释到不同区域中,并且每个区域可以还包括关于视盲分类和视盲类型的原因的上下文信息。
参考图5B,图像520可以被注释为包括视盲区522,该视盲区包括相关联的地面实况数据404,该地面实况数据指示视盲分类408是“被遮挡的”,并且视盲属性410是“附近的对象”和“白天”。以此方式,地面实况数据404可以包括针对一个或更多个视盲区406(例如,视盲区522)的注释,一个或更多个视盲分类408(例如,被遮挡的区域)和一个或更多个视盲属性410(例如,在白天期间附近的对象(例如,行人))来训练一个或更多个机器学习模型104,以基于区域和其相关联的原因来识别并分类传感器视盲。
关于图5C,图像540可以被注释为包括视盲区542、544、546、548、550、552、554和558。每个视盲区还可以包括表示视盲分类408和/或视盲属性410的相关联的地面实况数据404。类似地,关于图5D,图5D示出图像560中的天空区域的示例地面实况编码。可以在训练图像560中注释天空区域以指示图像560中地平线附近的天空。天空区域可以被编码为视盲区562,并且包括视盲分类408“Sky_area(天空区域)”。这可以用于训练机器学习模型104以学习检测天空区域,同时忽略蓝色阴影。例如,如本文中所描述的,可以向图像560应用颜色增强,以将机器学习模型104训练为对图像的天空区域中的颜色变化不敏感或不太敏感。标记还可以训练机器学习模型以学习天空区域(当其被遮挡或模糊时)不如用于确定传感器数据的可用性的区域重要。
现在参见图6,在此描述的方法600的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,可以通过处理器执行计算机存储介质中的指令来实现不同功能。仅举几例,方法600可由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件来提供。此外,通过实例的方式,关于图4的过程400来描述方法600。然而,这个方法600可以另外地或可替代地由任何一个***或***的任何组合来执行,包括但不限于在此描述的那些。
图6是示出了根据本公开的一些实施例的用于训练用于视盲检测和分类的机器学习模型的方法600的流程图。在框B602处,方法600包括接收表示环境中的车辆的图像传感器的视场的图像的图像数据。例如,可以接收传感器数据102(作为图像数据),其中图像数据表示环境中的车辆700的图像传感器的视场的图像。
在框B604处,方法600包括:生成对应于图像的具有关联视盲的区域的注释的第一数据。例如,可以生成与地面实况数据404中的一个或更多个视盲区406的注释相对应的数据。
在框B606处,方法600包括:生成对应于用于图像的区域中的每个区域的一个或更多个视盲分类的第二数据。例如,可以针对一个或更多个视盲区406生成一个或更多个视盲分类408。
在框B608处,方法600包括:生成与针对一个或更多个视盲分类的一个或更多个视盲属性相对应的第三数据。例如,可以生成一个或更多个视盲属性410以用于与一个或更多个视盲分类408相关联。
在框B610处,方法600包括:使用第一数据、第二数据和第三数据作为地面实况数据来将神经网络训练为预测具有受损可见性的图像的像素、针对像素(例如,像素中的每个像素)的视盲分类以及对应于视盲分类的视盲属性。例如,可以使用一个或更多个视盲区406(例如,具有受损可见性或类似损伤的区域)、一个或更多个视盲分类408和一个或更多个视盲属性410作为地面实况数据404来训练一个或更多个机器学习模型104,以预测作为输出106(图1)的一个或更多个视盲区108、一个或更多个视盲分类110和一个或更多个视盲属性112。
示例自主车辆
图7A为根据本公开一些实施例的示例自主车辆700的图示。自主车辆700(可替代地,在本文称为“车辆700”)可以包括乘用车,例如汽车、卡车、公共汽车和/或容纳一个或更多个乘客的另一种类型的车辆。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for TermsRelated to Driving Automation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201607,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆700可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆700可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆700可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆700可以包括推进***750,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进***类型。推进***750可以连接到可以包括变速器的车辆700的传动系以便实现车辆700的推进。可以响应于接收到来自油门/加速器752的信号而控制推进***750。
可以包括方向盘的转向(steering)***754可以用来在推进***750操作时(例如在车辆运动时)使车辆700转向(例如沿着希望的路径或路线)。转向***754可以接收来自转向致动器756的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器***746可以用来响应于接收到来自制动致动器748和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上***(SoC)704(图7C)和/或一个或更多个GPU的一个或更多个控制器736可以向车辆700的一个或更多个部件和/或***提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器748操作车辆制动器、经由一个或更多个转向致动器756操作转向***754、经由一个或更多个油门/加速器752操作推进***750的信号。一个或更多个控制器736可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆700。一个或更多个控制器736可以包括用于自主驾驶功能的第一控制器736、用于功能性安全功能的第二控制器736、用于人工智能功能(例如计算机视觉)的第三控制器736、用于信息娱乐功能的第四控制器736、用于紧急情况下的冗余的第五控制器736和/或其他控制器。在一些示例中,单个控制器736可以处理上述功能中的两个或更多,两个或更多控制器736可以处理单个功能,和/或其任意组合。
一个或更多个控制器736可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆700的一个或更多个部件和/或***的信号。传感器数据可以接收自例如且不限于全球导航卫星***传感器758(例如全球定位***传感器)、RADAR传感器760、超声传感器762、LIDAR传感器764、惯性测量单元(IMU)传感器766(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风776、立体相机768、广角相机770(例如鱼眼相机)、红外相机772、环绕相机774(例如360度相机)、远程和/或中程相机778、速度传感器744(例如用于测量车辆700的速率)、振动传感器742、转向传感器740、制动传感器(例如作为制动传感器***746的部分)和/或其他传感器类型。
控制器736中的一个或更多个可以接收来自车辆700的仪表组732的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器734、听觉信号器、扬声器和/或经由车辆700的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图7C的HD地图722)、位置数据(例如,车辆700例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器736所感知的关于对象和对象状态的信息等等。例如,HMI显示器734可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆700还包括网络接口724,其可以使用一个或更多个无线天线726和/或调制解调器通过一个或更多个网络通信。例如,网络接口724可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线726也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图7B为根据本公开一些实施例的用于图7A的示例自主车辆700的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆700上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆700的部件和/或***一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、720fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助***(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆700前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器736和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和***,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机770,其可以用来感知从周边进入视场的对象(例如行人、十字路***通或者自行车)。尽管图7B中图示出仅仅一个广角相机,但是在车辆700上可以存在任意数量的广角相机770。此外,远程相机778(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机778也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机768也可以包括在前置配置中。立体相机768可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机768可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机768。
具有包括车辆700的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机774(例如如图7B中所示的四个环绕相机774)可以置于车辆700上。环绕相机774可以包括广角相机770、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机774(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆700的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机778、立体相机768、红外相机772等等)的相机。
图7C为根据本公开一些实施例的用于图7A的示例自主车辆700的示例***架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图7C中车辆700的部件、特征和***中的每一个被图示为经由总线702连接。总线702可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆700内部的网络,用来辅助控制车辆700的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线702描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线702,但是这并不意图是限制性的。例如,可以存在任意数量的总线702,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线702可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线702可以用于碰撞避免功能,并且第二总线702可以用于驱动控制。在任何示例中,每条总线702可以与车辆700的任何部件通信,并且两条或更多总线702可以与相同的部件通信。在一些示例中,车辆内的每个SoC 704、每个控制器736和/或每个计算机可以有权访问相同的输入数据(例如来自车辆700的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆700可以包括一个或更多个控制器736,例如本文关于图7A所描述的那些控制器。控制器736可以用于各种各样的功能。控制器736可以耦合到车辆700的任何其他不同的部件和***,并且可以用于车辆700的控制、车辆700的人工智能、用于车辆700的信息娱乐和/或类似物。
车辆700可以包括一个或更多个片上***(SoC)704。SoC 704可以包括CPU 706、GPU 708、处理器710、高速缓存712、加速器714、数据存储716和/或未图示出的其他部件和特征。在各种各样的平台和***中,SoC 704可以用来控制车辆700。例如,一个或更多个SoC704可以在***(例如车辆700的***)中与HD地图722结合,所述HD地图可以经由网络接口724从一个或更多个服务器(例如图7D的一个或更多个服务器778)获得地图刷新和/或更新。
CPU 706可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU 706可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 706在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 706可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 706(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 706的簇的任意组合能够在任何给定时间是活动的。
CPU 706可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 706可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 708可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 708可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 708可以使用增强张量指令集。GPU 708可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少76KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU 708可以包括至少八个流式微处理器。GPU 708可以使用计算应用编程接口(API)。此外,GPU708可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 708进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 708。然而,这并不意图是限制性的,并且GPU 708可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 708可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子***。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 708可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 708直接访问CPU 706页表。在这样的示例中,当GPU 708内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 706。作为响应,CPU 706可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU708。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 706和GPU 708二者的内存,从而简化了GPU 708编程和将应用程序移(port)到GPU 708。
此外,GPU 708可以包括访问计数器,其可以追踪GPU 708访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 704可以包括任意数量的高速缓存712,包括本文描述的那些高速缓存。例如,高速缓存712可以包括CPU 706和GPU 708二者可用的L3高速缓存(例如,其连接到CPU 706和GPU 708二者)。高速缓存712可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 704可以包括一个或更多个加速器714(例如硬件加速器、软件加速器或者其组合)。例如,SoC 704可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充GPU 708,并且卸载GPU 708的一些任务(例如释放GPU 708的更多周期以用于执行其他任务)。作为一个示例,加速器714可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器714(例如硬件加速簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 708的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 708针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 708和/或其他加速器714。
加速器714(例如硬件加速簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助***(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作***(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 706访问***内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子***分区。PVA核可以包括处理器子***、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他***设备。向量处理子***可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体***安全性。
加速器714(例如硬件加速簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器714的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级***总线(APB)接口、配置电路***、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 704可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR***仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。
加速器714(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得***能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,***可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)***中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子***)获得的地平面估计,与车辆700取向、距离相关的惯性测量单元(IMU)传感器766输出,从神经网络和/或其他传感器(例如LIDAR传感器764或RADAR传感器760)获得的对象的3D位置估计等。
SoC 704可以包括一个或更多个数据存储716(例如内存)。数据存储716可以是SoC704的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储716可以容量足够大以存储神经网络的多个实例。数据存储712可以包括L2或L3高速缓存712。对数据存储716的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器714关联的内存的引用。
SoC 704可以包括一个或更多个处理器710(例如嵌入式处理器)。处理器710可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子***。启动和功率管理处理器可以是SoC 704启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助***低功率状态转换、SoC 704热和温度传感器管理和/或SoC 704功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC704可以使用环形振荡器检测CPU 706、GPU 708和/或加速器714的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 704置于较低功率状态和/或将车辆700置于司机安全停车模式(例如使车辆700安全停车)。
处理器710可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子***,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器710可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持***设备(例如定时器和中断控制器)、各种I/O控制器***设备和路由逻辑。
处理器710可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子***。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持***设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器710可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子***。
处理器710可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器710可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机770、环绕相机774和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内***可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐***和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作***桌面正在使用并且GPU 708无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 708上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 708的负担以提高性能和响应能力。
SoC 704可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 704可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 704可以还包括大范围的***设备接口,以使能与***设备、音频编解码器、功率管理和/或其他设备通信。SoC 704可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器764、RADAR传感器760等等)的数据,来自总线702的数据(例如车辆700的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器758的数据。SoC 704可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU706。
SoC 704可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学***台的综合功能安全架构。SoC 704可以比常规的***更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 706、GPU 708和数据存储716结合时,加速器714可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规***实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规***形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 720)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 708上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆700的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 704提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风776的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规***形成对比的是,SoC 704使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器758所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器762的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 704的CPU 718(例如分立的CPU或dCPU)。CPU 718可以包括例如X86处理器。CPU 718可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 704之间潜在地不一致的结果,和/或监控控制器736和/或信息娱乐SoC 730的状态和健康状况。
车辆700可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 704的GPU720(例如分立的GPU或dGPU)。GPU 720可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆700的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆700可以还包括网络接口724,该网络接口可以包括一个或更多个无线天线726(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口724可以用来使能通过因特网与云(例如与服务器778和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆700提供关于接近车辆700的车辆(例如车辆700前面、侧面和/或后面的车辆)的信息。该功能可以是车辆700的协作自适应巡航控制功能的部分。
网络接口724可以包括提供调制和解调功能并且使得控制器736能够通过无线网络通信的SoC。网络接口724可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆700可以还包括可包括片外(例如SoC 704外)存储装置的数据存储728。数据存储728可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆700可以还包括GNSS传感器758。GNSS传感器758(例如GPS和/或辅助GPS传感器)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器758,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆700可以还包括RADAR传感器760。RADAR传感器760可以甚至在黑暗和/或恶劣天气条件下也由车辆700用于远程车辆检测。RADAR功能安全级别可以是ASILB。RADAR传感器760可以使用CAN和/或总线702(例如以传输RADAR传感器760生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器760可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器760可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR***可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器760可以帮助区分静态对象和运动对象,并且可以由ADAS***用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆700的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆700的车道的车辆成为可能。
作为一个示例,中程RADAR***可以包括高达760m(前面)或80m(后面)的范围以及高达42度(前面)或750度(后面)的视场。短程RADAR***可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器***可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
短程RADAR***可以在ADAS***中用于视盲点检测和/或变道辅助。
车辆700可以还包括超声传感器762。可以置于车辆700的前面、后面和/或侧面的超声传感器762可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器762,并且不同的超声传感器762可以用于不同的检测范围(例如2.5m、4m)。超声传感器762可以操作于功能安全级别的ASIL B。
车辆700可以包括LIDAR传感器764。LIDAR传感器764可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器764可以为功能安全级别的ASIL B。在一些示例中,车辆700可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器764(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器764可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器764可以具有例如近似700m的广告范围,精度为2cm-3cm,支持700Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器764。在这样的示例中,LIDAR传感器764可以实现为可以嵌入到车辆700的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器764可以甚至对于低反射率对象提供高达720度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器764可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆700的每一侧一个。可用的3D闪光LIDAR***包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器764可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器766。在一些示例中,IMU传感器766可以位于车辆700的后轴的中心。IMU传感器766可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器766可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器766可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器766可以实现为微型高性能GPS辅助惯性导航***(GPS/INS),其结合微机电***(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器766可以使得车辆700能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器766的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器766和GNSS传感器758可以结合到单个集成单元中。
该车辆可以包括置于车辆700中和/或车辆700周围的麦克风776。除别的以外,麦克风776可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机768、广角相机770、红外相机772、环绕相机774、远程和/或中程相机778和/或其他相机类型。这些相机可以用来捕获车辆700整个***周围的图像数据。使用的相机类型取决于实施例和车辆700的要求,并且相机类型的任意组合可以用来提供车辆700周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图7A和图7B更详细地进行了描述。
车辆700可以还包括振动传感器742。振动传感器742可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器742时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆700可以包括ADAS***738。在一些示例中,ADAS***738可以包括SoC。ADAS***738可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告***(CWS)、车道居中(LC)和/或其他特征和功能。
ACC***可以使用RADAR传感器760、LIDAR传感器764和/或相机。ACC***可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆700前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆700改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口724和/或无线天线726经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆700前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC***可以包括I2V和V2V信息源中的任一个或者二者。给定车辆700前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW***被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW***使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器760,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW***可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB***检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器760。当AEB***检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB***可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB***可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW***提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆700穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW***。LDW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA***是LDW***的变型。如果车辆700开始离开车道,那么LKA***提供纠正车辆700的转向输入或制动。
BSW***检测并向驾驶员警告汽车视盲点中的车辆。BSW***可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。***可以在驾驶员使用转弯信号时提供附加的警告。BSW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器760,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW***可以在车辆700倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW***包括AEB以确保应用车辆制动器以避免撞车。RCTW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器760,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS***可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS***提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆700中,在冲突结果的情况下,车辆700本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器736或第二控制器736)的结果。例如,在一些实施例中,ADAS***738可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS***738的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW***时,监督MCU中的神经网络可以了解FCW***何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW***时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 704的部件和/或作为SoC 704的部件而被包括。
在其他示例中,ADAS***738可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个***更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS***738的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS***738由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆700可以还包括信息娱乐SoC 730(例如车载信息娱乐***(IVI))。尽管被图示和描述为SoC,但是信息娱乐***可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 730可以包括可以用来向车辆700提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航***,后停车援助,无线电数据***,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 730可以包括收音机、盘播放器、导航***、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器734、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或***,和/或与其交互)和/或其他部件。信息娱乐SoC 730可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS***738的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 730可以包括GPU功能。信息娱乐SoC 730可以通过总线702(例如CAN总线、以太网等)与车辆700的其他设备、***和/或部件通信。在一些示例中,信息娱乐SoC730可以耦合至监督MCU,使得在主控制器736(例如车辆700的主和/或备用计算机)出现故障的情况下,信息娱乐***的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC730可以如本文所描述的将车辆700置于司机安全停车模式。
车辆700可以还包括仪表组732(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组732可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组732可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)***信息、照明控件、安全***控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 730和仪表组732之间共享。换言之,仪表组732可以作为信息娱乐SoC 730的部分而被包括,或者反之亦然。
图7D为根据本公开一些实施例的基于云的服务器与图7A的示例自主车辆700之间的通信的***示意图。***776可以包括服务器778、网络770以及包括车辆700在内的车辆。服务器778可以包括多个GPU 784(A)-1284(H)(这里统称为GPU 784)、PCIe交换机782(A)-782(H)(这里统称为PCIe交换机782)和/或CPU 780(A)-780(B)(这里统称为CPU 780)。GPU784、CPU 780和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口788之类的高速互连和/或PCIe连接786互连。在一些示例中,GPU 784经由NVLink和/或NVSwitch SoC连接,并且GPU 784和PCIe交换机782经由PCIe互连连接。尽管图示出八个GPU 784、两个CPU780和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器778中的每一个可以包括任意数量的GPU 784、CPU 780和/或PCIe交换机。例如,服务器778中的每一个可以包括八个、十六个、三十二个和/或更多GPU 784。
服务器778可以通过网络770并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器778可以通过网络770并且向车辆传输神经网络792、更新的神经网络792和/或地图信息774,包括关于交通和道路状况的信息。对地图信息774的更新可以包括对于HD地图722的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络792、更新的神经网络792和/或地图信息774可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器778和/或其他服务器)的经验产生。
服务器778可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络770传输至车辆),和/或机器学习模型可以由服务器778用来远程地监控车辆。
在一些示例中,服务器778可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器778可以包括由GPU 784供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器778可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器778的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆700中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆700的定期更新,例如图像序列和/或车辆700已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆700识别的对象相比较,如果结果不匹配并且该基础设施得出车辆700中的AI发生故障的结论,那么服务器778可以向车辆700传输信号,指示车辆700的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器778可以包括GPU 784和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT 3)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图8为适合用于实现本公开一些实施例的示例计算设备800的框图。计算设备800可以包括直接或间接耦合下列设备的总线802:存储器804,一个或更多个中央处理单元(CPU)806,一个或更多个图形处理单元(GPU)808,通信接口810,输入/输出(I/O)端口812,输入/输出组件814,电源816,以及一个或更多个呈现组件818(例如显示器)。
尽管图8的各个框被示为经由具有线路的总线802连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件818可以被认为是I/O组件814(例如如果显示器为触摸屏)。作为另一个示例,CPU 806和/或GPU 808可以包括内存(例如,存储器804可以表示除了GPU 808、CPU 806和/或其他组件的内存以外的存储设备)。换言之,图8的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实***”和/或其他设备或***类型之类的类别之间不进行区分,因为所有这些都被考虑在图8的计算设备的范围内。
总线802可以表示一条或更多条总线,例如地址总线、数据总线、控制总线或者其组合。总线802可以包括一种或更多种总线类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、***组件互连(PCI)总线、***组件互连快速(PCIe)总线,和/或另一种类型的总线。
存储器804可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备800访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器804可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作***)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备800访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
通信介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,通信介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
CPU 806可以被配置为执行计算机可读指令以便控制计算设备800的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 806中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 806可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备800的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备800的类型,处理器可以是使用精简指令集计算(RISC)实现的ARM处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备800还可以包括一个或更多个CPU 806。
GPU 808可以由计算设备800用来渲染图形(例如3D图形)。GPU 808可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU 808可以响应于渲染命令(例如经由主机接口接收的来自CPU 806的渲染命令)而生成用于输出图像的像素数据。GPU 808可以包括诸如显示内存之类的用于存储像素数据的图形内存。显示内存可以作为存储器804的部分而被包括。GPU 808可以包括(例如经由链路)并行操作的两个或更多GPU。当组合在一起时,每个GPU 808可以生成用于输出图像的不同部分或者用于不同输出图像的像素数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的内存,或者可以与其他GPU共享内存。
在其中计算设备800不包括GPU 808的示例中,CPU 806可以用来渲染图形。
通信接口810可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备800能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口810可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口812可以使得计算设备800能够逻辑地耦合到包括I/O组件814、呈现组件818和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备800中。说明性I/O组件814包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件814可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些示例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛追踪以及与计算设备800的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备800可以包括诸如立体相机***之类的深度相机、红外相机***、RGB相机***、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备800可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备800用来渲染沉浸式增强现实或者虚拟现实。
电源816可以包括硬接线电源、电池电源或者其组合。电源816可以向计算设备800供电以使得计算设备800的组件能够操作。
呈现组件818可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件818可以接收来自其他组件(例如GPU 808、CPU 806等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的***配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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 (14)

1.一种计算机实现的方法,包括:使用神经网络并且至少部分地基于表示车辆的一个或更多个传感器的视场的图像的图像数据来计算第一数据,所述第一数据指示所述图像的具有受损可见性的一个或更多个像素;使用所述神经网络并且至少部分地基于所述图像数据来计算第二数据,所述第二数据指示来自多个视盲分类中的针对具有受损可见性的所述一个或更多个像素的至少一个视盲分类;使用所述神经网络并且至少部分地基于所述图像数据来计算指示标量值的第三数据,所述标量值表示所述图像用于执行对应于所述车辆的一个或更多个操作的可用性;以及至少部分地基于与具有受损可见性和所述至少一个视盲分类的所述一个或更多个像素相关联的所述视场中的位置,至少部分地基于所述标量值高于阈值执行所述一个或更多个操作中的至少一个操作。
2.根据权利要求1所述的方法,其中来自所述多个视盲分类中的所述至少一个视盲分类包括以下项中的至少一者:被遮挡区域、模糊区域、反射区域、天空区域或帧标签。
3.根据权利要求1所述的方法,还包括:对于所述一个或更多个像素中的每个像素,使用所述神经网络计算第四数据,所述第四数据指示对应于所述至少一个视盲分类的至少一个视盲属性,其中执行所述至少一个操作还至少部分地基于所述至少一个视盲属性。
4.根据权利要求3所述的方法,其中所述至少一个视盲属性包括以下项中的至少一者:来自太阳的眩光、雾、水、霭、雪、冰冻、白天、夜晚、破碎镜片、自眩光、泥、纸、叶子或光源。
5.根据权利要求1所述的方法,还包括:利用与包括所述图像的图像序列中的先前图像相对应的所述神经网络的先前计算,来对具有受损可见性的所述一个或更多个像素中的至少一个像素或具有受损可见性的所述一个或更多个像素中的每个像素的所述至少一个视盲分类进行加权。
6.根据权利要求1所述的方法,还包括:确定与所述图像的区域相对应的重要性值,所述重要性值指示在所述区域中描绘的所述车辆的环境的部分对执行所述一个或更多个操作的重要性,其中执行所述至少一个操作至少部分地基于与具有受损可见性的所述一个或更多个像素相对应的所述区域中的相应区域的重要性值。
7.根据权利要求1所述的方法,其中具有受损可见性的所述一个或更多个像素是第一像素,并且所述方法还包括:使用计算机视觉算法计算所述图像的具有受损可见性的第二像素;以及将所述第二像素与第一像素进行比较,以确定所述神经网络在计算具有受损可见性的所述第一像素时的准确性。
8.根据权利要求7所述的方法,还包括:使用所述神经网络并且至少部分地基于所述图像数据计算表示显著图的第五数据,所述显著图指示所述图像的区域的相应重要性值,其中将所述第二像素与所述第一像素进行比较包括:将所述区域中的一个区域内的所述第二像素的第一子集与该个区域内的所述第一像素的第二子集进行比较,该个区域具有高于阈值重要性值的重要性值。
9.根据权利要求1所述的方法,其中所述车辆是虚拟车辆,所述一个或更多个传感器对应于一个或更多个虚拟传感器,并且所述视场是在模拟环境中的所述一个或更多个虚拟传感器的视场,并且其中执行所述至少一个操作包括:执行关于所述模拟环境中的所述虚拟车辆的所述至少一个操作。
10.一种计算机***,包括:一个或更多个图像传感器,用于生成车辆周围的环境的图像数据,所述图像数据表示图像;计算设备,其包括一个或更多个处理设备和通信地耦合到所述一个或更多个处理设备的一个或更多个存储器设备,所述一个或更多个处理设备在其上存储编程指令,所述编程指令在由所述一个或更多个处理设备执行时,使得视盲确定器和控制组件实例化:所述视盲确定器用于:使用神经网络并且至少部分地基于所述图像数据来计算所述图像的具有受损可见性的一个或更多个像素;以及使用所述神经网络并且部分地基于所述图像数据来计算来自多个视盲分类中的与所述图像的所述一个或更多个像素对应的一个或更多个视盲分类;以及所述控制组件用于至少部分地基于具有受损可见性和所述一个或更多个视盲分类的所述一个或更多个像素的位置使用所述图像来执行一个或更多个操作。
11.根据权利要求10所述的***,还包括:可用性确定器,用于使用所述神经网络并且部分地基于所述图像数据来计算与所述一个或更多个操作中的每个操作对应的标量值,其中执行所述一个或更多个操作还至少部分地基于所述标量值大于关于所述一个或更多个操作中的至少一个操作的阈值。
12.根据权利要求10所述的***,其中所述视盲确定器还用于使用所述神经网络并且至少部分地基于所述图像数据来计算与具有受损可见性的所述一个或更多个像素相对应的一个或更多个视盲属性,
其中执行所述一个或更多个操作还至少部分地基于所述一个或更多个视盲属性。
13.根据权利要求10所述的***,还包括:附加视盲确定器,用于使用计算机视觉算法确定具有受损可见性的比较像素;以及协议验证器,用于将具有受损可见性的所述一个或更多个像素与所述比较像素进行比较以确定协议分数。
14.根据权利要求10所述的***,其中:
所述一个或更多个视盲分类对应于视盲的类型,并且包括以下项中的至少一者:被遮挡区域、模糊区域、反射区域、天空区域或帧标签;
所述视盲确定器还用于使用所述神经网络并且至少部分地基于所述图像数据来计算对应于具有受损可见性的所述一个或更多个像素的一个或更多个视盲属性,所述一个或更多个视盲属性对应于视盲的原因并且包括以下项中的至少一者:来自太阳的眩光、雾、水、霭、雪、冰冻、白天、夜晚、破碎镜片、自眩光、泥、纸、叶子、人或光源;并且
其中执行所述一个或更多个操作还至少部分地基于所述一个或更多个视盲属性。
CN201980074103.3A 2018-09-13 2019-09-13 用于自主机器应用中传感器视盲检测的深度神经网络处理 Active CN112970029B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862730652P 2018-09-13 2018-09-13
US62/730,652 2018-09-13
PCT/US2019/051097 WO2020112213A2 (en) 2018-09-13 2019-09-13 Deep neural network processing for sensor blindness detection in autonomous machine applications

Publications (2)

Publication Number Publication Date
CN112970029A CN112970029A (zh) 2021-06-15
CN112970029B true CN112970029B (zh) 2024-06-07

Family

ID=76271530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980074103.3A Active CN112970029B (zh) 2018-09-13 2019-09-13 用于自主机器应用中传感器视盲检测的深度神经网络处理

Country Status (2)

Country Link
EP (1) EP3850539B1 (zh)
CN (1) CN112970029B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4140842B1 (en) * 2021-08-26 2024-06-05 Aptiv Technologies AG Methods and systems for controlling a vehicle

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819263A (zh) * 2012-07-30 2012-12-12 中国航天科工集团第三研究院第八三五七研究所 多摄像头无人车视觉感知***
US8854455B2 (en) * 2008-05-09 2014-10-07 Robert Bosch Gmbh Method and device for processing recorded image information from a vehicle
WO2016039751A1 (en) * 2014-09-11 2016-03-17 Nuance Communications, Inc. Method for scoring in an automatic speech recognition system
US9465987B1 (en) * 2015-03-17 2016-10-11 Exelis, Inc. Monitoring and detecting weather conditions based on images acquired from image sensor aboard mobile platforms
CN106780536A (zh) * 2017-01-13 2017-05-31 深圳市唯特视科技有限公司 一种基于对象掩码网络的形状感知实例分割方法
CN107038723A (zh) * 2015-11-20 2017-08-11 通用汽车环球科技运作有限责任公司 棒状像素估计方法和***
CN107909151A (zh) * 2017-07-02 2018-04-13 小蚁科技(香港)有限公司 用于在人工神经网络中实现注意力机制的方法和***
CN107918311A (zh) * 2016-10-06 2018-04-17 福特全球技术公司 多传感器降水分级设备和方法
CN108227707A (zh) * 2017-12-25 2018-06-29 清华大学苏州汽车研究院(吴江) 基于激光雷达和端到端深度学习方法的自动驾驶方法
CN108334081A (zh) * 2017-01-20 2018-07-27 福特全球技术公司 用于对象检测的循环深度卷积神经网络

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011056051A1 (de) * 2011-12-05 2013-06-06 Conti Temic Microelectronic Gmbh Verfahren zur Auswertung von Bilddaten einer Fahrzeugkamera unter Berücksichtigung von Informationen über Regen
US9811756B2 (en) * 2015-02-23 2017-11-07 Mitsubishi Electric Research Laboratories, Inc. Method for labeling images of street scenes
US10049284B2 (en) * 2016-04-11 2018-08-14 Ford Global Technologies Vision-based rain detection using deep learning
WO2017218937A1 (en) * 2016-06-16 2017-12-21 Sri International Systems and methods for optimizing operations of computing devices using deep neural networks
WO2018002774A1 (en) * 2016-06-29 2018-01-04 Semiconductor Energy Laboratory Co., Ltd. Electronic device, operation method of the electronic device, and moving vehicle
US10521677B2 (en) * 2016-07-14 2019-12-31 Ford Global Technologies, Llc Virtual sensor-data-generation system and method supporting development of vision-based rain-detection algorithms
US11295458B2 (en) * 2016-12-01 2022-04-05 Skydio, Inc. Object tracking by an unmanned aerial vehicle using visual sensors
US11017243B2 (en) * 2016-12-05 2021-05-25 Intel Corporation Automotive system with motion detection capabilities
WO2018125928A1 (en) * 2016-12-29 2018-07-05 DeepScale, Inc. Multi-channel sensor simulation for autonomous control systems

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8854455B2 (en) * 2008-05-09 2014-10-07 Robert Bosch Gmbh Method and device for processing recorded image information from a vehicle
CN102819263A (zh) * 2012-07-30 2012-12-12 中国航天科工集团第三研究院第八三五七研究所 多摄像头无人车视觉感知***
WO2016039751A1 (en) * 2014-09-11 2016-03-17 Nuance Communications, Inc. Method for scoring in an automatic speech recognition system
US9465987B1 (en) * 2015-03-17 2016-10-11 Exelis, Inc. Monitoring and detecting weather conditions based on images acquired from image sensor aboard mobile platforms
CN107038723A (zh) * 2015-11-20 2017-08-11 通用汽车环球科技运作有限责任公司 棒状像素估计方法和***
CN107918311A (zh) * 2016-10-06 2018-04-17 福特全球技术公司 多传感器降水分级设备和方法
CN106780536A (zh) * 2017-01-13 2017-05-31 深圳市唯特视科技有限公司 一种基于对象掩码网络的形状感知实例分割方法
CN108334081A (zh) * 2017-01-20 2018-07-27 福特全球技术公司 用于对象检测的循环深度卷积神经网络
CN107909151A (zh) * 2017-07-02 2018-04-13 小蚁科技(香港)有限公司 用于在人工神经网络中实现注意力机制的方法和***
CN108227707A (zh) * 2017-12-25 2018-06-29 清华大学苏州汽车研究院(吴江) 基于激光雷达和端到端深度学习方法的自动驾驶方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Real-time raindrop detection based on cellular neural networks for ADAS;Fadi Al Machot等;Journal of Real-Time Image Processing,DOI 10.1007/s11554-016-0569-z;第1-13页 *

Also Published As

Publication number Publication date
CN112970029A (zh) 2021-06-15
EP3850539B1 (en) 2024-05-29
EP3850539A2 (en) 2021-07-21

Similar Documents

Publication Publication Date Title
US11508049B2 (en) Deep neural network processing for sensor blindness detection in autonomous machine applications
CN113168505B (zh) 用于自主驾驶机器的基于回归的线检测
CN113811886B (zh) 自主机器应用中的路口检测和分类
CN110494863B (zh) 确定自主车辆的可驾驶自由空间
CN111133447B (zh) 适于自主驾驶的对象检测和检测置信度的方法和***
US20230205219A1 (en) Path detection for autonomous machines using deep neural networks
US20220019893A1 (en) Distance estimation to objects and free-space boundaries in autonomous machine applications
CN111095291B (zh) 由自动驾驶车辆实时检测车道和边界
CN112825136B (zh) 自主机器应用中使用radar传感器检测障碍物的深度神经网络
CN113139642B (zh) 在自主驾驶应用中使用神经网络执行故障检测
CN113632095A (zh) 使用适合停车位检测的倾斜多边形进行对象检测
CN114008685A (zh) 用于自主机器应用的路口区域检测和分类
WO2021138010A1 (en) Three-dimensional intersection structure prediction for autonomous driving applications
CN113785302A (zh) 自主机器应用中的路口姿态检测
CN113950702A (zh) 在视频分析应用中使用相关滤波器的多对象跟踪
CN111133448A (zh) 使用安全到达时间控制自动驾驶车辆
CN111695717A (zh) 自主机器应用中的时间信息预测
CN112347829A (zh) 利用障碍物和车道检测来确定环境中对象的车道分配
CN112825134A (zh) 自主机器应用中使用radar传感器检测障碍物的深度神经网络
CN114450724A (zh) 用于自主机器应用的多活动者环境中的未来轨迹预测
CN113994390A (zh) 针对自主驾驶应用的使用曲线拟合的地标检测
CN116767245A (zh) 使用自主***和应用的神经网络的地图信息对象数据管理
CN112970029B (zh) 用于自主机器应用中传感器视盲检测的深度神经网络处理
CN116263688A (zh) 在自主***和应用程序中使用特征描述符绘图进行单个和跨传感器对象追踪
CN116263944A (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
GR01 Patent grant
GR01 Patent grant