DE102018108314A1 - Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke - Google Patents

Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke Download PDF

Info

Publication number
DE102018108314A1
DE102018108314A1 DE102018108314.9A DE102018108314A DE102018108314A1 DE 102018108314 A1 DE102018108314 A1 DE 102018108314A1 DE 102018108314 A DE102018108314 A DE 102018108314A DE 102018108314 A1 DE102018108314 A1 DE 102018108314A1
Authority
DE
Germany
Prior art keywords
vehicle
path
data
dnn
respect
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
DE102018108314.9A
Other languages
English (en)
Inventor
Nikolai Smolyanskiy
Alexey Kamenev
Jeffrey David Smith
Stanley Thomas Birchfield
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
Priority claimed from US15/939,116 external-priority patent/US10705525B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102018108314A1 publication Critical patent/DE102018108314A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/005Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 with correlation of navigation data from several sources, e.g. map or contour matching
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D15/00Steering not otherwise provided for
    • B62D15/02Steering position indicators ; Steering position determination; Steering aids
    • B62D15/025Active steering aids, e.g. helping the driver by actively influencing the steering system after environment evaluation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D6/00Arrangements for automatically controlling steering depending on driving conditions sensed and responded to, e.g. control circuits
    • B62D6/001Arrangements for automatically controlling steering depending on driving conditions sensed and responded to, e.g. control circuits the torque NOT being among the input parameters
    • 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/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3602Input other than that of destination using image analysis, e.g. detection of road signs, lanes, buildings, real preceding vehicles using a camera
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/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/0238Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
    • G05D1/024Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors in combination with a laser
    • 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/0242Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using non-visible light signals, e.g. IR or UV signals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0255Control of position or course in two dimensions specially adapted to land vehicles using acoustic signals, e.g. ultra-sonic singals
    • 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/0257Control of position or course in two dimensions specially adapted to land vehicles using a radar
    • 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/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/10Simultaneous control of position or course in three dimensions
    • G05D1/101Simultaneous control of position or course in three dimensions specially adapted for aircraft
    • G05D1/102Simultaneous control of position or course in three dimensions specially adapted for aircraft specially adapted for vertical take-off of aircraft
    • 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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • 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
    • 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
    • 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
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/588Recognition of the road, e.g. of lane markings; Recognition of the vehicle driving pattern in relation to the road
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S17/00Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
    • G01S17/88Lidar systems specially adapted for specific applications
    • G01S17/93Lidar systems specially adapted for specific applications for anti-collision purposes
    • G01S17/931Lidar systems specially adapted for specific applications for anti-collision purposes of land vehicles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Evolutionary Computation (AREA)
  • Automation & Control Theory (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Electromagnetism (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Optics & Photonics (AREA)
  • Acoustics & Sound (AREA)
  • Game Theory and Decision Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)

Abstract

Ein Verfahren, ein computerlesbares Medium und ein System werden zum Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke offenbart. Das Verfahren umfasst die Schritte eines Empfangens von Bilddaten bei einem tiefen neuronalen Netzwerk (DNN), ein Bestimmen, durch das DNN, sowohl einer Orientierung eines Fahrzeugs mit Bezug auf einen Pfad als auch einer lateralen Position des Fahrzeug mit Bezug auf den Pfad unter Benutzung der Bilddaten und Steuern eines Orts der Fahrzeugs unter Benutzung der Orientierung des Fahrzeugs mit Bezug auf den Pfad und der lateralen Position des Fahrzeugs mit Bezug auf den Pfad.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft autonome Fahrzeugnavigation und genauer gesagt das Analysieren von Bilddaten unter Verwendung tiefer neuronaler Netzwerke, um Fahrzeugnavigationsinformation zu erzeugen.
  • HINTERGRUND
  • Eine autonome Steuerung ist ein wünschenswertes Merkmal zur Implementierung in Fahrzeugen. Aktuelle Steuerimplementierungen sind jedoch häufig ungenau und ineffizient sowie auch in Unkenntnis einer Umgebung, die das Fahrzeug umgibt.
  • Somit gibt es einen Bedarf, sich diesen Belangen und/oder anderen Belangen, die dem Stand der Technik zugeordnet sind, zu widmen.
  • ZUSAMMENFASSUNG
  • Ein Verfahren, ein computerlesbares Medium und ein System werden zum Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke offenbart. Das Verfahren umfasst die Schritte eines Empfangens von Bilddaten bei einem tiefen neuronalen Netzwerk (DNN), ein Bestimmen, durch das DNN, sowohl einer Orientierung eines Fahrzeug mit Bezug auf einen Pfad als auch einer lateralen Position des Fahrzeugs mit Bezug auf den Pfad unter Benutzung der Bilddaten und Steuern eines Orts des Fahrzeugs unter Benutzung der Orientierung des Fahrzeugs mit Bezug auf den Pfad und der lateralen Position des Fahrzeugs mit Bezug auf den Pfad.
  • Figurenliste
    • 1 veranschaulicht ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform;
    • 2 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform;
    • 3 veranschaulicht einen allgemeinen
    • Verarbeitungscluster der Parallelverarbeitungseinheit von 2 gemäß einer Ausführungsform;
    • 4 veranschaulicht eine Partitions-Einheit der Parallelverarbeitungseinheit von 2 gemäß einer Ausführungsform;
    • 5 veranschaulicht den Streaming-Multiprozessor von 3 gemäß einer Ausführungsform;
    • 6 ist ein Konzeptdiagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 2 implementiert wird, gemäß einer Ausführungsform;
    • 7 veranschaulicht ein beispielhaftes System, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann.
    • 8 veranschaulicht ein beispielhaftes System zum Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke gemäß einer Ausführungsform;
    • 9 veranschaulicht eine beispielhafte Softwarearchitektur gemäß einer Ausführungsform; und
    • 10 veranschaulicht einen beispielhaften TrailNet-DNN-Knoten, der ein tiefes neuronales Netzwerk (DNN) implementiert, gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 veranschaulicht ein Ablaufdiagramm eines Verfahrens 100 zum Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke gemäß einer Ausführungsform. Wie in Operation 102 gezeigt, werden Bilddaten bei einem tiefen neuronalen Netzwerk (DNN) empfangen. In einer Ausführungsform können die Bilddaten eine bildliche Darstellung umfassen. In einer anderen Ausführungsform können die Bilddaten eine Mehrzahl von bildliche Darstellungen umfassen. In noch einer anderen Ausführungsform können die Bilddaten von Videodaten (z.B. Streaming-Video, usw.) hergeleitet werden.
  • Außerdem können in einer Ausführungsform die Bilddaten optische Daten, Infrarotdaten, LIDAR-Daten (Lichterfassungs- und Abstandsmessungsdaten), Radardaten, Tiefendaten, Sonardaten usw. umfassen. In einer weiteren Ausführungsform können die Bilddaten Stereobilddaten umfassen, die von einer Mehrzahl von Bildgebungsvorrichtungen empfangen werden. In noch einer anderen Ausführungsform können die Bilddaten von einer oder mehreren Bildgebungsvorrichtungen empfangen werden. Beispielsweise können die Bilddaten von einer digitalen Bildgebungskamera, einer Radarvorrichtung, einer LIDAR-Vorrichtung, einer Infrarotbildgebungsvorrichtung, einer Sonarbildgebungsvorrichtung usw. empfangen werden.
  • Ferner können in einer Ausführungsform die Bilddaten in Echtzeit von der einen oder mehreren Bildgebungsvorrichtungen empfangen werden. In einer anderen Ausführungsform können die Bilddaten von einer oder mehreren Hardwarebildgebungsvorrichtungen empfangen werden, die Middleware (z.B. ein Roboterbetriebssystem (ROS) usw.) benutzen. In noch einer anderen Ausführungsform können die Bilddaten bei einem Fahrzeug empfangen werden, das die eine oder mehreren Bildgebungsvorrichtungen umfasst. Beispielsweise kann das Fahrzeug jedes gesteuertes mobiles Objekt, wie beispielsweise ein Automobil, ein Flugzeug, ein Amphibienfahrzeug (z.B. ein Boot, Gleitboot usw.), eine Drohne, Kleinstdrohnen (MAV = micro aerial vehicle), Rover usw. umfassen. In einem anderen Beispiel kann die Middleware auf Hardware ausgeführt werden, die innerhalb des Fahrzeugs installiert ist. In noch einem anderen Beispiel kann die eine oder mehreren Kameras innerhalb des Fahrzeugs installiert sein.
  • Des Weiteren können in einer Ausführungsform die Bilddaten noch einen aktuellen Ort des Fahrzeugs auf einem Pfad angeben. Beispielsweise kann die eine oder mehreren Bildgebungsvorrichtungen auf dem Fahrzeug angebracht sein, so dass die durch die eine oder mehreren Bildgebungsvorrichtungen erzeugten Bilddaten den aktuellen Ort des Fahrzeugs auf dem Pfad angeben. In einer anderen Ausführungsform kann das DNN ein überwachtes Klassifizierungsnetzwerk umfassen.
  • Beispielsweise können die Bilddaten überwachtes Daten umfassen, die mit einer zugeordneten Position korrekt gekennzeichnet werden. In einem anderen Beispiel kann das DNN mit Bilddaten trainiert werden, die zugeordnete korrekte Etikette aufweisen. In einer anderen Ausführungsform kann das DNN eine Verlustfunktion implementieren. Beispielsweise kann das DNN ein Etikett für die Bilddaten bestimmen, das Etikett mit dem zugeordneten korrekten Etikett für die Bilddaten vergleichen und einen Unterschied zwischen den Etiketten berechnen. In einem anderen Beispiel kann das DNN, basierend auf dem Unterschied zwischen den Etiketten, unter Verwendung von Rückpropagation eingestellt werden.
  • Auf diese Weise kann das DNN Bilddaten während nachfolgender Iterationen mit größerer Wahrscheinlichkeit korrekt kennzeichnen.
  • Wie in Operation 104 gezeigt, bestimmt das DNN ebenfalls sowohl eine Orientierung eines Fahrzeugs mit Bezug auf einen Pfad als auch eine laterale Position des Fahrzeugs mit Bezug auf den Pfad unter Benutzung der Bilddaten. In einer Ausführungsform kann der Pfad jeden Kurs umfassen, der visuell innerhalb der Bilddaten gekennzeichnet werden kann. In einer anderen Ausführungsform kann der Pfad einen Weg, eine oder mehreren Spuren (z.B. Bahngleise, Reifenspuren usw.), eine oder mehrere Energieleitungen, eine Straße, einen Abzugskanal (z.B. einen Abwasserkanal usw.), eine Straßenschlucht usw. umfassen.
  • Außerdem kann in einer Ausführungsform das Fahrzeug Middleware ausführen und die eine oder mehrere Bildgebungsvorrichtungen umfassen. In einer anderen Ausführungsform kann das Fahrzeug aktuell in Bewegung sein (z.B. entlang des Pfades usw.). In noch einer anderen Ausführungsform kann die Orientierung mit Bezug auf den Pfad eine Mehrzahl von Wahrscheinlichkeiten umfassen. Beispielsweise kann die Orientierung mit Bezug auf den Pfad eine Wahrscheinlichkeit umfassen, dass ein Fahrzeug aktuell mit Bezug auf den Pfad links gerichtet ist, eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell mit Bezug auf den Pfad rechts gerichtet ist, und eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell geradeaus mit Bezug auf den Pfad gerichtet ist. In einem anderen Beispiel kann jede der Mehrzahl von Möglichkeiten numerisch dargestellt werden, was zu drei Zahlen führt, die von dem DNN ausgegeben werden, welche die Orientierung mit Bezug auf den Pfad angeben.
  • Des Weiteren kann in einer Ausführungsform die laterale Position mit Bezug auf den Pfad eine Mehrzahl von Wahrscheinlichkeiten umfassen. In einer anderen Ausführungsform kann die laterale Position mit Bezug auf den Pfad eine Wahrscheinlichkeit einer Mehrzahl von lateralen Versätzen mit Bezug auf die Pfadmitte kennzeichnen. Beispielsweise kann die laterale Position mit Bezug auf den Pfad eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell nach links mit Bezug auf den Pfad verschoben ist, eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell nach rechts mit Bezug auf den Pfad verschoben ist, und eine Wahrscheinlichkeit umfassen, dass ein Fahrzeug mit Bezug auf den Pfad mittig ist. In einem anderen Beispiel kann jede der Mehrzahl von Möglichkeiten numerisch dargestellt werden, was zu drei Zahlen führt, die von dem DNN ausgegeben werden, welche die laterale Position mit Bezug auf den Pfad angeben.
  • Des Weiteren können in einer Ausführungsform noch die Orientierung und die laterale Position in Echtzeit innerhalb des Fahrzeugs bestimmt werden. In einer anderen Ausführungsform können die Bilddaten von dem Fahrzeug an einen fernen Ort (z.B. eine verteilte Rechenumgebung) gesendet werden und die Orientierung und die laterale Position können an dem fernen Ort bestimmt werden.
  • Auf diese Weise können sowohl Rotations- als auch Translationsdaten durch das DNN unter Benutzung der Bilddaten bestimmt werden.
  • Ebenfalls wird, wie in Operation 106 gezeigt, ein Ort des Fahrzeugs unter Benutzung der Orientierung des Fahrzeugs mit Bezug auf den Pfad und der lateralen Position des Fahrzeugs mit Bezug auf den Pfad gesteuert. In einer Ausführungsform kann die Orientierung des Fahrzeugs mit Bezug auf den Pfad und die laterale Position des Fahrzeugs mit Bezug auf den Pfad in Lenkrichtungen umgewandelt werden. Beispielsweise kann die Umwandlung durch ein Controllermodul durchgeführt werden. In einem anderen Beispiel können die Lenkrichtungen ein oder mehrere Lenksignale (z.B. ein Lenkwinkel usw.) umfassen.
  • Außerdem können in einer Ausführungsform die Lenkrichtungen in ein anderes Protokoll umgewandelt werden, um umgewandelte Lenkrichtungen zu erzeugen. Beispielsweise können die Lenkrichtungen von einem Middleware-Protokoll (z.B. ein ROS-Protokoll usw.) in ein Fahrzeugsteuerungsprotokoll umgewandelt werden. In einem anderen Beispiel kann die Umwandlung durch ein Kommunikationsmodul durchgeführt werden.
  • Des Weiteren können in einer Ausführungsform die umgewandelten Lenkrichtungen an ein Fahrzeugsystemmodul gesendet werden, um einen oder mehrere Lenkmechanismen des Fahrzeugs zu steuern. Beispielsweise kann der eine oder mehrere Lenkmechanismen des Fahrzeugs eine Richtung steuern, in der sich das Fahrzeug bewegt. In einem anderen Beispiel können die umgewandelten Lenkrichtungen an das Fahrzeugsystemmodul unter Benutzung eines Kommunikationsprotokolls gesendet werden.
  • Des Weiteren kann in einer Ausführungsform noch der eine oder mehrere Lenkmechanismen basierend auf den umgewandelten Lenkrichtungen eingestellt werden. Beispielsweise kann der eine oder mehrere Lenkmechanismen durch das Fahrzeugsystemmodul eingestellt werden, um das Fahrzeug seitlich zu der Mitte des Pfads zu bewegen. In einem anderen Beispiel kann der eine oder mehrere Lenkmechanismen eingestellt werden, um das Fahrzeug zu bewegen, so dass die Orientierung des Fahrzeugs geradeaus mit Bezug auf den Pfad ist. In einer anderen Ausführungsform kann die Fahrzeugortsteuerung in Echtzeit innerhalb des Fahrzeugs durchgeführt werden.
  • In einer Ausführungsform kann das DNN ebenfalls die Richtungsstabilität durch Benutzen von Vorhersagen mit einem verringerten Vertrauen gesteuert werden. Beispielsweise kann das DNN ein Klassifizierungsschema mit einem verringerten Vertrauen für eine glattere und stabilere Fahrzeugrichtungssteuerung implementieren.
  • Außerdem kann in einer Ausführungsform ein zweites DNN eine Objekterfassung innerhalb des Pfades durchführen. Beispielsweise kann das zweite DNN innerhalb des Fahrzeugs umfasst sein und kann mit anderen Modulen innerhalb des Fahrzeugs (z.B. über Middleware usw.) kommunizieren. In einem anderen Beispiel kann das zweite DNN die Bilddaten empfangen und Objektdaten ausgeben, die angeben, ob ein Objekt (z.B. eine Person, ein Tier usw.) in den Bilddaten ist. In noch einem anderen Beispiel können die Objektdaten von dem zweiten DNN an das Controllermodul (z.B. über Middleware usw.) gesendet werden. In noch einem anderen Beispiel kann das Controllermodul bestimmen, ob eine Größe des Objekts in den Bilddaten ein vorbestimmter Prozentsatz einer Größe des Bildes in den Bilddaten ist.
  • Ferner kann in einem Beispiel das Controllermodul einen oder mehrere Befehle an die Fahrzeugsysteme senden (z.B., um einen Kurs des Fahrzeugs zu ändern, um ein Funktionieren des Fahrzeugs anzuhalten, usw.) als Antwort auf eine Bestimmung senden, dass die Größe des Objekts in den Bilddaten gleich oder größer als der vorbestimmte Prozentsatz der Größe des Bildes in den Bilddaten ist. Dies kann einen Sicherheitsmechanismus bereitstellen, der das Fahrzeug anhalten kann, wenn ein Objekt einer vorbestimmten Größe auf dem Pfad ist.
  • Des Weiteren kann in einer Ausführungsform noch ein drittes DNN eine dem Pfad zugeordnete Hinderniserfassung durchführen. Beispielsweise kann das dritte DNN innerhalb des Fahrzeugs umfasst sein und kann mit anderen Modulen innerhalb des Fahrzeugs kommunizieren (z.B. über Middleware usw.). In einem anderen Beispiel kann das dritte DNN die Bilddaten empfangen und kann Hindernisdaten ausgeben, wie beispielsweise einen Satz von Gewichten, die eine Wahrscheinlichkeit von einem oder mehreren Hindernissen an verschiedener Orten und Entfernungen entlang des Pfades angeben. Beispielsweise kann das dritte DNN eine simultane Lokalisierung und Kartenerstellung (SLAM) implementieren, um einen Ort des Fahrzeugs innerhalb einer Szene zu kennzeichnen, der durch die Bilddaten angegeben wird, und um Information über einen relativen Ort von statischen Objekten innerhalb der Szene bereitzustellen.
  • In einem Beispiel können die Hindernisdaten von dem dritten DNN ebenfalls an das Controllermodul (z.B. über Middleware usw.) gesendet werden. In einem anderen Beispiel kann das Controllermodul den Ort des Fahrzeugs unter Benutzung der Hindernisdaten einstellen. Dies kann dem Fahrzeug helfen, statische Hindernisse in einer Längsseite des Pfads zu vermeiden.
  • Auf diese Weise kann ein Fahrzeug unter Benutzung von Lenkrichtungen autonom gesteuert werden, die von einer DNN-Analyse von Bilddaten hergeleitet werden. Außerdem kann ein DNN eine Schätzung von sowohl der Fahrzeugorientierung (3 Klassen) als auch der lateralen Position mit Bezug auf den Pfad (3 weitere Klassen) für eine Gesamtzahl von 6 Klassen durchführen. Ferner kann eine Verlustfunktion während eines speziellen DNN-Trainings implementiert werden. Des Weiteren kann noch eine verringerte Vertrauensimplementierung innerhalb einer DNN durchgeführt werden. Ebenfalls kann eine Objekt- und Hinderniserfassung während der autonomen Navigation über zusätzliche DNNs durchgeführt werden. Außerdem können diese Merkmale unter Benutzung einer On-Board-Echtzeitverarbeitung implementiert werden.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 300 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (d.h. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 300 ausgeführt zu werden. In einer Ausführungsform ist die PPU 300 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeige(LCD)-Vorrichtung, zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 300 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Datenzentrum- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 300 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und Anwendungen zu beschleunigen, die autonome Fahrzeugplattformen, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen umfassen.
  • Wie in 2 gezeigt, umfasst die PPU 300 eine Eingabe/Ausgabe(E/A)-Einheit 305, eine Frontend-Einheit 315, eine Planereinheit 320, eine Arbeitsverteilungs-Einheit 335, einen Hub 330, eine Kreuzschiene (Xbar) 370, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 350 und eine oder mehrere Partitions-Einheiten 380. Die PPU 300 kann mit einem Host-Prozessor oder anderen PPUs 300 über einen oder mehrere Interconnect des Hochgeschwindigkeits-NVLink 310 verbunden sein. Die PPU 300 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über einen Interconnect 302 verbunden sein. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt.
  • Der Interconnect des NVLink 310 ermöglicht Systemen, eine oder mehrere PPUs 300 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 300 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 310 durch den Hub 330 an/von anderen Einheiten der PPU 300, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 310 wird ausführlicher in Verbindung mit 5 beschrieben. Die E/A-Einheit 305 ist konfiguriert, um Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über den Interconnect 302 zu übertragen und zu empfangen. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über den Interconnect 302 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs, über den Interconnect 302 kommunizieren. In einer Ausführungsform implementiert die E/A-Einheit 305 eine PCIe(Peripheral Component Interconnect.Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und der Interconnect 302 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit andere Typen von wohl bekannten Schnittstellen zur Kommunikation mit externen Vorrichtungen implementieren.
  • Die E/A-Einheit 305 decodiert Pakete, die über den Interconnect 302 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 305 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 300, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 305 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 300 weiterzuleiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist eine Region in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 300 zugänglich ist (d.h. Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 310 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit dem Interconnect 302 verbunden ist, über Speicheranfragen, die über den Interconnect 302 übertragen werden, durch die E/A-Einheit 305 zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 300. Die Frontend-Einheit 315 empfängt Zeiger auf einem oder mehreren Befehlsströmen. Die Frontend-Einheit 315 verwaltet den einen oder mehrere Ströme, liest Befehle von den Strömen gelesen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.
  • Die Frontend-Einheit 315 ist mit einer Planereinheit 320 gekoppelt, welche die verschiedenen GPCs 350 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 320 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 320 verwaltet werden. Der Zustand kann angeben, welchem GPC 350 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 320 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 350.
  • Die Planereinheit 320 ist mit einer Arbeitsverteilungs-Einheit 325 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 350 zu versenden. Die Arbeitsverteilungs-Einheit 325 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 320 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 325 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 350. Der Pool für anhängige Aufgaben kann eine Anzahl von Schlitzen (z.B. 32 Schlitze) umfassen, die Aufgaben enthalten, die zugewiesen sind, um von einem bestimmten GPC 350 verarbeitet zu werden. Der Pool für aktive Aufgaben kann eine Anzahl von Schlitzen (z.B. 4 Schlitze) für Aufgaben umfassen, die von den GPCs 350 aktiv verarbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 350 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 350 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine andere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungs-Einheit 325 kommuniziert mit dem einen oder mehreren GPCs 350 über eine Kreuzschiene bzw. XBar 370. Die XBar 370 ist ein Zwischenverbindungs-Netzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann die XBar 370 konfiguriert sein, um die Arbeitsverteilungs-Einheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht explizit gezeigt, können eine oder mehrere andere Einheiten der PPU 300 ebenfalls mit der XBar 370 über den Hub 330 verbunden sein.
  • Die Aufgaben werden von der Planereinheit 320 verwaltet und an einen GPC 350 durch die Arbeitsverteilungs-Einheit 325 versandt. Der GPC 350 ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 verbraucht werden, an einen unterschiedlichen GPC 350 über die XBar 370 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können in den Speicher 304 über die Partitions-Einheiten 380 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/von dem Speicher 304 implementieren. In einer Ausführungsform umfasst die PPU 300 eine Anzahl U von Partitions-Einheiten 380, die gleich der Anzahl von getrennten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Partitions-Einheit 380 wird nachstehend ausführlicher in Verbindung mit 4 beschrieben.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine Anwendungsprogrammmier-Schnittstelle (API) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 300 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt und die PPU 300 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (d.h. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Ströme aus, die durch die PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam benutzten Speicher austauschen können. Threads und kooperierende Threads werden ausführlicher in Verbindung mit 5 beschrieben.
  • 3 veranschaulicht einen GPC 350 der PPU 300 von 2 gemäß einer Ausführungsform. Wie in 3 gezeigt, umfasst jeder GPC 350 eine Anzahl von Hardwareeinheiten zur Verarbeitung von Aufgaben. In einer Ausführungsform umfasst jeder GPC 350 einen Pipeline-Manager 410, eine Vor-Raster-Operationen-Einheit (PROP) 415, eine Raster-Engine 425, eine Arbeitsverteilungs-Kreuzschiene (WDX) 480, eine Speicherverwaltungseinheit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster (DPCs) 420. Es wird anerkannt, dass der GPC 350 von 3 andere Hardwareeinheiten anstelle von oder zusätzlich zu den in 3 gezeigten Einheiten umfassen kann.
  • In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration des einen oder mehrerer DPCs 420 zur Verarbeitung von Aufgaben, die dem GPC 350 zugeteilt sind. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen des einen oder mehrerer DPCs 420 konfigurieren, um mindestens einen Abschnitt einer Graphik-Rendering-Pipeline zu implementieren. Beispielsweise kann ein DPC 420 konfiguriert sein, um ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann ebenfalls konfiguriert sein, um Pakete, die von der Arbeitsverteilungs-Einheit 325 empfangen werden, an die geeigneten logischen Einheiten innerhalb des GPC 350 weiterzuleiten. Beispielsweise können einige Pakete an Festfunktions-Hardwareeinheiten in der PROP 415 und/oder der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiven-Engine 435 oder den Streaming-Multiprozessor (SM) 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen oder mehrere DPCs konfigurieren, um ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • Die PROP-Einheit 415 ist konfiguriert, um Daten, die von der Raster-Engine 425 und den DPCs 420 erzeugt werden, an eine Raster-Operationen-Einheit (ROP-Einheit) in der Partitions-Einheit 380 weiterzuleiten, die nachstehend ausführlicher in Verbindung mit 4 beschrieben wird. Die PROP-Einheit 415 kann ebenfalls konfiguriert sein, um Optimierungen zur Farbenmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und dergleichen.
  • Die Raster-Engine 425 umfasst eine Anzahl von Festfunktions-Hardwareeinheiten, die konfiguriert sind, um verschiedene Raster-Operationen durchzuführen. In einer Ausführungsform umfasst die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Aussonderungs-Engine, eine Abschneide-Engine, eine Feinraster-Engine und eine Kachel-verschmelzende Engine. Die Setup-Engine empfängt transformierte Vertices und erzeugt Ebenengleichungen, die den geometrischen Primitiven zugeordnet sind, die durch die Vertices definiert werden. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformation (z.B. eine (x,y)-Abdeckungsmaske für eine Kachel) für die Primitive zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Aussonderungs-Engine übertragen, wo Fragmente, die der Primitiven zugeordnet sind, die einen z-Test nicht bestehen, ausgesondert und an eine Abschneide-Engine übertragen werden, wo Fragmente, die außerhalb eines Betrachtungsstumpfes liegen, abgeschnitten werden. Diejenigen Fragmente, die Abschneidung und Aussonderung überleben, können an eine Feinraster-Engine weitergeben werden, um Attribute für die Pixelfragmente basierend auf den Ebenengleichungen zu erzeugen, die durch die Setup-Engine erzeugt werden. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem Fragment-Shader zu verarbeiten sind, der innerhalb eines DPC 420 implementiert ist.
  • Jeder DPC 420, der in dem GPC 350 umfasst ist, umfasst einen M-Pipe-Controller (MPC) 430, eine Primitiven-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betrieb des DPC 420, wobei von dem Pipeline-Manager 410 empfangene Pakete an die geeigneten Einheiten in dem DPC 420 weiterleitet werden. Beispielsweise können einem Vertex zugeordnete Pakete an die Primitiven-Engine 435 weitergeleitet werden, die konfiguriert ist, um der Vertex zugeordnete Vertexattribute von dem Speicher 304 zu holen. Im Gegensatz dazu können einem Shader-Programm zugeordnete Pakete an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Aufgaben zu verarbeiten, die durch eine Anzahl von Threads dargestellt werden. Jeder SM 440 umfasst mehrere Threads (ist multithreaded) und ist konfiguriert, um eine Mehrzahl von Threads (z.B. 32 Threads) von einer bestimmten Gruppe von Threads nebenläufig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (d.h. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer anderen Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden. Der SM 440 wird ausführlicher nachstehend in Verbindung mit 5 beschrieben.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Partitions-Einheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitstellen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Adressübersetzungspuffer (TLBs = translation lookaside buffers) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 304 bereit.
  • 4 veranschaulicht eine Speicher-Partitions-Einheit 380 der PPU 300 von 2 gemäß einer Ausführungsform. Wie in 4 gezeigt, umfasst die Partitions-Einheit 380 eine Raster-Operationen(ROP)-Einheit 450, einen L2-Cache-Speicher 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. In einer Ausführungsform umfasst die PPU 300 U Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Partitions-Einheiten 380, wobei jedes Paar von Partitions-Einheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu Y Speichervorrichtungen 304, wie beispielsweise Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 GDDR5 SDRAM (synchronous dynamic random access memory) verbunden sein.
  • In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U. In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 300 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 304 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 300 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicher-Partitions-Einheit 380 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 300 bereitzustellen, wobei Datenteilung zwischen virtuellen Speichersystemen ermöglicht wird. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 300 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 300 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 310 Adressenübersetzungsdienste, die der PPU 300 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 300 bereitzustellen.
  • In einer Ausführungsform transferieren Kopiermaschinen Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet werden. Die Speicher-Partitions-Einheit 380 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (d.h. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.
  • Daten von dem Speicher 304 oder einem anderen Systemspeicher können von der Speiche-Partitions-Einheit 380 geholt und in dem L2-Cache-Speicher 460 gespeichert werden, der Auf-Chip lokalisiert ist und zwischen den verschiedenen GPCs 350 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicher-Partitions-Einheit 380 einen Bereich des L2-Cache-Speichers 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. Beispielsweise kann jeder der SMs 440 einen L1-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der für einen bestimmten SM 440 fest zugeordnet ist. Daten von dem L2-Cache-Speicher 460 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache-Speicher 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt Graphik-Raster-Operationen durch, welche die Pixelfarbe betreffen, wie beispielsweise Farbenkomprimierung, Pixelmischung und dergleichen. Die ROP-Einheit 450 implementiert ebenfalls Tiefentesten in Verbindung mit der Raster-Engine 425, wobei eine Tiefe für einen Abtastort, der einem Pixelfragment zugeordnet ist, von der Aussonderungs-Engine der Raster-Engine 425 empfangen wird. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen Abtastort geprüft, der dem Fragment zugeordnet ist. Wenn das Fragment den Tiefentest für den Abtastort besteht, dann aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es wird anerkannt, dass sich die Anzahl von Partitions-Einheiten 380 von der Anzahl von GPCs 350 unterscheiden kann, und daher kann jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt werden. Die ROP-Einheit 450 verfolgt Pakete, die von den unterschiedlichen GPCs 350 empfangen werden, und bestimmt, zu welchem GPC 350 ein durch die ROP-Einheit 450 erzeugtes Ergebnis durch die Xbar 470 weitergeleitet wird.
  • 5 veranschaulicht den Streaming-Multiprozessor 440 von 3 gemäß einer Ausführungsform. Wie in 5 gezeigt, umfasst der SM 440 einen Anweisungs-Cache-Speicher 505, eine oder mehrere Planereinheiten 511, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade/Speicher-Einheiten (LSUs) 554, ein Zwischenverbindungs-Netzwerk 580, einen gemeinsam benutzten L1-Cache-Speicher 570.
  • Wie oben beschrieben, versendet die Arbeitsverteilungs-Einheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben werden einem bestimmten DPC 420 innerhalb eines GPC 350 zugeteilt und, wenn die Aufgabe einem Shader-Programm zugeordnet ist, kann die Aufgabe einem SM 440 zugeteilt werden. Die Planereinheit 511 empfängt die Aufgaben von der Arbeitsverteilungs-Einheit 325 und verwaltet die Anweisungs-Planung (instruction scheduling) für einen oder mehrere Thread-Blöcke, die dem SM 440 zugewiesen sind. Die Planereinheit 511 plant Thread-Blöcke zur Ausführung als Warps von parallelen Threads, wobei jeder Thread-Block mindestens einem Warp zugeordnet ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Planereinheit 511 plant Thread-Blöcke zur Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Planereinheit 511 kann eine Mehrzahl von unterschiedlichen Thread-Blöcken verwalten, welche die Warps den unterschiedlichen Thread-Blöcken zuordnet und dann Anweisungen von der Mehrzahl von unterschiedlichen kooperativen Gruppen an die verschiedenen Funktionseinheiten (d.h. Kerne 550, SFUs 552 und LSUs 554) während jedes Taktzyklus versendet.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, die Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzelnen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (d.h. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(d.h. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitive ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • Eine Versandeinheit 515 ist konfiguriert, um Anweisungen an eine oder mehrere der Funktionseinheiten zu übertragen. In der Ausführungsform umfasst die Planereinheit 511 zwei Versandeinheiten 515, die ermöglichen, dass zwei unterschiedliche Anweisungen von dem gleichen Warp während jedes Taktzyklus versandt werden. In alternativen Ausführungsformen kann jede Planereinheit 511 eine einzige Versandeinheit 515 oder zusätzliche Versandeinheiten 515 umfassen.
  • Jeder SM 440 umfasst eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein zugehöriger Abschnitt der Registerdatei 520 zugeteilt ist. In einer anderen Ausführungsform ist die Registerdatei 520 zwischen den unterschiedlichen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt temporären Speicher für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einer Ausführungsform umfasst der SM 440 eine große Anzahl (z.B., 128 usw.) von unterschiedlichen Verarbeitungskernen 550. Jeder Kern 550 kann eine vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions-Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-3008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 550 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrix-Operationen durchzuführen, und in einer Ausführungsform ist ein oder mehrere Tensorkerne in den Kernen 550 umfasst. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise Faltungsoperationen für neuronales Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4×4 Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4×4 Matrizen sind.
  • In einer Ausführungsform sind die Matrix-Multiplikations-Eingaben A und B 16-Bit-Gleitkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen sein können. Tensorkerne arbeiten an 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-Speicher-Operationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Bei der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • Jeder SM 440 umfasst ebenfalls M SFUs 552, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs 552 eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs 552 eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) des Speichers 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die durch den SM 440 ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam benutzten Speicher/L1-Cache-Speicher 470 gespeichert. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (d.h. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst ebenfalls N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsam benutzten Speicher/L1-Cache-Speicher 570 und der Registerdatei 520 implementieren. Jeder SM 440 umfasst ein Zwischenverbindungs-Netzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, dem gemeinsam benutzten Speicher/ L1-Cache-Speicher 570 verbindet. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk 580 eine Kreuzschiene, die konfiguriert sein kann, um irgendeine der Funktionseinheiten mit irgendeinem der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherorten im gemeinsam benutzten Speicher/L1-Cache-Speicher 570 zu verbinden.
  • Der gemeinsam benutzte Speicher/L1-Cache-Speicher 570 ist eine Auf-Chip-Speicheranordnung, die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiven-Engine 435 und zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsam benutzte Speicher/L1-Cache-Speicher 570 128KB von Speicherkapazität und ist im Pfad der SM 440 zu der Partitions-Einheit 380. Der gemeinsam benutzte Speicher/L1-Cache-Speicher 570 kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere der gemeinsam benutzten Speicher/L1-Cache-Speicher 570, L2-Cache-Speicher 460 und Speicher 304 sind Hintergrundspeicher.
  • Das Kombinieren eines Daten-Cache und gemeinsam benutzter Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam benutzten Speicher nicht verwenden. Wenn der gemeinsam benutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Die Integration innerhalb des gemeinsam benutzten Speichers/L1-Cache-Speicher 570 ermöglicht dem gemeinsam benutzten Speicher/L1-Cache-Speicher 570, als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.
  • Wenn für Allzweck-Parallelberechnung konfiguriert, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden die in 2 gezeigten Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 325 direkt den DPCs 420 zugewiesen und verteilt. Die Threads in einem Block führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung des SM 440, um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam benutzten Speicher/L1-Cache-Speichers 570, um zwischen Threads zu kommunizieren, und der LSU 554 aus, um globalen Speicher durch den gemeinsam benutzten Speicher/L1-Cache-Speicher 570 und die Speicher-Partitions-Einheit 380 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert, kann der SM 440 ebenfalls Befehle schreiben, welche die Planereinheit 320 verwenden kann, um neue Arbeit auf den DPCs 420 zu starten.
  • Die PPU 300 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 300 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 300 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Logikeinheiten, wie beispielsweise einem Rechner-mitreduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/AnalogWandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 300 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 304 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 300 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz (d.h. Northbridge) der Hauptplatine umfasst ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehrere GPUs und CPUs werden in einer Vielfalt von Industrien verwendet, sowie Entwickler mehr Parallelität in Anwendungen, wie beispielsweise Rechnen für künstliches Intelligenz, freilegen und wirksam einsetzen. Hochleistungs-GPU-beschleunigte Systeme mit zehn bis vielen tausenden von Rechenknoten werden in Datenzentren, Forschungsanlagen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Sowie die Anzahl von Verarbeitungsvorrichtungen innerhalb der Hochleistungssysteme zunimmt, müssen die Kommunikations- und Datentransfermechanismen angepasst werden, um die erhöhte Bandbreite zu unterstützen.
  • 6 ist ein Konzeptdiagramm eines Verarbeitungssystems 500, das unter Verwendung der PPU 300 von 2 implementiert wird, gemäß einer Ausführungsform. Das beispielhafte System 565 kann konfiguriert sein, um das in 1 gezeigte Verfahren 100 zu implementieren. Das Verarbeitungssystem 500 umfasst eine CPU 530, einen Schalter 511 und jeweils mehrere PPUs 300 und jeweilige Speicher 304. Das NVLink 310 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Der Schalter 511 ist schnittstellenmäßig zwischen dem Interconnect 302 und der CPU 530 verbunden. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform situiert sein, um ein Parallelverarbeitungsmodul 525 zu bilden.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzige Halbleiterplattform auf eine einzelne unitäre Halbleiter-basierte integrierte Schaltung beziehen, die auf einem Die oder Chip angefertigt ist. Es sei bemerkt, dass sich der Begriff einzige Halbleiterplattform ebenfalls auf Mehr-Chip-Module mit erhöhter Konnektivität beziehen kann, die eine Auf-Chip-Operation simulieren und die wesentliche Verbesserungen gegenüber der Benutzung einer herkömmlichen Busimplementierung vornehmen. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers situiert sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein und jede der PPUs 300 und/oder Speicher 304 können verpackte Vorrichtungen sein. In einer Ausführungsform sind die CPU 530, der Schalter 511 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform situiert.
  • In einer Ausführungsform ist die Signalrate von jedem NVLink 310 20 bis 25 Gigabit/s und jede PPU 300 umfasst sechs NVLink 310 Schnittstellen (wie in 6 gezeigt, sind fünf NVLink 310 Schnittstellen für jede PPU 300 umfasst). Jedes NVLink 310 stellt eine Datentransferrate von 25 Gigabyte/s in jeder Richtung bereit, wobei sechs Verknüpfungen 300 Gigabyte/s bereitstellen. Die NVLinks 310 können exklusiv für PPU-zu-PPU Kommunikation, wie in 6 gezeigt, oder einer Kombination von PPU-zu-PPU und PPU-zu-CPU verwendet werden, wenn die CPU 530 ebenfalls eines oder mehrere NVLink 310 Schnittstellen umfasst.
  • In einer Ausführungsform ermöglicht das NVLink 310 einen direkten Lade/Speicher/atomaren Zugriff der CPU 530 auf jeden Speicher 304 der PPU 300. In einer Ausführungsform unterstützt das NVLink 310 Kohärenzoperationen, die ermöglichen, das von dem Speicher 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, was die Cachezugriffslatenz für die CPU 530 verringert. In einer Ausführungsform umfasst das NVLink 310 Unterstützung für Address Translation Services (ATS), was der PPU 300 ermöglicht, auf Seitentabellen innerhalb der CPU 530 direkt zuzugreifen. Ein oder mehrere der NVLinks 310 können ebenfalls konfiguriert sein, um in einem Niedrigleistungsmodus zu arbeiten. 7 veranschaulicht ein beispielhaftes System 565, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Das beispielhafte System 565 kann konfiguriert sein, um das in 1 gezeigte Verfahren 100 zu implementieren.
  • Wie gezeigt, wird ein System 565 bereitgestellt, das mindestens eine zentrale Verarbeitungseinheit 530 umfasst, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann unter Verwendung jedes geeigneten Protokolls, wie beispielsweise PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), Hyper-Transport oder irgendeinem anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(en), implementiert sein. Das System 565 umfasst ebenfalls einen Hauptspeicher 540. Steuerlogik (Software) und Daten werden in dem Hauptspeicher 540 gespeichert, der die Form eines Direkt-Zugriffs-Speichers (RAM) annehmen kann.
  • Das System 565 umfasst ebenfalls Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und Anzeigevorrichtungen 545, d.h. eine herkömmliche CRT (Kathodenstrahlröhre), eine LCD (Flüssigkristallanzeige), eine LED (lichtemittierende Diode), eine Plasmaanzeige oder dergleichen. Eine Benutzereingabe kann von den Eingabevorrichtungen 560, z.B. Tastatur, Maus, Berührfeld, Mikrophon und dergleichen, empfangen werden. Jedes der vorhergehenden Module und/oder Vorrichtungen kann sogar auf einer einzigen Halbleiterplattform situiert sein, um das System 565 zu bilden. Alternativ können die verschiedenen Module ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers situiert sein.
  • Ferner kann das System 565 mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, Lokalbereichsnetzwerk (LAN), drahtlosen Netzwerk, Weitbereichsnetzwerk (WAN), wie beispielsweise dem Internet, Peer-zu-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) durch eine Netzwerkschnittstelle 535 für Kommunikationszwecke gekoppelt sein.
  • Das System 565 kann ebenfalls einen Sekundärspeicher umfassen (nicht gezeigt). Der Sekundärspeicher 610 umfasst beispielsweise ein Festplattenlaufwerk und/oder ein entfernbares Speicherlaufwerk, das ein Diskettenlaufwerk darstellt, ein Magnetbandlaufwerk, ein Kompaktdisklaufwerk, ein digitale versatile Disk-(DVD)-Laufwerk, eine Aufzeichnungsvorrichtung und einen Universal-Serial-Bus-(USB)-Flash-Speicher. Das entfernbare Speicherlaufwerk liest von und/oder schreibt auf eine entfernbare Speichereinheit auf eine wohlbekannte Art und Weise.
  • Computerprogramme oder Computersteuerlogik-Algorithmen können in dem Hauptspeicher 540 und/oder dem Sekundärspeicher gespeichert sein. Derartige Computerprogramme, wenn ausgeführt, ermöglichen dem System 565, verschiedene Funktionen durchzuführen. Der Speicher 540, die Speicherung und/oder jede andere Speicherung sind mögliche Beispiele von computerlesbaren Medien.
  • Die Architektur und/oder Funktionalität der verschiedener vorherigen Figuren kann im Kontext eines allgemeinen Computersystems, eines Platinensystems, eines Unterhaltungszwecken fest zugeordneten Spielkonsolensystems, eines anwendungsspezifischen Systems und/oder jedem anderen gewünschten System implementiert sein. Beispielsweise kann das System 565 die Form eines Tischcomputers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z.B. einer drahtlosen handgehaltenen Vorrichtung), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, einer am Kopf angebrachten Anzeige, einer handgehaltenen elektronischen Vorrichtung, eines mobilen Telefongeräts, eines Fernsehers, einer Arbeitsstation, einer Spielkonsole, eines eingebetteten Systems und/oder von jedem anderen Typ von Logik annehmen.
  • Während verschiedene Ausführungsformen oben beschrieben wurden, sei zu verstehen, dass sie lediglich beispielhaft und nicht begrenzend präsentiert wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch irgendeine der oben beschriebenen beispielhaften Ausführungsformen begrenzt werden, sondern sollte nur durch die folgenden Ansprüche und ihrer Äquivalente definiert werden.
  • Machinenlernen
  • Tiefe neuronale Netzwerke (DNNs), die auf Prozessoren entwickelt wurden, wie beispielsweise der PPU 300, wurden für diverse Verwendungsfälle, von selbstfahrenden Wagen bis schnellerer Wirkstoffentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis smarter Echtzeit-Sprachenübersetzung in Video-Chat-Anwendungen verwendet. Deep-Learning ist eine Technik, welche den neuronalen Lernverfahren des menschlichen Gehirns modelliert, die kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse schneller mit der Zeit liefert. Ein Kind wird anfangs durch einen Erwachsenen unterrichtet, verschiedene Formen korrekt zu identifizieren und zu klassifizieren, um schließlich imstande zu sein, Formen ohne irgendeine Nachhilfe zu identifizieren. Auf ähnliche Weise muss ein Deep-Learning-System oder ein neuronales Lernsystem in Objekterkennung und Klassifizierung trainiert werden, damit es smarter und effizienter beim Identifizieren von Grundobjekten, verdeckten Objekte usw. wird, während ebenfalls Objekten Kontext zugewiesen wird.
  • Bei der einfachsten Ebene sehen Neuronen im menschlichen Gehirn auf verschiedene Eingaben, die empfangen werden, wobei Wichtigkeitsniveaus jeder dieser Eingaben zugewiesen werden und eine Ausgabe an andere Neuronen weitergeleitet wird, um darauf zu handeln. Ein künstliches Neuron oder ein Perzeptron ist das grundlegendste Modell eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, die das Perzeptron trainiert wird, zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht basierend auf der Wichtigkeit des Merkmals beim Definieren der Gestalt eines Objekts zugewiesen.
  • Ein Modell eines tiefen neuronalen Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Perzeptronen (z.B. Knoten), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel gliedert eine erste Schicht des DLL-Modells ein Eingabebild eines Automobils in verschiedene Abschnitte auf und sucht nach Grundmustern, wie beispielsweise Linien und Winkel. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln, zu suchen. Die nächste Schicht kennzeichnet den Typ des Fahrzeugs und die letzten paar Schichten erzeugen ein Kennzeichen für das Eingabebild, welches das Modell einer speziellen Automobilmarke kennzeichnet.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Inferenz bekannten Verfahren zu kennzeichnen und zu klassifizieren. Beispiele von Inferenz (der Prozess, durch den ein DNN nützliche Information von einer gegebenen Eingabe extrahiert) umfassen ein Kennzeichnen handgeschriebener Zahlen auf Checks, die in Geldausgabe-Maschinen eingezahlt werden, ein Kennzeichnen von Bilder von Freunden in Photos, Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, Kennzeichnen und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von menschlicher Sprache in Echtzeit.
  • Während des Trainings strömen Daten durch das DNN in einer Vorwärtspropagierungsphase, bis eine Vorhersage erzeugt wird, die ein Kennzeichen angibt, das der Eingabe entspricht. Wenn das neuronale Netzwerk die Eingabe nicht korrekt kennzeichnet, dann werden Fehler zwischen dem korrekten Kennzeichen und dem vorhergesagten Kennzeichen analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtspropagierungsphase eingestellt, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netzwerke erfordert enorme Mengen an paralleler Rechenleistung, die Gleitkomma-Multiplikationen und Gleitkomma -Additionen umfassen, die von der PPU 300 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, das ein Latenz-empfindliches Verfahren ist, wo ein trainiertes neuronales Netzwerk auf neue Eingaben angewandt wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und im Allgemeinen neue Informationen abzuleiten.
  • Neuronale Netzwerke stützen sich sehr auf Matrixrechenoperationen und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Verarbeitungskernen, die für Matrixrechenoperationen optimiert sind und einige zehn bis hunderte von TFLOPS von Leistung liefern, ist die PPU 300 eine Rechenplattform, die imstande ist, Leistung zu liefern, die für tiefe neuronale Netzwerk-basierte künstliche Intelligenz und Maschinenlernanwendungen erforderlich ist.
  • 8 veranschaulicht ein beispielhaftes System 800 zum Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke gemäß einer Ausführungsform. Wie gezeigt, umfasst das System 800 ein Kameramodul 802 in Kommunikation mit einem TrailNet-DNN-Modul 804, ein Objekterfassungs-DNN-Modul 806 und eine Hindernisdetektormodul 808. In einer Ausführungsform kann das Kameramodul 802 Visualisierungsdaten (z.B. Bilddaten, Radardaten, Tiefendaten, LIDAR-Daten, Infrarotdaten, Sonardaten usw.) dem TrailNet-DNN-Modul 804, dem Objekterfassungs-DNN-Modul 806 und dem Hindernisdetektormodul 808 bereitstellen. In einer anderen Ausführungsform kann das Kameramodul eine oder mehrere Kameras einer Vielfalt von unterschiedlichen Typen innerhalb eines Fahrzeugs verwalten.
  • Außerdem kann in einer Ausführungsform das TrailNet-DNN-Modul 804 Visualisierungsdaten des Kameramoduls empfangen 802 und Fahrzeugortinformation ausgeben. Beispielsweise kann das TrailNet-DNN-Modul 804 drei Zahlen ausgeben, welche die Orientierung des Fahrzeugs mit Bezug auf den Pfad angeben, und drei Zahlen durch das DNN ausgeben, welche die laterale Position des Fahrzeugs mit Bezug auf den Pfad angeben.
  • Ferner kann in einer Ausführungsform das Objekterfassungs-DNN-Modul 806 Visualisierungsdaten des Kameramoduls 802 empfangen und kann eine Angabe hinsichtlich dessen ausgeben, ob eine Person oder ein großes Tier innerhalb der Visualisierungsdaten vorhanden ist (z.B. unter Benutzung eines DNN, wie beispielsweise eines YOLO DNN, usw.). In einer anderen Ausführungsform kann das Hindernisdetektormodul 808 Visualisierungsdaten des Kameramoduls 802 empfangen und einen Satz von Gewichten ausgeben, die eine Wahrscheinlichkeit von Hindernissen an verschiedenen Orten und Entfernungen angeben (z.B. unter Benutzung von Simultaner Lokalisierung und Kartenerstellung (SLAM) usw.). Auf diese Weise kann das Hindernisdetektormodul 808 einen Ort einer Kamera innerhalb einer Szene kennzeichnen und kann Information über einen relativen Ort von statischen Objekten innerhalb der Szene bereitstellen.
  • Des Weiteren umfasst das System 800 noch ein Controllermodul 810. In einer Ausführungsform kann das Controllermodul 810 Fahrzeugortinformation von dem TrailNet-DNN-Modul 804 (die z.B. die Pfadorientierung und de laterale Position des Fahrzeugs darstellt) empfangen und kann Lenkrichtungen (z.B. einen Lenkwinkel für die Fahrzeuge usw.), Benutzen der Fahrzeug Ort Information, erzeugen.
  • Das System 800 umfasst ebenfalls ein Kommunikationsmodul 812. Das Kommunikationsmodul 812 kann die Lenkrichtungen in einem ersten Format (z.B. einem ROS-Protokoll usw.) von den Controllermodul 810 empfangen und kann sie dann in Nachrichten in einem zweiten Format (z.B. ein MAV-Protokoll usw.) umwandeln. Das Kommunikationsmodul 812 kann dann die umgewandelten Nachrichten in dem zweiten Format an ein Fahrzeugsystemmodul 814 unter Benutzung eines Kommunikationsprotokolls 816 rundsenden.
  • Außerdem kann in einer Ausführungsform das Fahrzeugsystemmodul 814 die umgewandelten Nachrichten empfangen und kann derartige Nachrichten verwenden, um eine oder mehrere physische Komponenten des Fahrzeugs zu steuern (z.B. um eine Bewegung des Fahrzeugs usw. zu steuern). Auf diese Weise kann das Controllermodul 810 Lenkrichtungen berechnen und die Lenkrichtungen an das Kommunikationsmodul 812 senden, das die Richtungen in ein unterschiedliches Format umwandeln kann und sie an das Fahrzeugsystemmodul 814 zur Implementierung bei dem Fahrzeug senden kann.
  • Ferner umfasst das System 800 ein manuelles Eingabevorrichtungsmodul 818. Das manuelle Eingabevorrichtungsmodul 818 kann eine Eingabe von einem Benutzer empfangen (z.B. einen Startindikator, eine Kill-Switch-Auswahl, eine manuelle Korrekturauswahl usw.) und kann derartige Information an das Controllermodul 810 senden. Auf diese Weise kann dem System 800 eine manuelle Benutzereingabe bereitgestellt werden.
  • Des Weiteren werden noch das Kameramodul 802, das TrailNet-DNN-Modul 804, das Objekterfassungs-DNN-Modul 806, das Hindernisdetektormodul 808, das Controllermodul, das Kommunikationsmodul 812 und das manuelle Eingabevorrichtungsmodul 818 alle innerhalb eines einzigen Prozessors 820 implementiert. Eine Kommunikation zwischen derartige Modulen kann unter Verwendung eines vorbestimmten Protokolls (z.B. eines ROS-Protokolls usw.) durchgeführt werden. Das Fahrzeugsystemmodul 814 wird innerhalb von Steuerhardware 822 des Fahrzeugs implementiert, die von dem Prozessor 820 getrennt ist.
  • Niedrig Fliegende Autonome MAV-Wegnavigation unter Verwendung Tiefer Neuronaler Netzwerke für Umweltbewusstsein
  • Einführung
  • In einer Ausführungsform ist eine autonome Verfolgung eines menschengemachten Weges im Wald ein herausforderndes Problem für Robotersysteme. Anwendungen für eine derartige Fähigkeit umfassen unter anderem Suchen und Retten, Umgebungskartierung, Wildnisüberwachung und persönliche Videographie. Kleinstdrohnen (MAVs) bieten eine Anzahl von Vorteilen zum Lösen dieses Problems: sie sind nicht durch die Schwierigkeit oder Durchquerbarkeit des Terrains eingeschränkt, sie sind für hohe Geschwindigkeiten geeignet und sie weisen die Fähigkeit auf, schnell von einem Weg auf einen anderen Weg durch Fliegen durch den oder über dem Wald zu wechseln.
  • Damit ein vollständiges MAV-System einen Weg folgt, kann es nicht nur den Weg erfassen, um seine Lenkbefehle zu bestimmen, sondern es kann ebenfalls in Kenntnis von seiner Umgebung sein. Ein MAV, dem eine derartige Fähigkeit fehlt, ist in Gefahr mit überhängenden Zweigen oder noch schlimmer, mit Leuten oder Haustieren zu kollidieren, die den Weg verwenden. Umweltbewusstsein ist daher eine Komponente für Weg-folgende Roboter, insbesondere für niedrigfliegende MAVs.
  • In einer Ausführungsform wird ein MAV-System zur autonomen Wegverfolgung bereitgestellt. Das System kann ein tiefes neuronales Netzwerk (DNN) (genannt TrailNet in diesem Beispiel) zum Bestimmen der Ansichtsorientierung und des lateralen Versatzes des MAV innerhalb des Weges verwenden. Die berechnete Pose kann dann zur kontinuierlichen Steuerung verwendet werden, um dem MAV zu ermöglichen, über Waldwege zu fliegen. Außerdem kann ein Visionsmodul für Umweltbewusstsein dem MAV ermöglichen, Leute zu erfassen und zu vermeiden und Haustiere auf dem Weg zu erfassen und zu vermeiden, sowie auch die Tiefe vor dem Roboter für den Zweck des reaktiven Vermeidens von Hindernissen zu schätzen. Alle Subsysteme können gleichzeitig in Echtzeit im MAV unter Verwendung einer eigenständigen Rechenvorrichtung laufen. Die Verarbeitung im Fahrzeug kann verwendet werden, um die Sicherheit dieses missionskritischen Systems sicherzustellen.
  • In einer Ausführungsform kann ein Hardware/Software-System zur umweltbewussten autonomen Wegnavigation unter Verwendung von DNNs implementiert werden, die in Echtzeit an Bord einer MAV laufen können.
  • In einer anderen Ausführungsform kann eine DNN-Architektur zur Wegerfassung mit verbesserter Genauigkeit und Recheneffizienz über ein weniger vertrauensvolles Klassifizierungsschema zur stabileren Steuerung sowie auch zusätzliche Kategorien zum Schätzen von sowohl der Ansichtsorientierung als auch des lateralen Versatzes implementiert werden.
  • In noch einer anderen Ausführungsform kann eine Methodologie zum erneuten Training eines DNN mit 6 Kategorien (für Ansichtsorientierung und lateralem Versatz) durch Übertragungslernen eines Netzwerks mit 3 Kategorien (nur Orientierung) implementiert werden.
  • Systembeschreibung
  • Um eine robuste und flexible Plattform für Waldflugexperimente sicherzustellen, können kostengünstige handelsübliche Komponenten verwendet werden. Eine beispielhafte Hardwareeinrichtung kann einen Quadcopter oder eine Drohne mit Autopilot-Software, eine integrierte Rechenvorrichtung und einer Trägerplatineumfassen. Die Visionsverarbeitung kann eine nach vorne gerichtete Kamera verwenden. Die gesamte Verarbeitung kann auf der integrierten Rechenvorrichtung durchgeführt werden.
  • Das MAV kann mit einem nach unten gerichteten, optischer Flusssensor hoher Rahmenrate mit Sonar und Lidar ausgerüstet sein. Der entwickelte Flusssensor kann zuverlässige metrische Positions- und Haltungsschätzung durch Berechnen von 2D-optischem Fluss auf dem Boden bereitstellen, wobei dann Bodenentfernungsmessungen und Gyroskopmesswerte verwendet werden, um eine Fahrzeugbodengeschwindigkeit zu berechnen. Sobald berechnet, kann diese Geschwindigkeit an ein erweitertes Kalman-Filter (EKF) gesendet werden, das auf Flug-Controller-Hardware läuft, um mit anderen Sensormessungen (z.B. IMU) für eine noch genauere Zustandsschätzung fusioniert zu werden.
  • Das Diagramm in 9 veranschaulicht eine beispielhafte Software-Architektur 900 gemäß einer Ausführungsform. Ein Flugstapel kann als Firmware 902 für den Flug-Controller-Hardware-Autopiloten 922 verwendet werden. Die Flug-Firmware 902 kann eine flexible und robuste Steuerung über einen Bereich von MAV-Konfigurationen bereitstellen. Sie kann eine SITL(Software-in-the-loop)-Simulation umfassen, die zum Testen und Debugging des Controllers verwendet werden kann. Der Bordcomputer kann mit der Flug-Firmware 902 über ein vorbestimmtes Protokoll (z.B. MavLink usw.) kommunizieren. Das Roboterbetriebssystem (ROS) 904 kann auf dem Bordcomputer ausgeführt werden. Wie in 9 gezeigt, verwendet die Architektur 900 die folgenden ROS-Knoten 906-910: einen Kamera-Treiberknoten 906 zum Lesen einer USB-Kameraeingabe, einen Joystick-Treiberknoten 908 zum Lesen von Spiele-Controller-Befehlen, der für Teleoperation (z.B. während des Trainings und für Notfallüberbrückung) verwendet wird, und eine Nachrichtenbrücke an ein externes Autopilotmodul 910 zum Kommunizieren mit der Flug-Firmware 902.
  • In einer Ausführungsform kann eine Visionsverarbeitung von drei Knoten 912-916 durchgeführt werden. Ein TrailNet-DNN-Knoten 912 wendet ein trainiertes TrailNet-DNN an. Ein Objekterfassungsknoten 914 führt ein Echtzeit-Objekterfassung-DNN aus. Ein Hindernisdetektorknoten 916 führt einen visuellen Odometrie-Algorithmus aus, dessen Ausgabe in eine Kamera-zentrische Tiefenkarte zur Erfassung und Vermeidung von Hindernissen umgewandelt werden kann.
  • Der Controllerknoten 920 kann zum Berechnen gewünschter Bewegungsbefehle (Wegpunkte) gemäß aktueller TrailNet-DNN-Vorhersagen, erfasste Hindernisse/Objekte und Teleoperations-Befehle verantwortlich sein. Zur Sicherheit können die Teleoperations-Befehle Vorrang gegenüber DNN-Vorhersagen nehmen, so dass sich ein menschlicher Bediener jederzeit über das MAV hinwegsetzen kann, um unerwünschte Bewegungen zu verhindern. Der berechnete Wegpunkt kann dann an die Nachrichtenbrücke zu dem externen Autopilotenmodul 910 gesendet werden, der ihn der Flug-Firmware 902 über ein Kommunikationsprotokoll 918 erneut vorlegt. Eine rechtshändiges ENU(east-north-up)-Trägheitskoordinatenrahmen kann zur Wegpunktberechnung verwendet werden, das in den rechtshändige NED(northeastdown)-Koordinatenrahmen der Flug-Firmware 902' umgewandelt werden kann.
  • Vision-basierte Verarbeitung
  • Dieser Abschnitt beschreibt die Verarbeitung, die von den drei Knoten 912-916 unter Verwendung einer nach vorne gerichteten Kamera durchgeführt wird.
  • Schätzen des lateralen Versatzes und der Ansichtsorientierung mit DNN
  • 10 zeigt einen beispielhaften TrailNet-DNN-Knoten 1000, der ein tiefes neuronales Netzwerk (DNN) 1002 implementiert, das zum Schätzen des lateralen Versatzes und der Ansichtsorientierung des MAV mit Bezug auf den Weg verwendet wird, gemäß einer Ausführungsform. Das DNN 1002 kann ein ResNet-18 mit einer oder mehreren Änderungen umfassen (z.B. entfernte Stapelnormalisierung, ReLUs ersetzt durch verschobene ReLU (SReLU), Aktivierungsfunktionen, die rechenmäßig effiziente Näherungen an die hochwirksamen exponentiellen linearen Einheiten (ELUs) sind, eine doppelköpfige, vollständig verbundene Ausgabeschicht usw.).
  • In einer Ausführungsform kann die TrailNet-DNN-Architektur verwendet werden, um die Ansichtsorientierung und den lateralen Versatz des MAV mit Bezug auf die Wegmitte zu definieren. Das Netzwerk (etikettiert s-ResNet-18) kann eine ResNet-18 Architektur umfassen, jedoch ohne Stapelnormalisierung und mit der ReLU ersetzt durch eine verschobene ReLU. Die erste Faltungsschicht kann 7 × 7 sein, wohingegen alle anderen 3 × 3 sein können. Einige Schichten können abwärts Abtasten unter Verwendung eines Schritts von 2; alle anderen können einen Schritt von 1 verwenden. Alle Gewichte mit Ausnahme der lateralen Versatzschicht können mit dem IDSIA-Weg-Datensatz trainiert werden, danach können diese Gewichte festgeschrieben und die lateralen Versatzschichtgewichte mit einem Datensatz trainiert werden. Ein endgültiger gemeinsamer Optimierungsschritt kann ebenfalls durchgeführt werden.
  • In einer anderen Ausführungsform kann eine Klassifizierung mit Weichetiketten und nicht mit Regression aufgrund der Leichtigkeit von Datensammlung und Etikettierung sowie auch verringerter Empfindlichkeit gegenüber Rauschen durchgeführt werden. In einer Ausführungsform kann das Netzwerk 6 Kategorien und nicht 3 ausgeben, um nicht nur die 3 Orientierungen mit Bezug auf den Weg (links gerichtet / mittig gerichtet / rechts gerichtet) sondern ebenfalls die 3 lateralen Versatze (links verschoben / zentriert / recht verschoben) mit Bezug auf die Wegmitte zu erfassen. Diese zusätzlichen Kategorien können dabei helfen, eine genauere Zustandsschätzung und eine zuverlässigere Wegverfolgung bereitzustellen. Mit gerade drei Kategorien kann, wenn das MAV nahe dem Wegrand jedoch parallel zu dem Weg fliegt, das DNN nicht veranlassen, dass es sich dreht, weil es bereits geradeaus orientiert ist. Schließlich kann diese Nachlässigkeit bewirken, Baumzweige nahe dem Rand zu treffen. Somit wird eine robuste Navigation mit lediglich 3 Kategorien ausgeschlossen, aufgrund der Schwierigkeit die Mehrdeutigkeit aufzuheben, sich drehen zu müssen, um einen Orientierungsfehler zu korrigieren, und in einem nicht geraden Pfad fliegen zu müssen, um einen lateralen Versatzfehler zu korrigieren.
  • Das Training von DNNs kann große Mengen an Daten erfordern. Eine beispielhafte Vorgehensweise, das 6-Kategorie-DNN zu trainieren, wendet Prinzipien des Übertragungslernens an. Ein 3-Kategorie-DNN kann trainiert werden, um die Ansichtsorientierung (links / mittig / rechts) unter Verwendung eines Wegdatensatzes vorherzusagen. Dieser Datensatz kann Aufnahmen von Wanderungen umfassen, die von 3 Kameras (links 30, geradeaus und rechts 30 gerichtet) mit genug saisonübergreifenden und landschaftlicher Vielfalt aufgezeichnet werden, um alles mit Ausnahme der lateralen Versatzschichten des Netzwerks zu trainieren.
  • Um den Rest des Netzwerks zu trainieren, kann ein Datensatz gesammelt werden (z.B. unter Verwendung eines 3-Kamerariggs), wobei Kameras an einer Stange angebracht werden (so dass die Entfernung zwischen benachbarten Kameras eine vorbestimmte Entfernung ist). Daten können über mehrere Wege gesammelt werden, in dem Videomaterial von allen Kameras gleichzeitig aufgezeichnet wird, während die Kameras entlang einer Mitte des Weges bewegt werden. Die Videos können beschnitten (z.B. auf 60 horizontales Sichtfeld usw.) und können verwendet werden, um den zweiten 3-Kategorie-Kopf des Netzwerkes zu trainieren, der verwendet wird, um den lateralen Versatz (links / mittig / rechts) zu trainieren, während all die anderen Gewichte festgeschrieben werden.
  • In einer Ausführungsform kann das Einstellen einer vorbestimmten Grundlinie zwischen Kameras dem Netzwerk ermöglichen, den lateralen Versatz der Ansichtsorientierung eindeutig zu machen.
  • Während des Trainings kann eine Datenaugmentierungs-Pipeline verwendet werden, die umfasst: zufällige horizontale Flips (mit geeigneten Etikettenänderungen); zufälligen Kontrast (z.B. 0,2 Radius), Helligkeit (z.B. 0,2 Radius), Sättigung (z.B. 0,4 Radius), Schärfe (z.B. 0,3 Radius) und Jitter mit zufälligen Permutationen dieser Transformationen; Jitter zufälligen Maßstabs (z.B. min: 0,9, max: 1,2); zufällige Rotationen (z.B. max abs Winkel: 15); und zufällige Erträge.
  • In einer anderen Ausführungsform kann eine oder mehrere Verlustfunktionen verwendet werden. Beispielsweise kann die folgende Verlustfunktion während des Trainings implementiert werden: L = i p i ln ( y i ) Kreuzentropie λ 1 ( i y i ln ( y i ) ) Entropiebelohnung + λ 2 ϕ ( y ) Seitentauschpenale
    Figure DE102018108314A1_0001
    wobei pi und yi das geglättete Ground-Truth-Etikett bzw. die Netzwerkvorhersage der Kategorie i ∈ {links, mittig, rechts} ist, y ein 3-Elementvektor ist, der alle yi, enthält, λ2 und λ1 skalare Gewichte sind und die Seitentauschpenale grobe Fehler bestraft (d.h., das Vertauschen von links und rechts): ϕ ( y ) = { y l e f t falls  i ^ = r e c h t s y r i g h t falls  i ^ = l i n k s 0 falls  i ^ = m i t t i g
    Figure DE102018108314A1_0002
    wobei die î = arg maxi pi Ground-Truth-Kategorie ist. Diese Verlustfunktion kann zum Training von sowohl der Ansichtsorientierung als auch der lateralen versetzten Köpfe des Netzwerks verwendet werden. Etikettenglättung in dem ersten Term und der Entropiebelohnungsterm können zusammen helfen, ein zu sehr vertrauendes Verhalten des Netzwerks zu verringern, was kann helfen kann, einen stabilen Flug zu ermöglichen.
  • Außerdem kann in einer Ausführungsform ein Controller implementiert werden, um probabilistische DNN-Vorhersagen zu mischen. Diese Ausgestaltung kann die Transformation von DNN-Vorhersagen in Flugbefehle vereinfachen. Jedes Mal, wenn das TrailNet-DNN seine Vorhersage sendet, kann der Controller einen kleinen Drehwinkel α im entgegengesetzten Uhrzeigersinn berechnen mittels: α = β 1 ( y r i g h t v o y l e f t v o ) + β 2 ( y r i g h t l o y l e f t l o ) ,
    Figure DE102018108314A1_0003
    was die gewichtete Summe der Unterschiede zwischen den rechten und linken Vorhersagen der Ansichtsorientierung (vo) und der lateralen versetzten (ℓ0) Köpfe des Netzwerks ist, wobei β1 und β2 skalare Winkelparameter sind, welche die Drehgeschwindigkeit steuern. Wir können β12=10° setzen.
  • Sobald der Drehwinkel bekannt ist, kann ein neuer Wegpunkt berechnet werden, der in einiger Entfernung vor dem MAV und bei einen Drehwinkel relativ zu dem Karosserierahmen des MAV lokalisiert ist. Der Entfernung zu dem Wegpunkt kann die Geschwindigkeit des Fahrzeugs beeinflussen. Wir stellen die Orientierung ein, um der neuen Wegpunktrichtung zugewandt zu sein. Der Wegpunkt wird in den Trägheitsrahmen umgewandelt und (mit einer festen Entfernung zu dem Boden) an die Nachrichtenbrücke zu dem externen Autopilotmodul zur Autopilot-Flugplanausführung gesandt.
  • Objekterfassung mit DNN
  • Zur Sicherheit kann eine Systemkollisionsvermeidung implementiert werden. Ein Objekterfassungs-DNN kann zum Erfassen von Objekten verantwortlich sein, die dem Hindernisdetektormodul nicht sichtbar sein können, wenn sie sich unabhängig bewegen. Für jedes erfasste Objekt kann der Netzwerk-Begrenzungskasten Bildkoordinaten bereitstellen. Wenn die Kastengröße einen Schwellenprozentsatz des Bildrahmens überschreitet, können die Steuerungen von Gleichung (3) übersteuert werden, um das MAV zu veranlassen, anzuhalten und zu schweben.
  • Ein beispielhaftes DNN, das zur Objekterfassung verwendet werden kann, basiert auf einem YOLO DNN mit Modifikationen, um eine effiziente Ausführung unter Verwendung einer integrierten Rechenvorrichtung zu erlauben. Das Netzwerk kann auf einem oder mehreren Datensätzen erneut trainiert werden.
  • Erfassung und Vermeidung von Hindernissen mit Monokularer SLAM
  • Zusätzlich zu übergeordneten Navigationsaufgaben, wie beispielsweise Wegverfolgung und semantische Objekterfassung, kann ein autonomes MAV imstande sein, Hindernisse in seinem Pfad schnell zu erfassen und zu vermeiden, sogar wenn diese Hindernisse nie zuvor gesehen wurden (und daher nicht zum Training verfügbar sind). Derartige Hindernisse können statisch sein, wie beispielsweise Bäume oder Wände, oder dynamisch sein, wie beispielsweise Leute, Tiere oder bewegen Fahrzeuge. Aus Sicherheitsgründen kann das System in der Anwesenheit von komplexen, hochdynamischen Umgebungen, wie beispielsweise Waldwege, und angesichts von Änderungen in Beleuchtung, Schatten und Pose robust sein.
  • Ein Ansatz zur Hinderniserfassung unterer Ebene kann eine Stereo-basierte Anpassung umfassen. Monokulare Techniken können ebenfalls verwendet werden, die Tiefe-von-einzelnem-Bild-Techniken unter Verwendung von maschinellen Lernverfahren und tiefen Lernverfahren umfasst. Eine andere Technik kann eine Tiefe unter Verwendung eines monokularen Videostroms schätzen.
  • In einer Ausführungsform kann ein DSO(direct sparse odometry)-Verfahren verwendet werden. Beispielsweise kann DSO halbdichte 3D-Karten der Umgebung berechnen und rechenmäßig effizient sein. Das DSO-Verfahren kann auf der ARM-Architektur der integrierten Rechenvorrichtung ausgeführt werden. Auf dieser Plattform kann die DSO Updates zu den Kameraposenschätzungen sowie auch dem Tiefenbild bereitstellen und seine Keyframes aktualisieren.
  • Während des Fluges kann die DSO eine Schätzung der globalen Pose xdso der Kamera und ein inverses Tiefenbild Idso bereitstellen. Unter Verwendung der rektifizierten Kamera-Intrinsics kann Idso in eine 3D-Punktwolke im Ortsraum der Kamera umgewandelt werden. Um diese Punkte zur Navigation oder Hinderniserfassung zu verwenden, können sie in das MAV-Bezugssystem gebracht werden, die eine passende metrische Skala umfasst. Diese Ähnlichkeitstransformation kann unter Verwendung der Odometrieinformation bestimmt werden, die durch die anderen Sensoren des MAV bereitgestellt wird.
  • Im Einzelnen kann der optische Flusssensor zu jeder gegebenen beliebigen Zeit verwendet werden, um eine Schätzung der aktuellen Pose (xmav) des Fahrzeugs in dem Trägheitsrahmen zu erzeugen. Wenn das visuelle Odometriesystem ein xdso, Idso Paar bereitstellt, kann es der letzten Pose zugeordnet werden. Sobald mehrere dieser Messpaare erzeugt wurden, kann Procrustes Analyse verwendet werden, um die starre Ähnlichkeitstransformation zwischen dem MAV-Bezugssystem und dem der visuellen Odometriemessungen zu erzeugen. Diese Transformation kann dann verwendet werden, um die von Idso extrahierten Punkte in das MAV-Bezugssystem zu bringen, wo nahegelegene Objekte dann erfasst werden können. Der Satz von Messpaaren (xdso gepaart mit xmav) kann aktualisiert werden, wenn die Bewegung des MAV eine ausreichende Parallaxe erzeugt. Diese Paare können in einem kreisförmigen Puffer gehalten werden, so dass schließlich ältere Messungen zugunsten neuer Messungen verworfen werden können. Dieses sich bewegende Fenster weist die Wirkung eines potenziellen Änderns der metrischen Skala im Laufe der Zeit auf, wobei es jedoch bedeutsamer ist, das es dem System erlauben kann, gegen Messfehler robust zu sein und pathologische Initialisierungen zu vermeiden.
  • Schlussfolgerung
  • Ein autonomes MAV-System kann implementiert werden, das Waldwege unter dem Vordach unter Verwendung von tiefen neuronalen Netzwerken (DNNs) navigiert. Ein TrailNet-DNN kann verschobene ReLU-Aktivierungsfunktionen für erhöhte Genauigkeit und Recheneffizienz benutzen und kann drei zusätzliche Kategorien durch Übertragungslernen aufnehmen, um die Schätzung von sowohl des lateralen Versatzes als auch der Ansichtsorientierung mit Bezug auf den Weg zu ermöglichen. Das DNN kann ebenfalls eine Verlustfunktion implementieren, um übermäßiges Vertrauen in dem Netzwerk zu verhindern. Zusammen können diese Verbesserungen eine glattere und robustere Navigationssteuerung ergeben. Umweltbewusstsein kann ebenfalls mit einem zusätzlichen Wahrnehmungsmodul erzeugt werden, das DNN-basierte Objekterfassung und Hinderniserfassung über monokulare visuelle Odometrie umfasst. Sämtliche Software kann gleichzeitig in Echtzeit auf einer On-Board-Rechenvorrichtung innerhalb des MAV laufen. Zusammen können diese Verbesserungen eine vollständig autonome, sichere Roboternavigation in unstrukturierten Umgebungen ermöglichen.
  • Während verschiedene Ausführungsformen oben beschrieben wurden, sei zu verstehen, dass sie lediglich beispielhaft und nicht begrenzend präsentiert wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch irgendeine der oben beschriebenen beispielhaften Ausführungsformen begrenzt werden, sondern sollte nur durch die folgenden Ansprüche und ihrer Äquivalente definiert werden.

Claims (16)

  1. Verfahren, umfassend: Empfangen von Bilddaten bei einem tiefen neuronalen Netzwerk (DNN); Bestimmen, durch das DNN, sowohl einer Orientierung eines Fahrzeugs mit Bezug auf einen Pfad als auch einer lateralen Position des Fahrzeugs mit Bezug auf den Pfad unter Benutzung der Bilddaten; und Steuern eines Orts des Fahrzeugs unter Benutzung der Orientierung des Fahrzeugs mit Bezug auf den Pfad und der lateralen Position des Fahrzeugs mit Bezug auf den Pfad.
  2. Verfahren gemäß Anspruch 1, wobei die Bilddaten eines oder mehrere von optischen Daten, Infrarotdaten, LIDAR-Daten (Lichterfassungs- und Abstandsmessungsdaten), Radardaten, Tiefendaten und Sonardaten sind.
  3. Verfahren gemäß Anspruch 1 oder 2, wobei das DNN ein überwachtes Klassifizierungsnetzwerk umfasst.
  4. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das DNN eine Verlustfunktion implementiert.
  5. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die Orientierung mit Bezug auf den Pfad eine Wahrscheinlichkeit umfasst, dass ein Fahrzeug aktuell nach links mit Bezug auf den Pfad gerichtet ist, eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell nach rechts mit Bezug auf den Pfad gerichtet ist, und eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell geradeaus mit Bezug auf den Pfad gerichtet ist.
  6. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die laterale Position mit Bezug auf den Pfad eine Wahrscheinlichkeit umfasst, dass ein Fahrzeug aktuell nach links mit Bezug auf den Pfad verschoben ist, eine Wahrscheinlichkeit, dass ein Fahrzeug aktuell nach rechts mit Bezug auf den Pfad verschoben ist, und eine Wahrscheinlichkeit, dass ein Fahrzeug mit Bezug auf den Pfad mittig ist.
  7. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die Orientierung und die laterale Position in Echtzeit innerhalb des Fahrzeugs bestimmt werden.
  8. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das Steuern des Ortes des Fahrzeugs ein Umwandeln der Orientierung des Fahrzeugs mit Bezug auf den Pfad und der lateralen Position des Fahrzeugs mit Bezug auf den Pfad in Lenkrichtungen umfasst.
  9. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das DNN eine Richtungsstabilität durch Benutzen einer Vorhersage mit einem verringerten Vertrauen steuert.
  10. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei ein zweites DNN eine Objekterfassung innerhalb des Pfades durchführt.
  11. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei ein drittes DNN eine dem Pfad zugeordnete Hinderniserfassung durchführt.
  12. System umfassend: einen Prozessor, der konfiguriert ist, um ein Verfahren auszuführen, wie in einem der Ansprüche 1 bis 11 erwähnt.
  13. System gemäß Anspruch 12, wobei die Bilddaten eine oder mehrere von optische Daten, Infrarotdaten, LIDAR-Daten (Lichterfassungs- und Abstandsmessungsdaten), Radardaten, Tiefendaten und Sonardaten sind.
  14. System gemäß Anspruch 12, wobei das DNN ein überwachtes Klassifizierungsnetzwerk umfasst.
  15. System gemäß Anspruch 12, wobei das DNN eine Verlustfunktion implementiert.
  16. Computerlesbares Speichermedium, das Anweisungen speichert, die, wenn durch einen Prozessor ausgeführt, den Prozessor veranlassen, die Schritte eines Verfahren durchzuführen, wie in einem der Ansprüche 1 bis 11 erwähnt.
DE102018108314.9A 2017-04-07 2018-04-09 Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke Pending DE102018108314A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762483155P 2017-04-07 2017-04-07
US62/483,155 2017-04-07
US15/939,116 2018-03-28
US15/939,116 US10705525B2 (en) 2017-04-07 2018-03-28 Performing autonomous path navigation using deep neural networks

Publications (1)

Publication Number Publication Date
DE102018108314A1 true DE102018108314A1 (de) 2018-10-11

Family

ID=63588163

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018108314.9A Pending DE102018108314A1 (de) 2017-04-07 2018-04-09 Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke

Country Status (3)

Country Link
US (4) US11281221B2 (de)
CN (1) CN115855022A (de)
DE (1) DE102018108314A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113557189A (zh) * 2019-03-08 2021-10-26 马自达汽车株式会社 汽车用运算系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3924868A4 (de) * 2019-02-11 2022-11-30 643AI Ltd. Systeme und verfahren zur verwaltung mehrerer autonomer fahrzeuge
US20220237414A1 (en) * 2021-01-26 2022-07-28 Nvidia Corporation Confidence generation using a neural network
CN112965488B (zh) * 2021-02-05 2022-06-03 重庆大学 基于迁移学习神经网络的婴儿监控移动机器小车
CN116583335A (zh) * 2021-02-10 2023-08-11 美国智脑竞速公司 用于使用独立设备操作智能运载工具的设备、系统和方法
CN114440874B (zh) * 2021-12-31 2022-11-01 深圳市云鼠科技开发有限公司 基于光流和光栅的融合定位方法和装置
CN114581741B (zh) * 2022-05-09 2022-07-15 广东电网有限责任公司佛山供电局 基于图像增强的断路器试验机器人接线定位方法及装置

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4700307A (en) 1983-07-11 1987-10-13 General Dynamics Corp./Convair Division Feature navigation system and method
FR2610428B1 (fr) 1986-12-09 1997-01-03 Kubota Ltd Systeme de commande pour vehicule d'exploitation autopropulse, notamment pour la pulverisation de produits chimiques destines a des traitements agricoles
JPH04252308A (ja) 1990-10-03 1992-09-08 Aisin Seiki Co Ltd ニューラル・ネットワークを利用した車両誘導システム
US5548512A (en) * 1994-10-04 1996-08-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Autonomous navigation apparatus with neural network for a mobile vehicle
JP3647584B2 (ja) * 1996-12-26 2005-05-11 富士通株式会社 学習型自己定位装置
US6351711B1 (en) * 2000-09-14 2002-02-26 Sirf Technology, Inc. GPS navigation system using neural networks
DE60331575D1 (de) 2002-10-30 2010-04-15 Mitsubishi Heavy Ind Ltd Verfahren und einrichtung zum lenken eines fahrzeugs ohne kontakt mit der spur
US7756615B2 (en) 2005-07-26 2010-07-13 Macdonald, Dettwiler & Associates Inc. Traffic management system for a passageway environment
CN101033978B (zh) 2007-01-30 2010-10-13 珠海市智汽电子科技有限公司 智能汽车辅助导航和自动兼辅助驾驶系统
CN101778753B (zh) 2007-08-15 2012-12-05 沃尔沃技术公司 用于支持车辆的车道保持的操作方法和系统
WO2010071842A1 (en) 2008-12-19 2010-06-24 Xollai, Llc System and method for determining an orientation and position of an object
US20100209885A1 (en) 2009-02-18 2010-08-19 Gm Global Technology Operations, Inc. Vehicle stability enhancement control adaptation to driving skill based on lane change maneuver
JP2011140077A (ja) * 2010-01-06 2011-07-21 Honda Motor Co Ltd 加工システム及び加工方法
WO2012104897A1 (ja) * 2011-01-31 2012-08-09 トヨタ自動車株式会社 安全制御装置および安全制御方法
CN107272678B (zh) * 2011-04-11 2020-11-06 克朗设备公司 使用经协调路径规划器有效调度多个自动非完整车辆的方法和设备
US9751529B2 (en) 2011-06-09 2017-09-05 GM Global Technology Operations LLC Lane sensing through lane marker identification for lane centering/keeping
JP6486679B2 (ja) * 2014-12-25 2019-03-20 株式会社キーエンス 画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラム
CA3067177A1 (en) 2015-02-10 2016-08-18 Mobileye Vision Technologies Ltd. Sparse map for autonomous vehicle navigation
US10168159B2 (en) * 2015-09-24 2019-01-01 Microsoft Technology Licensing, Llc Magnetometer arrays for inertial navigation, mapping, and drift compensation
WO2017059581A1 (en) * 2015-10-09 2017-04-13 SZ DJI Technology Co., Ltd. Salient feature based vehicle positioning
US9731755B1 (en) 2016-02-16 2017-08-15 GM Global Technology Operations LLC Preview lateral control for automated driving
WO2017143588A1 (en) * 2016-02-26 2017-08-31 SZ DJI Technology Co., Ltd. Systems and methods for adjusting uav trajectory
US9946264B2 (en) 2016-03-22 2018-04-17 Sharp Laboratories Of America, Inc. Autonomous navigation using visual odometry
CN106066644A (zh) 2016-06-17 2016-11-02 百度在线网络技术(北京)有限公司 建立智能车辆控制模型的方法、智能车辆控制方法及装置
CN105892471B (zh) 2016-07-01 2019-01-29 北京智行者科技有限公司 汽车自动驾驶方法和装置
US10207820B2 (en) 2016-07-05 2019-02-19 Toyota Motor Engineering & Manufacturing North America, Inc. Systems for transporting, deploying, and docking unmanned aerial vehicles mountable on a ground vehicle
US10248124B2 (en) * 2016-07-21 2019-04-02 Mobileye Vision Technologies, Inc. Localizing vehicle navigation using lane measurements
CN108773373B (zh) 2016-09-14 2020-04-24 北京百度网讯科技有限公司 用于操作自动驾驶车辆的方法和装置
US10452068B2 (en) * 2016-10-17 2019-10-22 Uber Technologies, Inc. Neural network system for autonomous vehicle control
US9989964B2 (en) * 2016-11-03 2018-06-05 Mitsubishi Electric Research Laboratories, Inc. System and method for controlling vehicle using neural network
IL288191B2 (en) * 2016-12-23 2023-10-01 Mobileye Vision Technologies Ltd A navigation system with forced commitment constraints
JP7235247B2 (ja) * 2017-03-01 2023-03-08 モービルアイ ビジョン テクノロジーズ リミテッド 不確実性を検知しながらナビゲートするためのシステム及び方法
US10328934B2 (en) * 2017-03-20 2019-06-25 GM Global Technology Operations LLC Temporal data associations for operating autonomous vehicles
WO2018175441A1 (en) * 2017-03-20 2018-09-27 Mobileye Vision Technologies Ltd. Navigation by augmented path prediction
EP4357869A3 (de) * 2017-03-20 2024-06-12 Mobileye Vision Technologies Ltd. Trajektorieauswahl für ein autonomes fahrzeug
US10409280B2 (en) 2017-03-21 2019-09-10 Baidu Usa Llc Control dominated planning and control system for autonomous driving vehicles
CN107139917B (zh) 2017-04-27 2019-05-31 江苏大学 一种基于混杂理论的无人驾驶汽车横向控制系统和方法
CN107609633B (zh) 2017-05-03 2020-08-14 同济大学 车联网复杂网络中基于深度学习的车辆行驶影响因素的位置预测模型构造方法
CN107390682B (zh) 2017-07-04 2020-08-07 安徽省现代农业装备产业技术研究院有限公司 一种农用车辆自动驾驶路径跟随方法及系统
CN107436603B (zh) 2017-07-27 2020-06-09 安徽省现代农业装备产业技术研究院有限公司 一种农用车辆曲线路径自动驾驶方法及系统
US10528824B2 (en) 2017-12-11 2020-01-07 GM Global Technology Operations LLC Artificial neural network for lane feature classification and localization
US10661799B2 (en) 2017-12-27 2020-05-26 Motorola Solutions, Inc. Device, system and method for autonomous tactical vehicle control
US20200020117A1 (en) 2018-07-16 2020-01-16 Ford Global Technologies, Llc Pose estimation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113557189A (zh) * 2019-03-08 2021-10-26 马自达汽车株式会社 汽车用运算系统
CN113557189B (zh) * 2019-03-08 2023-07-18 马自达汽车株式会社 汽车用运算系统

Also Published As

Publication number Publication date
CN115855022A (zh) 2023-03-28
US20220269271A1 (en) 2022-08-25
US11281221B2 (en) 2022-03-22
US20230013338A1 (en) 2023-01-19
US20200341469A1 (en) 2020-10-29
US20220197284A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
US10705525B2 (en) Performing autonomous path navigation using deep neural networks
DE102018108314A1 (de) Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke
DE102021112247A1 (de) Inhaltsbewusste Stilcodierung unter Verwendung neuronaler Netzwerke
DE102022103363A1 (de) Verwenden neuronaler netze zum durchführen von objekterkennung, instanzsegmentierung und semantischer entsprechung aus der bounding-box-überwachung
DE112020001253T5 (de) Techniken zum Trainieren eines neuronalen Netzes unter Verwendung von Transformationen
DE102020128653B4 (de) Greifbestimmung für ein Objekt in Unordnung
DE102020129425A1 (de) Geführte unsicherheit-bewusste richtlinien-optimierung: kombinieren von modellfreien und modellbasierten strategien für probeneffizientes lernen
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102021105080A1 (de) Techniken zur verwendung eines neuronalen netzwerks zur erweiterung eines bilds
DE102019122790A1 (de) Robotersteuerungssystem
DE112020005206T5 (de) Bestimmen der Objektorientierung aus einem Bild mit Maschinenlernen
DE102021121560A1 (de) Objektbild vervollständigung
DE102021113105A1 (de) Techniken zum modifizieren und trainieren eines neuronalen netzwerks
DE112021000351T5 (de) Maschinenlernbasiertes objekterfassungssystem
DE102021123213A1 (de) Bewegungssteuerung eines neuronalen Netzes
DE112021001733T5 (de) Hardwaregesteuerte aktualisierung eines physikalischen betriebsparameters zur fehlererkennung vor ort
DE102021108927A1 (de) Abstandsbestimmungen unter verwendung eines oder mehrerer neuronaler netzwerke
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102021100919A1 (de) Bestimmen einer 3d-handpose aus einem 2d-bild unter verwenden von maschinellem lernen
DE112021000953T5 (de) Erzeugung von kennzeichen mittels neuronaler netze
DE102020127508A1 (de) Posenverfolgung von objekten in der hand
DE102022110000A1 (de) Dynamische gewichtsaktualisierungen für neuronale netzwerke
DE102022103881A1 (de) Generieren von frames für die neuronale simulation mit einem oder mehreren neuronalen netzen
DE102022113954A1 (de) Pfadplanung mit neuronalen netzen
DE102022110657A1 (de) High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed