-
Der hier beschriebene Gegenstand bezieht sich im Allgemeinen auf Systeme und Verfahren zur Erzeugung synthetischer Trainingsdaten.
-
Der technische Hintergrund wird beschrieben.
-
Die Beschreibung des technischen Hintergrunds soll den Kontext der Offenbarung allgemein darstellen. Die Arbeit des Erfinders, soweit sie eventuell in diesem Hintergrundabschnitt beschrieben ist, und Aspekte der Beschreibung, die zum Zeitpunkt der Einreichung kein Stand der Technik sind, sind weder explizit noch implizit gegenüber vorliegender Technologie als Stand der Technik zugestanden.
-
Manche Maschinelles-Lernen-Algorithmen bilden ein mathematisches Modell beruhend auf Beispieldaten, die allgemein als Trainingsdaten bezeichnet werden, um Voraussagen oder Entscheidungen zu treffen, ohne dass sie ausdrücklich dazu programmiert werden. Im Wesentlichen empfängt der Maschinelles-Lernen-Algorithmus Trainingsdaten, und beruhend auf der Ausgabe des Maschinelles-Lernen-Algorithmus wird ein Gewicht oder werden mehrere Gewichte des Maschinelles-Lernen-Algorithmus angepasst.
-
Eine Form des Trainings eines Maschinelles-Lernen-Algorithmus beinhaltet überwachtes Lernen. Überwachtes Lernen beinhaltet die Verwendung kommentierter Trainingsdaten. Kommentierte Trainingsdaten sind Trainingsdaten, die die zu verarbeitenden Daten enthalten, sowie eine Anmerkung hinsichtlich der korrekten Voraussage oder Entscheidung, die durch den Maschinelles-Lernen-Algorithmus erzielt werden sollte, der trainiert wird. Wenn der Maschinelles-Lernen-Algorithmus beispielsweise zur Bestimmung trainiert wird, falls ein Bild entweder das einer Katze oder eines Hundes ist, enthalten die Trainingsdaten Bilder von Katzen und Hunden sowie eine Anmerkung, die angibt, falls das Bild tatsächlich das einer Katze oder eines Hundes ist. Während des überwachten Lernens werden die Bilder dem Maschinelles-Lernen-Algorithmus bereitgestellt, und beruhend auf der Ausgabe des Maschinelles-Lernen-Algorithmus und der Anmerkungsdaten wird das Gewicht oder werden die mehreren Gewichte des Maschinelles-Lernen-Algorithmus angepasst. Über die Zeit wird der Maschinelles-Lernen-Algorithmus derart angepasst, dass er genau bestimmen oder voraussagen kann, ob ein Bild einen Hund oder eine Katze enthält.
-
Ein Nachteil des Lernens eines Maschinelles-Lernen-Algorithmus auf überwachte Weise besteht darin, dass die Trainingsdaten Anmerkungen enthalten müssen. Das Anmerken bzw. Kommentieren von Trainingsdaten wird im Allgemeinen durch einen menschlichen Bediener manuell durchgeführt. Bei dem vorstehend angeführten Beispiel muss der menschliche Bediener also jedes Bild überprüfen, bestimmen, falls das Bild das einer Katze oder eines Hundes ist, und dann das Bild mit der korrekten Antwort anmerken bzw. kommentieren.
-
Diese Schwierigkeit des Kommentierens von Daten zur Erzeugung von Sätzen von Trainingsdaten wird bei komplexeren Anwendungen verschlimmert, wie beim Lernen von Objekterfassungsalgorithmen, die auf maschinellem Lernen beruhen, die gegenwärtig für die Verwendung in Fahrzeugen entwickelt werden. Auf maschinellem Lernen beruhende Objekterfassungsalgorithmen erfordern ferner eine signifikante Menge an Trainingsdaten, um den Objekterfassungsalgorithmus geeignet zu trainieren, um eine Fülle verschiedener Objekte zu erkennen, die um ein Fahrzeug vorhanden sein können.
-
Nun wird die Kurzzusammenfassung beschrieben.
-
Dieser Kurzzusammenfassungsabschnitt fasst die Offenbarung allgemein zusammen und stellt keine umfassende Beschreibung ihres vollen Schutzbereichs oder all ihrer Merkmale dar.
-
Gemäß einem Ausführungsbeispiel kann ein System zur Erzeugung synthetischer Trainingsdaten einen oder mehrere Prozessoren und einen Speicher enthalten, der mit dem einen oder den mehreren Prozessoren kommuniziert. Der Speicher kann ein Empfangsmodul, ein Duplikationsmodul und ein Einfügemodul enthalten. Das Empfangsmodul kann Instruktionen aufweisen, die bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren zum Empfangen ursprünglicher Trainingsdaten veranlassen. Die ursprünglichen Trainingsdaten können in der Form einer dreidimensionalen Punktwolke vorliegen und können ein oder mehrere ursprüngliche Objekte aufweisen, die durch zumindest einen Abschnitt der dreidimensionalen Punktwolke gebildet sind. Das eine oder die mehreren ursprünglichen Objekte können mit ursprünglichen Anmerkungsdaten kommentiert sein.
-
Das Duplikationsmodul kann Instruktionen aufweisen, die bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren zum Duplizieren eines des/der einen oder mehreren ursprünglichen Objekte veranlassen, um ein synthetisches Objekt zu erzeugen. Das synthetische Objekt kann aus Duplikatabschnitten der dreidimensionalen Punktwolke gebildet sein, die das eine des/der einen oder mehreren ursprünglichen Objekte gebildet haben, und mit synthetischen Anmerkungsdaten kommentiert sein. Die synthetischen Anmerkungsdaten können eine Duplizierung der ursprünglichen Anmerkungsdaten des einen oder der mehreren ursprünglichen Objekte sein.
-
Das Einfügemodul kann Instruktionen enthalten, die bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren zum Einfügen des synthetischen Objekts in die ursprünglichen Trainingsdaten veranlassen, um die synthetischen Trainingsdaten zu erzeugen.
-
Gemäß einem anderen Ausführungsbeispiel kann ein Verfahren zur Erzeugung synthetischer Trainingsdaten die Schritte eines Empfangens ursprünglicher Trainingsdaten, die in der Form einer dreidimensionalen Punktwolke vorliegen und ein oder mehrere ursprüngliche Objekte aufweisen, die durch zumindest einen Abschnitt der dreidimensionalen Punktwolke gebildet sind und die mit ursprünglichen Anmerkungsdaten kommentiert sind, Duplizierens eines des/der einen oder mehreren ursprünglichen Objekte zur Erzeugung eines synthetischen Objekts, das aus Duplikatabschnitten der dreidimensionalen Punktwolke gebildet ist, die das eine des/der einen oder mehreren ursprünglichen Objekte gebildet haben, und das mit synthetischen Anmerkungsdaten kommentiert ist, und Einfügens des synthetischen Objekts in die ursprünglichen Trainingsdaten zur Erzeugung der synthetischen Trainingsdaten enthalten.
-
Gemäß einem weiteren Ausführungsbeispiel ist ein nichtflüchtiges computerlesbares Medium bereitgestellt, das Instruktionen zur Erzeugung synthetischer Trainingsdaten speichert, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlasst, ursprüngliche Trainingsdaten zu empfangen, die in der Form einer dreidimensionalen Punktwolke gebildet sind und ein oder mehrere ursprüngliche Objekte aufweisen, die durch zumindest einen Abschnitt der dreidimensionalen Punktwolke gebildet sind und mit ursprünglichen Anmerkungsdaten kommentiert sind, ein des/der einen oder mehreren ursprünglichen Objekte zur Erzeugung eines synthetischen Objekts zu duplizieren, das aus Duplikatabschnitten der dreidimensionalen Punktwolke gebildet ist, die das eine des/der einen oder mehreren ursprünglichen Objekte gebildet haben, und mit synthetischen Anmerkungsdaten kommentiert ist, und das synthetische Objekt in die ursprünglichen Trainingsdaten zur Erzeugung der synthetischen Trainingsdaten einzufügen.
-
Weitere Anwendungsgebiete und verschiedene Verfahren zur Verbesserung der offenbarten Technologie werden aus der folgenden Beschreibung ersichtlich. Die Beschreibung und spezifische Beispiele in dieser Kurzzusammenfassung sollen lediglich der Veranschaulichung dienen und den Schutzbereich vorliegender Offenbarung nicht einschränken.
-
Die beiliegenden Zeichnungen, die einen Teil der Spezifikation bilden, veranschaulichen verschiedene Systeme, Verfahren und weitere Ausführungsbeispiele der Offenbarung. Es ist klar, dass die veranschaulichten Komponentenbegrenzungen (beispielsweise Kästchen, Kästchengruppen oder andere Formen) in den Figuren ein Beispiel der Begrenzungen darstellen. Bei einigen Ausführungsbeispielen kann eine Komponente als Vielzahl von Komponenten entworfen sein, oder eine Vielzahl von Komponenten kann als eine Komponente entworfen sein. Bei einigen Ausführungsbeispielen kann eine Komponente, die als innere Komponente einer anderen Komponente gezeigt ist, als äußere Komponente implementiert sein und umgekehrt. Ferner können Komponenten nicht im Maßstab gezeichnet sein.
- 1 veranschaulicht ein Fahrzeug, das ein Synthetische-Trainingsdaten-Erzeugungssystem enthält,
- 2 veranschaulicht eine ausführlichere Darstellung des Synthetische-Trainingsdaten-Erzeugungssystems,
- 3 veranschaulicht ein Beispiel einer Straßenszene, die eine Vielzahl verschiedener Objekte enthält und für jedes Objekt mit Anmerkungsdaten in der Form eines Rahmens und Objekttyps kommentiert ist, der mit dem jeweiligen Rahmen verbunden ist,
- 4 veranschaulicht eine Darstellung der Straßenszene von 3 aus der Vogelperspektive, die die Trainingsdaten zeigt, die die Vielzahl verschiedener Objekte und die Anmerkungsdaten enthalten,
- 5 veranschaulicht ein Beispiel von Punktwolkendaten-Trainingsdaten in Vogelperspektivenansicht, die zwei Objekte enthalten, die mit ursprünglichen Anmerkungsdaten kommentiert sind,
- die 6A, 6B und 6C veranschaulichen ein ursprüngliches Objekt, das mit ursprünglichen Informationen kommentiert ist, und zwei Typen synthetischer Objekte, die jeweils mit synthetischen Informationen kommentiert sind,
- 7 veranschaulicht eine Darstellung von Trainingsdaten in Vogelperspektivenansicht, die zwei synthetische Objekte aufweisen, die in die Trainingsdaten eingefügt sind, und
- 8 veranschaulicht ein Verfahren zur Erzeugung synthetischer Trainingsdaten.
-
Es folgt die ausführliche Beschreibung.
-
Es werden ein System und ein Verfahren zur Erzeugung synthetischer Trainingsdaten beschrieben. Wie im Hintergrundabschnitt angeführt, erfordert ein überwachtes Lernen eines Maschinelles-Lernen-Algorithmus die Verwendung von Trainingsdaten, die mit Anmerkungsdaten gepaart sind. Die Anmerkungsdaten enthalten die Informationen, auf die der Maschinelles-Lernen-Algorithmus für eine akkurate Voraussage trainiert wird. Die Anmerkung der Trainingsdaten ist allerdings ein zeitaufwendiger und mühsamer Prozess, der die Menge an Trainingsdaten, die zum Lernen eines Maschinelles-Lernen-Algorithmus verfügbar sind, stark einschränkt.
-
Das System und das Verfahren erzeugen synthetische Trainingsdaten, die zum Lernen des Maschinelles-Lernen-Algorithmus verwendet werden können. Die erzeugten synthetischen Trainingsdaten beruhen auf ursprünglichen Trainingsdaten, die beispielsweise manuell erzeugt wurden. Das System und das Verfahren können die ursprünglichen Trainingsdaten zusammen mit den Anmerkungen ferner duplizieren und die duplizierten Trainingsdaten dann in die ursprünglichen Trainingsdaten einfügen, wodurch synthetische Trainingsdaten erzeugt werden. Die duplizierten Trainingsdaten können vor dem Einfügen einer oder mehreren Transformationen unterzogen werden.
-
Bei einem Beispiel können die ursprünglichen Trainingsdaten Punktwolkeninformationen zum Lernen eines Objekterfassungsalgorithmus für ein autonomes Fahrzeugsystem sein. Die ursprünglichen Trainingsdaten können eine Anzahl verschiedener Objekte enthalten, die durch einen oder mehrere Punkte der Punktwolkeninformationen gebildet sein können. Diese Objekte können angemerkt bzw. kommentiert sein. Das System und das Verfahren können diese Objekte zusammen mit ihren Anmerkungen kopieren und diese dann wieder in die ursprünglichen Trainingsdaten einfügen. Dadurch werden die Trainingsdaten nun mehr Objekte enthalten. Vor der Durchführung des Einfügens können die duplizierten Objekte transformiert werden, wie beispielsweise gedreht, invertiert und desgleichen, bevor sie eingefügt werden. Die Trainingsdaten können also nicht nur zusätzliche Objekte enthalten, sondern Objekte, die transformiert wurden, um den Objekterfassungsalgorithmus besser zu trainieren.
-
1 zeigt ein Beispiel eines Fahrzeugs 100. Hier ist ein „Fahrzeug“ eine beliebige Form eines angetriebenen Transportmittels. Bei einer oder mehreren Implementierungen ist das Fahrzeug 100 ein Automobil. Obwohl hier Anordnungen hinsichtlich Automobilen beschrieben werden, ist selbstverständlich, dass die Ausführungsbeispiele nicht auf Automobile beschränkt sind. Bei einigen Implementierungen kann das Fahrzeug 100 eine beliebige Robotervorrichtung oder Form eines angetriebenen Transportmittels sein, die/das beispielsweise ein oder mehrere automatisierte oder autonome Systeme enthält, und somit von der hier beschriebenen Funktionalität profitiert. Bei anderen Beispielen kann das System anstelle eines Fahrzeugs 100 oder einer anderen Robotervorrichtung einfach ein Objekterfassungssystem sein, das Informationen empfangen kann, wie Punktwolkeninformationen von einem LIDAR-Sensor, und das Vorhandensein eines oder mehrerer Objekte in den Informationen bestimmen kann.
-
Bei verschiedenen Ausführungsbeispielen können die automatisierten/autonomen Systeme oder kann die Kombination von Systemen variieren. Gemäß einer Ausgestaltung ist das automatisierte System beispielsweise ein System, das eine autonome Steuerung des Fahrzeugs gemäß einer oder mehrerer Automatisierungsstufen bereitstellt, wie die durch die Society of Automotive Engineers (SAE) definierten Stufen (beispielsweise Stufen 0-5). Als solches kann das autonome System eine halbautonome Steuerung oder eine vollautonome Steuerung bereitstellen, wie es bezüglich des/der Autonomes-Fahren-Moduls/Module 160 beschrieben wird.
-
Das Fahrzeug 100 enthält auch verschiedene Komponenten. Selbstverständlich ist es bei verschiedenen Ausführungsbeispielen nicht unbedingt erforderlich, dass das Fahrzeug 100 alle die in 1 gezeigten Komponenten aufweist. Das Fahrzeug 100 kann eine beliebige Kombination der verschiedenen in 1 gezeigten Komponenten aufweisen. Das Fahrzeug 100 kann ferner zusätzliche Komponenten zu den in 1 gezeigten aufweisen. Bei einigen Anordnungen kann das Fahrzeug 100 ohne eine oder mehrere der in 1 gezeigten Komponenten implementiert sein. Während die verschiedenen Komponenten in 1 derart gezeigt sind, als ob sie sich innerhalb des Fahrzeugs 100 befänden, ist selbstverständlich, dass sich eine oder mehrere dieser Komponenten außerhalb des Fahrzeugs 100 befinden kann/können. Ferner können die gezeigten Komponenten physisch über große Entfernungen voneinander getrennt sein und als Remote Services (beispielsweise Cloud-Computing-Services) vorgesehen sein.
-
Einige der möglichen Komponenten des Fahrzeugs 100 sind in 1 gezeigt und werden zusammen mit folgenden Figuren beschrieben. Allerdings werden viele der Komponenten in 1 der Kürze dieser Beschreibung halber nach der Beschreibung der 2-8 beschrieben. Außerdem ist klar, dass der Einfachheit und Klarheit der Veranschaulichung halber Bezugszeichen unter den verschiedenen Figuren nach Eignung wiederholt sind, um entsprechende oder analoge Komponenten anzugeben. Die Beschreibung umreißt außerdem viele spezifische Details, um ein gründliches Verständnis der hier beschriebenen Ausführungsbeispiele aufzubieten. Es ist klar, dass die hier beschriebenen Ausführungsbeispiele unter Verwendung verschiedener Kombinationen dieser Komponenten ausgeübt werden können.
-
Jedenfalls kann das Fahrzeug 100 ein Synthetische-Trainingsdaten-Erzeugungssystem 150 enthalten. Wie in dieser Spezifikation beschriebenen, hat das Synthetische-Trainingsdaten-Erzeugungssystem 150 die Fähigkeit zur Erzeugung synthetischer Trainingsdaten unter Verwendung ursprünglicher Trainingsdaten, die beispielsweise manuell erzeugt wurden. Das Synthetische-Trainingsdaten-Erzeugungssystem 150 ist ferner fähig, Objekte in den ursprünglichen Trainingsdaten zu duplizieren und diese dann wieder in die ursprünglichen Daten einzufügen, um synthetische Trainingsdaten zu erzeugen. Vor der Einfügung können die duplizierten Objekte außerdem transformiert werden, wie gedreht, invertiert, und dergleichen. Dadurch können zusätzliche Objekte in die Trainingsdaten eingefügt werden, ohne dass ein manuelles Sammeln und Anmerken von Informationen erforderlich ist.
-
Ein Ausführungsbeispiel des Synthetische-Trainingsdaten-Erzeugungssystems 150 ist in 2 weiter veranschaulicht. Wie gezeigt, kann das Synthetische-Trainingsdaten-Erzeugungssystem 150 einen Prozessor oder mehrere Prozessoren 110 enthalten. Der/Die Prozessor(en) 110 können demnach ein Teil des Synthetische-Trainingsdaten-Erzeugungssystems 150 sein, oder das Synthetische-Trainingsdaten-Erzeugungssystem 150 kann über einen Datenbus oder einen anderen Kommunikationsweg auf den/die Prozessor(en) 110 zugreifen. Bei einem oder mehreren Ausführungsbeispielen ist/sind der/die Prozessor(en) 110 eine anwendungsspezifische integrierte Schaltung, die zum Implementieren von Funktionen konfiguriert ist, die mit einem Empfangsmodul 171, einem Duplikationsmodul 172, einem Einfügemodul 173, einem Transformationsmodul 174 und/oder einem Vogelperspektivenansicht-Erzeugungsmodul 175 verbunden sind.
-
Im Allgemeinen ist/sind der/die Prozessor(en) 110 ein elektronischer Prozessor, wie ein Mikroprozessor, der verschiedene hier beschriebene Funktionen durchführen kann. Bei einem Ausführungsbeispiel enthält das Synthetische-Trainingsdaten-Erzeugungssystem 150 einen Speicher 170, der das Empfangsmodul 171, das Duplikationsmodul 172, das Einfügemodul 173, das Transformationsmodul 174 und/oder das Vogelperspektivenansicht-Erzeugungsmodul 175 speichert. Der Speicher 170 ist ein Speicher mit wahlfreiem Zugriff („Random-Access Memory“, RAM), ein Nur-Lese-Speicher („Read-Only Memory“, ROM), ein Festplattenlaufwerk, ein Flash-Speicher oder ein anderer geeigneter Speicher zur Speicherung der Module 171-175. Die Module 171-175 sind beispielsweise computerlesbare Instruktionen, die bei Ausführung durch den/die Prozessor(en) 110 den/die Prozessor(en) 110 zur Durchführung der hier beschriebenen verschiedenen Funktionen veranlassen.
-
Bei einem Ausführungsbeispiel enthält das Synthetische-Trainingsdaten-Erzeugungssystem 150 ferner einen oder mehrere Datenspeicher 180. Der/Die Datenspeicher 180 ist/sind bei einem Ausführungsbeispiel eine elektronische Datenstruktur, wie eine Datenbank, die in dem Speicher 170 oder einem anderen Speicher gespeichert ist, und die mit Routinen konfiguriert ist, die durch den/die Prozessor(en) 110 zum Analysieren gespeicherter Daten, Bereitstellen gespeicherter Daten, Organisieren gespeicherter Daten usw. ausgeführt werden können. Bei einem Ausführungsbeispiel speichert/speichern der/die Datenspeicher 180 demnach Daten, die beim Ausführen verschiedener Funktionen durch die Module 171-175 verwendet oder erzeugt werden.
-
Bei einem Ausführungsbeispiel kann/können der/die Datenspeicher 180 ursprüngliche Trainingsdaten 182 speichern, die in der Form einer oder mehrerer dreidimensionaler Punktwolken vorliegen können. Eine dreidimensionale Punktwolke kann ein Satz von Datenpunkten in einem dreidimensionalen Raum sein. Dreidimensionale Punktwolken werden im Allgemeinen durch 3D-Scanner erzeugt, wie LIDAR-Sensoren, die viele Punkte auf den äußeren Oberflächen von Objekten messen. Die ursprünglichen Trainingsdaten 182 können ein oder mehrere ursprüngliche Objekte 183 enthalten, die in zumindest einem Abschnitt der Punkte der einen oder mehreren dreidimensionalen Punktwolken der ursprünglichen Trainingsdaten gebildet sind. Da diese Trainingsdaten bei überwachtem Lernen verwendet werden können, können die ursprünglichen Objekte 183 mit Anmerkungen gepaart sein. Die Anmerkungen geben an, dass eine Ansammlung von Punkten ein Objekt darstellt. Das Objekt kann mit einem Rahmen angemerkt sein, der einige weitere Informationen enthalten kann, wie den Typ des Objekts. Der Typ des Objekts kann beispielsweise ein Fußgänger, Fahrzeug, großes Fahrzeug, Gebäude, eine Straße, ein Zeichen, usw. sein. Diese ursprünglichen Trainingsdaten 182 dienen im Wesentlichen als Ground Truth zum Trainieren eines oder mehrerer Maschinelles-Lernen-Algorithmen.
-
Wie vorstehend beschrieben sind die ursprünglichen Trainingsdaten 182 die ursprünglichen kommentierten Trainingsdaten, die manuell kommentiert wurden, was ein zeitaufwendiger und mühsamer Prozess sein kann. Der/Die Datenspeicher 180 kann/können auch synthetische Trainingsdaten 185 enthalten. Die synthetischen Trainingsdaten 185 können in der Form einer oder mehrerer Punktwolken ähnlich wie die ursprünglichen Trainingsdaten 182 vorliegen, und können mehrere Objekte enthalten, die durch zumindest einen Abschnitt der Punkte gebildet sind, die die eine oder mehreren Punktwolken bilden. Einige dieser Objekte können die ursprünglichen Objekte 183 sein, die sich in den ursprünglichen Trainingsdaten finden. Allerdings können die synthetischen Trainingsdaten zusätzlich oder alternativ auch synthetische Objekte 187 enthalten, die mit synthetischen Anmerkungen gepaart sind.
-
Wie später beschrieben können die synthetischen Objekte 187 Objekte sein, die aus den ursprünglichen Objekten 183 dupliziert wurden und in die ursprünglichen Trainingsdaten 182 eingefügt wurden, um die synthetischen Trainingsdaten 185 zu erzeugen. Zusätzlich zur Duplizierung können die synthetischen Objekte 187 auch transformiert werden, beispielsweise rotiert, umgedreht, invertiert und dergleichen, und dann in die eine oder mehreren Punktwolken eingefügt werden, welche die synthetischen Trainingsdaten 185 bilden. Dadurch können zusätzliche Objekte zu den Trainingsdaten hinzugefügt werden, die bereits kommentiert sind, und nicht den mühsamen Prozess der manuellen Kommentierung erforderten.
-
Das Empfangsmodul 171 kann Instruktionen enthalten, die bei Ausführung durch den/die Prozessor(en) 110 den/die Prozessor(en) 110 zum Empfangen der ursprünglichen Trainingsdaten 182 veranlassen. Die ursprünglichen Trainingsdaten 182 können dann in dem/den Datenspeicher(n) 180 gespeichert werden. Wie vorstehend beschrieben können die ursprünglichen Trainingsdaten 182 in der Form einer dreidimensionalen Punktwolke vorliegen und können ein oder mehrere ursprüngliche Objekte 183 aufweisen, die mit ursprünglichen Anmerkungsdaten kommentiert sind.
-
3 veranschaulicht beispielsweise eine Szene 300 einer Straße in einer Stadt. Die Szene 300 enthält viele Objekte, wie PKWs, Vans, Fahrradfahrer und Fußgänger. Bei diesem Beispiel wurde ein Fahrradfahrer identifiziert und kommentiert. Die Kommentierung bzw. Anmerkung enthält in diesem Beispiel einen Rahmen 301A, der den allgemeinen Ort des Fahrradfahrers identifiziert, und Objektidentifiziererinformationen 301B, die identifizieren, dass das Objekt ein Fahrradfahrer ist. Die Szene 300 enthält auch andere Objekte, wie einen Van (der mit dem Rahmen 303A und dem Identifizierer 303B kommentiert ist), einen PKW (der mit dem Rahmen 304A und dem Identifizierer 304B kommentiert ist), und einen Fußgänger (der mit dem Rahmen 306A und dem Identifizierer 306B kommentiert ist), sowie einige weitere Objekte.
-
Wenn Objekterfassungssysteme dreidimensionale Punktwolkendaten von einem Sensor, wie einem LIDAR-Sensor, empfangen, können sie die dreidimensionalen Punktwolkendaten im Allgemeinen in eine zweidimensionale Vogelperspektivenansicht umwandeln. Zum Beispiel veranschaulicht 4 eine zweidimensionale Vogelperspektivenansicht 400 der Szene 300 von 3. Wie zuvor enthält die zweidimensionale Vogelperspektivenansicht 400 den Van (der mit dem Rahmen 303A und dem Identifizierer 303B kommentiert ist), den PKW (der mit dem Rahmen 304A und dem Identifizierer 304B kommentiert ist) und den Fußgänger (der mit dem Rahmen 306A und dem Identifizierer 306B kommentiert ist), sowie einige weitere Objekte. In manchen Fällen können menschliche Bediener Anmerkungen zu den Trainingsdaten hinzufügen, wie die Rahmen 301A-306A und die Objektidentifizierer 301B-306B, indem sie die Anmerkungen hinzufügen, wenn sie die Szene 300 in der zweidimensionalen Vogelperspektivenansicht 400 betrachten. Dies macht es für die menschlichen Kommentierer im Allgemeinen leichter, die sich in der Szene 300 befindenden Objekte zu kommentieren, da sie einen Überblick über die Szene 300 haben.
-
Es sollte klar sein, dass sich der Typ der Anmerkungen, die bei den Trainingsdaten durchgeführt werden, von Anwendung zu Anwendung unterscheiden kann. Bei der vorstehenden Anwendung lagen die Trainingsdaten in der Form einer oder mehrerer dreidimensionaler Punktwolken vor, die ein oder mehrere Objekte enthalten, die mit einem Rahmen und einem Objektidentifizierer kommentiert werden. Allerdings können mehr Informationen, weniger Informationen oder andere Arten von Informationen verwendet werden, um Objekte zu kommentieren, die in den dreidimensionalen Punktwolkendaten gefunden werden. Die ursprünglichen Trainingsdaten 182 müssen nicht unbedingt in der Form einer oder mehrerer dreidimensionaler Punktwolken vorliegen, und können in anderen Formen vorliegen, wie zweidimensionalen Informationen, oder könnten eine multidimensionale Datenstruktur sein.
-
Das in 2 gezeigte Duplikationsmodul 172 kann Instruktionen enthalten, die bei Ausführung durch den/die Prozessor(en) 110 den/die Prozessor(en) 110 zum Duplizieren eines des/der einen oder mehreren ursprünglichen Objekte 183 zum Erzeugen eines synthetischen Objekts 187 veranlassen. Das synthetische Objekt 187 ist aus Duplikatabschnitten der dreidimensionalen Punktwolke gebildet, die eines des/der einen oder mehreren ursprünglichen Objekte 183 gebildet hat, und ist mit synthetischen Anmerkungsdaten kommentiert. Die synthetischen Anmerkungsdaten können eine Duplizierung der ursprünglichen Anmerkungsdaten des einen oder der mehreren ursprünglichen Objekte 183 sein.
-
Das Einfügemodul 173 kann Instruktionen enthalten, die bei Ausführung durch den/die Prozessor(en) 110 den/die Prozessor(en) 110 zum Einfügen des synthetischen Objekts 187 in die ursprünglichen Trainingsdaten 182 zur Erzeugung der synthetischen Trainingsdaten 185 veranlassen. Bei diesem Beispiel sind die synthetischen Trainingsdaten 185 als von den ursprünglichen Trainingsdaten 182 getrennte Einheit gezeigt. Es sollte aber klar sein, dass das Einfügemodul 173 den/die Prozessor(en) 110 zum einfachen Einfügen des synthetischen Objekts 187 in die ursprünglichen Trainingsdaten 182 veranlassen kann. Die synthetischen Objekte 187 der synthetischen Trainingsdaten 185 können tatsächlich in die ursprünglichen Trainingsdaten 182 eingefügt werden, anstatt dass ein Sekundärsatz von Trainingsdaten in der Form der synthetischen Trainingsdaten 185 erzeugt wird.
-
Das Synthetische-Trainingsdaten-Erzeugungssystem 150 kann auch ein Transformationsmodul 174 enthalten. Das Transformationsmodul 174 enthält Anweisungen, die bei Ausführung durch den/die Prozessor(en) 110 den/die Prozessor(en) 110 zum Transformieren des synthetischen Objekts 187 hinsichtlich eines Ego-Fahrzeugs veranlassen. Das Transformationsmodul 174 kann im Wesentlichen ein synthetisches Objekt 187 transformieren, bevor es in die ursprünglichen Trainingsdaten 182 und/oder die synthetischen Trainingsdaten 185 eingefügt wird. Zum besseren Verständnis wird auf 5 Bezug genommen. Diese Figur veranschaulicht Trainingsdaten 500 in der Form einer dreidimensionalen Punktwolke, die ein Ego-Fahrzeug 502 umgeben. Die Trainingsdaten 500 könnten bei diesem Beispiel als ursprüngliche Trainingsdaten 182 betrachtet werden.
-
Bei diesem Beispiel enthalten die Trainingsdaten 500 zwei ursprüngliche Objekte 183A und 183B. Das ursprüngliche Objekt 183A ist durch einen Abschnitt von Punkten 504A gebildet, die in der dreidimensionalen Punktwolke der Trainingsdaten 500 gefunden werden, während das ursprüngliche Objekt 183B durch einen Abschnitt von Punkten 504B gebildet wird, die in der dreidimensionalen Punktwolke der Trainingsdaten 500 gefunden werden. Außerdem wurden die ursprünglichen Objekte 183A und 183B ferner jeweils mit Anmerkungsdaten 506A und 506B kommentiert. Die Anmerkungsdaten 506A und 506B können in der Form einer oder mehrerer Kästchen vorliegen, die die Objekte identifizieren, und/oder könnten Objektidentifizierungsinformationen enthalten, wie den Typ des Objekts, ähnlich wie es für 4 beschrieben wurde.
-
Gemäß 6A kann das gezeigte ursprüngliche Objekt 183B wie vorstehend beschrieben aus dem Abschnitt der Punkte 504B der Punktwolke der Trainingsdaten 500 gebildet und mit den Anmerkungsdaten 506B kommentiert sein. Das Duplikationsmodul 172 veranlasst den/die Prozessor(en) 110 zum Duplizieren des ursprünglichen Objekts 183B durch Duplizieren des Abschnitts der Punkte 504B der Punktwolke und der Anmerkungsdaten 506B. Bei einem Beispiel können dieser duplizierte Abschnitt der Punkte 504B der Punktwolke und die Anmerkungsdaten 506B in die Trainingsdaten 500 als drittes Objekt eingefügt werden. Da dieses dritte Objekt aber ein Duplikat eines ursprünglichen Objekts, wie des ursprüngliches Objekts 183B ist, ist dieses dritte Objekt ein synthetisches Objekt. Nach Einfügen des duplizierten Objekts könnten die Trainingsdaten 500 somit als synthetische Trainingsdaten, wie die synthetischen Trainingsdaten 185 betrachtet werden.
-
Zusätzlich zum Duplizieren ursprünglicher Objekte, wie der ursprünglichen Objekte 183A und 183B, und Einfügen dieser in Trainingsdaten kann das Transformationsmodul 174 das duplizierte Objekt vor seinem Einfügen in die Trainingsdaten 500 auch transformieren. Beispielsweise zeigt 6B ein synthetisches Objekt 187A, das aus Punkten 604A gebildet ist und mit Anmerkungsdaten 606A kommentiert ist. Das synthetische Objekt 187A ist im Wesentlichen ein Duplikat des ursprünglichen Objekts 183B, wurde aber um ungefähr 200° gedreht. Zumindest ein Abschnitt der Punkte 504B des ursprünglichen Objekts 183B wurde als die Punkte 604A des synthetischen Objekts 187A dupliziert. Ferner wurden auch die Anmerkungsdaten 506B des ursprünglichen Objekts 183B als Anmerkungsdaten 606A dupliziert. Der Hauptunterschied besteht bei diesem Beispiel darin, dass das Transformationsmodul 174 den/die Prozessor(en) 110 zum Drehen dieses Objekts und der Punkte 604A veranlasst, die das synthetische Objekt 187A bilden. Nach Durchführen dieser Transformation kann das synthetische Objekt 187A dann in die Trainingsdaten 500 eingefügt werden.
-
6C veranschaulicht ein weiteres synthetisches Objekt 187B. Das synthetische Objekt 187B ist im Wesentlichen ein Duplikat des ursprünglichen Objekts 183B, wurde aber invertiert. Die Punkte 604B, die das synthetische Objekt 187B bilden, wurden also von dem ursprünglichen Objekt 183B dupliziert und invertiert. Die Anmerkungsdaten 606B sind im Wesentlichen eine Kopie der Anmerkungsdaten 506B des ursprünglichen Objekts 183B. Wie zuvor kann das synthetische Objekt 187B nach Durchführen dieser Transformation dann in die Trainingsdaten 500 eingefügt werden.
-
Das Einfügemodul 173 kann den/die Prozessor(en) 110 zum Einfügen eines oder mehrerer dieser synthetischen Objekte, wie des synthetischen Objekts 187A und/oder des synthetischen Objekts 187B in die Trainingsdaten veranlassen, die Trainingsdaten 500 in der Form einer dreidimensionalen Punktwolke sein können. Beispielsweise veranschaulicht 7 die Trainingsdaten 500 in der Form der Punktwolke, enthält nun aber synthetische Objekte, wie synthetische Objekte 187C und/oder 187D. Diese synthetischen Objekte 187C und/oder 187D können Duplikate eines oder mehrerer ursprünglicher Objekte entweder von einer ursprünglichen Form der Trainingsdaten 500 oder einem anderen Trainingsdatensatz sein. Bei einem Beispiel sind die synthetischen Objekte 187C und 187D Duplikate des ursprünglichen Objekts 183B, die rotiert, invertiert, umgedreht und dergleichen wurden, und in die Trainingsdaten 500 eingefügt wurden, wodurch im Wesentlichen synthetische Trainingsdaten erzeugt werden, wie die synthetischen Trainingsdaten 185, die in dem/den Datenspeicher(n) 180 gespeichert sind.
-
Das Einfügemodul 173A veranlasst den/die Prozessor(en) 110 im Allgemeinen zum Einfügen der synthetischen Objekte, wie 187C und/oder 187D, hinsichtlich des Ego-Fahrzeugs 502. Die Punkte 704A, die das synthetische Objekt 187C bilden, und die Punkte 704B, die das synthetische Objekt 187D bilden, sollten daher derart beschaffen sein, dass Kanten, die durch die Punkte 704A (die als Kanten 708A und 710A gezeigt sind) und die Punkte 704B (die als Kanten 708B und 710B gezeigt sind) definiert sind, im Allgemeinen zu dem Ego-Fahrzeug 502 gerichtet sein sollten.
-
Ferner sollte das Ego-Fahrzeug 502 im Allgemeinen als Zentrum der Punktwolke der Trainingsdaten 500 betrachtet werden. Die Sensoren des Ego-Fahrzeugs 502, die LIDAR-Sensoren sein können, sollten daher die Kanten nahegelegener Objekte erfassen können. Die Kanten sollten daher dem Ego-Fahrzeug 502 im Wesentlichen gegenüberliegen. Beim Einfügen der synthetischen Objekte 187C und/oder 187D veranlasst das Einfügemodul 173 den/die Prozessor(en) 110 zur Erfassung der Kanten und dazu, beim Einfügen der synthetischen Objekte 187C und/oder 187D in die Trainingsdaten 500 dies derart durchzuführen, dass die Kanten 708A und 710A des synthetischen Objekts 187C und die Kanten 708B und 710B des synthetischen Objekts 187D im Allgemeinen zu dem Ego-Fahrzeug 502 schauen, um realistischere synthetische Bilder auszubilden. Das Transformationsmodul 174 muss die synthetischen Objekte 187C und/oder 187D daher derart rotieren, invertieren oder anderweitig transformieren, dass die Kanten 708A und 710A des synthetischen Objekts 187C und die Kanten 708B und 710B des synthetischen Objekts 187D im Allgemeinen zu dem Ego-Fahrzeug 502 schauen.
-
Das Transformationsmodul 174 kann den/die Prozessor(en) 110 außerdem zum Reduzieren der Anzahl von Punkten, die das synthetische Objekt bilden, beruhend auf der Entfernung des synthetischen Objekts hinsichtlich des Ego-Fahrzeugs 502 veranlassen. Wenn das synthetische Objekt beispielsweise immer weiter von dem Ego-Fahrzeug 502 entfernt ist, kann das Transformationsmodul 174 den/die Prozessor(en) 110 zum Verringern der Anzahl von Punkten veranlassen, die das synthetische Objekt bilden. Der Grund für diese Verringerung der Anzahl von Punkten, die das synthetische Objekt bilden, beruht auf Daten in der echten Welt, die gezeigt haben, dass Objekte, die in der echten Welt durch LIDAR-Sensoren erfasst werden, typischerweise eine Verringerung der Punkte erfahren, die die Objekte bilden, wenn die Entfernung von dem Ego-Fahrzeug 502 zunimmt. Das Transformationsmodul 174 kann den/die Prozessor(en) 110 daher zur Durchführung einer Transformation der duplizierten Daten zum Verringern der Anzahl von Punkten veranlassen, sodass ein Objekt realistischer repräsentiert wird.
-
Das in 2 gezeigte Vogelperspektivenansicht-Erzeugungsmodul 175 kann Anweisungen enthalten, die bei Ausführung durch den/die Prozessor(en) 110 den/die Prozessor(en) 110 zum Erzeugen einer Vogelperspektivenansicht der Trainingsdaten 182, wie in 7 als Trainingsdaten 500 gezeigt, veranlassen. Da synthetische Objekte, wie synthetische Objekte 187C und/oder 187D zu der Vogelperspektivenversion der Trainingsdaten 500 hinzugefügt sind, aktualisiert das Transformationsmodul 174 die synthetischen Trainingsdaten, dass sie die Transformation des synthetischen Objekts wie in die Trainingsdaten eingefügt enthalten. Das Einfügemodul kann den/die Prozessor(en) 110 dann zum Einfügen des synthetischen Objekts in die Vogelperspektivenversion der Trainingsdaten und Aktualisieren der Trainingsdaten zum Enthalten des synthetischen Objekts wie eingefügt in der Vogelperspektivenansicht veranlassen.
-
Durch Duplizieren bereits kommentierter Abschnitte von Trainingsdaten, wie von Objekten in der dreidimensionalen Punktwolke, und dann neu Einfügen dieser in Trainingsdaten können zusätzliche Objekte, die bereits kommentiert wurden und keine manuelle Anmerkung erforderten, die zeitaufwendig und mühsam sein kann, schnell und sicher zu Trainingsdaten hinzugefügt werden, um komplexere Trainingsdaten für ein vollständigeres Lernen von Maschinelles-Lernen-Algorithmen wie Objekterfassungsalgorithmen bei diesem bestimmten Beispiel auszubilden.
-
8 zeigt ein Verfahren 800 zur Erzeugung synthetischer Trainingsdaten. Das Verfahren 800 wird vom Gesichtspunkt des Fahrzeugs 100 in 1 und des Synthetische-Trainingsdaten-Erzeugungssystems 150 von 2 aus beschrieben. Allerdings ist klar, dass dies lediglich ein Beispiel einer Implementierung des Verfahrens 800 ist. Während das Verfahren 800 in Kombination mit dem Synthetische-Trainingsdaten-Erzeugungssystem 150 beschrieben wird, ist klar, dass das Verfahren 800 nicht auf eine Implementierung mit dem Synthetische-Trainingsdaten-Erzeugungssystem 150 beschränkt ist, sondern dies lediglich ein Beispiel eines Systems ist, welches das Verfahren 800 implementieren kann.
-
In Schritt 802 veranlasst das Empfangsmodul 171 den/die Prozessor(en) 110 zum Empfangen der ursprünglichen Trainingsdaten 182. Die ursprünglichen Trainingsdaten 182 können in der Form einer dreidimensionalen Punktwolke vorliegen und ein oder mehrere ursprüngliche Objekte 183 aufweisen, die durch zumindest einen Abschnitt der dreidimensionalen Punktwolke gebildet sind. Das eine oder die mehreren ursprünglichen Objekte 183 können mit ursprünglichen Anmerkungsdaten kommentiert sein.
-
In Schritt 804 veranlasst das Duplikationsmodul 172 den/die Prozessor(en) 110 zum Duplizieren eines des/der einen oder mehreren ursprünglichen Objekte 183 zur Erzeugung eines synthetischen Objekts 187. Das synthetische Objekt 187 kann aus Duplikatabschnitten der dreidimensionalen Punktwolke gebildet sein, die eines des/der einen oder mehreren ursprünglichen Objekte 183 gebildet hat, und kann mit synthetischen Anmerkungsdaten kommentiert sein. Die synthetischen Anmerkungsdaten können eine Duplizierung der ursprünglichen Anmerkungsdaten des einen ursprünglichen Objekts oder der mehreren ursprünglichen Objekte sein.
-
In Schritt 806 kann das Transformationsmodul 174 den/die Prozessor(en) 110 zum Einfügen des synthetischen Objekts 187 in die ursprünglichen Trainingsdaten 182 zur Erzeugung der synthetischen Trainingsdaten 185 veranlassen. Das Transformationsmodul 174 kann das duplizierte Objekt ferner transformieren, bevor es in die Trainingsdaten eingefügt wird. Beispielsweise ist in 6B ein synthetisches Objekt 187A gezeigt, das aus Punkten 604A gebildet ist und mit Anmerkungsdaten 606B kommentiert ist. Das synthetische Objekt 187A ist im Wesentlichen ein Duplikat des ursprünglichen Objekts 183A, wurde aber um ungefähr 200° gedreht. Zumindest ein Abschnitt der Punkte 504A des ursprünglichen Objekts 183B wurde daher als die Punkte 604A des synthetischen Objekts 187A dupliziert. Ferner wurden auch Anmerkungsdaten 506A des ursprünglichen Objekts 183A als Anmerkungsdaten 606B dupliziert. Der Hauptunterschied besteht bei diesem Beispiel darin, dass das Transformationsmodul 174 den/die Prozessor(en) 110 zum Drehen dieses Objekts in den Punkten 604A veranlasst, die das synthetische Objekt 187A bilden. In Schritt 808 veranlasst das Einfügemodul 173 den/die Prozessor(en) 110 zum Einfügen des synthetischen Objekts 187 in die ursprünglichen Trainingsdaten 182 zur Erzeugung der synthetischen Trainingsdaten 185.
-
Nun wird 1 als Beispielumgebung beschrieben, in der das System und Verfahren, die hier offenbart sind, arbeiten können. Bei einem oder mehreren Ausführungsbeispielen ist das Fahrzeug 100 ein autonomes Fahrzeug, könnte aber auch ein nichtautonomes oder halbautonomes Fahrzeug sein. Hier bezieht sich „autonomes Fahrzeug“ auf ein Fahrzeug, das in einem autonomen Modus arbeitet. „Autonomer Modus“ bezieht sich auf ein Navigieren und/oder Manövrieren des Fahrzeugs 100 entlang einer Fahrroute unter Verwendung eines oder mehrerer Rechensysteme zur Steuerung des Fahrzeugs 100 mit minimaler oder keiner Eingabe von einem menschlichen Fahrer. Bei einem oder mehreren Ausführungsbeispielen ist das Fahrzeug 100 stark automatisiert oder vollständig automatisiert. Gemäß einem Ausführungsbeispiel ist das Fahrzeug 100 mit einem oder mehreren halbautonomen Betriebsmodi konfiguriert, in denen ein oder mehrere Rechensysteme einen Teil der Navigation und/oder des Manövrierens des Fahrzeugs 100 entlang einer Fahrroute durchführen, und ein Fahrzeugbediener (d.h. ein Fahrer) Eingaben in das Fahrzeug vornimmt, um einen Teil der Navigation und/oder des Manövrierens des Fahrzeugs 100 entlang einer Fahrroute durchzuführen. Ein derartiger halbautonomer Betrieb kann eine Überwachungssteuerung enthalten, wie sie durch das Synthetische-Trainingsdaten-Erzeugungssystem 150 implementiert wird, um sicherzustellen, dass das Fahrzeug 100 innerhalb definierter Zustandsbedingungen bleibt.
-
Das Fahrzeug 100 kann den/die Prozessor(en) 110 enthalten. Gemäß einer oder mehreren Anordnungen kann/können der/die Prozessor(en) 110 ein Hauptprozessor des Fahrzeugs 101 sein. Der/Die Prozessor(en) 110 kann/können beispielsweise eine elektronische Steuereinheit („Electronic Control Unit“, ECU) sein. Das Fahrzeug 100 kann das Sensorsystem 120 enthalten. Das Sensorsystem 120 kann einen oder mehrere Sensoren enthalten. „Sensor“ bedeutet eine beliebige Vorrichtung, Komponente und/oder System, die/das etwas erfassen und/oder erfühlen kann. Der eine oder die mehreren Sensoren kann/können zur Erfassung und/oder Erfühlung in Echtzeit konfiguriert sein. Der Ausdruck „Echtzeit“ bedeutet hier eine Stufe eines Verarbeitungsansprechverhaltens, das ein Benutzer oder System als ausreichend unmittelbar für einen bestimmten Prozess oder eine bestimmte durchzuführende Bestimmung empfindet, oder das den Prozessor zum Mithalten mit einem externen Prozess befähigt.
-
Bei Anordnungen, in denen das Sensorsystem 120 eine Vielzahl von Sensoren enthält, können die Sensoren unabhängig voneinander arbeiten. Alternativ können zwei oder mehr der Sensoren in Kombination miteinander arbeiten. In einem derartigen Fall können die zwei oder mehr Sensoren ein Sensornetzwerk bilden. Das Sensorsystem 120 und/oder der eine oder die mehreren Sensoren können mit dem/den Prozessor(en) 110 und/oder einer anderen Komponente des Fahrzeugs 100 (einschließlich jeder der in 1 gezeigten Komponente) operativ verbunden sein. Das Sensorsystem 120 kann Daten von zumindest einem Abschnitt der externen Umgebung des Fahrzeugs 100 beschaffen.
-
Das Sensorsystem 120 kann einen beliebigen geeigneten Typ Sensor enthalten. Verschiedene Beispiele verschiedener Sensortypen sind nachstehend beschrieben. Das Sensorsystem 120 kann einen oder mehrere Umgebungssensoren enthalten, die zur Beschaffung und/oder Erfassung von Fahrumgebungsdaten eingerichtet sind. „Fahrumgebungsdaten“ enthalten Daten oder Informationen über die externe Umgebung, in der sich ein autonomes Fahrzeug befindet, oder einen oder mehrere Abschnitte davon. Der eine oder die mehreren Umgebungssensoren können beispielsweise zum Erfassen, Quantifizieren und/oder Erfühlen von Hindernissen in zumindest einem Abschnitt der externen Umgebung des Fahrzeugs 100 und/oder Informationen/Daten über diese Hindernisse konfiguriert sein. Derartige Hindernisse können stationäre Objekte und/oder dynamische Objekte sein. Der eine oder die mehreren Umgebungssensoren können zum Erfassen, Messen, Quantifizieren und/oder Erfühlen anderer Dinge in der externen Umgebung des Fahrzeugs 100 konfiguriert sein, wie beispielsweise Spurmarkierungen, Zeichen, Ampeln, Verkehrszeichen, Spurlinien, Zebrastreifen, Bordsteine nahe dem Fahrzeug 100, Objekte im Gelände, usw..
-
Nun werden verschiedene Beispiele von Sensoren des Sensorsystems 120 beschrieben. Allerdings ist selbstverständlich, dass die Ausführungsbeispiele nicht auf die beschriebenen bestimmten Sensoren beschränkt sind. Als Beispiel kann das Sensorsystem 120 bei einer oder mehreren Anordnungen einen oder mehrere LIDAR-Sensoren 121, einen oder mehrere Radarsensoren 122, einen oder mehrere Sonarsensoren 123 und/oder einen oder mehrere Kamerasensoren 124 enthalten. Bei einer oder mehreren Anordnungen kann/können die eine oder mehreren Kamerasensoren 124 High Dynamic Range (HDR)-Kameras oder Infrarot (IR)-Kameras sein.
-
Das Fahrzeug 100 kann ein Eingabesystem 140 enthalten. Ein „Eingabesystem“ enthält eine beliebige Vorrichtung, ein beliebiges Bauteil, System, eine beliebige Komponente oder Anordnung oder Gruppen davon, die die Eingabe von Informationen/Daten in eine Maschine ermöglichen. Das Eingabesystem 140 kann eine Eingabe von einem Fahrzeugpassagier (beispielsweise einem Fahrer oder einem Passagier) empfangen. Das Fahrzeug 100 kann ein Ausgabesystem 142 enthalten. Ein „Ausgabesystem“ enthält eine beliebige Vorrichtung, Komponente oder Anordnung oder Gruppen davon, die die Darstellung von Informationen/Daten für einen Fahrzeugpassagier (beispielsweise eine Person, einen Fahrzeugpassagier, usw.) ermöglichen.
-
Das Fahrzeug 100 kann ein oder mehrere Fahrzeugsteuersystem(e) 130 enthalten. Verschiedene Beispiele des Fahrzeugsteuersystems /der Fahrzeugsteuersysteme 130 sind in 1 gezeigt. Das Fahrzeug 100 kann allerdings mehr, weniger oder andere Fahrzeugsysteme enthalten. Es ist klar, dass obwohl bestimmte Fahrzeugsysteme separat definiert sind, jedes oder ein beliebiges der Systeme oder Abschnitte von diesen über Hardware und/oder Software in dem Fahrzeug 100 auf andere Art kombiniert oder segregiert werden kann. Das Fahrzeug 100 kann eine Lenksteuerung 131 zur Steuerung der Lenkung des Fahrzeugs 100, eine Drosselsteuerung 132 zur Steuerung der Drossel des Fahrzeugs 100, eine Bremssteuerung 133 zur Steuerung der Bremsung des Fahrzeugs 100 und/oder eine Getriebesteuerung 134 zur Steuerung des Getriebes und/oder anderen Antriebsstrangkomponenten des Fahrzeugs 100 enthalten. Jedes dieser Systeme kann eine oder mehrere Vorrichtungen, Komponenten und/oder eine Kombination daraus enthalten, ob noch nicht bekannt oder später entwickelt.
-
Das Fahrzeug 100 kann ein oder mehrere Module enthalten, von denen zumindest einige hier beschrieben sind. Die Module können als computerlesbarer Programmcode implementiert sein, der bei Ausführung durch einen Prozessor (Prozessoren) 110 einen oder mehrere der verschiedenen hier beschriebenen Prozesse implementiert. Ein oder mehrere der Module können eine Komponente des Prozessors /der Prozessoren 110 sein, oder ein oder mehrere der Module können auf anderen Verarbeitungssystemen ausgeführt und/oder auf diese verteilt sein, mit denen der/die Prozessor(en) 110 operativ verbunden ist/sind. Die Module können Instruktionen (beispielsweise Programmlogik) enthalten, die durch einen oder mehrere Prozessor(en) 110 ausführbar sind.
-
Bei einer oder mehreren Anordnungen kann eines oder können mehrere der hier beschriebenen Module Komponenten künstlicher Intelligenz oder von Rechenintelligenz enthalten, beispielsweise ein neuronales Netzwerk, Fuzzy Logic oder andere Maschinelles-Lernen-Algorithmen. Bei einer oder mehreren Anordnungen kann eines oder können mehrere der Module ferner auf eine Vielzahl der hier beschriebenen Module verteilt sein. Bei einer oder mehreren Anordnungen können zwei oder mehr der hier beschriebenen Module in ein einzelnes Modul kombiniert sein.
-
Das Fahrzeug 100 kann ein oder mehrere Autonomes-Fahren-Modul(e) 160 enthalten. Das/Die Autonomes-Fahren-Modul(e) 160 kann/können zum Empfangen von Daten von dem Sensorsystem 120 und/oder einer beliebigen anderen Art von System konfiguriert sein, das auf das Fahrzeug 100 bezogene Informationen und/oder die Außenumgebung des Fahrzeugs 100 bezogene Informationen erfassen kann. Bei einer oder mehreren Anordnungen kann/können das/die Autonomes-Fahren-Modul(e) 160 derartige Daten zur Erzeugung eines oder mehrerer Fahrszenenmodelle verwenden. Das/Die Autonomes-Fahren-Modul(e) 160 kann/können die Position und Geschwindigkeit des Fahrzeugs 100 bestimmen. Das/Die Autonomes-Fahren-Modul(e) 160 kann/können den Ort von Hindernissen, Hindernisse oder andere Umgebungsmerkmale einschließlich Verkehrszeichen, Bäume, Büsche, benachbarte Fahrzeuge, Fußgänger, usw. bestimmen.
-
Das/Die Autonomes-Fahren-Modul(e) 160 kann/können zum Empfangen und/oder Bestimmen von Ortsinformationen für Hindernisse in der äußeren Umgebung des Fahrzeugs 100 zur Verwendung durch den/die Prozessor(en) 110 und/oder eines oder mehrere der hier beschriebenen Module zum Schätzen einer Position und Orientierung des Fahrzeugs 100, einer Fahrzeugposition in globalen Koordinaten beruhend auf Signalen von einer Vielzahl von Satelliten oder beliebigen anderen Daten und/oder Signalen, die zur Bestimmung des aktuellen Zustands des Fahrzeugs 100 oder zur Bestimmung der Position des Fahrzeugs 100 bezüglich seiner Umgebung verwendet werden könnten, zur Verwendung bei der Erzeugung einer Karte oder Bestimmung der Position des Fahrzeugs 100 bezüglich Kartendaten eingerichtet sein.
-
Das/Die Autonomes-Fahren-Modul(e) 160 kann/können zur Bestimmung zumindest eines Fahrweges, aktueller autonomer Fahrmanöver für das Fahrzeug 100, zukünftiger autonomer Fahrmanöver und/oder Abwandlungen bei aktuellen autonomen Fahrmanövern beruhend auf durch das Sensorsystem 120 beschafften Daten, Fahrszenenmodellen und/oder Daten von einer beliebigen anderen geeigneten Quelle eingerichtet sein. „Fahrmanöver“ bedeutet eine oder mehrere Aktionen, die die Bewegung eines Fahrzeugs beeinflussen. Beispiele von Fahrmanövern beinhalten eine Beschleunigung, Verlangsamung, ein Bremsen, ein Abbiegen, eine Bewegung in seitlicher Richtung des Fahrzeugs 100, einen Spurwechsel, ein Einfädeln in eine Fahrspur und/oder ein Umkehren, nur um ein paar Möglichkeiten zu benennen. Das/Die Autonomes-Fahren-Modul(e) 160 kann/können zum Implementieren bestimmter Fahrmanöver konfiguriert sein. Das/Die Autonomes-Fahren-Modul(e) 160 kann/können direkt oder indirekt die Implementierung derartige autonomer Fahrmanöver veranlassen. Hier bedeutet „veranlassen“, dass das Auftreten eines Ereignisses oder einer Aktion bewirkt, befohlen, instruiert und/oder ermöglicht wird, oder das Ereignis oder die Aktion zumindest in einem Zustand ist, in dem ein derartiges Ereignis oder eine derartige Aktion auftreten kann, entweder auf direkte oder indirekte Weise. Das/Die Autonomes-Fahren-Modul(e) 160 kann/können zur Ausführung verschiedener Fahrzeugfunktionen und/oder zum Senden von Daten zu, Empfangen von Daten von, Interagieren mit und/oder Steuern des Fahrzeugs 100 oder von einem oder mehreren seiner Systeme (beispielsweise von einem oder mehreren Fahrzeugsteuersystemen 130) konfiguriert sein.
-
Hier sind ausführliche Ausführungsbeispiele offenbart. Allerdings ist selbstverständlich, dass die offenbarten Ausführungsbeispiele lediglich Beispiele sein sollen. Daher sollen hier offenbarte spezifische strukturelle und funktionale Einzelheiten nicht als einschränkend interpretiert werden, sondern lediglich als Grundlage für die Patentansprüche und als repräsentative Grundlage zum Unterrichten des Fachmanns, um die Ausgestaltungen in virtuell jeder geeigneten ausführlichen Struktur verschiedentlich anzuwenden. Ferner sollen die hier verwendeten Ausdrücke und Phrasen nicht einschränkend sein, sondern vielmehr eine verständliche Beschreibung möglicher Implementierungen bereitstellen. Verschiedene Ausführungsbeispiele sind in den 1-8 gezeigt, jedoch sind die Ausführungsbeispiele nicht auf die veranschaulichte Struktur oder Anwendung beschränkt.
-
Die Ablaufdiagramme und Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsbeispielen. In dieser Hinsicht kann jeder Block in den Ablaufdiagrammen oder Blockschaltbildern ein Modul, Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Instruktionen zum Implementieren der spezifizierten Logikfunktion(en) umfasst. Es wird auch angemerkt, dass bei einigen alternativen Implementierungen die in dem Block angemerkten Funktionen außerhalb der in den Figuren gezeigten Reihenfolge auftreten können. Beispielsweise können zwei aufeinanderfolgend gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, was von der involvierten Funktionalität abhängt.
-
Die vorstehend beschriebenen Systeme, Komponenten und/oder Prozesse können als Hardware oder eine Kombination aus Hardware und Software realisiert werden, und können auf zentralisierte Weise in einem Verarbeitungssystem oder auf verteilte Weise realisiert werden, bei der verschiedene Elemente über mehrere verbundene Verarbeitungssysteme verteilt sind. Eine beliebige Art von Verarbeitungssystem oder andere Vorrichtung ist geeignet, die zur Ausführung der hier beschriebenen Verfahren angepasst ist. Eine typische Kombination aus Hardware und Software kann ein Verarbeitungssystem mit computerverwendbarem Programmcode sein, der, wenn er geladen und ausgeführt wird, das Verarbeitungssystem derart steuert, dass es die hier beschriebenen Verfahren ausführt. Die Systeme, Komponenten und/oder Prozesse können auch in einem computerlesbaren Speicher eingebettet sein, wie einem Computerprogrammprodukt oder einer anderen Datenprogrammspeichereinrichtung, die durch eine Maschine lesbar ist, die ein Programm von Instruktionen greifbar ausgestaltet, die durch die Maschine ausführbar sind, um hier beschriebene Verfahren und Prozesse durchzuführen. Diese Elemente können auch in einem Anwendungsprodukt eingebettet sein, das all die Merkmale umfasst, die die Implementierung der hier beschriebenen Verfahren ermöglichen, und, wenn in ein Verarbeitungssystem geladen, diese Verfahren ausführen kann.
-
Ferner können hier beschriebene Anordnungen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit darauf ausgebildetem, beispielsweise gespeichertem computerlesbaren Programmcode ausgestaltet ist. Eine beliebige Kombination eines oder mehrerer computerlesbarer Medien kann angewendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Der Begriff „computerlesbares Speichermedium“ bedeutet ein nichtflüchtiges Speichermedium. Ein computerlesbares Speichermedium kann beispielsweise ein/eine elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, Vorrichtung oder Einrichtung oder eine geeignete Kombination aus den vorstehenden Dingen sein, ist aber nicht darauf beschränkt. Spezifischere Beispiele (nichterschöpfende Liste) des computerlesbaren Speichermediums würden folgendes enthalten: eine tragbare Computerdiskette, ein Festplattenlaufwerk (HDD), ein Festkörperlaufwerk (SSD), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen tragbaren Compactdisk Nur-Lese-Speicher (CD-ROM), eine Digital Versatile Disk (DVD), eine optische Speichereinrichtung, eine magnetische Speichereinrichtung oder eine geeignete Kombination aus den vorstehenden Dingen. Im Kontext dieser Schrift kann ein computerlesbares Speichermedium ein beliebiges greifbares Medium sein, dass ein Programm zur Verwendung durch oder in Verbindung mit einem Instruktionsausführungssystem, einer Instruktionsausführungsvorrichtung oder einer Instruktionsausführungseinrichtung enthalten kann.
-
Im Allgemeinen umfassen hier verwendete Module Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben durchführen oder bestimmte Datentypen implementieren. In weiteren Ausgestaltungen speichert ein Speicher die angeführten Module allgemein. Der mit einem Modul assoziierte Speicher kann ein Puffer oder Cache sein, der in einem Prozessor eingebettet ist, ein RAM, ein ROM, ein Flash-Speicher oder ein anderes geeignetes elektronisches Speichermedium sein. In weiteren Ausgestaltungen ist ein Modul, wie es durch die vorliegende Offenbarung avisiert wird, als anwendungsspezifische integrierte Schaltung (ASIC), eine Hardwarekomponente eines Systems auf einen Chip (SoC), ein programmierbares Logik-Array (PLA) oder andere geeignete Hardwarekomponente implementiert, die mit einem definierten Konfigurationssatz (beispielsweise Instruktionen) zur Durchführung der offenbarten Funktionen eingebettet ist.
-
Auf einem computerlesbaren Medium ausgebildeter Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich aber nicht beschränkt auf drahtlos, drahtgebunden, Glasfaser, Kabel, HF, usw. oder eine geeignete Kombination aus den vorstehenden Dingen. Computerprogrammcode zur Ausführung von Operationen für Ausgestaltungen der vorliegenden Anordnungen kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java™, Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen, wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann ganz auf den Benutzercomputer, teilweise auf dem Benutzercomputer, als Stand-Alone-Softwarepaket, teilweise auf dem Benutzercomputer oder teilweise auf einem entfernten Computer oder gesamt auf dem entfernten Computer oder Server ausgeführt werden. In dem letztgenannten Szenario kann der entfernte Computer über eine beliebige Art von Netzwerk mit dem Benutzercomputer verbunden sein, einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzwerks (WAN), oder die Verbindung kann mit einem externen Computer (beispielsweise über das Internet unter Verwendung eines Internet Service Provider) gemacht werden.
-
Die unbestimmten Artikel „ein“, „eine“ und „einer“, wie sie hier verwendet werden, sind als eins oder mehr als eins definiert. Der Ausdruck „Vielzahl“, wie er hier verwendet wird, ist als zwei oder mehr als zwei definiert. Der Ausdruck „weiteres“, wie er hier verwendet wird, ist als zumindest ein zweiter oder mehrere definiert. Die Ausdrücke „enthalten“ und/oder „aufweisen“, wie sie hier verwendet werden, sind als umfassen definiert (d.h. offene Sprache). Der Ausdruck „zumindest einer von ... und ...“, wie er hier verwendet wird, bezieht sich auf und umfasst beliebige und alle möglichen Kombinationen aus einem oder mehreren der assoziierten gelisteten Elemente. Beispielsweise enthält der Ausdruck „zumindest eines aus A, B und C“ nur A, nur B, nur C, und eine beliebige Kombination daraus (beispielsweise AB, AC, BC oder ABC).
-
Ausgestaltungen können hier in anderen Formen ausgeführt werden, ohne vom Schutzbereich der folgenden Patentansprüche abzuweichen.
-
Ein System zur Erzeugung synthetischer Trainingsdaten (185) kann einen oder mehrere Prozessoren (110) und einen Speicher (170) in Kommunikation mit dem einen oder den mehreren Prozessoren und mit einem Empfangsmodul (171), einem Duplikationsmodul (172) und einem Einfügemodul (173) enthalten. Die Module weisen Instruktionen auf, die bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren zum Empfangen ursprünglicher Trainingsdaten (182), die die Form einer dreidimensionalen Punktwolke haben und ein oder mehrere ursprüngliche Objekte (183) aufweisen, die durch zumindest einen Abschnitt der dreidimensionalen Punktwolke gebildet sind und mit ursprünglichen Anmerkungsdaten (506A, 506B) kommentiert sind, Duplizieren eines des/der einen oder mehreren ursprünglichen Objekte zur Erzeugung eines synthetischen Objekts (187) und Einfügen des synthetischen Objekts in die ursprünglichen Trainingsdaten zur Erzeugung der synthetischen Trainingsdaten veranlassen.