CN115136148A - 投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征检测 - Google Patents

投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征检测 Download PDF

Info

Publication number
CN115136148A
CN115136148A CN202180014806.4A CN202180014806A CN115136148A CN 115136148 A CN115136148 A CN 115136148A CN 202180014806 A CN202180014806 A CN 202180014806A CN 115136148 A CN115136148 A CN 115136148A
Authority
CN
China
Prior art keywords
view
image data
image
field
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.)
Pending
Application number
CN202180014806.4A
Other languages
English (en)
Inventor
K·帕茨瓦尔德
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 CN115136148A publication Critical patent/CN115136148A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/265Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network constructional aspects of navigation devices, e.g. housings, mountings, displays
    • 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/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0221Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving a learning process
    • 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
    • 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
    • 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
    • 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/10Image acquisition
    • G06V10/12Details of acquisition arrangements; Constructional details thereof
    • G06V10/14Optical characteristics of the device performing the acquisition or on the illumination arrangements
    • G06V10/147Details of sensors, e.g. sensor lenses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/24Aligning, centring, orientation detection or correction of the image
    • 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
    • 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/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2628Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation
    • 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
    • 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/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • 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
    • G06T2207/30261Obstacle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/24Aligning, centring, orientation detection or correction of the image
    • G06V10/247Aligning, centring, orientation detection or correction of the image by affine transforms, e.g. correction due to perspective effects; Quadrilaterals, e.g. trapezoids

Landscapes

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

Abstract

在示例中,可以利用来自宽视场传感器的实况感知来检测车辆的环境中的特征。由传感器生成的传感器数据可被调整以表示与传感器的实际视场不同的虚拟视场,并且传感器数据——有或没有虚拟地调整——可应用于立体投影算法以生成投影图像。投影图像然后可以应用于机器学习模型——诸如深度神经网络(DNN)——以检测和/或分类其中所表示的特征或对象。可以在训练传感器数据上预训练机器学习模型,所述训练传感器数据由具有小于宽视场传感器的视场的传感器生成,使得虚拟地调整和/或投影算法可以将传感器数据更新为适合于由预训练的机器学习模型进行的准确处理。

Description

投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征 检测
背景技术
自主驾驶系统和先进的驾驶员辅助系统(ADAS)可以利用各种传感器来执行各种任务——诸如车道保持、车道变换、车道分配、相机校准、转向、停止、路径规划和定位。例如,对于自主和ADAS系统独立地且有效地操作,可以生成实时或接近实时的对车辆的周围环境的理解。这种理解可以包括关于环境中的对象、障碍物、车道标志、标志和/或交通灯的位置的信息,所述信息为各种划分(诸如车道、道路边界、交叉口等)提供上下文和视觉标记。当做出决策时,诸如鉴于环境中的各个对象(例如,车辆、行人、骑自行车者等)行进路径,何时和是否改变车道、驾驶多快、在交叉口停在哪里等,车辆可使用周围环境的信息。
作为示例,当执行路径规划、避障和/或控制决策时,关于自主或半自主车辆的环境中的对象和/或车道的位置和属性的信息可以证明是有价值的。机器学习模型和/或计算机视觉算法经常被训练或编程为生成车辆的周围环境的信息。例如,这些机器学习模型(例如,深度神经网络(DNN))和/或计算机视觉算法被训练以生成对由具有变化的视场的传感器生成的传感器数据(例如,图像)表示的周围环境的理解。例如,许多DNN可使用具有在60度和120度之间的视场的传感器(例如,图像传感器)来训练。然而,车辆的至少一些传感器(例如,相机、LIDAR传感器、RADAR传感器等)可具有大于120度的视场,诸如定位在车辆的后方或前方的停车相机、或定位在车辆的侧视镜上的侧视相机。例如,停车相机通常采用视场向上或大于190度的鱼眼相机。因此,由具有宽视场的这些图像传感器生成的图像数据可能不适合于由DNN处理——例如,由于失真、伪像和/或其他缺陷。
在常规系统中,车辆环境的对象可使用经训练以检测由训练图像数据表示的特征的DNN来检测,所述训练图像数据使用具有小于120度的视场的图像传感器来生成。例如,通常用于前向相机(俗称“行车记录仪”或“车载摄像机”)和后向相机的针孔相机是具有通常较窄视场的图像传感器的示例。由这样的图像传感器捕获的图像具有最小的失真,因为这些图像大部分是直线的,并且由这样的相机生成的图像可被用来训练DNN以检测环境的特征。然而,由具有较高视场(例如,大于120度)的停车相机(例如,鱼眼相机)捕获的图像数据可包括有限信息可用的区域(例如,图像的边缘)中的失真,并且因此可导致DNN的不准确计算。照此,常规方法可使用由具有较大视场的传感器捕获的图像数据来重新训练DNN,这不仅需要显著的计算成本和人工努力,而且限制了DNN对于表示较小视场(例如,小于120度)的传感器数据的可扩展性和适应性。因此,这些常规系统需要训练DNN的各个实例,使得DNN的每个实例对应于特定视场——例如,90-120度的视场的第一实例和120-180度的视场的第二实例。此外,即使在DNN被专门针对更宽的视场来训练的情况下,由于来自宽视场传感器的图像数据中的失真的比例和角度两者的变化,为地面实况标记特征可能由于图像中的特征(例如,对象、线)的倾斜取向而是困难的。例如,诸如图像-空间中的线和形状等特征可能不与世界-空间中的相同特征的位置对准,这增加了DNN和/或后处理的复杂另一层以准确地协调DNN的输出与特征的现实世界位置。在没有将输出准确地映射到世界-空间位置的情况下,DNN可能不像自主驾驶那样安全关键地那样可靠用于执行技术空间中的操作。
发明内容
本公开的实施例涉及立体摄影地投影使用鱼眼镜头捕获的图像以用于使用神经网络的特征检测。公开了利用在使用较窄视场传感器(例如,视场小于120度的传感器)捕获的输出上训练的现有神经网络来实时或近实时地检测来自较宽视场传感器(例如,视场大于120度的传感器)的输出中的特征的系统和方法。
与常规系统(例如上文所描述的那些)相比,本公开的系统和方法可以利用对宽视场传感器(例如,大于120度)的实况感知来检测车辆环境中的一个或更多个特征。例如,来自宽视场传感器的图像可应用于立体投影算法以将图像投影到二维(2D)平面上。随后可利用投影的图像来使用经训练以检测由较窄视场传感器捕获的图像中的特征的神经网络来检测车辆环境中的特征。在一些示例中,宽视场传感器的视场可被虚拟地调整以在将图像应用于立体投影算法之前生成具有虚拟地调整的视场的更新图像。宽视场传感器的视场可被竖直调整,使得传感器的虚拟中心(例如,相机中心点)基本上与地平线对准。在一些其他示例中,检测到的特征可被转换为图像-空间位置和对应的世界-空间位置。例如,输出可用于直接或间接地(例如,经由解码)确定每一特征的位置、每一特征的分类和/或类似者。
作为使用现有神经网络(例如,使用较低视场图像训练的DNN)来检测高视场图像的输出中的特征的结果,不需要用于训练新神经网络或重新训练预训练神经网络以用于宽视场图像传感器的附加计算和时间资源。照此,检测使用宽视场传感器捕获的图像中的特征的过程可能相对较不耗时、计算强度更小,且更可扩展,因为系统可学习实时或接近实时地检测特征,而不需要环境和传感器的视场的先前体验、训练或知识。
附图说明
下面参考附图详细描述本发明的用于立体摄影地投影使用鱼眼镜头捕获的图像以用于特征检测的系统和方法,其中:
图1A是示出了根据本公开的一些实施例用于使用来自车辆的一个或更多个传感器的输出检测车辆的环境的特征的示例过程的示例数据流程图;
图1B描绘了根据本公开的一些实施例使用虚拟球体将原始图像投影到2D投影平面上以生成投影图像的示例的图示;
图2描绘了根据本公开的一些实施例的车辆上的宽视场传感器的示例视场的图示;
图3描绘了根据本公开的一些实施例的对应于具有不同视场的三个传感器的示例失真表示的图示;
图4描绘了根据本公开的一些实施例的利用视场虚拟地调整而捕获的示例图像的图示;
图5描绘了根据本公开的一些实施例的投影图像中的示例对象检测的图示;
图6是示出了根据本公开的一些实施例的用于使用在使用较窄视场传感器捕获的图像上训练的现有神经网络检测由宽视场传感器捕获的图像中的特征的示例过程的流程图;
图7是示出了根据本公开的一些实施例的用于检测由宽视场传感器捕获的虚拟地调整的投影图像中的特征的示例过程的流程图;
图8A是根据本公开一些实施例的示例自主车辆的图示;
图8B是根据本公开的一些实施例的图8A的示例自主车辆的相机位置和视场的示例;
图8C是根据本公开的一些实施例的图8A的示例自主车辆的示例系统架构的框图;
图8D是根据本公开的一些实施例的用于在基于云的服务器与图8A的示例自主车辆之间通信的系统图;以及
图9是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
公开了涉及使用神经网络立体摄影地投影使用鱼眼镜头捕获的图像进行特征检测的系统和方法。虽然可相对于示例自主车辆800(或者,在本文中称为“车辆800”或“本车800”,相对于图8A至图8D描述了其示例)描述本公开,但是这并非旨在限制。例如,本文所述的系统和方法可由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助系统(ADAS)中)、机器人、仓库车辆、越野车辆、飞行船只、船、摆渡车、紧急响应车辆、摩托车、电动自行车或机动自行车、飞机、施工车辆、水下船、无人机和/或其他车辆类型使用。此外,虽然本公开可以利用用于车辆应用的特征检测和分类来描述,但是这并非旨在是限制性的,并且本文所描述的系统和方法可以用于增强现实、虚拟现实、机器人、安全和监视、自主或半自主机器应用、和/或其中部署了宽视场传感器并且可以用于执行各种操作(例如,对象和/或特征检测或分类)的任何其他技术空间中。
如本文中所描述的,与常规方法相比,当前系统和方法提供了用于在实施例中使用在使用较窄的视场传感器(例如,具有小于120度的视场的传感器)捕获的图像上训练的现有深度神经网络(DNN)来实时地或接近实时地检测由宽视场传感器(例如,具有大于120度的视场的传感器)捕获的图像中的特征的技术。照此,可以利用来自宽视场传感器的实况感知来检测车辆的环境的图像中的特征(例如,对象、车道、行人)。在一些实施例中,来自宽视场传感器的图像数据可被投影到二维目标平面上以生成具有较低失真(例如,在图像的边缘上)的立体摄影投影图像,失真是指有较少的信息可用。在立体摄影投影之后,图像数据可被应用于在表示较窄视场的传感器数据上训练的现有DNN,使得不需要针对宽视场图像传感器重新训练DNN。然而,在其他实施例中,可通过在所投影的和/或虚拟地调整的图像(例如,具有虚拟地调整的视场的图像)上训练DNN来省略预训练的DNN,而不背离本公开的范围。
在一些实施例中,为了准确地投影图像数据中捕获的高度失真区域,由图像数据表示的图像的视场可在将图像数据应用于立体摄影算法之前被虚拟地调整。例如,图像传感器的视场可向上调整(例如,因为停车图像传感器或侧视图图像传感器可向下且朝向地平面成角度)。在一些实施例中,可以调整(例如,旋转)视场,使得图像传感器的虚拟中心与水平线(例如,现实世界的水平线)基本上对准。例如,旋转量可以基于图像传感器的安装角度的分析、使用图像传感器捕获的各个图像的分析和/或其他信息来确定。照此,可为虚拟经调整视场确定预定调整角。在一些实施例中,此调整可对应于将图像传感器上的点(例如,相机中心)与环境中的水平线大体上对准。在一些实施例中,水平线可对应于划定驾驶表面与图像中的天空相交处的界线。在此类实施例中,对视场的调整可包括,对于一个或更多个校准图像,调整视场,直到图像传感器上的点与如在一个或更多个校准图像中表示的水平线基本上对准。一旦确定了该对准,就可以确定调整角度(例如,通过在任何数量的校准图像上对角度求平均),并且所确定的调整角度可以用作对视场的虚拟调整。通过虚拟地调整视场,在其中表示有价值信息的图像的高度失真区中的像素可能变得失真较小,并且其中更多信息可用的图像数据的部分(例如,图像的中心)可能失真较大——但甚至在失真之后在图像的中心处可用的信息量可能足以用于准确处理。
另外,在一些实施例中,特征检测可用于确定特征和/或对象在世界-空间中的位置。在这样的示例中,可以使用传感器校准(例如,传感器的内在和/或外在属性)将图像-空间位置转换成世界-空间位置。特征和/或对象的世界-空间位置然后可由车辆的各个其他系统用于执行路径规划、障碍物回避、控制决策和/或其他自主或半自主操作。
照此,高视场相机的实况感知可被利用来使用现有DNN来生成对车辆环境的理解——例如,而无需重新训练DNN或训练新DNN。照此,与常规系统相比,使用来自宽视场传感器的传感器数据来执行对象检测、特征检测和/或其他计算所需的计算能力和人力的量可显著减少。此外,即使在DNN在投影和/或虚拟地调整的视场图像上被训练的情况下,与尝试在未投影和/或未调整的视场上训练DNN的常规系统相比,这些结果可能更准确和可靠。
对象和特征检测系统
在高水平下,可以使用位于或以其他方式布置在自主或半自主车辆上的传感器(例如,相机、RADAR传感器、LIDAR传感器等)来接收和/或生成传感器数据(例如,图像数据、LIDAR数据、RADAR数据等)。传感器可以是宽视场传感器(例如,具有等于或大于120度的视场的传感器)。传感器数据可应用于被训练和/或编程为生成表示投影图像的投影传感器数据的投影算法(例如,立体投影算法、球心投影算法等)。在使用立体投影算法的情况下,立体投影算法可以基于描绘宽视场传感器的视场的虚拟球体上的光线公式将传感器数据的像素投影到投影平面上。投影传感器数据可被应用于神经网络(例如,深度神经网络(DNN),诸如卷积神经网络(CNN)),该神经网络被训练成识别属于(作为非限制性示例)环境中的对象(例如,车辆、行人等)、环境的特征(例如,凸起的路面标记、震动带、彩色车道分隔物、人行道、交叉路口、岔路、道路布局、对象等)和/或与其有关的语义信息(例如,等待条件、对象类型、车道类型)的感兴趣区域。在一些示例中,检测到的对象或特征的图像-空间位置也可由DNN计算。如本文中所描述的,DNN可用从较窄视场传感器(例如,具有小于120度的视场的传感器)捕获的图像或其他传感器数据表示来训练(例如,预训练)。
在一些实施例中,球心投影算法可用于执行传感器数据的投影以生成供DNN使用的投影传感器数据。然而,球心投影对于宽视场传感器可能不那么准确,因为球心投影对于大于90度的视场可能失效或不可靠,其中图像数据上的某些像素的投影可能在目标平面上达到无穷大。照此,为了解决这个问题,图像数据的子集可被投影到不同平面上以解决更宽的视场。然而,这种部分投影在计算上可能是昂贵的,因为可能需要至少四个平面来覆盖整个视场。进一步,特征可能以不同投影平面中的各部分结束,从而导致DNN的输出不准确。
因此,在一些实施例中,可以使用立体摄影算法来将图像的像素投影到目标平面(例如,二维平面)上。虚拟球体可以用作传感器的虚拟视场,并且虚拟球体上的最低点可以用作投影的中心以将图像投影到目标平面上。对于目标平面的每个像素(例如,投影图像),基于投影的中心与目标平面上的像素之间的虚拟线与虚拟球体上的点(例如,像素)的交点,可以确定球体上的点被投影到该像素上。以此方式,目标平面或投影图像上的每个像素对应于在原始图像上采样的像素。通过以此方式产生投影图像,在二维平面上完全捕获每一原始图像,使得投影图像是可逆的,其中可使用光线公式将投影图像上的由神经网络检测到的特征回溯到原始图像以确定原始图像上的特征的位置。进一步,立体投影算法可以将由宽视场传感器捕获的图像投影到单个平面上,从而与将图像划分为各个部分并随后将所划分的部分投影在多个平面上的球心投影技术相比相对降低了计算成本。投影图像可包含由传感器捕获的原始图像的平面图,所述传感器通过保留原始未投影图像中具有最大失真的感兴趣区域而具有120度到360度之间的视场。
在一些示例中,传感器数据可经历预处理以虚拟地调整宽视场传感器的视场以生成经更新的图像,诸如图像的最失真——和潜在地信息量大——的区域(例如,边缘)可被重定位到虚拟球体的在投影期间像素信息被最多保留的区域。例如,可在竖直方向上调整宽视场传感器的虚拟视场,使得传感器的虚拟中心与真实世界的地平线大体上对准。在此类示例中,图像的虚拟中心可通过将虚拟球体旋转预定度数来竖直向上移动。预定度数可基于传感器校准,并且作为非限制性实例,可在20度到60度之间。例如,根据车辆上的传感器的位置和角度,可确定旋转度数。在一些示例中,可通过将形成原始图像的光线在将图像投影到所投影平面上时旋转预定度数来产生虚拟调整。经更新的图像可被应用于立体投影算法以生成投影图像以供应用于DNN。将传感器的虚拟中心与水平线对准可以允许投影与针对由传感器生成的所有传感器数据的常数对准,并且可以允许由传感器数据表示的图像的边缘与虚拟球体上的中心位置对准以用于保留信息最多的像素。
投影图像可被应用于DNN(例如,预训练的DNN)以检测与其对应的对象、特征和/或语义信息。在各实施例中,DNN的输出可被用来准确地跟踪对象,因为特征检测可被保存在宽视场传感器所捕获的图像的边缘处--例如,在没有立体摄影的情况下可能是最失真的并且因此最难以对其作出预测的图像的各部分。
一旦特征和/或对象被检测到,与其对应的位置可被转换成它们各自的世界-空间位置。这可使用对应于传感器的校准信息来完成,且可基于在处理期间对传感器数据的调整(例如,竖直旋转)。因此,可恢复图像-空间位置到来自未处理传感器数据的世界-空间位置的原始映射以便准备DNN的输出以供车辆用于执行一个或更多个操作。
参考图1A,图1A是示出了根据本公开的一些实施例用于使用来自车辆的一个或更多个传感器的输出来检测车辆的环境的特征的示例过程100的示例数据流程图。应当理解,本文描述的这个布置和其他布置仅作为示例被阐述,并且组件和/或过程的顺序可被调整而不偏离本公开的范围。进一步,可以实施除了本文中所描述的那些之外的附加或替代组件和/或过程。
过程100可以包括立体投影器106,该立体投影器在一个或更多个输入(例如,图像数据102、其他传感器数据等)上执行立体投影算法并且生成一个或更多个输出——如投影图像数据108。进一步,过程100可以包括一个或更多个机器学习模型110(例如,DNN),所述机器学习模型110接收一个或更多个输入(例如,投影图像数据108,具有或不具有来自FOV调整器104的视场调整)并且生成一个或更多个输出112。在一些示例中,当用于训练时,图像数据102可被称作训练图像数据。尽管主要相对于表示图像的图像数据讨论了图像数据102,但这并不旨在进行限制,并且图像数据102可以包括用于特征和/或对象检测的其他类型的传感器数据,如,例如由车辆800(图8A-图8D)的一个或更多个传感器生成的LIDAR数据、SONAR数据、RADAR数据等。
过程100可以包括从一个或更多个传感器生成和/或接收图像数据102。作为非限制性示例,图像数据102可以从由宽视场传感器(例如,具有大于120度的视场的传感器)捕获的车辆(例如,图8A-8C和本文描述的车辆800)的一个或更多个传感器接收。图像数据102可以被车辆使用,并且在过程100内,检测和/或分类对象或特征以帮助实时或接近实时地导航通过车辆的环境。图像数据102可以包括但不限于来自车辆的任何传感器的图像数据102,这些传感器包括例如并参见图8A-8C、一个或更多个立体相机868、一个或更多个广角相机870(例如,鱼眼相机)、一个或更多个红外相机872、一个或更多个环绕相机874(例如,360度相机)、和/或一个或更多个远程和/或中程相机878。在一些实施例中,除了图像数据102之外或作为另外一种选择,可使用来自任何数量的传感器类型的传感器数据,诸如但不限于RADAR传感器860、超声波传感器862、LIDAR传感器864和/或其他传感器类型。在一些实施例中,如本文中所描述,图像数据102和/或传感器数据可用具有大于120度(例如,120到360度)的传感场或视场的传感器产生。作为另一示例,图像数据102可包含从虚拟车辆或其他虚拟对象的任何数目个传感器产生的虚拟图像数据。在这样的示例中,虚拟传感器可以对应于虚拟车辆或模拟环境中的其他虚拟对象(例如,用于测试、训练和/或验证神经网络性能),并且虚拟图像数据可以表示由模拟或虚拟环境内的虚拟传感器捕获的图像数据。
在一些实施例中,图像数据102可包括表示图像的图像数据、表示视频的图像数据(例如,视频的快照)和/或表示由宽视场传感器(例如,具有大于120度的视场的传感器)捕获的传感器的传感场的表示的传感器数据(例如,LIDAR传感器的深度图、超声波传感器的值图等)。关于图像数据102,可以使用任何类型的图像数据格式,例如但不限于,压缩图像(如联合图像专家组(JPEG)或亮度/色度(YUV)格式)、压缩图像(如源于压缩视频格式(如H.264/高级视频编码(AVC)或H.265/高效视频编码(HEVC))的帧)、原始图像(如源于红色清晰蓝(RCCB)、红色清晰(RCCC)或其他类型的成像传感器)、和/或其他格式。另外,在一些实例中,图像数据102可在过程100内使用而无需任何预处理(例如,以原始或捕获格式),而在其他示例中,图像数据102可经历预处理(例如,噪声平衡、去马赛克、缩放、裁剪、扩增、白平衡、色调曲线调整等中的任一个或更多个,例如使用传感器数据预处理器(未示出))。如本文中所使用,图像数据102可参考未经处理图像数据、经预处理图像数据或其组合。
图像数据102可包括原始图像(例如,如由一个或更多个图像传感器捕获)、下取样图像、上取样图像、经裁剪或感兴趣区域(ROI)图像、另外增强的图像和/或其组合。在一些实施例中,可以使用使用较窄的视场传感器(例如,具有小于120度的视场的传感器)捕获的图像(和/或其他图像数据102)来训练一个或更多个机器学习模型110。
作为大于120度的视场的示例,并且参考图2,图2示出了根据本公开的一些实施例的车辆上的宽视场传感器的视场。例如,车辆210包括两个宽视场传感器,传感器212和传感器214。视场222可对应于传感器212且可为大约190度。类似地,视场224可对应于传感器214且可为大约190度。传感器212和传感器214可以各自表示车辆210的鱼眼相机(例如,车辆800的广角相机870)。在一些示例中,传感器212和传感器214中的一个或两个可以是用于辅助车辆210进行停车的停车相机,或者可以包括用于辅助车辆210进行车道变换、盲点监测等的侧视相机。
再次参考图1A,在部署期间,图像数据102可以被应用于FOV调整器104,例如以计算要被应用于立体平视投影器106的更新的图像数据。在一些实例中,图像数据102可经历预处理以虚拟地调整宽视场传感器的视场以产生经更新的图像数据,使得图像的最失真和潜在信息性最强及最重要区域(例如,边缘)可重定位到虚拟球体的在投影期间像素信息被最多保留的区域。例如,使用较窄视场传感器捕获的图像可在视场的边缘附近具有最小失真(例如,如图3的图像310所示)。然而,使用较高视场传感器捕获的图像通常在边缘处具有重失真,其中,每个像素可用的信息较少(例如,如图3的图像330所示)。
例如,FOV调整器104可在竖直方向(例如,向上或向下)调整宽视场传感器的虚拟视场。由于传感器的安装角度(例如,对于停车传感器和侧视图传感器面向下,对于交叉口分析传感器面向上,等等),传感器的视场对于每一实施例可能不是理想的。对于非限制性实例,朝向地面成40度角的停车传感器可能不具有对于检测相邻车道中的车辆或沿着街道的一侧停车的理想视场。然而,对于对象或特征检测任务,利用由向下成角度的停车传感器生成的图像数据仍可能是有利的。因此,图像数据可被更新以表示朝向地面以小于40度角(例如,至20度或0度)的停车传感器的虚拟视场。在一些实施例中,如本文中所描述,可虚拟地调整视场,使得传感器的虚拟中心与真实世界的地平线大体上对准。在这样的示例中,图像数据102中的图像的虚拟中心可以通过将虚拟球体旋转预定度数而竖直地移动——例如,向上或向下移动。虚拟球体可以用作用于捕获图像数据102的宽视场传感器的虚拟视场,并且表示虚拟地调整的视场的更新的图像数据可以应用于立体投影器106。
在一些示例中,预定度数可基于传感器校准,并且作为非限制性实例,可在20度到60度之间。例如,FOV调整器104可基于车辆800上的传感器的位置和角度确定虚拟球体的旋转度数。在一些示例中,可通过将形成图像数据102的原始图像的光线旋转预定度数以产生经更新的图像来产生虚拟调整。将宽视场传感器的虚拟中心与水平线对准可以允许图像数据102中的图像的边缘与虚拟球体上的中心位置对准,以用于保存未调整的图像中存在最大失真的信息。
作为另一个示例,并且参考图3,图3示出了根据本公开的一些实施方式使用具有不同视场的三个传感器捕获的图像。图像310是使用具有六十度的水平视场的传感器捕获的图像。如图像310中可见,在图像中基本上没有失真。大多数机器学习模型(例如,一个或更多个机器学习模型110)被训练成使用具有与图像310相似的视场的训练图像来检测特征。由于缺乏失真,机器学习模型可以能够准确且高效地检测图像(诸如图像310)中的特征。类似地,图像320是使用具有大约120度的水平视场的传感器捕获的图像。随着视场增加,在所捕获的图像的边缘处的失真也增加。可以看出,图像320包括图像的右边缘和左边缘上的失真。然而,图像320可以是几乎完全或基本上直线的,并且机器学习模型可以仍然能够在整个图像320中准确地检测特征,因为图像320中的信息损失仍然是最小的。图像330是使用具有190度的视场的传感器捕获的图像。在图像的左边缘和右边缘处的像素展现出比图像330的中间的像素更高水平的失真。在机器学习模型(诸如一个或更多个机器学习模型110)使用由较窄的视场传感器(例如,具有小于120度的视场的传感器)捕获的图像来训练的情况下,机器学习模型可能不能够在没有预处理的情况下检测失真区域中的特征,诸如图像330的边缘。因此,过程100可以用于预处理使用更接近图像330中所表示的视场的视场捕获的图像,从而使得机器学习模型110(例如,在较低视场图像上预训练和/或在经调整的视场或投影图像上训练)可以相对于图像330准确地进行预测。
作为进一步的示例,并且关于图4,图4示出了根据本公开内容的一些实施例的使用FOV调整器104调整的虚拟地调整的图像。图像410可以是由车辆(例如,车辆800)的高视场(例如,大于120度)传感器440捕获的原始图像。图1A的FOV调整器104可用于虚拟地调整捕获图像410的宽视场传感器440的视场444A以生成经更新的图像422,使得图像的最失真和潜在信息性最强的区域(例如,边缘412和414)可被重定位到虚拟球体的在投影期间像素信息被最多保留的区域(例如,区域422和424)。经更新的图像420可通过将传感器440的视场444A竖直调整到经更新的视场444B来生成,使得传感器的虚拟中心虚拟地与真实世界中与传感器在真实世界中的实际对齐(例如,诸如真实世界的地平线426)不同的区域对齐。如可以看到的,经更新的图像420的区域422和424保存来自图像410的边缘412和414的像素信息。例如,图像410可以由宽视场传感器440捕获,使得传感器的中心向下面向街道或地平面442,并且在图像420中的调整之后传感器的虚拟中心更面向地平线426(例如,道路或地平面422与远处的天空的相交)。照此,通过向上旋转传感器的虚拟中心,图像410中失真最大的区域422和424可被更新,使得在使用立体投影器106进行投影期间保存像素信息。
再次参见图1A,经更新的图像数据(例如,在视场调整之后)和/或图像数据102可被应用于被训练和/或编程以生成投影图像数据108的立体投影器106。立体投影器106可执行立体投影算法、球心投影算法和/或另一类型的投影算法。立体投影器106可基于描绘用于捕获图像数据102的宽视场传感器的视场的虚拟球体上的光线公式将图像数据102的像素投影到二维(2D)投影平面(例如,目标平面)上。虚拟球体可以用作宽视场传感器的视场,并且图像数据102的每个像素可以被投影到2D投影平面上。投影图像数据108可表示投影图像。
在一些示例中,立体投影器106可使用球心投影算法(并且可替换地称为“球心投影器”或“投影器”)来生成投影图像数据108。虚拟球体的中心可用作投影的中心以将图像数据102投影到2D投影平面上。对于2D投影平面的每个像素(例如,投影图像数据108),基于投影的中心与目标平面上的像素之间的虚拟线与虚拟球体上的点(例如,像素)的相交,可以确定虚拟球面上的点被投影到该像素上。以此方式,目标平面上的每一像素或投影图像数据108可对应于在图像数据102的原始图像上取样的像素。然而,球心投影算法可能无法投影大于90度的视场中的像素,从而使得从具有大于90度的视场的传感器捕获的图像的其余像素留在2D投影平面之外,因为对于图像数据102的那些像素的投影可能达到无穷大而不与2D投影平面相交。在此些实例中,可将图像数据102的子集投影到单独的2D投影平面上以考虑较宽的视场(例如,大于90度的视场)。单独的2D投影平面可以用作要应用于机器学习模型110以检测特征和/或对象的投影图像数据108。然而,此部分及多个投影在计算上可能是昂贵的,因为可能需要至少四个投影平面来覆盖图像数据102的整个视场。进一步,单个特征或对象可以用跨不同的投影平面表示的部分来结束,从而导致机器学习模型110难以预测这样的特征和/或对象。
在其他示例中,立体投影器106可使用立体投影算法来通过将图像数据102的图像的像素或经更新的图像数据投影到单个2D投影平面上来生成投影图像数据108。在这样的示例中,虚拟球体可以用作传感器的虚拟视场,并且虚拟球体上的最低(例如,竖直最低)点可以用作投影的中心以将图像数据102投影到2D投影平面上(例如,如图1A和图1B所示)。对于2D投影平面的每个像素,基于投影的中心和2D投影平面上的像素之间的虚拟线与虚拟球面上的点(例如,像素)的交点,可以确定虚拟球面上的点被投影到该像素上。以此方式,2D投影平面上的每一像素或投影图像数据108的投影图像上的每一像素可对应于在图像数据102的原始图像和/或经更新的图像数据上取样的像素。通过以此方式生成投影图像,可以在二维平面上完全捕获由图像数据102表示的每个原始图像和/或由经更新的图像数据表示的经更新的图像,从而使得投影图像是可逆的,其中,可以使用光线公式来将由机器学习模型110在投影图像上检测到的特征回溯到图像数据102的原始图像以确定该特征在图像数据102的原始图像上的位置。作为非限制性实例,除其他外,图1B尤其示出了如何使用虚拟球体将原始图像投影到2D投影平面上以生成投影图像数据108。
进一步,立体投影器106可使用立体投影算法来将由宽视场传感器捕获的图像数据102的图像投影到单个平面上,从而与将图像划分为各个部分并随后将所划分的部分投影在多个平面上的球心投影技术相比相对降低了计算成本。投影图像数据102中的投影图像可包括通过保留原始未投影图像中具有最大失真的感兴趣区域而由具有120度与360度之间的视场的传感器捕获的图像数据102的原始图像的平面视图。具体地,FOV投影器104可将图像数据102的失真部分(例如,边缘)移动到经更新的图像数据中的位置,使得经更新的图像数据中的失真部分位于立体投影器106被配置成保留更多信息的区域中。虽然图像数据102的非失真部分可以位于立体投影器106可能未被配置成用于保存同样多的信息的区域中,但是图像数据102本身在图像的那些区域(例如,中心)中包括更多信息,从而使得机器学习模型110即使在信息丢失的情况下仍可以能够准确地预测此类区域中的特征。例如,参考图5,对象(或车辆)514可能在投影之后显得失真,但是由于与对象514相对应的像素数目,对象514仍然可以通过机器学习模型110准确地检测和/或分类。
作为立体投影的示例,并且参照图1B,图1B示出了根据本公开的一些实施例如何使用虚拟球体将原始图像投影到2D投影平面上以生成投影图像。虚拟球体120被用作捕获在球体的轮廓中表示的图像的传感器的虚拟视场,并且虚拟球体上的最低(例如,竖直最低)点被用作图像到目标平面118上的投影的中心122。对于该目标平面的每个像素,基于该投影的中心122与该目标平面118上的像素之间的虚拟线与该虚拟球体上的点(例如,像素)的交点,确定该虚拟球体上的点被投影到该像素上。例如,基于中心122与像素130之间的虚拟线126的交点,确定虚拟球体120上的点128被投影到目标平面118的像素130上。类似地,虚拟球体上的点134、140、144和150分别基于中心122与相应像素之间的虚拟线132、138、142和148的交点被投影到目标平面118的像素136、140、146和152上。照此,目标平面118上的每一像素可对应于在原始图像上取样的像素以生成投影图像。
再次参见图1A,可以将投影图像数据108应用于被训练成从图像数据102检测输出112的机器学习模型110——例如,在视场调整和/或投影之后。机器学习模型110可以使用投影图像数据108来计算输出112,该输出112可以应用于解码器或一个或更多个后处理组件(例如,输出转换器)以生成关于车辆800的环境的信息。可以训练机器学习模型来识别与车辆800的环境有关的感兴趣区域(例如,作为输出112中的一个)。例如,感兴趣区域以及随后的一个或更多个输出112可以包括与其相关的对象(例如,车辆、行人、停止标志等)、特征(例如,凸起的路面标记、震动条带、彩色车道分隔物、人行道、交叉路口、岔路、道路布局等)和/或语义信息(例如,分类、等待状况、对象类型、车道类型等)。在一些示例中,一个或更多个机器学习模型110可以进一步被训练以确定所检测到的对象或特征的图像-空间位置。在一些实施例中,如本文所描述的,一个或更多个机器学习模型110可以利用从较窄视场传感器(例如,具有小于120度的视场的传感器)捕获的图像或其他传感器数据表示来训练(例如,预训练)。
虽然在本文中关于将深度神经网络(DNN)以及具体地卷积神经网络(CNN)用作机器学习模型110描述了示例,但是这不旨在是限制性的。例如但不限于,一个或更多个机器学习模型110可以包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最近邻(Knn)、K均值聚类、随机森林、维度减少算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆/LSTM、霍普菲尔德(Hopfield)、玻尔兹曼(Boltzmann)、深度信念、解卷积、生成式对抗(generativeadversarial)、液态机器等)、通道检测算法、计算机视觉算法和/或其他类型的机器学习模型的一个或更多个机器学习模型。
作为示例,诸如,一个或更多个机器学习模型110包括CNN的情况下,一个或更多个机器学习模型110可以包括任何数量的层。所述层中的或以上可包含输入层。输入层可保持与图像数据102和/或投影图像数据108相关联的值(例如,在后处理之前或之后)。例如,当图像数据102和/或投影图像数据108是图像时,输入层可将表示图像的原始像素值的值保存为体积(例如,宽度、高度和颜色通道(例如,RGB),例如32x32x3)。
一个或更多个层可以包括卷积层。卷积层可以计算连接到输入层中的局部区域的神经元的输出,每个神经元计算它们的权重与它们在输入体积中连接到的小区域之间的点积。卷积层的结果可以是另一体积,其中一维基于所应用的滤波器的数量(例如,宽度、高度和滤波器的数量,诸如32x32x12,如果12是滤波器的数量)。
所述层中的一个或更多个可以包括整流线性单元(ReLU)层。ReLU层可以应用逐元素激活函数,例如max(0,x),在零处阈值化。得到的ReLU层的体积可以与ReLU层的输入的体积相同。
这些层中的一个或更多个可以包括池化层。池化层可沿空间维度(例如,高度和宽度)执行下采样操作,这可导致比池化层的输入更小的体积(例如,从32x32x12输入体积起的16x16x12)。
这些层中的一个或更多个可以包括一个或更多个全连接层。全连接层中的每个神经元可以连接到先前体积中的每个神经元。全连接层可以计算类别得分,并且所得到的体积可以是1x1x类别的数目。在一些示例中,CNN可以包括全连接层,使得可以将CNN的层中的一个或更多个层的输出作为输入提供给CNN的全连接层。在一些示例中,一个或更多个卷积流可以由机器学习模型110实现,并且一些或所有卷积流可以包括相应的全连接层。
在一些非限制性实施例中,机器学习模型110可以包括一系列卷积层和最大池化层以促进图像特征提取,接着是多尺度扩张卷积层和上采样层以促进全局上下文特征提取。
虽然在本文中相对于机器学习模型110讨论了输入层、卷积层、池化层、ReLU层和全连接层,但是这不旨在是限制性的。例如,可以在一个或更多个机器学习模型110中使用附加的或替代的层,诸如归一化层、SoftMax层、和/或其他层类型。
在机器学习模型110包括CNN的实施例中,可以取决于实施例使用CNN的层的不同顺序和数量。换言之,一个或更多个机器学习模型110的层的顺序和数量不限于任何一个架构。
此外,一些层可以包括参数(例如,权重和/或偏置),诸如卷积层和全连接层,而其他层可以不包括,诸如ReLU层和池化层。在一些示例中,参数可以由机器学习模型110在训练期间学习。进一步,一些层可以包括附加超参数(例如,学习速率、跨越、时期(epoch)等),诸如卷积层、全连接层和池化层,而其他层可以不包括,诸如ReLU层。参数和超参数不受限制并且可以取决于实施例而不同。
作为输出112的示例,并且参见图5,图5根据本公开的一些实施例示出了使用神经网络的图像中的目标检测。图像500可表示由车辆(诸如图8A-8D的车辆800)的宽视场传感器(例如,视场大于120度的传感器、鱼眼相机、广角相机870、环绕相机874、停车辅助相机等)捕获的图像。如本文所描述的,图1A的一个或更多个机器学习模型110可以用于检测图像500中的对象512、514、和516。在将图1B的投影图像数据108应用于机器学习模型110之前,立体投影器106可用于将图像500投影到2D目标平面上。在一些非限制性实施例中,可以使用从较窄视场传感器(例如,具有小于120度的视场的传感器)捕获的图像来训练一个或更多个机器学习模型110。以此方式,可以利用现有的机器学习模型来检测从与训练图像不同的视场捕获的图像中的特征,而不需要对机器学习模型110进行重新训练。此外,由于调整后的视场和/或投影,即使在视场调整和/或投影之前的原始图像的失真区域——例如,图像的对应于对象(例如,车辆)512和516的区域——中,也可检测特征和/或对象。如此,原始图像中可能具有最多失真但表示重要信息(例如,对象512和516的位置)的部分可能失真较少,并且原始图像中没有失真的部分(例如,对应于对象514的部分)可能具有较多失真,但仍然维持足够的像素来表示它以至于一个或更多个机器学习模型110仍然可以准确地预测与其对应的输出112。
再次参见图1A,在一些示例中,一个或更多个输出112可以应用于输出转换器114以便对一个或更多个机器学习模型110的一个或更多个输出112进行后处理。在一些示例中,一旦在一个或更多个机器学习模型110的一个或更多个输出112中检测到特征,则对应于特征的位置可以被转换或映射到其相应的世界-空间位置。输出转换器114可使用对应于捕获图像数据102的传感器的校准信息(例如,内在和/或外在参数,诸如传感器模型、传感器在车辆800上的位置和取向、焦距、透镜畸变、姿态等)和/或在处理期间由FOV调整器104对图像数据102作出的调整(例如,竖直旋转),以将图像-空间位置从输出112转换成世界-空间位置。因此,可以恢复来自未处理的传感器数据的图像-空间位置到世界-空间位置的原始映射,以便准备一个或更多个机器学习模型110的一个或更多个输出112以供车辆800的一个或更多个控制组件116在执行一个或更多个操作时使用。
在一些实施例中,一个或更多个机器学习模型110的一个或更多个输出112可以用于准确地跟踪对象。例如,因为特征检测可以保存在由宽视场传感器捕获的图像数据102的图像的边缘处,所述图像数据102的图像最初是失真的,所以可以在整个视场中准确地跟踪对象或特征(例如,包括在没有立体投影的情况下可能是最失真的并且因此最难以对其做出预测的图像的部分)。可在图像数据102的后续图像中跟踪包含环境中的特征和/或对象的输出112,且在一些实例中,可使用时间分析来跟踪特征,从当在视场的一个边缘处检测到特征时到在视场的另一边缘处检测到特征时。照此,在执行跟踪的情况下,输出转换器114可使用对象和/或特征的经真实世界转换的输出来产生对应于其的位置或移动历史。
一旦确定和/或转换一个或更多个输出112,该信息可以被传递到系统的一个或更多个控制组件116以执行一个或更多个操作。例如,在系统是本文所描述的车辆800的情况下,一个或更多个输出112和/或转换的输出可以被传递到自主驾驶软件栈的一个或更多个层(例如,规划层、控制层、世界模型管理器、感知层、驾驶栈的障碍物回避层、驾驶栈的致动层等)以确定适当的控制决策。因此,一个或更多个控制组件116可以做出控制决策,该控制决策可以包括建议路径规划、障碍物回避、和/或控制决策中的一项或更多项——如在哪里停止、驾驶多快、使用什么路径来安全穿越环境、其他车辆或行人可以被定位在哪里、和/或类似物。在任何示例中,并且相对于自主或半自主驱动,控制决策可以包括与驾驶栈的感知层、驾驶栈的世界模型管理层、驾驶栈的计划层、驾驶栈的控制层、驾驶栈的障碍物回避层、驾驶栈的致动层、和/或驾驶栈的另一层、特征、或功能相对应的任何决策。在一些示例中,过程100可以在系统内操作的任何数量的机器学习模型110上执行。例如,自主驾驶软件栈可以依赖于成百上千的机器学习模型110用于有效和安全的操作,并且任何数量的这些模型可以经受过程100以便在利用具有较大视场(例如,大于120度)的传感器的同时确保安全和有效的操作。如此,如本文所描述的,可以针对与驾驶栈的一个或更多个层相对应的任何数量的不同操作并且使用任何数量的机器学习模型110来单独地执行过程100。作为示例,可以使用第一机器学习模型相对于驾驶栈的感知层针对对象检测操作确定第一检测,并且可以使用被训练用于在车道线上回归的第二机器学习模型相对于驾驶栈的规划层针对路径规划确定第二检测。
现在参见图6和图7,本文描述的方法600和700的每个框包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,不同功能可以通过执行存储在存储器中的指令的处理器来实现。方法600和700还可以体现为存储在计算机存储介质上的计算机可用指令。仅举几例,方法600和700可以由独立应用、服务或托管服务(独立或与其他托管服务组合)或到另一产品的插件提供。此外,通过示例的方式,关于图1A的过程100和图8A-8D的车辆800描述方法600和700。然而,这些方法可以另外地或可替代地由任何一个系统或在任何一个进程内、或系统和过程的任何组合来执行,包括但不限于在此描述的那些。
现在参照图6,图6是示出了根据本公开的一些实施例的用于使用在使用较窄视场传感器捕获的图像上训练的现有神经网络检测由宽视场传感器捕获的图像中的特征的方法600的流程图。在框B602处,方法600包括接收表示使用具有视场的第一图像传感器生成的图像的图像数据。例如,可接收图像数据102,其中图像数据102表示从宽视场传感器(例如,具有120度或更大的视场的传感器)捕获的图像。
在框B604处,方法600包括将图像数据应用于立体投影算法以生成表示投影图像的投影图像数据。例如,图像数据102可应用于执行立体投影算法的立体投影器106以产生代表通过将图像数据102的像素投影到2D投影或目标平面上而产生的投影图像的投影图像数据108。
在框B606处,方法600包括将投影图像数据应用于神经网络,该神经网络被训练成检测由训练图像数据表示的特征,该训练图像数据表示使用具有小于视场的视场的一个或更多个第二图像传感器所生成的图像。例如,可以将投影图像数据108应用于一个或更多个机器学习模型110,所述机器学习模型被训练成用于对由训练图像数据所表示的特征和/或对象进行检测和/或分类,所述训练图像数据表示使用较窄的视场传感器(例如,具有小于120度的视场的传感器)生成的图像。
在框B608处,方法600包括:使用神经网络并且至少部分地基于投影图像数据来计算表示与一个或更多个特征相对应的特征检测的数据。例如,一个或更多个机器学习模型110可以基于投影图像数据108计算一个或更多个输出112。输出112可包括表示与投影图像数据108中的一个或更多个特征相对应的特征和/或目标检测的数据。
现在参考图7,图7是示出了根据本公开的一些实施例的用于检测由宽视场传感器获取的图像中的特征的方法700的流程图。在框B702处,方法700包括接收表示使用具有大于或等于120度的视场的第一图像传感器生成的图像的图像数据。例如,可接收图像数据102,其中图像数据表示从宽视场传感器(例如,具有120度或更大的视场的传感器)捕获的图像。
在框B704处,方法700包括虚拟地调整第一图像传感器的视场。例如,FOV调整器104可虚拟地调整用于捕获图像数据102的图像传感器的视场。
在框B706处,方法700包括至少部分基于图像数据生成与虚拟地调整的视场相对应的经更新的图像数据。例如,经更新的成像数据可以由FOV调整器104生成,其对应于虚拟地调整的视场。
在框B708处,方法700包括将更新的图像数据应用于立体投影算法以生成表示投影图像的投影图像数据。例如,经更新的图像数据可应用于执行立体投影算法的立体投影器106以产生表示通过将经更新的图像数据的像素投影到2D投影或目标平面上而产生的投影图像的投影图像数据108。
在框B710处,方法700包括将投影图像数据应用于机器学习模型或计算机视觉算法中的一者。例如,可以将投影图像数据108应用于机器学习模型110。
在框712处,方法700包括使用机器学习模型或计算机视觉算法中的一者且至少部分基于投影图像数据来计算表示与一个或更多个特征相对应的特征检测的数据。例如,一个或更多个机器学习模型110可以基于投影图像数据108计算一个或更多个输出112。输出112可包括表示与由投影图像数据108表示的一个或更多个特征和/或对象相对应的特征和/或对象检测或分类的数据。
示例自主车辆
图8A是根据本公开的一些实施例的示例自主车辆800的图示。自主车辆800(可替代地在此被称为“车辆800”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆、救护车、船、建筑车辆、水下船只、无人机和/或另一类型的车辆(例如,无人机和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related to DrivingAutomation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆800可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆800可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆800可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆800可以包括推进系统850,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统850可以连接到可以包括变速器的车辆800的传动系以便实现车辆800的推进。可以响应于接收到来自油门/加速器852的信号而控制推进系统850。
可以包括方向盘的转向(steering)系统854可以用来在推进系统850操作时(例如在车辆运动时)使车辆800转向(例如沿着希望的路径或路线)。转向系统854可以接收来自转向致动器856的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统846可以用来响应于接收到来自制动致动器848和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)804(图8C)和/或一个或更多个GPU的一个或更多个控制器836可以向车辆800的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器848操作车辆制动器、经由一个或更多个转向致动器856操作转向系统854、经由一个或更多个油门/加速器852操作推进系统850的信号。一个或更多个控制器836可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆800。一个或更多个控制器836可以包括用于自主驾驶功能的第一控制器836、用于功能性安全功能的第二控制器836、用于人工智能功能(例如计算机视觉)的第三控制器836、用于信息娱乐功能的第四控制器836、用于紧急情况下的冗余的第五控制器836和/或其他控制器。在一些示例中,单个控制器836可以处理上述功能中的两个或更多,两个或更多控制器836可以处理单个功能,和/或其任意组合。
一个或更多个控制器836可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆800的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器858(例如全球定位系统传感器)、RADAR传感器860、超声传感器862、LIDAR传感器864、惯性测量单元(IMU)传感器866(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风896、立体相机868、广角相机870(例如鱼眼相机)、红外相机872、环绕相机874(例如360度相机)、远程和/或中程相机898、速度传感器844(例如用于测量车辆800的速率)、振动传感器842、转向传感器840、制动传感器(例如作为制动传感器系统846的部分)和/或其他传感器类型。
控制器836中的一个或更多个可以接收来自车辆800的仪表组832的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器834、听觉信号器、扬声器和/或经由车辆800的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图8C的HD地图822)、位置数据(例如,车辆800例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器836所感知的关于对象和对象状态的信息等等。例如,HMI显示器834可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆800还包括网络接口824,其可以使用一个或更多个无线天线826和/或调制解调器通过一个或更多个网络通信。例如,网络接口824可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线826也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图8B为根据本公开一些实施例的用于图8A的示例自主车辆800的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆800上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆800的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、820fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆800前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器836和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞回避。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机870,其可以用来感知从周边进入视场的对象(例如行人、十字路口交通或者自行车)。尽管图8B中图示出仅仅一个广角相机,但是在车辆800上可以存在任意数量的广角相机870。此外,远程相机898(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机898也可以用于对象检测和分类以及基本的对象跟踪。
一个或更多个立体相机868也可以包括在前置配置中。立体相机868可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机868可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机868。
具有包括车辆800的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机874(例如如图8B中所示的四个环绕相机874)可以置于车辆800上。环绕相机874可以包括广角相机870、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机874(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆800的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机898、立体相机868、红外相机872等等)的相机。
图8C为根据本公开一些实施例的用于图8A的示例自主车辆800的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在存储器中的指令而实现。
图8C中车辆800的部件、特征和系统中的每一个被图示为经由总线802连接。总线802可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆800内部的网络,用来辅助控制车辆800的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线802描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线802,但是这并不意图是限制性的。例如,可以存在任意数量的总线802,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线802可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线802可以用于碰撞回避功能,并且第二总线802可以用于驱动控制。在任何示例中,每条总线802可以与车辆800的任何部件通信,并且两条或更多总线802可以与相同的部件通信。在一些示例中,车辆内的每个SoC 804、每个控制器836和/或每个计算机可以有权访问相同的输入数据(例如来自车辆800的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆800可以包括一个或更多个控制器836,例如本文关于图8A所描述的那些控制器。控制器836可以用于各种各样的功能。控制器836可以耦合到车辆800的任何其他不同的部件和系统,并且可以用于车辆800的控制、车辆800的人工智能、用于车辆800的信息娱乐和/或类似物。
车辆800可以包括一个或更多个片上系统(SoC)804。SoC 804可以包括CPU 806、GPU 808、处理器810、高速缓存812、加速器814、数据存储816和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 804可以用来控制车辆800。例如,一个或更多个SoC804可以在系统(例如车辆800的系统)中与HD地图822结合,所述HD地图可以经由网络接口824从一个或更多个服务器(例如图8D的一个或更多个服务器878)获得地图刷新和/或更新。
CPU 806可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU 806可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 806在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 806可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 806(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 806的簇的任意组合能够在任何给定时间是活动的。
CPU 806可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 806可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 808可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU808可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 808可以使用增强张量指令集。GPU 808可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU 808可以包括至少八个流式微处理器。GPU 808可以使用计算应用编程接口(API)。此外,GPU808可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 808进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 808。然而,这并不意图是限制性的,并且GPU 808可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
GPU 808可以包括在一些示例中提供大约900GB/s的峰值存储器带宽的高带宽存储器(HBM)和/或16GB HBM2存储器子系统。在一些示例中,除了HBM存储器之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 808可以包括统一存储器技术,其包括访问计数器以允许存储器页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 808直接访问CPU 806页表。在这样的示例中,当GPU 808存储器管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU806。作为响应,CPU 806可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 808。这样,统一存储器技术可以允许单个统一虚拟地址空间用于CPU 806和GPU 808二者的存储器,从而简化了GPU 808编程和将应用程序移(port)到GPU 808。
此外,GPU 808可以包括访问计数器,其可以跟踪GPU 808访问其他处理器的存储器的频率。访问计数器可以帮助确保存储器页面移至最频繁地访问这些页面的处理器的物理存储器。
SoC 804可以包括任意数量的高速缓存812,包括本文描述的那些高速缓存。例如,高速缓存812可以包括CPU 806和GPU 808二者可用的L3高速缓存(例如,其连接到CPU 806和GPU 808二者)。高速缓存812可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)跟踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 804可以包括算术逻辑单元(ALU),算术逻辑单元可以在相对于车辆800的各种任务或操作中的任何一种执行处理(如处理DNN)时被利用。此外,SoC 804可以包括用于在系统内执行数学运算的浮点单元(FPU)或其他数学协处理器或数字协处理器类型。例如,SoC 104可以包括被集成为CPU806和/或GPU808内的执行单元的一个或更多个FPU。
SoC 804可以包括一个或更多个加速器814(例如硬件加速器、软件加速器或者其组合)。例如,SoC 804可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上存储器。该大型片上存储器(例如4MB SRAM)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充GPU 808,并且卸载GPU 808的一些任务(例如释放GPU 808的更多周期以用于执行其他任务)。作为一个示例,加速器814可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器814(例如硬件加速簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 808的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 808针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 808和/或其他加速器814。
加速器814(例如硬件加速簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接存储器访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的存储器。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 806访问系统存储器。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量存储器(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用存储器。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)存储器,以增强总体系统安全性。
加速器814(例如硬件加速簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器814的高带宽、低延迟SRAM。在一些示例中,片上存储器可以包括由例如且不限于八个现场可配置的存储器块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对存储器块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的存储器。PVA和DLA可以经由向PVA和DLA提供高速存储器访问的主干(backbone)访问存储器。主干可以包括(例如使用APB)将PVA和DLA互连到存储器的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 804可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线追踪相关操作。
加速器814(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆800取向、距离相关的惯性测量单元(IMU)传感器866输出,从神经网络和/或其他传感器(例如LIDAR传感器864或RADAR传感器860)获得的对象的3D位置估计等。
SoC 804可以包括一个或更多个数据存储816(例如存储器)。数据存储816可以是SoC 804的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储816可以容量足够大以存储神经网络的多个实例。数据存储812可以包括L2或L3高速缓存812。对数据存储816的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器814关联的存储器的引用。
SoC 804可以包括一个或更多个处理器810(例如嵌入式处理器)。处理器810可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 804启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 804热和温度传感器管理和/或SoC 804功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC804可以使用环形振荡器检测CPU 806、GPU 808和/或加速器814的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 804置于较低功率状态和/或将车辆800置于司机安全停车模式(例如使车辆800安全停车)。
处理器810可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器810可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器810可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器810可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器810可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器810可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机870、环绕相机874和/或对驾驶室内监控相机传感器执行镜头失真校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 808无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 808上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 808的负担以提高性能和响应能力。
SoC 804可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 804可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 804可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC 804可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器864、RADAR传感器860等等)的数据,来自总线802的数据(例如车辆800的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器858的数据。SoC 804可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU806。
SoC 804可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 804可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 806、GPU 808和数据存储816结合时,加速器814可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 820)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 808上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆800的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 804提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风896的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 804使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器858所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器862的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 804的CPU818(例如分立的CPU或dCPU)。CPU 818可以包括例如X86处理器。CPU818可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 804之间潜在地不一致的结果,和/或监控控制器836和/或信息娱乐SoC 830的状态和健康状况。
车辆800可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 804的GPU820(例如分立的GPU或dGPU)。GPU 820可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来基于来自车辆800的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆800可以还包括网络接口824,该网络接口可以包括一个或更多个无线天线826(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口824可以用来使能通过因特网与云(例如与服务器878和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆800提供关于接近车辆800的车辆(例如车辆800前面、侧面和/或后面的车辆)的信息。该功能可以是车辆800的协作自适应巡航控制功能的部分。
网络接口824可以包括提供调制和解调功能并且使得控制器836能够通过无线网络通信的SoC。网络接口824可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆800可以还包括可包括片外(例如SoC 804外)存储装置的数据存储828。数据存储828可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆800可以还包括GNSS传感器858。GNSS传感器858(例如GPS和/或辅助GPS传感器)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器858,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆800可以还包括RADAR传感器860。RADAR传感器860可以甚至在黑暗和/或恶劣天气条件下也由车辆800用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器860可以使用CAN和/或总线802(例如以传输RADAR传感器860生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器860可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器860可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器860可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆800的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆800的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达860m(前面)或80m(后面)的范围以及高达42度(前面)或850度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于盲点检测和/或变道辅助。
车辆800可以还包括超声传感器862。可以置于车辆800的前面、后面和/或侧面的超声传感器862可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器862,并且不同的超声传感器862可以用于不同的检测范围(例如2.5m、4m)。超声传感器862可以操作于功能安全级别的ASIL B。
车辆800可以包括LIDAR传感器864。LIDAR传感器864可以用于对象和行人检测、紧急制动、碰撞回避和/或其他功能。LIDAR传感器864可以为功能安全级别的ASIL B。在一些示例中,车辆800可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器864(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器864可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器864可以具有例如近似800m的广告范围,精度为2cm-3cm,支持800Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器864。在这样的示例中,LIDAR传感器864可以实现为可以嵌入到车辆800的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器864可以甚至对于低反射率对象提供高达820度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器864可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆800的每一侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器864可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器866。在一些示例中,IMU传感器866可以位于车辆800的后轴的中心。IMU传感器866可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器866可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器866可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器866可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器866可以使得车辆800能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器866的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器866和GNSS传感器858可以结合到单个集成单元中。
该车辆可以包括置于车辆800中和/或车辆800周围的麦克风896。除别的以外,麦克风896可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机868、广角相机870、红外相机872、环绕相机874、远程和/或中程相机898和/或其他相机类型。这些相机可以用来捕获车辆800整个外围周围的图像数据。使用的相机类型取决于实施例和车辆800的要求,并且相机类型的任意组合可以用来提供车辆800周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图8A和图8B更详细地进行了描述。
车辆800可以还包括振动传感器842。振动传感器842可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器842时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆800可以包括ADAS系统838。在一些示例中,ADAS系统838可以包括SoC。ADAS系统838可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器860、LIDAR传感器864和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆800前方的车辆的距离,并且自动地调整车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆800改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口824和/或无线天线826经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆800前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆800前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器860。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆800穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆800开始离开车道,那么LKA系统提供纠正车辆800的转向输入或制动。
BSW系统检测并向驾驶员警告汽车盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆800倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆800中,在冲突结果的情况下,车辆800本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器836或第二控制器836)的结果。例如,在一些实施例中,ADAS系统838可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统838的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的存储器运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 804的部件和/或作为SoC 804的部件而被包括。
在其他示例中,ADAS系统838可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统838的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统838由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆800可以还包括信息娱乐SoC 830(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 830可以包括可以用来向车辆800提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、Wi-Fi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 830可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、Wi-Fi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器834、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 830可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统838的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 830可以包括GPU功能。信息娱乐SoC 830可以通过总线802(例如CAN总线、以太网等)与车辆800的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC830可以耦合至监督MCU,使得在主控制器836(例如车辆800的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC830可以如本文所描述的将车辆800置于司机安全停车模式。
车辆800可以还包括仪表组832(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组832可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组832可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 830和仪表组832之间共享。换言之,仪表组832可以作为信息娱乐SoC 830的部分而被包括,或者反之亦然。
图8D为根据本公开一些实施例的基于云的服务器与图8A的示例自主车辆800之间的通信的系统示意图。系统876可以包括服务器878、网络890以及包括车辆800在内的车辆。服务器878可以包括多个GPU884(A)-884(H)(这里统称为GPU 884)、PCIe交换机882(A)-882(H)(这里统称为PCIe交换机882)和/或CPU 880(A)-880(B)(这里统称为CPU 880)。GPU884、CPU 880和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口888之类的高速互连和/或PCIe连接886互连。在一些示例中,GPU 884经由NVLink和/或NVSwitch SoC连接,并且GPU 884和PCIe交换机882经由PCIe互连连接。尽管图示出八个GPU 884、两个CPU880和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器878中的每一个可以包括任意数量的GPU 884、CPU 880和/或PCIe交换机。例如,服务器878中的每一个可以包括八个、十六个、三十二个和/或更多GPU 884。
服务器878可以通过网络890并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器878可以通过网络890并且向车辆传输神经网络892、更新的神经网络892和/或地图信息894,包括关于交通和道路状况的信息。对地图信息894的更新可以包括对于HD地图822的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络892、更新的神经网络892和/或地图信息894可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器878和/或其他服务器)的经验产生。
服务器878可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。训练可以根据机器学习技术的任何一个或更多个类别来执行,包括但不限于,诸如:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要分量和集群分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测、及其任何变型或组合的类别。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络890传输至车辆),和/或机器学习模型可以由服务器878用来远程地监控车辆。
在一些示例中,服务器878可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器878可以包括由GPU 884供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器878可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器878的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆800中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆800的定期更新,例如图像序列和/或车辆800已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆800识别的对象相比较,如果结果不匹配并且该基础设施得出车辆800中的AI发生故障的结论,那么服务器878可以向车辆800传输信号,指示车辆800的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器878可以包括GPU 884和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图9为适合用于实现本公开一些实施例的一个或更多个示例计算设备900的框图。计算设备900可以包括直接或间接耦合下列设备的互连系统902:存储器904,一个或更多个中央处理单元(CPU)906,一个或更多个图形处理单元(GPU)908,通信接口910,输入/输出(I/O)端口912,输入/输出组件914,电源916,一个或更多个呈现组件918(例如显示器)以及一个或更多个逻辑单元920。
尽管图9的各个框被示为经由具有线路的互连系统902连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件918可以被认为是I/O组件914(例如如果显示器为触摸屏)。作为另一个示例,CPU 906和/或GPU908可以包括存储器(例如,存储器904可以表示除了GPU 908、CPU 906和/或其他组件的存储器以外的存储设备)。换言之,图9的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图9的计算设备的范围内。
互连系统902可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统902可以包括一种或更多种总线或链路类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的总线或链路。在一些实施例中,在组件之间存在直接连接。作为示例,CPU 906可直接连接到存储器904。进一步,CPU906可以直接连接到GPU 908。在组件之间存在直接连接或点对点连接的情况下,互连系统902可以包括用于执行连接的PCIe链路。在这些示例中,计算设备900中不需要包括PCI总线。
存储器904可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备900访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器904可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备900访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包括计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
CPU 906可以被配置为执行至少一些计算机可读指令以便控制计算设备900的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 906中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 906可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备900的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备900的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备900还可以包括一个或更多个CPU 906。
除了CPU 906之外或作为其替代,GPU 908可被配置成执行至少一些计算机可读指令以控制计算设备900的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。GPU 908中的一个或更多个可为集成GPU(例如,CPU 906中的一个或更多个和/或GPU908中的一个或更多个可为离散GPU)。在实施例中,GPU 908中的一个或更多个可以是CPU906中的一个或更多个的协处理器。GPU908可由计算设备900使用以渲染图形(例如,3D图形)或执行通用计算。例如,一个或更多个GPU 908可以用于GPU上的通用计算(GPGPU)。GPU908可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU 908可以响应于渲染命令(例如经由主机接口接收的来自CPU 906的渲染命令)而生成用于输出图像的像素数据。GPU 908可以包括诸如显示存储器之类的用于存储像素数据或任何其他合适数据(例如GPGPU数据)的图形存储器。显示存储器可以作为存储器904的部分而被包括。GPU 908可以包括(例如经由链路)并行操作的两个或更多GPU。链路可以直接连接GPU(例如,使用NVLINK)或者可以通过交换机连接GPU(例如,使用NVSwitch)。当组合在一起时,每个GPU908可以生成用于输出的不同部分或者用于不同输出的像素数据或GPGPU数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的存储器,或者可以与其他GPU共享存储器。
除了CPU 906和/或GPU 908之外或作为其替代,逻辑单元920可以被配置为执行至少一些计算机可读指令,以控制计算设备900的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。在实施例中,一个或更多个CPU 906、一个或更多个GPU 908和/或一个或更多个逻辑单元920可以分立地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元920中的一个或更多个可以是CPU 906和/或GPU 908中的一个或更多个的一部分和/或集成在CPU 906和/或GPU 908中的一个或更多个中,和/或逻辑单元920中的一个或更多个可以是分立组件或者以其他方式在CPU 906和/或GPU 908的外部。在实施例中,逻辑单元920中的一个或更多个可以是CPU 906中的一个或更多个和/或GPU908中的一个或更多个的协处理器。
逻辑单元920的示例包括一个或更多个处理核心和/或其组件,诸如租户核心(TC)、租户处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连快速(PCIe)元件等。
通信接口910可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备900能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口910可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信或InfiniBand)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口912可以使得计算设备900能够逻辑地耦合到包括I/O组件914、呈现组件918和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备900中。说明性I/O组件914包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件914可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备900的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备900可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备900可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备900用来渲染沉浸式增强现实或者虚拟现实。
电源916可以包括硬接线电源、电池电源或者其组合。电源916可以向计算设备900供电以使得计算设备900的组件能够操作。
呈现组件918可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件918可以接收来自其他组件(例如GPU 908、CPU 906等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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所述的方法,其中所述第一图像传感器与具有等于或大于120度的视场的车辆的鱼眼相机相对应。
3.根据权利要求1所述的方法,还包括:虚拟地调整所述第一图像传感器的所述第一视场;以及至少部分地基于所述图像数据生成与所述虚拟地调整的视场相对应的更新的图像数据,其中应用所述图像数据包括:将所述更新的图像数据应用于立体投影算法。
4.根据权利要求3所述的方法,其中所述虚拟地调整包括沿竖直方向调整所述第一视场。
5.根据权利要求3所述的方法,其中所述虚拟地调整包括调整所述第一视场,使得所述第一图像传感器的虚拟中心与水平线基本上对准。
6.根据权利要求1所述的方法,其中所述数据对应于所述投影图像数据,并且所述方法还包括:将所述特征检测转换成与所述图像相对应的相应图像-空间位置;以及从所述图像-空间位置确定所述一个或更多个特征的与所述特征检测相对应的对应的世界-空间位置。
7.根据权利要求1所述的方法,其中所述特征与道路布局、对象或等待条件中的至少一个相对应。
8.一种方法,包括:接收图像数据,所述图像数据表示使用具有视场的图像传感器生成的图像;虚拟地调整所述图像传感器的所述视场;至少部分地基于所述图像数据生成与所述虚拟地调整的视场相对应的更新的图像数据,将所述更新的图像数据应用于立体投影算法以生成表示投影图像的投影图像数据;将所述投影图像数据应用于机器学习模型或计算机视觉算法中的一者;以及使用所述机器学习模型或所述计算机视觉算法中的一者且至少部分地基于所述投影图像数据来计算表示与一个或更多个特征相对应的特征检测的数据。
9.根据权利要求8所述的方法,其中基于训练图像数据训练或编程所述机器学习模型或所述计算机视觉算法,所述训练图像数据表示使用具有比所述视场更小的视场的一个或更多个图像传感器生成的图像。
10.根据权利要求8所述的方法,还包括:将表示特征检测的所述数据发送到至少供车辆用于在驾驶表面上导航的所述车辆的组件。
11.根据权利要求8所述的方法,其中虚拟地调整所述图像传感器的所述视场包括在向上的方向上竖直地调整所述视场。
12.根据权利要求8所述的方法,其中虚拟地调整所述图像传感器的所述视场包括将与所述图像传感器的所述视场相关联的虚拟球体旋转预定度数。
13.根据权利要求8所述的方法,其中所述立体投影算法将所述更新的图像数据的像素投影到二维(2D)目标平面上以生成所述投影图像。
14.根据权利要求13所述的方法,其中至少部分地基于虚拟线与对应于球面像素的所述更新的图像数据的像素的交点,所述投影图像数据的每个投影像素与所述更新的图像数据的所述像素相对应,所述虚拟线连接与所述图像传感器相关联的虚拟球体的最底点和所述2D目标平面上的对应的投影像素。
15.根据权利要求8所述的方法,其中所述数据与所述投影图像数据相对应,并且所述方法还包括:将所述特征检测转换成与所述图像相对应的相应图像-空间位置;以及从所述图像-空间位置确定所述一个或更多个特征的与所述特征检测相对应的对应的世界-空间位置。
16.根据权利要求8所述的方法,其中所述视场大于或等于120度。
17.一种系统,包括:图像传感器,其具有大于120度的视场并且相对于地平面以第一角度定向;计算设备,其包括一个或更多个处理设备和一个或更多个存储器设备,所述一个或更多个存储器设备通信地耦接至所述一个或更多个处理设备,在所述一个或更多个存储器设备上存储编程指令,在由所述处理器执行所述编程指令时引起以下项的实例化:视场调整器,用于:虚拟地调整所述图像传感器的所述视场,使得所述图像传感器相对于所述地平面以小于所述第一角度的第二角度虚拟地定向,以及至少部分地基于所述虚拟地调整的视场从使用所述图像传感器生成的图像数据生成更新的图像数据;投影器,用于将所述更新的图像数据应用于立体投影算法以生成表示投影图像的投影图像数据;以及特征检测器,用于:将所述投影图像数据应用于机器学习模型,以及使用所述机器学习模型并且至少部分地基于所述投影图像数据来计算表示与在所述投影图像中表示的一个或更多个特征相对应的特征检测的数据。
18.根据权利要求17所述的方法,其中基于训练图像数据训练所述机器学习模型,所述训练图像数据表示使用具有比所述视场小的视场的一个或更多个图像传感器生成的图像。
19.根据权利要求17所述的方法,其中所述数据与所述投影图像数据相对应,并且所述系统还包括输出转换器,所述输出转换器用于:将所述特征检测转换成与由所述图像数据表示的图像相对应的相应图像-空间位置;以及从所述图像-空间位置确定所述一个或更多个特征的与所述特征检测相对应的对应的世界-空间位置。
20.根据权利要求19所述的方法,其中所述视场大于180度。
CN202180014806.4A 2020-04-06 2021-03-22 投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征检测 Pending CN115136148A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/841,577 2020-04-06
US16/841,577 US11538231B2 (en) 2020-04-06 2020-04-06 Projecting images captured using fisheye lenses for feature detection in autonomous machine applications
PCT/US2021/023508 WO2021206896A1 (en) 2020-04-06 2021-03-22 Projecting images captured using fisheye lenses for feature detection in autonomous machine applications

Publications (1)

Publication Number Publication Date
CN115136148A true CN115136148A (zh) 2022-09-30

Family

ID=75539940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180014806.4A Pending CN115136148A (zh) 2020-04-06 2021-03-22 投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征检测

Country Status (4)

Country Link
US (2) US11538231B2 (zh)
CN (1) CN115136148A (zh)
DE (1) DE112021000104T5 (zh)
WO (1) WO2021206896A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10908614B2 (en) * 2017-12-19 2021-02-02 Here Global B.V. Method and apparatus for providing unknown moving object detection
CN117744196A (zh) * 2020-10-13 2024-03-22 弗莱瑞尔公司 通过自动分析传感器数据生成物理结构和环境的测量结果
US20220120907A1 (en) * 2020-10-15 2022-04-21 Caterpillar Paving Products Inc. Peripheral perception system for a machine
TWI786565B (zh) * 2021-03-11 2022-12-11 國立臺灣大學 用於魚眼影像的深度人臉辨識的方法及系統
US11866194B2 (en) * 2021-10-30 2024-01-09 Beta Air, Llc Systems and methods for a visual system for an electric aircraft
CN114049479A (zh) * 2021-11-10 2022-02-15 苏州魔视智能科技有限公司 自监督的鱼眼相机图像特征点提取方法、装置及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6091586B1 (ja) 2015-11-12 2017-03-08 三菱電機株式会社 車両用画像処理装置および車両用画像処理システム
US10217488B1 (en) * 2017-12-15 2019-02-26 Snap Inc. Spherical video editing
US10885698B2 (en) 2018-08-10 2021-01-05 Nvidia Corporation Method for programmable timeouts of tree traversal mechanisms in hardware
WO2020192039A1 (en) * 2019-03-27 2020-10-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Three-dimensional localization using light-depth images

Also Published As

Publication number Publication date
US20230065931A1 (en) 2023-03-02
WO2021206896A1 (en) 2021-10-14
US20210312203A1 (en) 2021-10-07
US11538231B2 (en) 2022-12-27
DE112021000104T5 (de) 2022-06-02

Similar Documents

Publication Publication Date Title
US11769052B2 (en) Distance estimation to objects and free-space boundaries in autonomous machine applications
US11915145B2 (en) Leveraging multidimensional sensor data for computationally efficient object detection for autonomous machine applications
US11897471B2 (en) Intersection detection and classification in autonomous machine applications
US11308338B2 (en) Distance to obstacle detection in autonomous machine applications
US11704890B2 (en) Distance to obstacle detection in autonomous machine applications
US11508049B2 (en) Deep neural network processing for sensor blindness detection in autonomous machine applications
US11592828B2 (en) Using neural networks to perform fault detection in autonomous driving applications
CN114008685A (zh) 用于自主机器应用的路口区域检测和分类
CN114631117A (zh) 使用机器学习的用于自主机器应用的传感器融合
CN113785302A (zh) 自主机器应用中的路口姿态检测
CN113906271A (zh) 用于自主机器应用的使用地图信息增强的地面实况数据的神经网络训练
CN113767389A (zh) 从用于自主机器应用的经变换的真实世界传感器数据模拟逼真的测试数据
CN110618678A (zh) 自主机器应用中的行为引导路径规划
CN112347829A (zh) 利用障碍物和车道检测来确定环境中对象的车道分配
US11538231B2 (en) Projecting images captured using fisheye lenses for feature detection in autonomous machine applications
CN114450724A (zh) 用于自主机器应用的多活动者环境中的未来轨迹预测
US20230213945A1 (en) Obstacle to path assignment for autonomous systems and applications
CN113609888A (zh) 利用平面单应性和自监督的场景结构理解进行对象检测
CN112970029A (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