DE102023101265A1 - Objekterfassung bei Bildstromverarbeitung unter Verwendung von optischem Fluss mit dynamischen Regionen von Interesse - Google Patents

Objekterfassung bei Bildstromverarbeitung unter Verwendung von optischem Fluss mit dynamischen Regionen von Interesse Download PDF

Info

Publication number
DE102023101265A1
DE102023101265A1 DE102023101265.7A DE102023101265A DE102023101265A1 DE 102023101265 A1 DE102023101265 A1 DE 102023101265A1 DE 102023101265 A DE102023101265 A DE 102023101265A DE 102023101265 A1 DE102023101265 A1 DE 102023101265A1
Authority
DE
Germany
Prior art keywords
image
mlm
region
processing
input
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
DE102023101265.7A
Other languages
English (en)
Inventor
Tushar Khinvasara
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102023101265A1 publication Critical patent/DE102023101265A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/52Surveillance or monitoring of activities, e.g. for recognising suspicious objects
    • G06V20/54Surveillance or monitoring of activities, e.g. for recognising suspicious objects of traffic, e.g. cars on the road, trains or boats
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/215Motion-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/22Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/25Determination of region of interest [ROI] or a volume of interest [VOI]
    • 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/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/80Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30232Surveillance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30236Traffic on road, railway or crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/07Target detection

Landscapes

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

Abstract

Offenbart werden Vorrichtungen, Systeme und Techniken, die einen effizienten Einsatz maschinellen Lernens zur Erfassung und Klassifikation von sich bewegenden Objekten in Strömen von Bildern durchführen können. Ein Satz von Modellen maschinellen Lernens mit unterschiedlichen Eingabegrößen kann für die Parallelverarbeitung von verschiedenen Regionen von Interesse in mehreren Strömen von Bildern verwendet werden. Sowohl die Modelle maschinellen Lernens sowie auch die Eingaben in diese Modelle können basierend auf einer Größe der Regionen von Interesse dynamisch ausgewählt werden.

Description

  • TECHNISCHES GEBIET
  • Mindestens eine Ausführungsform betrifft Verarbeitungsressourcen, die verwendet werden, um künstliche Intelligenz durchzuführen und zu erleichtern. Beispielsweise betrifft mindestens eine Ausführungsform den effizienten Einsatz maschinellen Lernens für die Erfassung und Klassifizierung von sich in Strömen von Bildern bewegenden Objekten gemäß verschiedener hier beschriebenen neuartigen Techniken.
  • HINTERGRUND
  • Maschinelles Lernen wird häufig in Bildverarbeitungs-Pipelines und Anwendungen angewandt, um beispielsweise eine Identifikation von Objekten durchzuführen, die innerhalb von Bildern anschaulich dargestellt werden. In einigen Anwendungen kann die Objektidentifikation insbesondere in Echtzeit bei Anwendungen durchgeführt werden, die Erkennung und Überwachung von sich bewegenden Objekten beinhalten. Derartige Anwendungen können in industriellen Sicherheitseinstellungen, öffentlichen Sicherheitseinstellungen, Überwachungssystemen, Verkehrsüberwachungsanwendungen, wissenschaftlicher Forschung, autonomen Fahrsystemen, Roboterautomatisierung und verschiedenen anderen Einstellungen verwendet werden. Die Erfassung von sich bewegenden Objekten kann auf maschinellem Lernen basieren und kann das Training eines Rechensystems - unter Verwendung von Trainingsbildern und andere Trainingsdaten - beinhalten, um gemeinsame Merkmale, Anordnungen oder Muster in Bildern zu identifizieren, die Objektidentifikation erleichtern können. Das Training kann überwacht oder unüberwacht sein. Modelle maschinellen Lernens können verschiedene Rechenalgorithmen verwenden, wie beispielsweise Entscheidungsbaumalgorithmen (oder andere regelbasierte Algorithmen), künstliche neuronale Netzwerke und dergleichen. Während der Inferenzierungsstufe wird ein neues Bild in ein trainiertes Modell maschinellen Lernens eingegeben und verschiedene Zielobjekte von Interesse (z. B. Fahrzeuge in einem Bild einer Fahrbahn) können unter Verwendung von Mustern und Merkmalen identifiziert werden, welche das Modell maschinellen Lernens während des Trainings lernte, zu erkennen.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines beispielhaften Computersystems, das maschinelles Lernen zur effizienten Bewegungsvektor-basierten Erfassung und Klassifizierung von sich bewegenden Objekten verwendet, gemäß mindestens einigen Ausführungsformen;
    • 1B ist eine beispielhafte Rechenvorrichtung, die eine effiziente Bewegungsvektor-basierten Erfassung und Klassifizierung von sich bewegenden Objekten unterstützen kann, gemäß mindestens einer Ausführungsform;
    • 2 veranschaulicht einen beispielhaften Datenfluss während der Erfassung und Klassifizierung von sich bewegenden Objekten, der Bewegungsvektoren und Modelle maschinellen Lernens von mehreren Eingabegrößen verwendet, gemäß mindestens einer Ausführungsform;
    • 3 stellt schematisch eine Verwendung von Bewegungsvektoren anschaulich dar, um sich bewegende Regionen von Interesse zu identifizieren, gemäß mindestens einer Ausführungsform;
    • 4A-C veranschaulichen die Auswahl eines Erfassungsmodells basierend auf Bewegungsvektoren gemäß mindestens einer Ausführungsform; 4A veranschaulicht eine Situation, bei der eine Größe einer Region von Interesse geringer als die kleinste Erfassungsmodelleingabegröße ist; 4B veranschaulicht eine Situation, bei der die Größe der Region von Interesse zwischen zwei Erfassungsmodelleingabegrößen ist; 4C veranschaulicht eine Situation, bei der die Größe der Region von Interesse über der maximalen Erfassungsmodelleingabegröße ist;
    • 5 ist ein Flussdiagramm eines beispielhaften Verfahrens des Verwendens von Bewegungsvektoren und Modellen maschinellen Lernens von mehreren Eingabegrößen zur effizienten Erfassung und Klassifizierung von sich bewegenden Objekten gemäß mindestens einer Ausführungsform;
    • 6 ist ein Flussdiagramm eines beispielhaften Verfahrens des Trainierens eines oder mehrerer Klassifikatormodelle maschinellen Lernens für die effiziente Erfassung und Klassifizierung von sich bewegenden Objekten gemäß mindestens einer Ausführungsform;
    • 7A veranschaulicht eine Inferenzierungs- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 7B veranschaulicht eine Inferenzierungs- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 8 veranschaulicht Trainieren und Einsatz eines neuronalen Netzwerks gemäß mindestens einer Ausführungsform;
    • 9 ist ein beispielhaftes Datenflussdiagramm für eine fortgeschrittene Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 10 ist ein Systemdiagramm für ein beispielhaftes System zum Trainieren, Anpassen, Instanzieren und Einsetzen von Modellen maschinellen Lernens in einer fortgeschrittenen Rechenpipeline gemäß mindestens einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine automatisierte Objekterkennung wird in zahlreichen Technologien und Industrien verwendet, einschließlich, jedoch nicht begrenzt auf, autonome Fahr/Parksystemen, Verkehr/Park-Steuerung und -Durchsetzung, Roboteroperationen, Raumfahrttechnologien und vielen anderen Anwendungen. In einem Beispiel können Erkennungsobjekte bei der Verkehrsüberwachung verwendet werden, die mehrere Kameras beinhaltet, die an verschiedenen Kreuzungen, Fahrbahnen, Eingänge und Ausgänge von Parkzonen und - strukturen und dergleichen positioniert sind. Jede Kamera kann ein Strom von Bildern (z. B. Videoframes) erzeugen, die (zu einigen Zeiten) oder kann nicht (zu anderen Zeiten) anschauliche Darstellungen von stationären oder sich bewegenden Objekten erfassen können. Die Ströme von Bildern können dann durch eine Vielfalt von computerbasierten Objekterkennungstechniken verarbeitet werden, um die Anwesenheit (oder Abwesenheit) von sich bewegenden Objekten in den Strömen zu identifizieren. Beispielsweise können verschiedene Frames der Ströme unter Verwendung eines oder mehrerer Modelle maschinellen Lernens (MLMs) verarbeitet werden, welche die Anwesenheit eines Fahrzeugs (Fußgängers, Tieres oder irgendeines anderen sich bewegenden Objekts) innerhalb eines Sichtfelds der Kamera erfassen können und ebenfalls einen Typ (z. B. Fußgänger, Personenkraftwagen, Lastwagen usw.), zu dem das Objekt gehört, eine Marke des Fahrzeugs (z. B. Autohersteller), ein Modell des Fahrzeugs und so weiter bestimmen kann. Ein trainiertes MLM kann ein neuronales Netzwerk von künstlichen Neuronen mit einer bestimmten Anzahl von Neuronen in der Eingabeschicht, z. B. n×m, umfassen. Die Anzahl der Neuronen kann einer Größe der Eingaben (z. B. in Pixeln) zugeordnet sein, welche das(die) MLM(s) verarbeiten kann(können). Beispielsweise kann ein Schwarz-Weiß-Frame einen einzigen Wert (Pixelhelligkeit) aufweisen, der jedem Pixel zugeordnet ist. Ein Farbframe kann mehrere Werte aufweisen (z. B. einen für jede Farbe, wie beispielsweise rot, grün und blau), die jedem Pixel zugeordnet sind. Eine Framegröße N×M kann jedoch anders als (z. B. größer als) die MLM-Eingabegröße sein. Eine Vorverarbeitungsstufe kann daher eine Umskalierung des Frame, z. B. von N×M Pixel in n×m Pixel durchführen, um die Größe des Frames der Eingabegröße des MLM anzupassen. Das Umskalierung kann an jedem neuen Frame durchgeführt werden und kann bedeutende Rechenressourcen (z. B. Prozessor und Speicher) konsumieren. Außerdem wird, da das MLM das umskalierte Frame als Ganzes verarbeitet, ein wesentlicher Abschnitt dieser Ressourcen verbraucht, um Teile des Frames zu verarbeiten, die keine sich bewegenden Objekten anschaulich darstellen.
  • Aspekte und Ausführungsformen der vorliegenden Offenbarung widmen sich diesen und anderen technologischen Herausforderungen durch Offenbaren von Verfahren und Systemen, die eine effiziente dynamische Verarbeitung von Strömen von Bildern durch Identifizieren eines reduzierten Abschnitts eines Frames ermöglichen, der anschauliche Darstellungen von (z. B. sich bewegenden) Objekten umfasst und mindestens einen Abschnitt eines statischen Hintergrunds verwirft. Da ein verringerter Abschnitt des Frames zur Verarbeitung basierend auf den tatsächlichen Orten der Objekte ausgewählt wird, wird die Rechenlast erheblich verringert. Außerdem können mehrere MLMs mit unterschiedlichen Eingabegrößen für die Verarbeitung der ausgewählten Abschnitte eingesetzt werden. Dies verringert die Menge der bei der Umskalierung beteiligten Verarbeitung und kann für viele Frames die Notwendigkeit für die Umskalierung vollständig beseitigen.
  • Genauer gesagt kann ein gegebenes Frame mit einem unterschiedlichen Frame (hier als ein Referenzframe bezeichnet) verglichen werden, das ein vorheriges Frame sein kann, das durch die gleiche Kamera erhalten wird. Ein Satz von Bewegungsvektoren kann für verschiedene Pixel oder Blöcke von Pixeln des gegebenen Frame bestimmt werden. Ein Bewegungsvektor kennzeichnet eine Bewegung eines bestimmten Pixels (oder eines Blocks von Pixeln) zwischen dem Referenzframe und dem gegebenen Frame. Beispielsweise kann sich ein Block von Pixeln, der einen Abschnitt der Haube eines Fahrzeugs anschaulich darstellt, von Ort A innerhalb des Referenzframes zu Ort B innerhalb des gegebenen Frame über ein bestimmtes Zeitintervall bewegen. Cluster von Pixeln, für die ein Bewegungsvektor bestimmt ist, über einem bestimmten Mindestpegel (z. B. über einem Rauschpegel) zu sein, kann dann zusammen mit einer Region identifiziert werden, die alle derartigen Cluster umschließt. Die Größe der Region kann dann mit verfügbaren Detektor-MLM-Eingabegrößen verglichen werden. Wenn die Größe der Region geringer als die kleinste Detektor-MLM-Eingabegröße ist, kann die Region (ohne Umskalierung) erweitert werden, so dass die Größe der erweiterten Region mit der Eingabegröße des kleinsten Detektor-MLM übereinstimmt. Die erweiterte Region wird dann in das entsprechende Detektor-MLM eingegeben. Wenn die Größe der Region zwischen zwei Detektor-MLM-Eingabegrößen ist, kann die Region auf ähnliche Weise bis zu der größeren Eingabegröße erweitert werden. Wenn die Größe der Region größer als die größte Detektor-MLM-Eingabegröße ist, kann die Region auf die größte Detektor-MLM-Eingabegröße herunterskaliert werden. Die obige Prozedur minimiert die Notwendigkeit für eine Umskalierung. In einigen Ausführungsformen kann die Region eine zusätzliche (Hoch- oder Herab-) Skalierung auf eine größere oder kleinere Eingabegröße durchmachen, wie ausführlicher nachstehend beschrieben.
  • Wie beschrieben, wird die Auswahl der Regionen von Interesse dynamisch und einzeln für jedes neue Frame zusammen mit der Auswahl eines optimalen Detektor-MLM durchgeführt. Wenn die ausgewählte Region von Interesse durch das ausgewählte Detektor-MLM verarbeitet wird, welche die Region in separate Unterregionen segmentiert, die unterschiedliche sich bewegende Objekten umschließt, die innerhalb der Region gefunden werden, z. B. unterschiedliche Fahrzeuge. Die Ausgaben von mehreren Detektor MLMs können dann zur gleichlaufenden Verarbeitung durch ein oder mehrere Klassifikator-MLMs kombiniert werden, die trainiert werden, um ein Typ/Marke/Modell/usw. der erfassten Objekten zu bestimmen oder zu identifizieren. Als Ergebnis werden Frames von unterschiedlichen Videoströmen zusammen verarbeitet, was zu dem erhöhten Durchsatz führt.
  • Die Vorteile der offenbarten Techniken umfassen, sind jedoch nicht begrenzt auf, erhöhte Leistung und Verarbeitungseffizienz, die sich aus der Beseitigung oder Verringerung von Umskalierungsoperationen, fokussierter Verarbeitung der tatsächlichen Regionen von Interesse und gleichlaufender Klassifizierung von Daten, die von unterschiedlichen Quellen (z. B. Videokameras) ergeben. Die freigegebenen Verarbeitungsressourcen können für den Einsatz auf der gleichen Rechenplattformen von fortgeschritteneren MLMs (z. B. MLMs mit mehr Verarbeitungsschichten) verwendet werden, die eine vollständigere Objekterfassung und genauere Klassifizierung der erfassten Objekte ermöglichen können.
  • SYSTEMARCHITEKTUR
  • 1A ist ein Blockdiagramm eines beispielhaften Computersystems 100, das maschinelles Lernen zur effizienten Bewegungsvektor-basierten Erfassung und Klassifizierung von sich bewegenden Objekten verwendet, gemäß mindestens einiger Ausführungsformen. Wie in 1A anschaulich dargestellt, kann ein Rechensystem 100 eine Rechenvorrichtung 102, ein Bildrepositorium 150 und einen mit einem Netzwerk 140 verbundenen Trainingsserver 160 umfassen. Das Netzwerk 140 kann ein öffentliches Netzwerk (z. B. Das Internet), ein privates Netzwerk (z. B. Ein Lokalbereichsnetzwerk (LAN) oder Weitbereichsnetzwerk (WAN)), ein drahtloses Netzwerk, ein persönliches Netzwerk (PAN) oder eine Kombination davon sein.
  • Die Rechenvorrichtung 102 kann ein Desktop-Computer, ein Laptop-Computer, ein Smartphone, ein Tablet-Computer, ein Server oder jede andere geeignete Rechenvorrichtung sein, die in der Lage ist, die hier beschrieben Techniken durchzuführen. Die Rechenvorrichtung 102 kann konfiguriert sein, um ein Bild (Frame) 101 zu empfangen, das Teil eines Stroms von Bildern sein kann, z. B. eine Videoeinspeisung, die durch eine oder mehrere Kameras erzeugt wird, die mit der Rechenvorrichtung 102 über eine beliebige geeignete verdrahtete oder drahtlose Verbindung verbunden sind. In einigen Ausführungsformen kann die Videoeinspeisung in Echtzeit erzeugt werden. In einigen Ausführungsformen kann die Videoeinspeisung zu einem Zeitpunkt in der Vergangenheit erzeugt, gespeichert und dann zur Verarbeitung abgerufen werden, wie in dieser Offenbarung beschrieben. Beispielsweise können Vorrichtungen, die in der Lage sind, Videoeinspeisungen (einschließlich Bild 101) zu erzeugen, Überwachungskameras, Videorekorder, Fotoausrüstungen, Scanner, autonome Fahrzeugabtastvorrichtungen (z. B. Lidars, Radars, Lang- und Mittelbereichskameras) und dergleichen sein. Das Bild 101 kann ein Innenbild, ein Außenbild, ein Bild einer automobilen Umgebung, ein Bild einer Person oder einer Gruppe von Leuten, ein Bild einer natürlichen oder künstlichen (z. B. außen oder innen) Szenerie oder irgendein anderer Typ von Bild sein. Das Bild 101 kann in einem beliebigen digitalen (z. B. pixel- oder vektorbasierten) Format vorliegen, einschließlich, jedoch nicht begrenzt, auf JPEG, GIF, PNG, BMP, TIFF, CIB, DIMAP, NITF und so weiter. Das Bild 101 kann (z. B. zusammen mit anderen Bildern) im Bildrepositorium 150 gespeichert sein. Außerdem kann das Bildrepositorium 150 Trainingsbilder 151 zum Trainieren einer Objekterfassung und -klassifizierung eines oder mehrerer MLMs gemäß einigen hier offenbarten Ausführungsformen speichern. Auf das Bildrepositorium 150 kann von der Rechenvorrichtung 102 direkt oder (wie gezeigt) über das Netzwerk 140 zugegriffen werden.
  • Das Bildrepositorium 150 kann eine dauerhafte Speicherung sein, welche in der Lage ist, sowohl Bilder als auch Metadaten für die gespeicherten Bilder zu speichern. Das Bildrepositorium 150 kann von einer oder mehreren Speicherungsvorrichtungen, wie beispielsweise einem Hauptspeicher, magnetischen oder optischen Speicherung-basierten Platten, Bändern oder Festplatten, NAS, SAN und so weiter, gehostet sein. Obwohl getrennt von der Rechenvorrichtung 102 anschaulich dargestellt, kann in mindestens einer Ausführungsform das Bildrepositorium 150 ein Teil der Rechenvorrichtung 102 sein. In mindestens einigen Ausführungsformen kann das Bildrepositorium 150 ein an das Netzwerk angeschlossener Dateiserver sein, während in anderen Ausführungsformen das Bildrepositorium 150 eine andere Art von dauerhafter Speicherung sein kann, wie beispielsweise eine objektorientierte Datenbank, ein relationale Datenbank und so weiter, die von einer Servermaschine oder einer oder mehreren unterschiedlichen Maschinen gehostet sein kann, die mit der Rechenvorrichtung 102 über das Netzwerk 140 gekoppelt sind.
  • Die Rechenvorrichtung 102 kann einen Speicher 104 umfassen, der mit einer oder mehreren Verarbeitungsvorrichtungen, wie beispielsweise einer oder mehreren Graphikverarbeitungseinheiten (GPU) 110 und einer oder mehreren Zentralverarbeitungseinheiten (CPU) 130, kommunikativ gekoppelt ist. Der Speicher 104 kann eine oder mehrere Verarbeitungsmodule und MLMs, wie beispielsweise Bewegungsvektor(MV)-basierte Segmentierung 120, Objekterfassungsmodelle (ODMs) 124 und Objektklassifizierungsmodelle (OCM) 126 sein. Die Rechenvorrichtung 102 kann eine Inferenzierungs-Engine 122 hosten, um Bewegungsvektor-basierte Segmentierung 120, ODM(s) 124 und OCM(s) 126 auszuführen. Die Inferenzierungs-Engine 122 kann von der GPU 110 und/oder CPU 130 ausgeführt werden. Die Rechenvorrichtung 102 kann das Bild 101 (oder das Trainingsbild 151) als Eingabe für die MV-basierte Segmentierung 120 verwenden, um Bewegungsvektoren im Bild 101 basierend auf einem Vergleich des Bildes 101 mit einem Referenzbild zu identifizieren, wie ausführlicher nachstehend beschrieben. Unter Verwendung der Bewegungsvektoren kann die Rechenvorrichtung 102 einen Abschnitt des Bildes 101 identifizieren, der ein oder mehrere sich bewegende Objekte anschaulich darstellt, und kann ein geeignetes trainiertes ODM 124 basierend auf der Größe des identifizierten Abschnitts auswählen. Die Inferenzierungs-Engine 122 kann dann das ausgewählte ODM 124 auf den Abschnitt des Bildes 101 anwenden, um anschauliche Darstellungen von einzelnen sich bewegenden Objekten im Bild 101 zu identifizieren. Mehrere ODMs 124 können jeweils auf einem bestimmten Bild (z. B. in der Bildpipeline) parallel arbeiten, das zur Verarbeitung unter Verwendung des entsprechenden ODM 124 ausgewählt wird. Die Ausgaben von verschiedenen ODMs 124 können in eine einzige Eingabe in ein oder mehrere OCMs 126 kombiniert werden, die den Typ und andere Eigenschaften der Objekte, z. B. Marke, Modell, Jahr, Farbe usw., bestimmen können. In mindestens einer Ausführungsform können ein oder mehrere ODMs 124 und/oder OCMs 126 ein Modell sein, das ein neuronales Netzwerk umfasst.
  • ODM(s) 124 und/oder OCM(s) 126 können von einem Trainingsserver 160 trainiert werden. In mindestens einer Ausführungsform kann der Trainingsserver 160 ein Teil der Rechenvorrichtung 102 sein. In anderen Ausführungsformen kann der Trainingsserver 160 kommunikativ mit der Rechenvorrichtung 102 direkt oder über das Netzwerk 140 gekoppelt sein. Der Trainingsserver 160 kann ein Rackmount-Server, ein Router-Computer, einen Personalcomputer, ein Laptop-Computer, ein Tablet-Computer, ein Desktop-Computer, ein Medienzentrum oder eine beliebige Kombination davon sein (und/oder umfassen). Der Trainingsserver 160 kann eine Trainings-Engine 162 umfassen. In mindestens einer Ausführungsform kann die Trainings-Engine 162 ein oder mehrere Modelle maschinellen Lernens (z. B. ODM(s) 124 und/oder OCM(s) 126) erzeugen. Die erzeugten MLMs können durch die Trainings-Engine 162 unter Verwendung von Trainings-Daten trainiert werden, die ein oder mehrere Trainingseingaben 165 und entsprechende Zielausgaben 167 umfassen können. In mindestens einer Ausführungsform können unterschiedliche MLMs für unterschiedliche Typen von Bildern trainiert werden. Beispielsweise kann ein OCM, das eine Marke eines Lastwagens bestimmt, trainierten getrennt von einem OCM trainiert werden, das eine Marke eines Personenkraftwagens bestimmt.
  • Zum Trainieren eines oder mehrerer ODM 124 können die eine oder mehrere Trainingseingaben 165 ein oder mehrere Trainingsbilder 151 und verschiedene Metadaten für die Trainingsbilder 151 umfassen. Die Trainingsbilder 151 können großformatige Bilder sein, wie beispielsweise Panoramabilder einer automobilen Umgebung, die mehrere Objekte von sehr unterschiedliche Typen, z. B. Autos, Lastwagen, Busse, Motorräder, Fahrräder, Fußgänger und dergleichen, umfassen kann. Ein Annotations-Engine 163 einer Region-von-Interesse (ROI) kann großformatige Bilder mit Hinweisen (z. B. Begrenzungsrahmen oder andere Begrenzungsformen, wie beispielsweise Ellipsoide, zylindrische Formen usw.) von verschiedenen ROIs annotieren, die einzelne Objekte, z. B. einen Begrenzungsrahmen für ein Auto, einen Begrenzungsrahmen für einen Bus und dergleichen umfassen. Die ROI Annotations-Engine 163 kann eine oder mehrere Zielausgaben 167 erzeugen, die eine oder mehrere Trainingseingaben 165 mit ROI-Annotierungen sein können. Außerdem kann die Trainings-Engine 162 Abbildungsdaten 166 (z. B. Metadaten) erzeugen, die eine Trainingseingabe(n) 165 einer korrekten Zielausgabe(n) 167 zuordnen. Während des Trainings von ODM(s) 124 kann die Trainings-Engine 162 Muster in Trainingseingabe(s) 165 basierend auf gewünschten Zielausgabe(s) 167 identifizieren und ODM(s) 124 trainieren, um ROI-Segmentierung unter Verwendung von die identifizierte Muster durchzuführen. Eine vorhersagbare Nützlichkeit der identifizierten Muster kann anschließend unter Verwendung von zusätzlichen Trainingseingabe/Zielausgabe-Zuordnungen verifiziert und dann während der Inferenzierungsstufe durch ein oder mehrere ODMs 124 bei der zukünftigen Verarbeitung von neuen Bildern verwendet werden. Beispielsweise können bei Empfangen eines neuen Bildes von einer Kreuzung ein oder mehrere trainierte ODMs 124 verschiedene ROIs identifizieren, die verschiedene Fahrzeuge, Fußgänger und andere Objekte umfassen, die bei oder in der Nähe der Kreuzung lokalisiert sind.
  • Auf ähnliche Weise kann zum Trainieren eines oder mehrerer OCMs 126 eine Klassenannotations-Engine 164 Bilder von einzelnen ROIs mit Hinweisen (z. B. Zeiger, Begrenzungsrahmen usw.) von verschiedenen Zielobjekten (Autos, Lastwagen, Busse, Fußgänger usw.) innerhalb ROIs annotieren und jeweilige Klassen von ROIs erzeugen. Eine Klasse sei als jede Eigenschaft eines Objekt zu verstehen, die in der Lage ist, basierend auf dem Erscheinungsbild des Objekts bestimmt zu werden, z. B. einen Typ eines Fahrzeugs (Autos, Lastwagens usw.) oder eines Tieres (z. B. Vogel, Katze, Hund usw.), ein Hersteller (oder Marke) eines Fahrzeugs, ein Modell/Jahr/Farbe eines Fahrzeugs, eine Rasse eines Tieres und so weiter. In mindestens einer Ausführungsform kann(können) die Trainingseingabe(n) 165 von großformatigen Bildern erzeugt werden, in dem Teilmengen davon genommen werden, die unterschiedlichen ROIs entsprechen. Die Trainings-Engine 162 kann ebenfalls Abbildungsdaten 166 erzeugen, welche eine Klassentrainingseingabe(n) einer korrekten Klassenzielausgabe(n) 167 zuordnet. Während des Trainings von einem oder mehreren OCMs 126 können Muster in einer Klassentrainingseingabe(n) 165 basierend auf einer gewünschten Klassenzielausgabe(n) 167 identifiziert und verwendet werden, um eine Objektklassifizierung innerhalb der jeweiligen ROI unter Verwendung von identifizierten Klassenebenenmustern durchzuführen. Das identifizierte Muster kann anschließend unter Verwendung von zusätzlichen Trainings(Prüf)-Eingabe/Ziel-Ausgabezuordnungen verifiziert werden. Basierend auf den identifizierten/verifizierten Mustern verarbeiten trainierte OCMs 126 dann neue Bilder während der Inferenzierungsstufe. Beispielsweise kann bei Empfang eines neuen Bildes 101 das Identifizieren eines Abschnitts des Bildes 101, das Objekte anschaulich darstellt, eine ROI-Erfassung mit einem der ODM(s) 124 durchführt, das(die) trainierte(n) OCM(s) 126 eingesetzt werden, um verschiedene Objekte innerhalb des Bildes 101 zu klassifizieren.
  • In mindestens einer Ausführungsform können jedes oder einige der ODMs 124 und/oder OCMs 126 als neuronale Deep-Learning-Netzwerke mit mehreren Ebenen linearer oder nichtlinearer Operationen implementiert sein. Beispielsweise können jedes oder einige der ODMs 124 und/oder OCMs 126 faltende neuronale Netzwerke, rekurrente neuronale Netzwerke (RNN), vollständig verbundene neuronale Netzwerke und so weiter sein. In mindestens einer Ausführungsform können jede oder einigen von ODM(s) 124 und/oder OCM(s) 126 mehrere Neuronen umfassen, wobei jedes Neuron seine Eingabe von anderen Neuronen oder von einer externen Quelle empfangen und eine Ausgabe durch Anwenden einer Aktivierungsfunktion auf die Summe von (trainierbaren) gewichteten Eingaben und einen Bias-Wert erzeugen kann. In mindestens einer Ausführungsform können jede oder einigen von ODM(s) 124 und/oder OCM(s) 126 mehrere in Schichten angeordnete Neuronen umfassen, die eine Eingabeschicht, eine oder mehrere verborgene Schichten und eine Ausgabeschicht umfassen. Neuronen aus benachbarten Schichten können durch gewichtete Kanten verbunden sein. Anfangs können Kantengewichte einige Startwerte (Zufallswerte) zugewiesen werden. Für jede Trainingseingabe 165 kann die Trainings-Engine 162 jede oder einigen von ODM(s) 124 und/oder OCM(s) 126, Ausgabe(s) zu erzeugen. Die Trainings-Engine 137 kann dann beobachtete Ausgabe(n) mit der gewünschten Zielausgabe(n) 167 vergleichen. Der resultierende Fehler oder die resultierende Fehlübereinstimmung, z. B. die Differenz zwischen der gewünschten Zielausgabe(n) 167 und der tatsächlichen Ausgabe(n) der neuronalen Netzwerke, kann durch die jeweiligen neuronalen Netzwerke rückpropagiert werden, und die Gewichte in den neuronalen Netzwerken können eingestellt werden, um die tatsächlichen Ausgaben näher an den Zielausgaben zu markieren. Diese Einstellung kann wiederholt werden, bis der Ausgabefehler für eine gegebene Trainingseingabe 165 eine vorbestimmte Bedingung erfüllt (z. B. unter einen vorbestimmten Wert fällt). Anschließend kann eine andere Trainingseingabe 165 ausgewählt werden, eine neue Ausgabe erzeugt und eine neue Reihe von Einstellungen implementiert werden, bis die jeweiligen neuronalen Netzwerke auf einen annehmbaren Genauigkeitsgrad trainiert sind.
  • 1B ist eine beispielhafte Rechenvorrichtung 102, welche die effiziente Bewegungsvektor-basierte Erfassung und Klassifizierung von sich bewegenden Objekten unterstützen kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die MV-basierte Segmentierung 120 und die Inferenzierungs-Engine 122 von einer oder mehreren GPUs 110 ausgeführt werden und das(die) ODM(s) 124 und/oder das(die) OCM(s) 126 verwenden, um Objekterfassung und Klassifizierung durchzuführen. In mindestens einer Ausführungsform umfasst eine GPU 110 mehrere Kerne 111, wobei jeder Kern in der Lage ist, mehrere Threads 112 auszuführen. Jeder Kern kann mehrere Threads 112 gleichlaufend (z. B. parallel) ausführen. In mindestens einer Ausführungsform können Threads 112 Zugriff auf ein Register 113 aufweisen. Das Register 113 kann ein Thread-spezifisches Register sein, wobei der Zugriff auf ein Register auf einen bestimmten Thread beschränkt ist. Außerdem kann auf ein gemeinsam genutztes Register 114 von allen Threads des Kerns zugegriffen werden. In mindestens einer Ausführungsform kann jeder Kern 111 einen Planer 115 umfassen, um Rechenaufgaben und Prozesse auf verschiedene Threads 112 des Kerns 111 zu verteilen. Eine Versandeinheit 116 kann geplante Aufgaben auf geeigneten Threads unter Verwendung korrekter privater Register 113 und gemeinsam genutzter Register 114 implementieren. Die Rechenvorrichtung 102 kann eine oder mehrere Eingabe/Ausgabe-Komponenten 134 umfassen, um den Austausch von Informationen mit einem oder mehreren Benutzern oder Entwicklern zu erleichtern.
  • In mindestens einer Ausführungsform kann die GPU 110 einen (Hochgeschwindigkeits-)Cache 118 aufweisen, auf den Zugriff von mehreren Kerne 111 geteilt werden kann. Des Weiteren kann die Rechenvorrichtung 102 einen GPU-Speicher 119 umfassen, in dem die GPU 110 Zwischen- und/oder Endergebnisse (Ausgaben) verschiedener von der GPU 110 durchgeführten Rechnungen speichern kann. Nach Abschluss einer bestimmten Aufgabe kann die GPU 110 (oder die CPU 130) die Ausgabe in den (Haupt-)Speicher 104 bewegen. In mindestens einer Ausführungsform kann die CPU 130 Prozesse ausführen, die serielle Rechenaufgaben beinhalten (zugewiesen von der Inferenzierungs-Engine 122), wohingegen die GPU 110 Aufgaben (wie beispielsweise Multiplikation der Eingaben eines neuronalen Knotens mit Gewichten und Hinzufügen von Vorspannungen) ausführen kann, die für eine Parallelverarbeitung zugänglich sind. In mindestens einer Ausführungsform kann die Inferenzierungs-Engine 122 bestimmen, welche Prozesse auf der GPU 110 sind und welche Prozesse auf der CPU 130 auszuführen sind. In anderen Ausführungsformen kann die CPU 130 bestimmen, welche Prozesse ausgeführte auf der GPU 110 und welche Prozesse auf der CPU 130 auszuführen sind.
  • 2 veranschaulicht einen beispielhaften Datenfluss 200 während der Erfassung und Klassifizierung von sich bewegenden Objekten, der Bewegungsvektoren und Modelle maschinellen Lernens von mehreren Eingabegrößen gemäß mindestens einer Ausführungsform verwendet. In mindestens einer Ausführungsform kann der Datenfluss 200 durch die Inferenzierungs-Engine 122 der Rechenvorrichtung 102 von 1A und 1B implementiert werden. Wie in 2 veranschaulicht, können Daten von mehreren Quellen 201-k (n Quellen anschaulich dargestellt) herrühren, die ein beliebiges Video oder photographische Kameras, Speicherungen von zuvor erfassten Video/photographischen Bildern, synthetischen Videoquellen (z. B. Video-Gaming-Anwendungen) oder eine beliebige andere geeignete Quellen von Bildgebungsdaten sein kann. Jede Quelle 201-k kann einen Strom von Bildern 202-k erzeugen (lediglich ein Bild von jedem Strom ist für Prägnanz anschaulich dargestellt). Die Bilder 202-k können einen unterschiedlichen Ausgangspunkt, ein Sichtfeld, eine Auflösung, eine Framerate, ein Seitenverhältnis und dergleichen aufweisen. Beispielsweise kann die Quelle 201-1 Bilder 202-1 erzeugen, die eine Größe von 720x486 Pixel aufweisen, die Quelle 201-2 kann Bilder 202-2 erzeugen, die eine Größe von 1920x1080 Pixel aufweisen, die Quelle 201-3 kann Bilder 202-2 erzeugen, die eine Größe von 1280x720 Pixel aufweisen, und dergleichen. In mindestens einer Ausführungsform können Bilder 202-k eine Decodierung/Vorverarbeitung 204 durchmachen, die Trimmen, Bildschärfung, Unschärfe-/Rausch-/Artefaktbeseitigung, Komprimierung, Neuabtastung, Normalisierung, Upsampling usw. oder eine beliebige Kombination derartiger Operationen umfassen kann.
  • Bilder 202-k, die von der Decodierung/Vorverarbeitung 204 ausgegeben werden, können in das Bewegungsvektor(MV)-Bestimmungsmodul 206 eingegeben werden. Das MV-Bestimmungsmodul 206 kann identifizieren, wie Pixels eines gegebenen Bildes relativ zu dem Referenzbild verschoben sind. 3 stellt schematisch eine Verwendung von Bewegungsvektoren anschaulich dar, um sich bewegende Regionen von Interesse zu identifizieren, gemäß mindestens einer Ausführungsform. Das Referenzbild 302 wird verwendet, um die Pixelverschiebung im Bild 304 zu identifizieren. Das Bild 304 kann zum Zeitpunkt t aufgenommen werden, während das Referenzbild 302 zu einem vorherigen Zeitpunkt t-τ aufgenommen werden kann (obwohl in einigen Ausführungsformen das Referenzbild 302 zu einem späteren Zeitpunkt t+τ) aufgenommen werden kann. Das MV-Bestimmungsmodul 206 kann ein Pixel oder einen Block von Pixeln, z. B. den Block 306, im Bild 304 identifizieren und kann ferner ein Pixel oder einen Block von Pixeln, z. B. den Block 308, im Referenzbild 302 identifizieren, das die gleiche Region eines sich bewegenden Objekts, z. B. eines Fahrzeugs, abbildet. Beispielsweise kann das MV-Bestimmungsmodul 206 identifizieren, dass die Pixelintensität (oder mehrere Pixelintensitäten, wenn die Bilder Farbbilder sind) I(x,y) von Block 306 im Bild 304 die gleiche (innerhalb einer bestimmten Toleranz) wie die Pixelintensität IREF (x-Δx,y-Δy) von Block 308 im Referenzbild 302, I(x,y)≈IREF (x-Δx,y-Δy) ist, und kann somit das gleiche Objekt oder einen Abschnitt des gleichen Objekts anschaulich darstellen.
  • In verschiedenen Fällen kann die Pixelintensität in den beiden Bildern nicht genau gleich sein, da sich die Helligkeit (und Farbe) von Pixeln ändern kann, wenn das sich bewegende Objekt seine Position relativ zu der Kamera ändert. Als Ergebnis können verschiedene Fehlerbewertungsprozeduren eingesetzt werden. Beispielsweise kann die Differenz δI(xi,yk)=I(xi,y)-IREF(x;-Δx,yk-Δy) für jedes Pixels xi,yk eines Blocks gebildet werden, der hypothetisch angenommen wird, zu einem sich bewegenden Objekt zu gehören, und eine quadratische Kostenfunktion (oder eine beliebige andere geeignete Verlustfunktion) kann berechnet werden, z. B. Cost=ΣjΣk[δI(xi,yk)]2. Wenn die Kostenfunktion innerhalb eines bestimmten (z. B. empirisch bestimmten) Spielraums mar relativ zu der gesamten (oder mittleren) Pixelintensität des Blocks, I=ΣjΣkI(xi,yk) ist, so dass z. B. Cost/I ≤ mar ist, können Block 306 im Bild 304 und Block 308 im Referenzbild 302 identifiziert werden, als zu anschaulichen Darstellungen des gleichen Objekts zu gehören. Die Werte Δx und Δy, welche die Verschiebung der Blöcke zwischen den beiden Bildern kennzeichnen, stellen Komponenten eines Bewegungsvektors 310 (in 3 übertrieben dargestellt) für Block 306, z. B. ΔR=(Δx,Δy), dar. Die Bestimmung von sowohl dem Bewegungsvektor ΔR als auch der Größe des Blocks 306 kann als Teil der Optimierungsprozedur selbst durchgeführt werden, z. B. durch Minimieren der Kostenfunktion für verschiedene Blöcke, die als anschauliche Darstellungen des(der) gleichen Objekts(e) identifiziert werden. In einigen Ausführungsformen kann die Kostenfunktion eine binäre Kreuzentropiekostenfunktion, die Kostenfunktion eine mittlere quadratischen Fehlerfunktion, die Kostenfunktion ein mittlerer quadratischer Fehler, die Kostenfunktion ein gewichteter mittlerer quadratischer Fehler, die Kostenfunktion ein mittlere absoluter Fehler K, eine Huber-Kostenfunktion, eine Hinge-Kostenfunktion, eine Mehrklassen-Kreuzentropiekostenfunktion, eine Kullback-Liebler-Kostenfunktion und dergleichen sein.
  • In einigen Ausführungsformen kann, um die Menge der Verarbeitung zu verringern, die beim Identifizieren von Bewegungsvektoren durchgeführt wird, das MV-Bestimmungsmodul 206 Kandidatenblöcke 308 im Referenzbild 302 auf eine bestimmte Nähe von Block 306 in Bild 304 begrenzen. Die Größe der Nähe kann durch die zeitliche Differenz τ zwischen dem Referenzbild 302 und dem Bild 304 und durch eine maximale erwartete Geschwindigkeit vmax von sich bewegenden Objekten in einer bestimmten Umgebung, [|AR|=v]max τ, bestimmt werden. Beispielsweise kann die Höchstgeschwindigkeit 20 mph in einem Parkhaus, 40-50 mph an einer Stadtkreuzung und so weiter sein. Die Blöcke 306 und 308 können von einer beliebigen geeigneten Pixelgröße, z. B. 32x32 Pixel, 8x16 Pixel, 4x4 Pixel, 2x3 Pixel, oder in einigen Fällen so klein wie ein einziges Pixel sein.
  • Mit fortgesetzter Bezugnahme auf 2 kann ein Satz von Bewegungsvektoren, der identifizierte für ein gegebenes Bild, z. B. Bild 202-1, identifiziert ist, von einem Segmentierungsmodul 208 verwendet werden, um ein Erfassungsmodell 210-k zur Verarbeitung des Bildes auszuwählen. Die Erfassungsmodelle 210-k können ODM(s) 126 von 1A sein. 4A-C veranschaulichen die Auswahl eines Erfassungsmodells basierend auf Bewegungsvektoren gemäß mindestens einer Ausführungsform. Das Segmentierungsmodul 208 kann auf den Satz von Bewegungsvektoren {ΔR} zugreifen und Pixel (oder Blöcke von Pixeln) auswählen, die Bewegungsvektoren ΔR zugeordnet sind, die größer als ein dem Rauschen entsprechender Wert sind. Es wird hypothetisch angenommen, dass derartige Pixel (oder Blöcke von Pixeln) zu anschaulichen Darstellungen von sich bewegenden Objekten gehören. Das Segmentierungsmodul 208 kann dann eine Region von Interesse 402 identifizieren (mit der gepunkteten Linie in 4A anschaulich dargestellt), die einige oder alle derartigen Pixel (oder Blöcke von Pixeln) umschließt. In einigen Ausführungsformen kann die Region von Interesse der Mindestbegrenzungsrahmen für derartige Pixel sein, z. B. der Begrenzungsrahmen, dessen untere linke Ecke Koordinaten (xmin,xmin) aufweist und obere rechte Ecke Koordinaten (xmax,ymax) aufweist, wobei xmin (xmax) die kleinste (größte) x-Koordinate von Pixeln ist, die einer anschaulichen Darstellung eines beliebigen sich bewegenden Objekts zugeordnet ist, und ymin (ymax) auf ähnliche Weise die kleinste (größte) y-Koordinate von derartigen Pixeln ist. Obwohl die Region von Interesse 402 der Einfachheit halber in 4A (und 4B-C) anschaulich dargestellt wird, als die untere linke Ecke von Bild 401 zu belegen, kann die Region von Interesse 402 irgendwo innerhalb des Bildes 401 lokalisiert sein.
  • Mehrere verfügbare Detektormodelle 210-k (z. B. ODMs 126) können unterschiedliche Eingabegrößen, mk×nk, aufweisen. Die Auswahl eines Detektormodus 210-k kann durch Vergleichen verschiedener verfügbarer Eingabegrößen mk×nk mit der Größe der Region von Interesse 402, z. B. [[(x]max-x]min) × [[(y]max-y]min), durchgeführt werden. 4A veranschaulicht eine Situation, bei der die Größe der Region von Interesse 402 geringer als die kleinste Erfassungsmodelleingabegröße, z. B. als die erste Modelleingabegröße 404, m1×n1, ist. In derartigen Fällen kann die Größe der Region von Interesse auf m1 × n1 z. B. durch Hinzufügen von Pixeln, die sich nicht bewegende Objekte anschaulich darstellen, zu einer oder mehreren Seiten der Region von Interesse 402 erweitert werden, wie mit den durchgezogenen Pfeilen in 4A angegeben. In einigen Ausführungsformen können die Pixel, die hinzugefügt werden, Pixel des gleichen Bildes 202-1 oder synthetische (z. B. auffüllende) Pixel mit einer festen Intensität sein. 4B veranschaulicht eine Situation, bei der die Größe der Region von Interesse 402 zwischen zwei Erfassungsmodelleingabegrößen, z. B. zwischen der ersten Modelleingabegröße 404, m1×n1 und einer zweiten Modelleingabegröße 406, m2×n2, ist. In derartigen Fällen kann die Größe der Region von Interesse m2×n2 z. B. in der gleichen Manier vergrößert werden, wie oben in Verbindung mit 1B beschrieben. 4C veranschaulicht eine Situation, bei der die Größe der Region von Interesse 402 über der maximalen Erfassungsmodelleingabegröße, z. B. über der zweiten Modelleingabegröße 406, m2×n2, ist (wenn zwei Detektormodelle 210-k eingesetzt werden). In derartigen Fällen kann die Region von Interesse 402 auf die maximale Modelleingabegröße herunterskaliert werden, wie mit den gestrichelten Pfeilen in 4C angegeben.
  • 4A-C sind als Veranschaulichungen der Ausführungsform bestimmt, bei der Regionen von Interesse auf die nächst niedrige Detektormodelleingabegröße erweitert werden, um die Notwendigkeit einer Umskalierung soweit wie möglich zu verringern. In einigen Ausführungsformen kann ein Satz von Schwellwertgrößen definiert werden, die zwischen den verfügbaren Modelleingabegrößen sind. Beispielsweise kann eine Schwellwertgröße mT×nT zwischen der ersten Modelleingabegröße m1×n1 und der zweiten Modelleingabegröße m2×n2 definiert sein, so dass, wenn die Größe der Region von Interesse 402 zwischen m1×n1 und mT×nT ist, die Region von Interesse auf m1×n1 herunterskaliert wird (wie mit den gestrichelten Pfeilen in 4B anschaulich dargestellt), und wenn die Größe der Region von Interesse 402 zwischen mT×nT und m2×n2 ist, wird die Region von Interesse auf m2×n2 erweitert (oder aufgefüllt). Die Schwellwertgröße mT×nT kann basierend auf der Gesamtrecheneffizienz ausgewählt werden. Beispielsweise kann es, wo die Größe der Region von Interesse unter mT×nT ist, rechenmäßig effizienter sein, die Region von Interesse 402 auf m1×n1 herunter zu skalieren und das herunterskalierte Bild unter Verwendung des kleineren Eingabegrößenmodells zu verarbeiten, anstatt die Region von Interesse 402 zu erweitern und das erweiterte Bild unter Verwendung des größeren Eingabegrößenmodells zu verarbeiten (was zu einer größeren Verarbeitungszeit führen kann). Für die Regionen von Interesse 402, die in der Größe über mT×nT sind, kann es effizienter sein, eine Erweiterung anstatt einer Herunterskalierung durchzuführen. Außerdem kann das größere Eingabegrößenmodell genauer sein. Demgemäß kann die Bestimmung einer(von) Schwellwertgröße(en) mT×nT alle derartigen Metriken berücksichtigen und kann in Hinblick auf anwendungsspezifischen Kriterien, einschließlich benutzerspezifizierten Kriterien, durchgeführt werden.
  • Eine beliebige Anzahl von Schwellwerten mT×nT kann identifiziert werden. In einigen Ausführungsformen kann die Anzahl von unterschiedlichen Schwellwerten N-1 für ein System von N Detektormodelle von unterschiedlichen Eingabegrößen sein. In einigen Fällen kann es vorkommen, dass eine horizontale m (oder vertikale n) Größe der Region von Interesse 402 größer als die horizontale mk (oder vertikale nk) Eingabegröße eines bestimmten Detektormodells 210-k ist, wobei jedoch eine vertikale n (oder horizontale m) Größe der Region von Interesse 402 kleiner als die vertikale nk (oder horizontale mk) Größe des gleichen Detektormodells 210-k ist. Eine Anzahl von Möglichkeiten, um derartige Situationen zu handhaben, kann existieren. Beispielsweise kann die Größe der Region von Interesse auf das nächstgrößte Eingabegrößenmodell, z. B. des Detektormodells 210-(k+1) erweitert werden, sogar wenn eine Dimension der Region von Interesse 402 über der entsprechenden Dimension des Detektormodells 210-k ist. In einigen Fällen kann die Region von Interesse 402 entlang der kleineren Dimension, z. B. n → ñ erweitert (oder aufgefüllt) werden, so dass die neue Größe m × ñ das gleiche Seitenverhältnis (m:ñ) wie die Eingabegröße des Detektormodell 210-k (mk:nk) aufweist. Die erweiterte (aufgefüllte) Region von Interesse kann dann auf die Eingabegröße des Detektormodells 210-k herunterskaliert werden. In einigen Ausführungsformen kann die Region von Interesse 402 entlang unterschiedlicher Dimensionen unterschiedlich herunterskaliert (oder hochskaliert) werden (so dass keine Größenänderung oder Auffüllung durchgeführt werden muss). Da eine derartige anisotrope Umskalierung horizontale und/oder vertikale Dimensionen von verschiedene Objekten relativ ändert, kann diese Technik in den Fällen verwendet werden, in denen das Detektormodell 210-k auf einer Vielfalt von Bildern trainiert wurde, einschließlich jenen, die Objekte anschaulich darstellen, deren Dimensionen im Vergleich mit den natürlichen Dimensionen derartiger Objekte modifiziert (z. B. gestreckt oder gequetscht) wurden.
  • Zurückverweisend auf 2 kann eine ausgewählte (und in einigen Fällen umskalierte) Region von Interesse durch das Segmentierungsmodul 208 zur Verarbeitung durch eines der Detektormodelle 210-k gerichtet werden. Beispielsweise kann jedem Detektormodell 210-k zur Verarbeitung ein entsprechender Stapel von Einträgen (Regionen von Interesse) zugewiesen werden, die in das Modell gespeist werden. Genauer gesagt kann ein neuer Eintrag an dem hinteren Ende des jeweiligen Stapels mit von dem Stapel abgerufenen Einträgen zur Verarbeitung durch das Detektormodell 210-k in der historischen Reihenfolge der Platzierung platziert werden. In einigen Ausführungsformen können Einträge in einem Stapel tatsächliche Pixelwerte umfassen, die in einem Eingangspuffer gespeichert sind. In einigen Ausführungsformen können Einträge in einem Stapel Metadaten sein, welche die Regionen von Interesse 402 in den jeweiligen vollen Bildern identifizieren. Beispielsweise können die Metadaten einen Identifikator des Bildes, die Koordinaten der Begrenzungsrahmen für die Region von Interesse 402, den Zeitpunkt, wenn das Bild aufgenommen wurde und so weiter umfassen. In einigen Ausführungsformen kann die Verarbeitung von Einträgen in dem Stapel in einer pipelineartigen Art und Weise durchgeführt werden. Genauer gesagt kann, wenn das Detektormodell 210-k ein neuronales Netzwerkmodell ist, eine erste Schicht von Neuronen des Detektormodells 210-k Rechnungen des ersten Eintrags in dem Stapel während eines erster Rechenzyklus (oder eines Satzes von Zyklen) durchführen und kann Rechnungen des zweiten Eintrags während des zweiten Rechenzyklus und so weiter durchführen. Indessen kann während des zweiten Rechenzyklus die zweite Schicht von Neuronen den ersten Eintrag verarbeiten und so weiter. In einigen Ausführungsformen kann die Verarbeitung durch jedes Detektormodell 210-k durch separate Verarbeitungs-Threads durch eine oder mehrere GPUs (z. B. parallel) durchgeführt werden.
  • Jedes der Detektormodelle 210-1 ... 210-N kann Angaben von erfassten Objekten 220 in den jeweiligen Einträgen ausgeben. Die Angabe kann jede geeignete Form aufweisen, z. B. Sätze von Koordinaten, Begrenzungsrahmen und dergleichen. Die Begrenzungsrahmen können rechteckig oder ellipsoide sein oder können eine beliebige andere geeignete Form aufweisen. Beispielsweise kann, wenn das Objekt ein teilweise verdeckendes Objekt B ist, die Angabe des Objekts B einen Begrenzungsrahmen umfassen, der das Objekt B umschließt, wobei ein Teil des Begrenzungsrahmens entfernt ist (z. B. der mit dem Objekt A verdeckte Abschnitt). In einigen Ausführungsformen können Angaben eine beliebige Anzahl von verbundenen (oder anderweitig zugeordneten) Rahmen oder Regionen von Pixeln, Pixel für Pixel Auflistungen oder dergleichen umfassen. Es kann eine beliebige Anzahl von erfassten Objekten 220 innerhalb eines bestimmten Eintrags geben, die von jedem Detektormodell 210-k verarbeitet werden. In einigen Ausführungsformen können die Detektormodelle 210-k die Unterregionen innerhalb der Regionen von Interesse 402 identifizieren, die verschiedenen sich bewegenden Objekten entsprechen. In einigen Ausführungsformen können die Detektormodelle 210-k beliebige zusätzliche Informationen über die Objekte, wie beispielsweise einen Typ/Klasse hoher Ebene des Objekts, z. B. ein Fahrzeug oder eine Person, identifizieren.
  • Angaben von erfassten Objekten 220 können von einem Kombinierer (Verfolger) 230 empfangen werden. Der Kombinierer 230 kann eine Datenstruktur erzeugen, die Daten (z. B. Pixeldaten) für jede Unterregion umfasst, die den durch alle oder mindestens einigen Detektormodelle 210-1 ... 210-N erfassten Objekten entsprechen. Genauer gesagt kann die durch den Kombinierer 230 erzeugte Datenstruktur während des j-ten Rechenzyklus (oder eines Satzes von Zyklen) erfassten Objekten 220 umfassen, deren Identifikationen durch Detektormodelle 210-1 ... 210-N während eines vorherigen, z. B. j-1-ten Rechenzyklus, ausgegeben wurden. Beispielsweise kann die Datenstruktur eine Verkettung von Pixelwerten für verschiedene Unterregionen umfassen, die den erfassten Objekten 220 entsprechen. Außerdem kann die Datenstruktur verschiedene Metadaten umfassen, die jede Unterregion als durch eine jeweilige Quelle 201-k erzeugt, Ort der Unterregion innerhalb des Bildes 202-k, Zeitpunkt der Aufnahme des Bildes 202, physikalischen Ort, Auflösung, Sichtfeld der jeweiligen Quelle 201-k und so weiter identifizieren. Mindestens einige der Metadaten können durch das Segmentierungsmodul 208 (wie durch die gepunktete Linie in 2 angegeben) basierend auf dem vollen Bild 202-k bereitgestellt werden.
  • Die Datenstruktur kann einem oder mehreren Klassifikatormodellen 240-k bereitgestellt werden. Die Klassifikatormodelle 240-k können eine beliebige Anzahl von Modellen umfassen, die trainiert sind, um verschiedene Eigenschaften der erfassten Objekten 220 unabhängig (z. B. parallel) oder sequenziell zu bestimmen. Beispielsweise kann das Klassifikatormodell 240-1 einen Typ eines Objekts bestimmen (z. B. Geländewagen (SUV), Kleinlastwagen, Personenkraftwagen, Van, Bus, Halblauf, fahrzeugfremdes Objekt usw.) und das Klassifikatormodell 240-2 kann eine Marke und Modell des Fahrzeugs bestimmen. In einigen Ausführungsformen, wobei z. B. unterschiedliche Klassifikatormodelle parallel arbeiten, können einige Klassifikatormodelle (z. B. Modell 240-1 und Modell 240-2, wie mit dem gestrichelten Block anschaulich dargestellt) empfangen werden und die gleiche Datenstruktur verarbeiten, die durch den Kombinierer 230 bereitgestellt wird. In einigen Ausführungsformen, wobei z. B. unterschiedliche Klassifikatormodelle sequenziell arbeiten, kann eines der Klassifikatormodelle (z. B. das Modell 240-1) einen Satz von Merkmalen (z. B. Merkmalsvektoren) ausgeben, die für das Erscheinungsbild des Objekts repräsentativ sind, und ein anderes Klassifikatormodell (z. B. das Modell 240-2) kann diesen Satz von Merkmalen verarbeiten, um eine endgültige Klassifizierung zu bestimmen. Obwohl zwei Klassifikatormodelle 240-k in 2 anschaulich dargestellt sind, muss die Anzahl von Klassifikatormodellen 240-k nicht begrenzt sein und kann ein, drei oder eine beliebige andere Anzahl von Modellen sein. Die Klassifikatormodelle 240-k erzeugen eine Inferenzierungsausgabe 250, die einiges von allen Klassifizierungen umfassen können, die durch Detektormodelle 210-k und Klassifikatormodelle 240-k bestimmt werden. Die Inferenzierungsausgabe 250 kann einem Benutzer, einer Anwendung (z. B. Überwachungsanwendung, Verkehrsteuerungsanwendung usw.) bereitgestellt werden, die im lokalen Speicher oder auf einer Cloud gespeichert sind, und so weiter. Die Inferenzierungsausgabe 250 kann indiziert sein oder mit Informationen des Kombinierers 230 beliefert werden, um den Ort der klassifizierten Objekte, eine Identifikation eines spezifischen Bildes 202-k (sowie auch jedes Referenzbild), das die klassifizierten Objekten erfasste, die Zeit, wenn das Bild aufgenommen wurde, und dergleichen zu referenzieren. In einigen Ausführungsformen können eine oder mehrere Klassifizierungen (z. B. ein Objekttyp hoher Ebene) durch die Detektormodelle 210-k bestimmt werden. In einigen Ausführungsformen können alle Klassifizierungen durch die Detektormodelle 210-k erhalten werden.
  • In einigen Ausführungsformen kann der Kombinierer 230 die Rechenpipeline der Klassifikatormodelle 240-k verwalten. Beispielsweise kann unter bestimmten Bedingungen eine Anzahl von Objekten in den meisten Bildern klein sein (z. B. ein Nebenverkehr), so dass die meisten der Regionen von Interesse relativ schmal sind und somit zu einem Detektormodell niedriger Eingabegröße (z. B. dem Detektormodell 210-1) gerichtet werden. Unter einer anderen Bedingung (z. B. Hauptverkehr) kann die Anzahl von Objekten groß sein, wobei die meisten der Regionen von Interesse breit sind und dementsprechend zur Verarbeitung zu einem Detektormodell hoher Eingabegröße (z. B. dem Detektormodell 210-N) gerichtet werden. Als Ergebnis kann der Kombinierer 230 mehr Objekte empfangen, die durch einige Detektormodelle erfasst wurden, als Objekte, die durch andere Modelle erfasst wurden. In derartigen Fällen kann der Kombinierer 230 Objekte, die durch unterschiedliche Detektormodelle erfassten wurden, lediglich für einen Teil aller Rechenzyklen kombinieren. Während anderer Zyklen kann der Kombinierer 230 den durch ein (oder mehrere) Detektormodelle erzeugten Rückstau der Pipeline abbauen. Beispielsweise kann der Kombinierer 230 auf einen Überlaufpuffer zugreifen, der unverarbeitete Objekte speichert, die zuvor erfassten durch dieses Modell(e) erfasst wurden, und eine Datenstruktur unter Verwendung von P vorherigen Ausgaben dieses Modell(e) erzeugen. Der Kombinierer 230 kann diese Prozedur so oft wie erforderlich wiederholen, um den Rückstau abzubauen, bevor die kombinierte Verarbeitung von unterschiedlichen Detektormodellen 210-k wieder aufgenommen wird.
  • 5 und 6 sind Flussdiagramme von jeweiligen beispielhaften Verfahren 500 und 600, welche die Erfassung und Klassifizierung von sich bewegenden Objekten in Strömen von Bilder erleichtern, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die Verfahren 500 und 600 können durch eine oder mehrere Verarbeitungseinheiten (z. B. CPUs und/oder GPUs) durchgeführt werden, die eine oder mehrere Speichervorrichtungen umfassen können (oder mit denen sie kommunizieren können). In mindestens einer Ausführungsform können das Verfahren 500 und Verfahren 600 durch Verarbeitungseinheiten der Rechenvorrichtung 102 oder des Trainingsservers 160 durchgeführt werden. In mindestens einer Ausführungsform können das Verfahren 500 und Verfahren 600 von mehreren Verarbeitungs-Threads (z. B. CPU-Threads und/oder GPU-Threads) durchgeführt werden, wobei jeder Thread eine oder mehrere einzelne Funktionen, Routinen, Subroutinen oder Operationen des Verfahrens ausführt. In mindestens einer Ausführungsform können Verarbeitungs-Threads, die das Verfahren 500 (und auf ähnliche Weise das Verfahren 600) implementieren, synchronisiert sein (z. B. unter Verwendung von Semaphoren, kritischen Sektionen und/oder anderen Thread-Synchronisierungsmechanismen). Alternativ können Verarbeitungs-Threads, die das Verfahren 500 (und auf ähnliche Weise das Verfahren 600) implementieren, asynchron mit Bezug zueinander ausgeführt werden. Verschiedene Operationen der Verfahren 500 und 600 können in einer unterschiedlichen Reihenfolge im Vergleich mit der in 5 und 6 gezeigten Reihenfolge durchgeführt werden. Einige Operationen der Verfahren können gleichlaufend mit anderen Operationen durchgeführt werden. In mindestens einer Ausführungsform können eine oder mehrere in 5 und 6 gezeigte Operationen nicht immer durchgeführt werden.
  • 5 ist ein Flussdiagramm eines beispielhaften Verfahrens 500 des Verwendens von Bewegungsvektoren und Modellen maschinellen Lernens von mehreren Eingabegrößen zur effizienten Erfassung und Klassifizierung von sich bewegenden Objekten gemäß mindestens einer Ausführungsform. Das Verfahren 500 kann im Kontext von Verkehrssteuerung und - überwachung, medizinischer Bildgebung, autonomen Fahrsystemen, industriellen Umgebungen, Forschungsumgebungen und vielen anderen Kontexten durchgeführt werden. Bei Block 510 können Verarbeitungseinheiten, die das Verfahren 500 durchführen, ein erstes Bild und ein erstes Referenzbild identifizieren. Außerdem können Verarbeitungseinheiten ein zweites (drittes usw.) Bild und ein zweites (drittes usw.) Referenzbild identifizieren. Die Begriffe erstes, zweites usw. seien als bloße Identifikatoren zu verstehen und setzen keine zeitliche oder kontextabhängige Reihenfolge voraus. Das erste (zweite usw.) Bild und das erste (zweite usw.) Referenzbild können Teile (z. B. Frames) eines jeweiligen Stroms von Bildern sein, z. B. ein Strom von Video-Frames oder photographischen Bildern, die in bestimmten Zeitintervallen, z. B. regelmäßigen Zeitintervallen, aufgenommen werden. Genauer gesagt können das erste Bild und das erste Referenzbild durch eine erste Kamera erhalten werden, wobei das zweite (dritte usw.) Bild und das zweite (dritte usw.) Referenzbild durch eine zweite (dritte usw.) Kamera erhalten werden kann. Ein Sichtfeld der ersten Kamera kann von einem Sichtfeld der zweiten (dritten usw.) Kamera unterschiedlich sein.
  • Bei Block 520 kann die Verarbeitungseinheit erste (zweite usw.) mehrere Bewegungsvektoren für das erste (zweite usw.) Bild bestimmen. Jeder der ersten (zweiten usw.) mehreren Bewegungsvektoren kann die Verschiebung eines oder mehrerer Pixel des ersten (zweiten usw.) Bildes relativ zu dem ersten (zweiten usw.) Referenzbild kennzeichnen. Beispielsweise kann das erste (zweite usw.) Bild in ein Gitter von Pixelblöcken segmentiert sein, und für mindestens einige Pixelblöcke kann ein ähnlicher Referenzblock in dem ersten (zweiten usw.) Referenzbild lokalisiert sein. Einige der Pixelblöcke können in dem ersten Bild an den gleichen (oder ungefähr den gleichen) Orten wie ähnliche Blöcke in dem ersten (zweiten usw.) Referenzbild lokalisiert sein. Derartige Blöcke stellen stationäre Objekte (oder Abschnitte derartiger Objekte) anschaulich dar und können Null-Bewegungsvektoren zugeordnet sein. Anschauliche Darstellungen von sich bewegenden Objekten können Nicht-Null-Bewegungsvektoren zugeordnet sein, wobei jeder Bewegungsvektor die Verschiebung eines bestimmten Pixels oder Pixelblocks kennzeichnet. Um derartige Bewegungsvektoren zu identifizieren, können in einigen Ausführungsformen Gitter mehrerer Blockgrößen, z. B. ein Gitter von 16x16 Pixelblöcken und ein Gitter von 4x4 Pixelblöcken, verwendet werden. In einigen Ausführungsformen kann ein anfängliches grobes Gitter (z. B. ein Gitter von 32x32 Pixelblöcken, 64x64 Pixelblöcke usw.) zuerst eingesetzt werden, um Regionen der ersten (zweiten usw.) Bildes zu beseitigen, die stationäre Objekte anschaulich darstellen und die Pixelblöcke umfassen, welche die gleichen wie die entsprechenden Pixelblöcke in den ersten (zweiten usw.) Referenzbildern sind. Sobald eine Fehlübereinstimmung in dem einen oder mehreren Pixelblöcken des anfänglichen Gitter erfasst ist, können die jeweilige Blöcke weiter in feinere Pixelblöcke unterteilt werden, z. B. 8x8 Pixelblöcke, 4x4 Pixelblöcke usw. Die feineren Blöcke können dann entlang verschiedener Richtungen (z. B. 8, 12, 16 usw. Richtungen) um eine bestimmte Anzahl von Pixeln (z. B. eine ganzzahlige oder bruchzahlige Anzahl von Pixeln) verschoben werden, bis die beste Übereinstimmung mit den entsprechenden Blöcken in dem ersten Referenzbild gefunden ist.
  • Bei Block 530 kann das Verfahren 500 mit den Verarbeitungseinheiten fortfahren, die unter Verwendung der ersten (zweiten usw.) mehreren Bewegungsvektoren eine erste (zweite usw.) Region von Interesse des ersten (zweiten usw.) Bildes identifizieren, wobei die erste (zweite usw.) Region von Interesse ein oder mehrere Objekte in dem ersten (zweiten usw.) Bild anschaulich darstellen. Beispielsweise kann die erste (zweite usw.) Region von Interesse die Region von Interesse 402 von 4A-C sein. In einigen Ausführungsformen kann die erste (zweite usw.) Region von Interesse Pixel oder Blöcke von Pixeln des ersten (zweiten usw.) Bildes umfassen, die Nicht-Null-Bewegungsvektoren zugeordnet sind, und Pixel oder Blöcke von Pixeln ausschließen, die Null-Bewegungsvektoren zugeordnet sind und somit stationäre Objekte anschaulich darstellen. Bei Block 540 können die Verarbeitungseinheiten eine Größe der ersten (zweiten usw.) Region von Interesse verwenden, um ein erstes (zweites usw.) MLM von mehreren MLMs auszuwählen. Jedes der mehreren MLMs kann eine unterschiedliche Eingabegröße aufweisen. Die Auswahl des MLM kann durchgeführt werden, wie in Verbindung mit 4A-C beschrieben.
  • Bei Block 550 können die Verarbeitungseinheiten ferner basierend auf der Größe der ersten (zweiten usw.) Region von Interesse und einer dem ersten MLM entsprechenden Eingabegröße einen ersten (zweiten usw.) Abschnitt des ersten (zweiten usw.) Bildes auswählen, wobei der erste (zweite usw.) Abschnitt die erste (zweite usw.) Region von Interesse umfasst. Beispielsweise kann der erste (zweite usw.) Abschnitt die Region von Interesse 402 und ein zusätzliches Segment des ersten (zweiten usw.) Bildes umfassen, so dass die Größe des ersten (zweiten usw.) Abschnitts mit der Größe von einem oder den MLMs (z. B. Detektormodelle 210-k) übereinstimmt, was das MLM mit der kleinsten Eingabegröße sein kann, welche die Größe der Region von Interesse überschreitet (oder mit dieser übereinstimmt).
  • Bei Block 560 kann das Verfahren 500 mit den Verarbeitungseinheiten fortfahren, die eine Anwesenheit des einen oder mehrerer Objekte in dem ersten (zweiten usw.) Bild basierend auf einer Ausgabe der Verarbeitung des ersten (zweiten usw.) Abschnitts unter Verwendung des ersten (zweiten usw.) MLM erfassen. In einigen Ausführungsformen kann der Block 560 ferner das Klassifizieren eines oder mehrerer erfassten Objekten umfassen. In einigen Ausführungsformen kann das Klassifizieren der sich bewegenden Objekte eine Anzahl von Operationen umfassen, die mit den Abrufabschnitt von 6 veranschaulicht werden. Genauer gesagt können bei dem optionalen Block 562 vor der Verarbeitung des ersten (zweiten usw.) Abschnitts durch das erste (zweite usw.) MLM die Verarbeitungseinheiten den ersten (zweiten usw.) Abschnitt des ersten (zweiten usw.) Bildes umskalieren, um mit der Eingabegröße übereinzustimmen, die dem ersten (zweiten usw.) MLM entspricht. Insbesondere kann der erste (zweite usw.) Abschnitt des ersten (zweiten usw.) Bildes ausgewählt werden, um eine Größe aufzuweisen, die von der Eingabegröße unterschiedlich ist, die dem ersten (zweiten usw.) MLM entspricht. Beispielsweise kann, wie in 4C veranschaulicht, wenn die Größe der Region von Interesse 402 die Eingabegröße überschreitet, die dem ausgewählte MLM entspricht, die Region von Interesse 402 auf diese Eingabegröße herunterskaliert werden.
  • Bei Block 564 kann das Verfahren 500 die Verarbeitung des ersten (zweiten usw.) ausgewählten Abschnitts des ersten (zweiten usw.) Bildes durch das erste (zweite usw.) MLM umfassen. In einigen Ausführungsformen kann die Ausgabe der Verarbeitung des ersten (zweiten usw.) Abschnitts durch das erste (zweiten usw.) MLM einen Begrenzungsrahmen für jedes des einen oder mehreren Objekten in dem ersten (zweiten usw.) Bild umfassen. In einigen Ausführungsformen wird das Klassifizieren der Objekte in dem ersten Bild gleichlaufend mit dem Klassifizieren des einen oder mehrerer Objekte in dem zweiten (dritten usw.) Bild durchgeführt. Genauer gesagt kann, wie durch Block 566 angegeben, das Klassifizieren des einen oder mehrerer Objekte die Verarbeitung einer kombinierten Eingabe durch ein oder mehrere Klassifikator-MLMs umfassen. Die kombinierte Eingabe kann die Ausgabe der Verarbeitung des ersten Abschnitts durch das erste MLM und die Ausgabe der Verarbeitung des zweiten Abschnitts durch das zweite (dritte usw.) MLM umfassen.
  • In einigen Ausführungsformen werden das eine oder mehrere Klassifikator-MLMs trainiert, um einen Typ eines oder mehrerer Objekte zu bestimmen, die in der kombinierten Eingabe dargestellt werden. Die Ausgabe des einen oder mehrerer Klassifikator-MLMs kann eine oder mehrere Inferenzierungen umfassen, die i) einem Typ eines Fahrzeugs, ii) einer Marke des Fahrzeugs oder iii) einem Modell des Fahrzeugs entsprechen. Derartige Eigenschaften können für mindestens ein Objekt des einen oder mehrerer Objekte in mindestens einem des ersten Bildes oder des zweiten (dritten usw.) Bildes bestimmt werden. In einigen Ausführungsformen kann die kombinierte Eingabe in das eine oder mehrere Klassifikator-MLMs eine von mehreren kombinierten Eingaben einer Pipeline von Eingaben sein. In derartigen Ausführungsformen kann das eine oder mehrere Klassifikator-MLMs konfiguriert sein, um eine Pipeline-Verarbeitung dieser mehreren kombinierten Eingaben durchzuführen. In einigen Ausführungsformen können eine oder alle der Verarbeitungsoperationen, welche die Verarbeitung der ersten (zweiten usw.) Abschnitts durch das erste (zweite usw.) MLM sowie die Verarbeitung der kombinierten Eingabe(n) umfassen, unter Verwendung einer oder mehrerer GPUs durchgeführt werden.
  • 6 ist ein Flussdiagramm eines beispielhaften Verfahrens 600 des Trainierens eines oder mehrerer Klassifikatormodelle maschinellen Lernens zur effizienten Erfassung und Klassifizierung von Objekten gemäß mindestens einer Ausführungsform. Bei Block 610 können Verarbeitungseinheiten, die das Verfahren 600 durchführen, mehrere Trainingsbilder erhalten, wobei jedes der mehreren Trainingsbilder ein oder mehrere Objekte anschaulich darstellen (z. B. Objekte in einem Bewegungszustand). Bei Block 620 kann das Verfahren 600 mit dem Abschneiden eines oder mehrerer Abschnitte von jedem der mehreren Bildern fortfahren, wobei jeder Abschnitt eine anschauliche Darstellung eines Objekts umfasst. Bei Block 630 kann das Verfahren 600 mit den Verarbeitungseinheiten fortfahren, die eine kombinierte Datenstruktur erzeugen, die Daten für jedes der abgeschnittenen Abschnitte umfasst. Die kombinierte Datenstruktur kann ferner verschiedene Metadaten umfassen, die den abgeschnittenen Abschnitten zugeordnet sind, welche den Zeitpunkt, wenn die Bilder aufgenommen wurden, die Orte der Kameras, welche die Bilder erzeugten, die Auflösung der Kameras und dergleichen umfassen. Bei Block 640 kann das Verfahren 600 die Verarbeitung der kombinierten Datenstruktur unter Verwendung eines oder mehrerer Klassifikatormodelle umfassen, um Eigenschaften von mindestens einigen der Objekte vorherzusagen, die in den mehreren Bildern anschaulich dargestellt sind. Bei Block 650 kann das Verfahren 600 das Einstellen von Parametern des einen oder mehrerer Klassifikatormodelle basierend auf einer Differenz zwischen den vorhergesagten Eigenschaften des Objekts und den Zieleigenschaften der Objekte umfassen.
  • INFERENZIERUNGS- UND TRAININGSLOGIK
  • 7A veranschaulicht die Inferenzierungs- und/oder Trainingslogik 715, die verwendet wird, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen verbunden sind.
  • In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 715, ohne darauf beschränkt zu sein, Code- und/oder Datenspeicherung 701 zum Speichern von Vorwärts- und/oder Ausgabegewicht und/oder Eingangs-/Ausgangsdaten und/oder anderen Parametern zum Konfigurieren von Neuronen oder Schichten eines neuronalen Netzwerks umfassen, das zur Inferenzierung in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 715 Code- und/oder Datenspeicherung 701 umfassen oder mit diesem gekoppelt sein, um Graphikcode oder andere Software zum Steuern des Timings und/oder der Reihenfolge zu speichern, in welcher Gewichts- und/oder andere Parameterinformationen zu laden sind, um Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (ALUs) oder einfach Schaltungen) zu konfigurieren. In mindestens einer Ausführungsform lädt Code, wie beispielsweise Graphikcode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs, basierend auf einer Architektur eines neuronalen Netzwerks, dem eine derartiger Code entspricht. In mindestens einer Ausführungsform speichert die Code- und/oder Datenspeicherung 701 Gewichtsparameter und/oder Ein-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagation von Ein-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet wurde. In mindestens einer Ausführungsform kann jeder Abschnitt der Code- und/oder Datenspeicherung 701 in anderem On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 701 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen sein. In mindestens einer Ausführungsform können Code und/oder die Code- und/oder Datenspeicherung 701 Cache-Speicher, dynamisches RAM („DRAM“), statisches RAM („SRAM“), nichtflüchtiger Speicher (z.B. Flash-Speicher) oder andere Speicherung sein. In mindestens einer Ausführungsform kann die Wahl, ob Code und/oder die Code- und/oder Datenspeicherung 701 beispielsweise intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speicherungstyp umfasst, von auf dem Chip bzw. on-chip gegenüber nicht auf dem Chip bzw. off-chip verfügbarer Speicherung, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 715, ohne darauf beschränkt zu sein, eine Code- und/oder Datenspeicherung 705 umfassen zum Speichern von Rückwärts- und/oder Ausgangsgewichten und/oder Eingangs-/Ausgangsdaten, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das zur Inferenzierung in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In mindestens einer Ausführungsform speichert de Code- und /oder Datenspeicherung 705 Gewichtsparameter und/oder Eingangs-/Ausgangsdaten jeder Schicht eines neuronalen Netzwerks, die in Verbindung mit einer oder mehreren Ausführungsformen während einer Rückwärtspropagation von Eingangs-/Ausgangsdaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet werden. In mindestens einer Ausführungsform kann die Trainingslogik 715 die Code- und/oder Datenspeicherung 705 umfassen oder mit dieser gekoppelt sein, um Graphikcode oder andere Software zum Steuern des Timings und/oder der Reihenfolge zu speichern, in welchem bzw. welcher Gewichts- und/oder andere Parameterinformationen zum Konfigurieren von Logik einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (ALUs)) zu laden sind.
  • In mindestens einer Ausführungsform veranlasst ein Code, wie beispielsweise ein Graphikcode, basierend auf einer Architektur eines neuronalen Netzwerks, dem ein derartiger Code entspricht, das Laden von Gewichts- oder anderen Parameterinformationen in Prozessor-ALUs. In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 705 mit anderem On-Chip- oder Off-Chip-Datenspeicherung, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, verbunden sein. In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 705 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen sein. In mindestens einer Ausführungsform kann die Code- und/oder Datenspeicherung 705 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder eine andere Speicherung sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code- und/oder die Datenspeicherung 705 beispielsweise intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speicherungstyp umfasst, von On-Chip gegenüber Off-Chip verfügbarem Speicher, Latenzanforderungen an durchgeführten Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 701 und die Code- und/oder Datenspeicherung 705 getrennte Speicherungsstrukturen sein. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 701 und die Code- und/oder Datenspeicherung 705 eine kombinierte Speicherungsstruktur sein. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 701 und die Code- und/oder Datenspeicherung 705 teilweise kombiniert und teilweise getrennt sein. In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 701 und der Code- und/oder Datenspeicherung 705 mit anderen On-Chip- oder Off-Chip-Datenspeicherungen, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, kombiniert sein.
  • In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 715, ohne darauf beschränkt zu sein, eine oder mehrere arithmetische Logikeinheiten („ALU(s)“) 710, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, umfassen, um logische und/oder mathematische Operationen durchzuführen, die mindestens teilweise auf Trainings- und/oder Inferenzcode (beispielsweise Graphikcode) basieren oder durch diesen angezeigt werden, deren Ergebnis Aktivierungen (z.B. Ausgangswerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks), die in einer Aktivierungsspeicherung 720 gespeichert sind, erzeugen kann, die Funktionen von Eingangs-/Ausgangs- und/oder Gewichtsparameterdaten sind, die in der Code- und/oder Datenspeicherung 701 und/oder der Code- und/oder Datenspeicherung 705 gespeichert sind. In mindestens einer Ausführungsform werden in der Aktivierungsspeicherung 720 gespeicherte Aktivierungen in Übereinstimmung mit linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von den ALU(s) 710 im Ansprechen auf das Ausführen von Anweisungen oder anderem Code durchgeführt wird, wobei Gewichtswerte, die in der Code- und/oder Datenspeicherung 705 gespeichert sind, und/oder Datenspeicherung 701 als Operanden zusammen mit anderen Werten, wie beispielsweise Biaswerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von welchen beliebige oder alle in der Code- und/oder Datenspeicherung 705 oder dem Code und/oder der Code- und/oder Datenspeicherung 701 oder einer anderen Speicherung auf oder außerhalb des Chips gespeichert sein können.
  • In mindestens einer Ausführungsform ist bzw. sind die ALU(s) 710 in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen enthalten, während in einer anderen Ausführungsform die ALU(s) 710 extern zu einem Prozessor oder einer anderen Hardware-Logikvorrichtung oder Schaltung, die sie verwendet (z.B. einem Co-Prozessor), sein kann bzw. können. In mindestens einer Ausführungsform können ALUs 710 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs, auf welche die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlicher Art (z.B. Zentraleinheiten, Graphikverarbeitungseinheiten, Festfunktionseinheiten usw.) zugreifen können, aufgenommen sein. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 701, die Code- und/oder Datenspeicherung 705 und die Aktivierungsspeicherung 720 einen Prozessor oder eine anderen Hardware-Logikvorrichtung oder -schaltung gemeinsam nutzen, wohingegen sie in einer anderen Ausführungsform in unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen sein können. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt der Aktivierungsspeicherung 720 mit einer anderen On-Chip- oder Off-Chip-Datenspeicherung, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein. Ferner kann Inferenzierungs- und/oder Trainingscode mit anderem Code gespeichert sein, der einem Prozessor oder einer anderen Hardware-Logik oder -Schaltung zugänglich ist, und kann unter Verwendung der Hol-, Decodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In mindestens einer Ausführungsform kann die Aktivierungsspeicherung 720 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder andere Speicherung sein. In mindestens einer Ausführungsform kann die Aktivierungsspeicherung 720 ganz oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Aktivierungsspeicherung 720 beispielsweise intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einer anderen Speicherungstyp umfasst, von on-chip gegenüber off-chip verfügbarer Speicherung, Latenzanforderungen an die durchzuführenden Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der Daten, die bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die in 7A dargestellte Inferenzierungs- und/oder Trainingslogik 715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („ASIC“), wie beispielsweise der TensorFlow®-Verarbeitungseinheit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“)-Prozessor von Intel Corp. verwendet werden. In mindestens einer Ausführungsform, kann die in 7A dargestellte Inferenzierungs- und/oder Trainingslogik 715 in Verbindung mit Hardware der Zentralverarbeitungseinheit („CPU“), Hardware der Graphikverarbeitungseinheit („GPU“) oder anderer Hardware, wie beispielsweise feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 7B veranschaulicht die Inferenzierungs- und/oder Trainingslogik 715 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 715, ohne darauf beschränkt zu sein, Hardwarelogik umfassen, in welcher Rechenressourcen dediziert oder anderweitig exklusiv in Verbindung mit Gewichtswerten oder anderen Informationen, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen, verwendet werden. In mindestens einer Ausführungsform kann die in 7B dargestellte Inferenzierungs- und/oder Trainingslogik 715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC), wie beispielsweise der TensorFlow®-Verarbeitungseinheit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“)-Prozessor der Intel Corp. verwendet werden. In mindestens einer Ausführungsform kann die in 7B dargestellte Inferenzierungs- und/oder Trainingslogik 715 in Verbindung mit Hardware der Zentralverarbeitungseinheit (CPU), Hardware der Graphikverarbeitungseinheit (GPU) oder anderer Hardware, wie beispielsweise feldprogammierbaren Gate Arrays (FPGAs), verwendet werden. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 715, ohne darauf beschränkt zu sein, die Code- und/oder Datenspeicherung 701 und die Code- und/oder Datenspeicherung 705, die zum Speichern von Code (z.B. Graphikcode), Gewichtswerten und/oder anderen Informationen, einschließlich Biaswerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameter-Informationen, verwendet werden können. In mindestens einer Ausführungsform, die in 7B dargestellt ist, ist jede der Code- und/oder Datenspeicherung 701 und der Code- und/oder Datenspeicherung 705 jeweils einer dedizierten Rechenressource zugeordnet, wie beispielsweise der Rechenhardware 702 und Rechenhardware 706. In mindestens einer Ausführungsform umfasst die Rechenhardware 702 und die Rechenhardware 706 jeweils eine oder mehrere ALUs, die mathematischen Funktionen, wie beispielsweise lineare algebraische Funktionen, nur auf Informationen durchführen, die in der Code- und/oder Datenspeicherung 701 bzw. der Code- und/oder Datenspeicherung 705 gespeichert sind, deren Ergebnis in der Aktivierungsspeicherung 720 gespeichert wird.
  • In mindestens einer Ausführungsform entsprechen jeweils die Code- und/oder Datenspeicherung 701 und 705 und entsprechende Rechenhardware 702 und 706 jeweils verschiedenen Schichten eines neuronalen Netzwerks, so dass eine aus einem „Speicherung/Rechenpaar 701/702“ der Code- und/oder Datenspeicherung 701 und der Rechenhardware 702 resultierende Aktivierung als eine Eingabe in „ein nächstes „Speicher/Rechenpaar 705/706“ der Code- und/oder Datenspeicherung 705 und der Rechenhardware 706 bereitgestellt wird, um eine konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einer Ausführungsform kann jedes der Speicherung/Rechenpaare 701/702 und 705/706 mehr als einer neuronalen Netzwerkschicht entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicherungs-/Rechenpaare (nicht gezeigt) anschließend oder parallel zu den Speicherungs-/Rechenpaaren 701/702 und 705/706 in die Inferenzierungs- und/oder Trainingslogik 715 umfasst sein.
  • TRAINING UND EINSATZ NEURONALER NETZWERKE
  • 8 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzwerks gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein untrainiertes neuronales Netzwerk 806 unter Verwendung eines Trainingsdatensatzes 802 trainiert. In mindestens einer Ausführungsform ist das Trainingsframework 804 ein PyTorch-Framework, wohingegen in anderen Ausführungsformen das Trainingsframework 804 ein TensorFlow-, Boost-, Caffe-, Microsoft Cognitive Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearing4j- oder ein anderes Trainingsframework ist. In mindestens einer Ausführungsform trainiert das Trainingsframework 804 ein untrainiertes neuronales Netzwerk 806 und ermöglicht, das es Training unter Verwendung der hier beschriebenen Verarbeitungsressourcen trainiert wird, um ein trainiertes neuronales Netzwerk 808 zu erzeugen. In mindestens einer Ausführungsform können die Gewichte zufällig oder durch Vortraining mit einem Deep-Belief-Network ausgewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf in einer überwachten, teilweise überwachten oder nicht überwachten Art und Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 durch überwachtes Lernen trainiert, wobei der Trainingsdatensatz 802 eine Eingabe umfasst, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 802 eine Eingabe mit einer bekannten Ausgabe umfasst und eine Ausgabe des neuronalen Netzes 806 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 auf überwachte Art und Weise trainiert und verarbeitet Eingaben aus dem Trainingsdatensatz 802 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden die Fehler dann durch das untrainierte neuronale Netzwerk 806 zurückverfolgt. In mindestens einer Ausführungsform passt das Trainingsframework 804 die Gewichte an, die das untrainierte neuronale Netzwerk 806 steuern. In mindestens einer Ausführungsform umfasst das Trainingsframework 804 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netzwerk 806 zu einem Modell konvergiert, wie z. B. dem trainierten neuronalen Netzwerk 808, das geeignet ist, korrekte Antworten zu erzeugen, wie z. B. im Ergebnis 814, basierend auf Eingabedaten, wie beispielsweise einem neuen Datensatz 812. In mindestens einer Ausführungsform trainiert das Trainingsframework 804 das untrainierte neuronale Netzwerk 806 wiederholt, während er die Gewichte anpasst, um eine Ausgabe des untrainierten neuronalen Netzes 806 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie z. B. stochastischer Gradientenabstieg, zu verfeinern. In mindestens einer Ausführungsform trainiert das Trainingsframework 804 das untrainierte neuronale Netzwerk 806, bis das untrainierte neuronale Netzwerk 806 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netzwerk 808 dann eingesetzt werden, um eine beliebige Anzahl von maschinellen Lernoperationen zu implementieren.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 unter Verwendung von unüberwachtem Lernen trainiert, wobei das untrainierte neuronale Netzwerk 806 versucht, sich selbst unter Verwendung unmarkierter Daten zu trainieren. In mindestens einer Ausführungsform wird der Trainingsdatensatz 802 für unüberwachtes Lernen Eingabedaten ohne jegliche zugehörige Ausgabedaten oder „Ground-Truth-Daten“ umfassen. In mindestens einer Ausführungsform kann das untrainierte neuronale Netzwerk 806 Gruppierungen innerhalb des Trainingsdatensatzes 802 erlernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 802 zusammenhängen. In mindestens einer Ausführungsform kann das unüberwachte Training verwendet werden, um eine selbstorganisierende Karte im trainierten neuronalen Netzwerk 808 zu erzeugen, die in der Lage ist, Operationen durchzuführen, die bei der Reduzierung der Dimensionalität des neuen Datensatzes 812 nützlich sind. In mindestens einer Ausführungsform kann unüberwachtes Training ebenfalls zur Erkennung von Anomalien verwendet werden, was die Identifizierung von Datenpunkten in dem neuen Datensatz 812 ermöglicht, die von normalen Mustern des neuen Datensatzes 812 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, die eine Technik ist, bei welcher der Trainingsdatensatz 802 eine Mischung aus gekennzeichneten und nicht gekennzeichneten Daten umfasst. In mindestens einer Ausführungsform kann das Trainingsframework 804 verwendet werden, um inkrementelles Lernen z. B. durch Transferlerntechniken durchzuführen. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen dem trainierten neuronalen Netzwerk 808, sich an einen neuen Datensatz 812 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netzwerk 808 während des anfänglichen Trainings eingeflößt wurde.
  • Bezugnehmend auf 9 ist 9 ein beispielhaftes Datenflussdiagramm für einen Prozess 900 zum Erzeugen und Einsetzen einer Verarbeitungs- und Inferenzierungspipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 900 eingesetzt werden, um eine Spielnamenerkennungsanalyse und Inferenzierung auf Benutzer-Feedback-Daten in einer oder mehreren Einrichtungen 902, wie z. B. einem Datenzentrum, durchzuführen.
  • In mindestens einer Ausführungsform kann der Prozess 900 innerhalb eines Trainingssystems 904 und/oder eines Einsatzsystems 906 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 904 verwendet werden, um das Training, den Einsatz und die Ausführung von Modelle maschinellen Lernens (z. B. neuronale Netzwerke, Objekterkennungsalgorithmen, Computer-Vision-Algorithmen usw.) zur Verwendung im Einsatzsystem 906 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 906 konfiguriert sein, um Verarbeitungs- und Rechenressourcen in einer verteilten Computerumgebung auszulagern, um die Infrastrukturanforderungen in der Einrichtung 902 zu verringern. In mindestens einer Ausführungsform kann das Einsatzsystem 906 eine optimierte Plattform für die Auswahl, Anpassung und Implementierung von virtuellen Instrumenten zur Verwendung mit Vorrichtungen in der Einrichtung 902 bereitstellen. In mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zur Durchführung einer oder mehrerer Verarbeitungsoperationen in Bezug auf Feedback-Daten umfassen. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenzierung, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 906 während der Ausführung von Anwendungen benutzen oder aufrufen.
  • In mindestens einer Ausführungsform können einige der in erweiterten Verarbeitungs- und Inferenzierungspipelines verwendeten Anwendungen Modelle maschinellen Lernens oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einer Ausführungsform können Modelle maschinellen Lernens in der Einrichtung 902 unter Verwendung von in der Einrichtung 902 gespeicherten Feedback-Daten 908 (wie z. B. Feedback-Daten) oder von Feedback-Daten 908 aus einer anderen Einrichtung oder anderen Einrichtungen oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 904 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zur Erzeugung funktionierender, einsatzfähiger Modelle maschinellen Lernens für das Einsatzsystem 906 bereitzustellen.
  • In mindestens einer Ausführungsform kann ein Modellregister 924 durch einen Objektspeicher unterstützt werden, der die Versionskontrolle und Objektmetadaten unterstützen kann. In mindestens einer Ausführungsform kann auf den Objektspeicher beispielsweise über eine kompatible Anwendungsprogrammierschnittstelle (API) innerhalb einer Cloud-Plattform zugegriffen werden (z. B. eine Cloud 1026 von 10). In mindestens einer Ausführungsform können Modelle maschinellen Lernens im Modellregister 924 von Entwicklern oder Partnern eines Systems, das mit einer API wechselwirkt, hochgeladen, aufgelistet, modifiziert oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugang zu Verfahren bieten, die es Nutzern mit geeigneten Anmeldeinformationen ermöglichen, Modelle Anwendungen zuzuordnen, so dass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einer Ausführungsform kann eine Trainingspipeline 1004 (10) ein Szenario umfassen, bei dem die Einrichtung 902 ihr eigenes Modell maschinellen Lernens trainiert oder ein bestehendes Modell maschinellen Lernens aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Feedback-Daten 908 von verschiedenen Kanälen, wie Foren, Webformularen oder ähnlichem, empfangen werden. In mindestens einer Ausführungsform kann, sobald die Feedback-Daten 908 empfangen wurden, die KI-gestützte Annotation 910 verwendet werden, um die Erzeugung von Annotationen zu unterstützen, die den Feedback-Daten 908 entsprechen und als Ground-Truth-Daten für ein Modell maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 910 ein oder mehrere Modelle maschinellen Lernens (z. B. neuronale Faltungsnetzwerke (CNNs)) umfassen, die trainiert werden können, um Annotationen zu erzeugen, die bestimmten Typen von Feedback-Daten 908 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Feedback-Daten 908 entsprechen. In mindestens einer Ausführungsform können die KIunterstützten Annotationen 910 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs angepasst oder fein abgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen gekennzeichnete Daten 912 als Ground-Truth-Daten für das Training eines Modells maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können KIunterstützte Annotationen 910, gekennzeichnete Daten 912 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes Modell maschinellen Lernens als Ausgabemodell 916 bezeichnet werden und kann von dem Einsatzsystem 906, wie hier beschrieben, verwendet werden.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 1004 (10) ein Szenario umfassen, bei dem die Einrichtung 902 ein Modell maschinellen Lernens zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im dem Einsatzsystem 906 benötigt, wobei die Einrichtung 902 aktuell jedoch kein derartiges Modell maschinellen Lernens aufweist (oder nicht über ein Modell, das für diese Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein vorhandenes Modell maschinellen Lernens aus dem Modellregister 924 ausgewählt werden. In mindestens einer Ausführungsform kann das Modellregister 924 Modelle maschinellen Lernens umfassen, die für die Durchführung einer Vielfalt unterschiedlicher Inferenzierungsaufgaben aus Bilddaten trainiert wurden. In mindestens einer Ausführungsform können die Modelle maschinellen Lernens im Modellregister 924 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 902 (z. B. entfernt lokalisierte Einrichtungen) trainiert worden sein. In mindestens einer Ausführungsform können die Modelle maschinellen Lernens an Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einer Ausführungsform kann das Training mit Bildgebungsdaten eines bestimmten Orts an diesem Ort oder mindestens in eine Art und Weise erfolgen, die die Vertraulichkeit der Bildgebungsdaten schützt oder die Übertragung von Bildgebungsdaten außerhalb des Orts einschränkt (z. B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzbestimmungen usw.). In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Ort trainiert - oder teilweise trainiert - wurde, zum Modellregister 924 hinzugefügt werden. In mindestens einer Ausführungsform kann ein Modell maschinellen Lernens dann an einer beliebigen Anzahl anderer Einrichtungen neu trainiert oder aktualisiert werden, und ein neu trainiertes oder aktualisiertes Modell kann in dem Modellregister 924 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein Modell maschinellen Lernens aus der Modellregister 924 ausgewählt - und als Ausgabemodell 916 bezeichnet - und im Einsatzsystem 906 verwendet werden, um eine oder mehrere Verarbeitungsaufgaben für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 1004 (10) in einem Szenario verwendet werden, bei dem die Einrichtung 902 ein Modell maschinellen Lernens zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 906 benötigt, wobei die Einrichtung 902 aktuell jedoch kein derartiges Modell maschinellen Lernens (oder ein Modell, das für derartige Zwecke optimiert, effizient oder effektiv ist) aufweisen kann. In mindestens einer Ausführungsform könnte ein Modell maschinellen Lernens, das aus dem Modellregister 924 ausgewählt wird, für bei der Einrichtung erzeugten Feedback-Daten aufgrund von Unterschieden in den Populationen, genetischen Variationen, der Robustheit von Trainingsdaten, die zum Trainieren eines Modells maschinellen Lernens verwendet werden, der Diversität von Anomalien in den Trainingsdaten und/oder anderen Problemen mit den Trainingsdaten für die in der Einrichtung 902 erzeugten Feedback-Daten 908 nicht fein abgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KIunterstützte Annotation 910 verwendet werden, um bei der Erzeugung von Annotationen zu helfen, die den Feedback-Daten 908 entsprechen, die als Ground-Truth-Daten für das Neutrainieren oder Aktualisieren eines Modells maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können gekennzeichnete Daten 912 als Ground-Truth-Daten für das Training eines Modells maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann das Neutrainieren oder Aktualisieren eines Modells maschinellen Lernens als Modelltraining 914 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 914 - z. B. KI-gestützte Annotationen 910, gekennzeichnete Daten 912 oder eine Kombination davon - als Ground-Truth-Daten für das Neutrainieren oder Aktualisieren eines Modells maschinellen Lernens verwendet werden.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 906 Software 918, Dienste 920, Hardware 922 und/oder andere Komponenten, Merkmale und Funktionalität umfassen. In mindestens einer Ausführungsform kann das Einsatzsystem 906 einen Software-„Stapel“ umfassen, so dass die Software 918 auf den Diensten 920 aufgebaut sein kann und die Dienste 920 zur Ausführung einiger oder aller Verarbeitungsaufgaben verwenden kann, und die Dienste 920 und die Software 918 können auf der Hardware 922 aufgebaut sein und die Hardware 922 zur Ausführung von Verarbeitungs-, Speicher- und/oder anderen Berechnungsaufgaben des Einsatzsystems 906 verwenden.
  • In mindestens einer Ausführungsform kann die Software 918 eine beliebige Anzahl unterschiedlicher Container umfassen, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung eine oder mehrere Verarbeitungsaufgaben in einer erweiterten Verarbeitungs- und Inferenzierungspipeline durchführen (z. B. Inferenzierung, Objekterkennung, Merkmalserkennung, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann es für jeden Typ von Rechenvorrichtung eine beliebige Anzahl von Containern geben, die eine Datenverarbeitungsaufgabe in Bezug auf die Feedback-Daten 908 (oder anderen Datentypen, wie die beispielsweise jene, die hier beschrieben sind) durchführen können. In mindestens einer Ausführungsform kann eine erweiterte Verarbeitungs- und Inferenzierungspipeline basierend auf der Auswahl unterschiedlicher Container definiert werden, die für die Verarbeitung von Feedback-Daten 908 erwünscht oder erforderlich sind, zusätzlich zu Containern, die Bilddaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 902 nach der Verarbeitung durch eine Pipeline empfangen und konfigurieren (z. B. um Ausgaben zurück in einen verwendbaren Datentyp zur Speicherung und Anzeige in der Einrichtung 902 umzuwandeln). In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 918 (die z. B. eine Pipeline bilden) als ein virtuelles Instrument bezeichnet werden (wie hier ausführlicher beschrieben), und ein virtuelles Instrument kann Dienste 920 und Hardware 922 nutzen, um einige oder alle Verarbeitungsaufgaben von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann eine Nachverarbeitung an einer Ausgabe einer oder mehrerer Inferenzierungsaufgaben oder anderer Verarbeitungsaufgaben einer Pipeline vorgenommen werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder um Ausgabedaten für die Übertragung und/oder die Verwendung durch einen Benutzer vorzubereiten (z. B. als Antwort auf eine Inferenzierungsanforderung). In mindestens einer Ausführungsform können Inferenzierungsaufgaben von einem oder mehreren Modelle maschinellen Lernens durchgeführt werden, wie z. B. von trainierten oder eingesetzten neuronalen Netzwerken, die Ausgabemodelle 916 des Trainingssystems 904 umfassen können.
  • In mindestens einer Ausführungsform können Aufgaben der Datenverarbeitungspipeline in einem oder mehreren Containern gekapselt werden, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die in der Lage ist, Modelle maschinellen Lernens zu referenzieren. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugangsbeschränkten) Bereich eines Containerregisters (hier ausführlicher beschrieben) veröffentlicht werden, und trainierte oder eingesetzte Modelle können in der Modellregister 924 gespeichert und mit einer oder mehreren Anwendungen verknüpft werden. In mindestens einer Ausführungsform können Bilder von Anwendungen (z. B. Containerbilder) in einem Containerregister verfügbar sein, und sobald sie von einem Benutzer aus einem Containerregister für den Einsatz in einer Pipeline ausgewählt wurden, kann ein Bild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • In mindestens einer Ausführungsform können Entwickler Anwendungen (z. B. als Container) zum Durchführen einer Verarbeitung und/oder Inferenzierung an gelieferten Daten entwickeln, veröffentlichen und speichern. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Softwareentwicklungskits (SDK) erfolgen, das mit einem System verbunden ist (z. B. um sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine entwickelte Anwendung lokal (z. B. in einer ersten Einrichtung, mit Daten aus einer ersten Einrichtung) mit einem SDK geprüft werden, das mindestens einige der Dienste 920 als System unterstützen kann (z. B. das System 1000 von 10). In mindestens einer Ausführungsform kann eine Anwendung, nachdem sie von dem System 1000 validiert wurde (z. B. auf Genauigkeit usw.), in einem Containerregister zur Auswahl und/oder Ausführung durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um eine oder mehrere Verarbeitungsaufgaben in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container über ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. dem System 1000 von 10) freigeben. In mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einem Containerregister gespeichert werden und zugehörige Modelle maschinellen Lernens im Modellregister 924 gespeichert werden. In mindestens einer Ausführungsform kann eine anfragende Entität - die eine Inferenzierungs- oder Bildverarbeitungsanforderung stellt - ein Containerregister und/oder Modellregister 924 nach einer Anwendung, einem Container, einem Datensatz, einem maschinellen Lernmodell usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Verarbeitungsanforderung übermitteln. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten umfassen, die zur Durchführung einer Anforderung erforderlich sind, und/oder kann eine Auswahl von Anwendungen und/oder Modelle maschinellen Lernens umfassen, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 906 (z. B. eine Cloud) weitergeleitet werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 906 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einem Containerregister und/oder Modellregister 924 umfassen. In mindestens einer Ausführungsform können die Ergebnisse, sobald sie von einer Pipeline erzeugt werden, an einen Benutzer als Referenz zurückgegeben werden (z. B. zur Anzeige in einer Anzeigeanwendungssuite, die auf einer lokalen Workstation oder einem Terminal vor Ort ausgeführt wird).
  • In mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines Dienste 920 genutzt werden. In mindestens einer Ausführungsform können die Dienste 920 Rechendienste, kollaborative Inhaltserzeugungsdienste, Dienste für künstliche Intelligenz (KI), Visualisierungsdienste und/oder andere Diensttypen umfassen. In mindestens einer Ausführungsform können die Dienste 920 Funktionalität bereitstellen, die einer oder mehreren Anwendungen in der Software 918 gemeinsam sind, so dass die Funktionalität zu einem Dienst abstrahiert werden kann, der von Anwendungen aufgerufen oder genutzt werden kann. In mindestens einer Ausführungsform kann die von den Diensten 920 bereitgestellte Funktionalität dynamisch und effizienter ausgeführt werden, während sie ebenfalls gut skaliert, indem sie Anwendungen die parallele Verarbeitung von Daten ermöglicht (z. B. unter Verwendung einer parallelen Rechenplattform 1030 (10)). In mindestens einer Ausführungsform muss nicht jede Anwendung, die dieselbe von einem Dienst 920 angebotene Funktionalität nutzt, über eine entsprechende Instanz des Dienstes 920 verfügen, sondern der Dienst 920 kann von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzierungs-Server oder eine Inferenzierungs-Engine umfassen, der/die zur Ausführung von Erkennungs- oder Segmentierungsaufgaben als nicht einschränkende Beispiele verwendet werden können. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst umfasst sein, der Trainings- und/oder Neutrainingsfähigkeiten für Modelle maschinellen Lernens bereitstellt.
  • In mindestens einer Ausführungsform, in der ein Dienst 920 einen KI-Dienst (z.B. einen Inferenzierungsdienst) umfasst, können ein oder mehrere Modelle maschinellen Lernens, die mit einer Anwendung zur Erkennung von Anomalien (z. B. Tumoren, Wachstumsanomalien, Narbenbildung usw.) verbunden sind, ausgeführt werden, indem ein Inferenzierungsdienst (z. B. ein Inferenzierungsserver) aufgerufen wird (z. B. als API-Aufruf), um ein oder mehrere Modelle maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung durchzuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle maschinellen Lernens für Segmentierungsaufgaben umfasst, kann eine Anwendung einen Inferenzierungsdienst aufrufen, um Modelle maschinellen Lernens auszuführen, um eine oder mehrere der mit Segmentierungsaufgaben verbundenen Verarbeitungsoperationen durchzuführen. In mindestens einer Ausführungsform kann die Software 918, die eine fortschrittliche Verarbeitungs- und Inferenzierungspipeline implementiert, rationalisiert werden, da jede Anwendung denselben Inferenzierungsdienst zur Durchführung einer oder mehrerer Inferenzierungsaufgaben aufrufen kann.
  • In mindestens einer Ausführungsform kann die Hardware 922 GPUs, CPUs, Graphikkarten, ein KI/Deep-Learning-System (z. B. einen KI-Supercomputer, wie beispielsweise das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon umfassen. In mindestens einer Ausführungsform können verschiedene Typen von Hardware 922 verwendet werden, um eine effiziente, zweckmäßige Unterstützung für Software 918 und Dienste 920 im Einsatzsystem 906 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die lokale Verarbeitung vor Ort (z. B. in der Einrichtung 902), innerhalb eines Kr-/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 906 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit der Spielnamenerkennung zu verbessern.
  • In mindestens einer Ausführungsform können die Software 918 und/oder die Dienste 920 für die GPU-Verarbeitung im Hinblick auf Deep Learning, maschinellem Lernen und/oder Hochleistungsrechnen optimiert sein, als nicht einschränkende Beispiele. In mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 906 und/oder des Trainingssystems 904 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Hochleistungsrechnern mit GPU-optimierter Software (z. B. Hardware- und Softwarekombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform kann die Hardware 922 eine beliebige Anzahl von GPUs umfassen, die zur parallelen Verarbeitung von Daten, wie hier beschrieben, aufgerufen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform ferner eine GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Aufgaben, maschinellen Lernaufgaben oder anderen Rechenaufgaben umfassen. In mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NVIDIAs NGC) unter Verwendung eines oder mehreren KI/Deep-Learning-Supercomputerm und/oder GPU-optimierter Software (z. B. wie auf NVIDIAs DGX-Systemen bereitgestellt) als Hardware-Abstraktions- und Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder ein Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • 10 ist ein Systemdiagramm für ein beispielhaftes System 1000 zum Erzeugen und Einsetzen einer Einsatzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 1000 verwendet werden, um den Prozess 900 von 9 und/oder andere Prozesse einschließlich erweiterter Verarbeitungs- und Inferenzierungspipelines zu implementieren. In mindestens einer Ausführungsform kann das System 1000 das Trainingssystem 904 und das Einsatzsystem 906 umfassen. In mindestens einer Ausführungsform können das Trainingssystem 904 und das Einsatzsystem 906 unter Verwendung von Software 918, Diensten 920 und/oder Hardware 922 implementiert werden, wie hier beschrieben.
  • In mindestens einer Ausführungsform kann das System 1000 (z. B. das Trainingssystem 904 und/oder das Einsatzsystem 3006) in einer Cloud-Computing-Umgebung implementiert werden (z. B. unter Verwendung der Cloud 1026). In mindestens einer Ausführungsform kann das System 1000 lokal in Bezug auf eine Einrichtung oder als eine Kombination aus Cloud- und lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform kann der Zugriff auf APIs in der Cloud 1026 durch festgelegte Sicherheitsmaßnahmen oder - protokolle auf autorisierte Benutzer beschränkt werden. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token umfassen, die von einem Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert werden und eine entsprechende Autorisierung umfassen können. In mindestens einer Ausführungsform können APIs virtueller Instrumente (wie hier beschrieben) oder andere Instanzen des Systems 1000 auf eine Reihe öffentlicher IPs beschränkt werden, die für die Wechselwirkung überprüft oder autorisiert wurden.
  • In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 1000 unter Verwendung einer Vielzahl unterschiedlicher Netzwerktypen, einschließlich, jedoch nicht beschränkt auf lokale Netzwerke (LANs) und/oder Weitverkehrsnetzwerke (WANs), über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 1000 (z. B. zum Übertragen von Inferenzierungsanforderungen, zum Empfangen von Ergebnissen von Inferenzierungsanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. erfolgen.
  • In mindestens einer Ausführungsform kann das Trainingssystem 904 Trainingspipelines 1004 ähnlich denen ausführen, die hier in Bezug auf 9 beschrieben sind. In mindestens einer Ausführungsform, wobei ein oder mehrere Modelle maschinellen Lernens in Einsatzpipelinedaten 1010 durch das Einsatzsystem 906 verwendet werden sollen, können die Trainingspipelines 1004 verwendet werden, um ein oder mehrere (z. B. vortrainierte) Modelle zu trainieren oder neu zu trainieren und/oder ein oder mehrere vortrainierte Modelle 1006 zu implementieren (z. B. ohne die Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 1004 Ausgabemodell(e) 916 erzeugt werden. In mindestens einer Ausführungsform können die Trainingspipelines 1004 eine beliebige Anzahl von Verarbeitungsschritten, KI-gestützte Annotation 910, Kennzeichnung oder Annotation von Feedback-Daten 908 zur Erzeugung von gekennzeichneten Daten 912, Modellauswahl aus einem Modellregister, Modelltraining 914, Training, Neutraining oder Aktualisierung von Modellen und/oder andere Verarbeitungsschritte umfassen. In mindestens einer Ausführungsform können für verschiedene Modelle maschinellen Lernens, die von dem Einsatzsystem 906 verwendet werden, verschiedene Trainingspipelines 1004 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes Modell maschinellen Lernens eine Trainingspipeline 1004 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 9 beschrieben ist, für ein zweites Modell maschinellen Lernens kann eine Trainingspipeline 1004 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 9 beschrieben ist, und für ein drittes Modell maschinellen Lernens kann eine Trainingspipeline 1004 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 9 beschrieben ist. In mindestens einer Ausführungsform kann eine beliebige Kombination von Aufgaben innerhalb des Trainingssystems 904 abhängig davon verwendet werden, was für jedes jeweilige maschinelle Lernmodell erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der Modelle maschinellen Lernens bereits trainiert und einsatzbereit sein, so dass die Modelle maschinellen Lernens keiner Verarbeitung durch das Trainingssystem 904 unterzogen und vom Einsatzsystem 906 implementiert werden können.
  • In mindestens einer Ausführungsform können das (die) Ausgabemodell(e) 916 und/oder das (die) vortrainierte(n) Modell(e) 1006 alle Arten von Modellen maschinellen Lernens abhängig von der Ausführungsform oder Ausführungsart umfassen. In mindestens einer Ausführungsform und ohne Einschränkung können die Modelle maschinellen Lernens, die von dem System 1000 verwendet werden, Modelle maschinellen Lernens unter Verwendung von linearer Regression, logistischer Regression, Entscheidungsbäumen, Support-Vektor-Maschinen (SVM), Naive Bayes, k-nearest neighbor (Knn), K-Mittel-Clustering, Random Forest, Dimensionalitätsreduktionsalgorithmen, Gradient-Boosting-Algorithmen, neuronalen Netzwerken (z. B., Autocodierer, Faltungsalgorithmen, rekurrente Algorithmen, Perzeptronen, Long/Short Term Memory (LSTM), Bi-LSTM, Hopfield, Boltzmann, Deep Belief, Deconvolutional, Generative Adversarial, Liquid State Machine usw.) und/oder andere Arten von Modellen maschinellen Lernens umfassen.
  • In mindestens einer Ausführungsform können die Trainingspipelines 1004 eine KI-gestützte Annotation umfassen. In mindestens einer Ausführungsform können gekennzeichnete Daten 912 (z. B. herkömmliche Annotationen) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Kennzeichnungen oder andere Annotationen in einem Zeichenprogramm (z. B. einem Annotationsprogramm), einem CAD-Programm (Computer Aided Design), einem Kennzeichnungsprogramm oder einer anderen Art von Programm erzeugt werden, das zur Erzeugung von Annotationen oder Kennzeichnungen für die Ground Truth geeignet ist, und/oder in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch erzeugt werden (z. B. aus Computermodellen oder Renderings), real erzeugt werden (z. B. aus realen Daten entworfen und erzeugt werden), maschinell automatisiert werden (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Kennzeichnungen zu erzeugen), von Menschen gekennzeichnet werden (z. B. legt ein Kennzeichnungsexperte die Position der Kennzeichnungen fest) und/oder eine Kombination davon. In mindestens einer Ausführungsform kann es für jede Instanz von Feedback-Daten 908 (oder anderen Datentypen, die von Modellen maschinellen Lernens verwendet werden) entsprechende Ground-Truth-Daten geben, die von dem Trainingssystem 904 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Daten 1010 der Einsatzpipelines durchgeführt werden; entweder zusätzlich zu oder anstelle der KI-gestützten Annotation, die in den Trainingspipelines 1004 umfasst ist. In mindestens einer Ausführungsform kann das System 1000 eine mehrschichtige Plattform umfassen, die eine Softwareschicht (z. B. Software 918) von Diagnoseanwendungen (oder anderen Anwendungstypen) umfassen kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen ausführen können.
  • In mindestens einer Ausführungsform kann eine Softwareschicht als sichere, verschlüsselte und/oder authentifizierte API implementiert werden, durch die Anwendungen oder Container aus einer externen Umgebung(en) (z. B. Einrichtung 902) aufgerufen werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 920 zur Durchführung von Rechen-, KI- oder Visualisierungsaufgaben aufrufen oder ausführen, die den jeweiligen Anwendungen zugeordnet sind, und die Software 918 und/oder die Dienste 920 können die Hardware 922 wirksam einsetzen, um Verarbeitungsaufgaben auf effektive und effiziente Art und Weise durchzuführen.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 906 Einsatzpipelines 1010 ausführen. In mindestens einer Ausführungsform können Einsatzpipelines 1010 eine beliebige Anzahl von Anwendungen umfassen, die sequenziell, nicht sequenziell oder anderweitig auf Feedback-Daten (und/oder andere Datentypen) angewendet werden können - einschließlich KI-gestützter Annotation, wie oben beschrieben. In mindestens einer Ausführungsform können, wie hier beschrieben, eine Einsatzpipeline 1010 für eine einzelne Vorrichtung als ein virtuelles Instrument für eine Vorrichtung bezeichnet werden. In mindestens einer Ausführungsform kann es für eine einzelne Vorrichtung mehr als eine Einsatzpipeline 1010 abhängig davon geben, welche Informationen aus den von einer Vorrichtung erzeugten Daten gewünscht werden.
  • In mindestens einer Ausführungsform können Anwendungen, die für Einsatzpipelines 1010 verfügbar sind, jede Anwendung umfassen, die für die Durchführung von Verarbeitungsaufgaben an Feedback-Daten oder anderen Daten von Vorrichtungen verwendet werden kann. Weil in mindestens einer Ausführungsform verschiedene Anwendungen gemeinsame Bildoperationen durchführen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 920) zur Beschleunigung dieser Operationen verwendet werden. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen bei herkömmlichen Verarbeitungsansätzen, die sich auf die CPU-Verarbeitung stützen, die parallele Rechenplattform 1030 zur GPU-Beschleunigung dieser Verarbeitungsaufgaben verwendet werden.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 906 eine Benutzerschnittstelle 1014 (z. B. eine graphische Benutzerschnittstelle, eine Webschnittstelle usw.) umfassen, die verwendet werden kann, um Anwendungen zur Aufnahme in die Einsatzpipeline(s) 1010 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipeline(s) während der Einrichtung und/oder des Einsatzes zu verwenden und mit ihnen wechselzuwirken, und/oder anderweitig mit dem Einsatzsystem 906 wechselzuwirken. In mindestens einer Ausführungsform können, obwohl in Bezug auf das Trainingssystem 904 nicht dargestellt, die Benutzerschnittstelle 1014 (oder eine andere Benutzerschnittstelle) zur Auswahl von Modellen zur Verwendung in dem Einsatzsystem 906, zur Auswahl von Modellen zum Training oder zur Neutraining im Trainingssystem 904 und/oder zur anderweitigen Wechselwirkung mit dem Trainingssystem 904 verwendet werden.
  • In mindestens einer Ausführungsform kann der Pipelineverwalter-Daten 1012 zusätzlich zu einem Anwendungs-Orchestrierungssystem 1028 verwendet werden, um die Wechselwirkung zwischen Anwendungen oder Containern von Einsatzpipeline(s) 1010 und Diensten 920 und/oder Hardware 922 zu verwalten. In mindestens einer Ausführungsform kann der Pipelineverwalter 1012 konfiguriert sein, um Wechselwirkungen von Anwendung-zu-Anwendung, zwischen den Anwendungen und dem Dienst 920 und/oder von Anwendung oder Dienst und zu der Hardware 922 erleichtern. In mindestens einer Ausführungsform sind, obwohl veranschaulicht als in der Software 918 enthalten, ist dies nicht als Einschränkung bestimmt, und in einigen Beispielen kann der Pipelineverwalter 1012 in den Diensten 920 enthalten sein. In mindestens einer Ausführungsform kann das Anwendungs-Orchestrierungssystem 1028 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem umfassen, das Anwendungen in Containern als logische Einheiten für die Koordination, Verwaltung, Skalierung und Bereitstellung gruppieren kann. In mindestens einer Ausführungsform kann durch die Zuordnung von Anwendungen von der(den) Einsatzpipeline(s) 1010 (z. B. eine Rekonstruktionsanwendung, eine Segmentierungsanwendung usw.) zu einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Ebene) ausgeführt werden, um Geschwindigkeit und Effizienz zu erhöhen.
  • In mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Bild davon) einzeln entwickelt, modifiziert und eingesetzt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und einsetzen, und ein zweiter Benutzer oder Entwickler kann eine zweite Anwendung getrennt von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was die Konzentration auf und die Aufmerksamkeit für eine Aufgabe einer einzelnen Anwendung und/oder eines einzelnen oder mehreren Containern ermöglichen kann, ohne durch Aufgaben einer oder mehreren anderen Anwendungen oder Containern behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Zusammenarbeit zwischen verschiedenen Containern oder Anwendungen durch den Pipelineverwalter 1012 und das Anwendungs-Orchestrierungssystem 1028 unterstützt werden. In mindestens einer Ausführungsform können, solange wie eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung durch ein System bekannt ist (z. B. basierend auf Konstrukten von Anwendungen oder Containern), können das Anwendungs-Orchestrierungssystem 1028 und/oder die Pipelineverwalter-Daten 1012 die Kommunikation unter und zwischen den einzelnen Anwendungen oder Containern und die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 1028, weil eine oder mehrere Anwendungen oder Container in den Daten der Einsatzpipeline(s) 1010 dieselben Dienste und Ressourcen gemeinsam nutzen können, die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, ausgleichen und bestimmen. In mindestens einer Ausführungsform kann ein Planer verwendet werden, um die Ressourcenanforderungen von Anwendungen oder Containern, die aktuelle oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein Planer auf diese Weise verschiedenen Anwendungen Ressourcen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf die Anforderungen und die Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein Planer (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 1028) die Ressourcenverfügbarkeit und -verteilung basierend auf Einschränkungen, die einem System auferlegt werden (z. B. Benutzereinschränkungen), wie z. B. Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (z. B. um zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw. bestimmen.
  • In mindestens einer Ausführungsform können die Dienste 920, die von Anwendungen oder Containern im Einsatzsystem 906 wirksam eingesetzt und gemeinsam verwendet werden, Rechendienste 1016, kollaborative Inhaltserzeugungsdienste 1017, KI-Dienste 1018, Simulationsdienste 1019, Visualisierungsdienste 1020 und/oder andere Diensttypen umfassen. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 920 aufrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung durchzuführen. In mindestens einer Ausführungsform können die Daten der Rechendienste 1016 von Anwendungen genutzt werden, um Supercomputing- oder andere High-Performance-Computing-Aufgaben (HPC) auszuführen. In mindestens einer Ausführungsform können der oder mehrere Rechendienste 1016 wirksam eingesetzt werden, um eine parallele Verarbeitung durchzuführen (z. B. unter Verwendung einer parallelen Rechenplattform 1030), um Daten durch eine oder mehrere Anwendungen und/oder eine oder mehrere Aufgaben einer einzelnen Anwendung im Wesentlichen gleichzeitig zu verarbeiten. In mindestens einer Ausführungsform kann die parallele Datenverarbeitungsplattform 1030 (z. B. NVIDIAs CUDA) Allzweck-Computing auf GPUs (z. B. GPUs 1022) ermöglichen. In mindestens einer Ausführungsform kann eine Softwareschicht der parallelen Rechenplattform 1030 Zugriff auf virtuelle Befehlssätze und parallele Rechenelemente von GPUs für die Ausführung von Rechenkernen bieten. In mindestens einer Ausführungsform kann die parallele Rechenplattform 1030 Speicher umfassen, und in einigen Ausführungsformen kann ein Speicher zwischen mehreren Containern und/oder zwischen verschiedenen Verarbeitungsaufgaben innerhalb eines einzelnen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können Inter-Process Communication (IPC) Aufrufe für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um dieselben Daten aus einem gemeinsam genutzten Speichersegment der parallelen Rechnerplattform 1030 zu verwenden (z. B., wenn mehrere verschiedene Stufen einer Anwendung oder mehrere Anwendungen dieselben Informationen verarbeiten). In mindestens einer Ausführungsform können dieselben Daten an derselben Stelle eines Speichers für eine beliebige Anzahl von Verarbeitungsaufgaben verwendet werden (z. B. zur selben Zeit, zu verschiedenen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an verschiedene Stellen im Speicher zu verschieben (z. B. eine Lese-/Schreiboperation). In mindestens einer Ausführungsform können, da Daten zur Erzeugung neuer Daten als Ergebnis der Verarbeitung verwendet werden, diese Informationen über einen neuen Ort der Daten gespeichert und zwischen verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können der Ort der Daten und ein Ort von aktualisierten oder modifizierten Daten Teil einer Definition sein, wie eine Nutzlast innerhalb von Containern zu verstehen ist.
  • In mindestens einer Ausführungsform können KI-Dienste 1018 wirksam eingesetzt werden, um Inferenzierungsdienste für die Ausführung von einem oder mehreren Modellen maschinellen Lernens durchzuführen, die mit Anwendungen verbunden sind (z. B. mit der Aufgabe beauftragt, eine oder mehrere Verarbeitungsaufgaben einer Anwendung durchzuführen). In mindestens einer Ausführungsform können die KI-Dienste 1018 das KI-System 1024 wirksam einsetzen, um Modelle maschinellen Lernens (z. B. neuronale Netzwerke wie CNNs) für Segmentierung, Rekonstruktion, Objekterkennung, Merkmalserkennung, Klassifizierung und/oder andere Inferenzierungsaufgaben auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 1010 eines oder mehrere der Ausgabemodelle 916 aus dem Trainingssystem 904 und/oder andere Modelle von Anwendungen verwenden, um eine Inferenzierung an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konforme Daten, RPC-Daten, Rohdaten usw.) durchzuführen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für die Inferenzierung unter Verwendung des Anwendungsorchestrierungssystems 1028 (z. B. ein Planer) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz umfassen, der höhere Dienstgütevereinbarungen erreichen kann, wie z.B. für die Durchführung von Inferenzierungen bei dringenden Anfragen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität umfassen, der für Anfragen verwendet werden kann, die nicht dringlich sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 1028 Ressourcen (z. B. Dienste 920 und/oder Hardware 922) basierend auf Prioritätspfaden für verschiedene Inferenzierungsaufgaben von KI-Diensten 1018 verteilen.
  • In mindestens einer Ausführungsform kann ein gemeinsam genutzter Speicher für die KI-Dienste 1018 im System 1000 angebracht werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher als Cache (oder eine andere Art von Speichervorrichtung) fungieren und zur Verarbeitung von Inferenzierungsanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann bei der Übermittlung einer Inferenzierungsanforderung eine Anforderung von einer Reihe von API-Instanzen des Einsatzsystems 906 empfangen werden, und eine oder mehrere Instanzen können ausgewählt werden (z. B. für die beste Anpassung, für den Lastausgleich usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zur Bearbeitung einer Anfrage eine Anfrage in eine Datenbank eingegeben werden, ein Modell maschinellen Lernens kann aus der Modellregister 924 gefunden werden, wenn es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein geeignetes Modell maschinellen Lernens in einen Cache (z. B. einen gemeinsamen Speicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gespeichert werden. In mindestens einer Ausführungsform kann ein Planer (z. B. von dem Pipelineverwalter 1012) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, wenn eine Anwendung nicht bereits läuft oder wenn nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzierungsserver gestartet werden, wenn er noch nicht gestartet ist, um ein Modell auszuführen. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Inferenzierungsserver pro Modell gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, bei dem die Inferenzierungsserver geclustert sind, die Modelle zwischengespeichert werden, wenn ein Lastausgleich vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzierungsserver statisch in entsprechende verteilte Server geladen werden.
  • In mindestens einer Ausführungsform kann die Inferenzierungsbildung mit Hilfe eines Inferenzierungsservers durchgeführt werden, der in einem Container läuft. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzierungsservers mit einem Modell (und optional mehreren Versionen eines Modells) verbunden sein. In mindestens einer Ausführungsform kann eine neue Instanz eines Inferenzierungsservers geladen werden, wenn eine Anforderung zur Durchführung einer Inferenzierung an einem Modell nicht vorhanden ist. In mindestens einer Ausführungsform kann beim Starten eines Inferenzierungsservers ein Modell an einen Inferenzierungsserver übergeben werden, so dass ein und derselbe Container verwendet werden kann, um verschiedenen Modellen zu dienen, solange der Inferenzierungsserver als eine andere Instanz läuft.
  • In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzierungsanforderung für eine bestimmte Anwendung empfangen werden, ein Container (z. B. mit einer Instanz eines Inferenzierungsservers) kann geladen werden (falls noch nicht geschehen) und eine Startprozedur kann aufgerufen werden. In mindestens einer Ausführungsform kann die Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder eine zusätzliche Vorverarbeitung durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenzierung vorbereitet sind, die Inferenzierung wie erforderlich an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzigen Inferenzierungsaufruf für ein Bild (z. B. ein Handröntgenbild) umfassen oder eine Inferenzierung für Hunderte von Bildern (z. B. ein Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung die Ergebnisse vor der Fertigstellung zusammenfassen, was ohne Einschränkung einen einzelnen Konfidenzwert, eine Segmentierung auf Pixelebene, eine Segmentierung auf Voxel-Ebene, die Erstellung einer Visualisierung oder die Erstellung von Text zur Zusammenfassung der Ergebnisse umfassen kann. In mindestens einer Ausführungsform können verschiedenen Modellen oder Anwendungen unterschiedliche Prioritäten zugewiesen werden. Beispielsweise können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen (z. B. TAT weniger als 10 Minuten). In mindestens einer Ausführungsform können Modellausführungszeiten von der anfragenden Institution oder Einrichtung aus gemessen werden und die Zeit des Partnernetzwerkdurchlaufs sowie die Ausführung auf einem Inferenzierungdienst umfassen.
  • In mindestens einer Ausführungsform kann die Übertragung von Anfragen zwischen den Diensten 920 und den Inferenzierungsanwendungen hinter einem Softwareentwicklungskit (SDK) verborgen sein und ein robuster Transport kann über eine Warteschlange erfolgen. In mindestens einer Ausführungsform wird eine Anfrage über eine API für eine individuelle Anwendung/Mandanten-ID-Kombination in eine Warteschlange gestellt und ein SDK zieht eine Anfrage aus einer Warteschlange und leitet sie an eine Anwendung weiter. In mindestens einer Ausführungsform kann der Name einer Warteschlange in einer Umgebung angegeben werden, aus der ein SDK sie abruft. In mindestens einer Ausführungsform kann die asynchrone Kommunikation über eine Warteschlange nützlich sein, da sie es jeder Instanz einer Anwendung ermöglicht, die Arbeit aufzunehmen, sobald sie verfügbar ist. In mindestens einer Ausführungsform können die Ergebnisse über eine Warteschlange zurückübertragen werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen ebenfalls die Möglichkeit bieten, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, an welche die meisten Instanzen einer Anwendung angeschlossen sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, an die nur eine einzige Instanz angeschlossen ist, die Aufgaben in einer empfangenen Reihenfolge bearbeitet. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz ausgeführt werden, die in der Cloud 1026 erzeugt wird, und ein Inferenzierungsdienst kann eine Inferenzierung auf einer GPU durchführen.
  • In mindestens einer Ausführungsform können Visualisierungsdienste 1020 wirksam eingesetzt werden, um Visualisierungen für die Anzeige von Ausgaben von Anwendungen und/oder einer Einsatzpipeline(s) 1010 zu erzeugen. In mindestens einer Ausführungsform können GPUs 1022 von Visualisierungsdiensten 1020 wirksam eingesetzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie z. B. Ray-Tracing oder andere Lichttransportsimulationstechniken, von Visualisierungsdiensten 1020 implementiert werden, um Visualisierungen von höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungen ohne Einschränkung 2D-Bildrenderings, 3D-Volumenrenderings, 3D-Volumenrekonstruktionen, 2D-Tomographieschichten, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. umfassen. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z. B. eine virtuelle Umgebung) für die Wechselwirkung durch Benutzer eines Systems (z. B. Ärzte, Krankenschwestern, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 1020 einen internen Visualisierer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionalität umfassen (z. B. Raytracing, Rasterung, interne Optik usw.).
  • In mindestens einer Ausführungsform kann die Hardware 922 GPUs 1022, das KI-System 1024, die Cloud 1026 und/oder jede andere Hardware umfassen, die für die Ausführung des Trainingssystems 904 und/oder des Einsatzsystems 906 verwendet wird. In mindestens einer Ausführungsform können die GPUs 1022 (z. B. NVIDIAs TESLA und/oder QUADRO GPUs) eine beliebige Anzahl von GPUs umfassen, die für die Ausführung von Verarbeitungsaufgaben von Rechendiensten 1016, kollaborative Inhaltserzeugungsdienste 1017, Diensten künstlicher Intelligenz (KI) 1018, Simulationsdiensten 1019, Visualisierungsdiensten 1020, anderen Diensten und/oder beliebigen Merkmalen oder Funktionalität der Software 918 verwendet werden können. Beispielsweise können GPUs 1022 in Bezug auf KI-Dienste 1018 verwendet werden, um eine Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die von Modellen maschinellen Lernens verwendet werden), eine Nachverarbeitung an Ausgaben von Modellen maschinellen Lernens und/oder eine Inferenzierung (z. B. zur Ausführung von Modelle maschinellen Lernens) durchzuführen. In mindestens einer Ausführungsform können die Cloud 1026, das AI-System 1024 und/oder andere Komponenten des Systems 1000 GPUs 1022 verwenden. In mindestens einer Ausführungsform kann die Cloud 1026 eine GPU-optimierte Plattform für Deep-Learning-Aufgaben umfassen. In mindestens einer Ausführungsform kann das KI-System 1024 GPUs verwenden, und die Cloud 1026 - oder mindestens ein Teil davon, der mit Deep Learning oder Inferenzierung beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 1024 ausgeführt werden. Obwohl die Hardware 922 als diskrete Komponenten dargestellt ist, ist dies nicht als Einschränkung zu verstehen, und alle Komponenten der Hardware 922 können mit anderen Komponenten der Hardware 922 kombiniert oder von ihnen wirksam eingesetzt werden.
  • In mindestens einer Ausführungsform kann das KI-System 1024 ein zweckentwickeltes Computersystem (z. B. einen Supercomputer oder einen HPC) umfassen, das für Inferenzierung, Deep Learning, maschinelles Lernen und/oder andere Aufgaben der künstlichen Intelligenz konfiguriert ist. In mindestens einer Ausführungsform kann das KI-System 1024 (z. B. NVIDIAs DGX) GPU-optimierte Software (z. B. einen Software-Stapel) umfassen, die unter Verwendung mehrerer GPUs 1022 zusätzlich zu CPUs, RAM, Speicher und/oder anderen Komponenten, Merkmalen oder Funktionalität ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 1024 in der Cloud 1026 (z. B. in einem Rechenzentrum) implementiert werden, um einige oder alle KI-basierten Verarbeitungsaufgaben des Systems 1000 auszuführen.
  • In mindestens einer Ausführungsform kann die Cloud 1026 eine GPU-beschleunigte Infrastruktur (z. B. NGC von NVIDIA) umfassen, die eine GPU-optimierte Plattform für die Ausführung von Verarbeitungsaufgaben des Systems 1000 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 1026 ein oder mehrere KI-Systeme 1024 zur Ausführung einer oder mehrerer KI-basierter Aufgaben des Systems 1000 umfassen (z. B. als Hardware-Abstraktions- und Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 1026 in ein Anwendungsorchestrierungssystem 1028 integriert sein, das mehrere GPUs nutzt, um eine nahtlose Skalierung und einen Lastausgleich zwischen und unter Anwendungen und Diensten 920 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 1026 damit beauftragt werden, mindestens einige der Dienste 920 des Systems 1000, einschließlich Rechendienste 1016, KI-Diensten 1018 und/oder der Visualisierungsdienste 1020, auszuführen, wie hier beschrieben. In mindestens einer Ausführungsform kann die Cloud 1026 kleine und große Batch-Inferenzierungen durchführen (z. B. die Ausführung von NVIDIAs TENSOR RT), eine beschleunigte parallele Rechen-API und Plattform 1030 bereitstellen (z. B. NVIDIAs CUDA), ein Anwendungsorchestrierungssystem 1028 ausführen (z. B., KUBERNETES), eine Graphik-Rendering-API und -Plattform (z. B. für Raytracing, 2D-Graphik, 3D-Graphik und/oder andere Rendering-Techniken zur Erzeugung hochwertigerer Filmsequenzen) und/oder andere Funktionalität für das System 1000 bereitstellen.
  • In mindestens einer Ausführungsform kann die Cloud 1026 bei dem Bestreben, die Patientenvertraulichkeit zu wahren (z. B., wenn Patientendaten oder -aufzeichnungen außerhalb der eigenen Räumlichkeiten verwendet werden sollen), ein Register umfassen, wie z. B. ein Deep-Learning-Containerregister. In mindestens einer Ausführungsform kann ein Register Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungen, Nachverarbeitungen oder andere Verarbeitungsaufgaben an Patientendaten durchführen können. In mindestens einer Ausführungsform kann die Cloud 1026 Daten empfangen, die sowohl Patientendaten als auch Sensordaten in Containern umfassen, die angeforderte Verarbeitung nur für Sensordaten in diesen Containern durchführen und dann eine resultierende Ausgabe und/oder Visualisierungen an geeignete Parteien und/oder Vorrichtungen (z. B. medizinische Vor-Ort-Vorrichtungen, die zur Visualisierung oder Diagnose verwendet werden) weiterleiten, ohne dass Patientendaten extrahiert, gespeichert oder anderweitig zugänglich gemacht werden müssen. In mindestens einer Ausführungsform wird die Vertraulichkeit von Patientendaten gemäß dem HIPAA und/oder anderen Datenvorschriften gewahrt.
  • Andere Variationen liegen innerhalb des Wesens der vorliegenden Offenbarung. Somit werden, obwohl die offenbarten Techniken für verschiedene Modifikationen und alternative Konstruktionen empfänglich sind, bestimmte erläuterte Ausführungsformen davon in den Zeichnungen gezeigt und wurden vorstehend ausführlich beschrieben. Es sei jedoch zu verstehen, dass keine Absicht besteht, die Offenbarung auf die offenbarte spezielle Form oder Formen zu begrenzen, sondern die Absicht besteht im Gegenteil darin, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in innerhalb des Wesens und des Umfangs der Offenbarung fallen, wie in den beigefügten Ansprüchen definiert.
  • Die Verwendung der Begriffe „einer/eine/eines“ und „der/die/das“ und ähnliche Referenzen im Kontext des Beschreibens der offenbarten Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) sind auszulegen, als sowohl den Singular als auch den Plural zu umfassen, solange nichts Anderweitiges hier angegeben oder durch den Kontext deutlich widersprochen wird, und nicht als eine Definition eines Begriffs. Die Begriffe „umfassend“, „aufweisend“, „einschließlich“ und „enthaltend“ sind als offene Begriffe auszulegen (das heißt bedeutend „umfassend, jedoch nicht beschränkt auf‟), solange nicht anderweitig angemerkt. Der Begriff „verbunden,“ wenn nicht modifiziert und sich auf physische Verbindungen beziehend, ist als teilweise oder vollständig innerhalb enthaltend, befestigt an oder zusammen verbunden auszulegen, sogar wenn es etwas Intervenierendes gibt. Die Nennung von Wertebereichen hier ist lediglich bestimmt, um als ein Kurzformverfahren des einzelnen Bezugnehmens auf jeden separaten Wert zu dienen, der in den Bereich fällt, es sei denn, dass hier etwas anderes angegeben ist, und jeder separate Wert wird in die Spezifikation aufgenommen, als ob er hier einzeln wiedergegeben wäre. Die Verwendung des Begriffs „Satz“ (z.B., „ein Satz von Objekten“) oder „Teilsatz“, es sei denn, es ist etwas anderes angemerkt oder dies widerspricht dem Kontext, als eine nicht leere Zusammenstellung auszulegen, die ein oder mehrere Elemente umfasst. Ferner bezeichnet, es sei denn, dass etwas anderes angemerkt ist oder dies dem Kontext widerspricht, der Begriff „Teilsatz“ eines entsprechenden Satzes nicht notwendigerweise einen richtigen Teilsatz des entsprechenden Satzes, sondern der Teilsatz und ein entsprechender Satz können gleich sein.
  • Verbindende Sprache, wie beispielsweise Ausdrücke der Form „mindestens eines von A, B, und C“, oder „mindestens eines von A, B und C“, es sei denn, das es speziell anders angemerkt ist oder anderweitig eindeutig durch den Kontext widersprochen wird, ist andernfalls in dem Kontext zu verstehen, wie sie allgemein verwendet wird, um darzustellen, dass ein Objekt, ein Begriff usw. entweder A oder B oder C oder einen beliebigen nicht leeren Teilsatz des Satzes aus A und B und C sein kann. Beispielsweise beziehen sich im veranschaulichten Beispiel eines Satzes, der drei Elemente aufweist, die verbindenden Ausdrücke „mindestens eines von A, B, und C“ und „mindestens eines von A, B und C“ auf einen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit ist eine derartige verbindende Sprache allgemein nicht bestimmt, zu implizieren, dass bestimmte Ausführungsformen verlangen, dass mindestens eines von A, mindestens eines von B, und mindestens eines von C jeweils vorhanden sind. Außerdem gibt, es sei denn, dass etwas anderes angemerkt ist oder durch den Kontext widersprochen wird, der Begriff „Mehrzahl“ einen Zustand in der Mehrzahl an (z.B., „eine Mehrzahl von Elementen“ gibt mehrere Elemente an). Eine Mehrzahl ist mindestens zwei Elemente, kann jedoch mehr sein, wenn so entweder explizit oder durch ein Kontext angegeben. Ferner bedeutet, es sei denn, dass etwas anderes angemerkt ist oder dies anderweitig aus dem Kontext offensichtlich ist, der Ausdruck „basierend auf' „basierend mindestens teilweise auf‟ und nicht „basierend allein auf.“
  • Vorgänge von hier beschriebenen Prozessen können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hier nicht anderweitig angegeben oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie beispielsweise jene Prozesse (oder Variationen und/oder Kombinationen davon), die hier beschrieben sind, unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und wird als Code (z.B., ausführbare Anweisungen, ein oder mehrere Computerprogramme oder ein oder mehrere Anwendungen) implementiert, der zusammen auf einem oder mehreren Prozessoren durch Hardware oder Kombinationen davon ausgeführt wird. In mindestens einer Ausführungsform wird ein Code auf einem computerlesbaren Speichermedium beispielsweise in Form eines Computerprogramms ausgeführt, das mehrere Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausführbar sind. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nicht flüchtiges computerlesbares Speichermedium, das flüchtige Signale ausschließt (z.B., eine propagierende transiente elektrische oder elektromagnetische Übertragung), jedoch nicht flüchtige Datenspeicherschaltungen (z.B., Puffer, Cache und Warteschlangen) innerhalb Transceivern von flüchtigen Signalen umfasst. In mindestens einer Ausführungsform ist der Code (z.B., ein ausführbarer Code oder Quellencode) auf einem Satz von einem oder mehreren nicht flüchtigen computerlesbaren Speichermedien gespeichert, die darauf gespeicherte ausführbare Anweisungen aufweisen (oder anderem Speicher, um ausführbare Anweisungen zu speichern) die, wenn durch einen oder mehreren Prozessoren eines Computersystems ausgeführt (d.h., als ein Ergebnis einer Ausführung) das Computersystem veranlassen, hier beschriebene Vorgänge durchzuführen. Ein Satz von nicht flüchtigen computerlesbaren Speicherungsmedien umfasst mehrere nicht flüchtige computerlesbare Speicherungsmedien und eines oder mehrere von einzelnen nicht flüchtigen Speicherungsmedien der mehreren nicht flüchtigen computerlesbaren Speichermedien Fehlen sämtlicher Code, während mehrere nicht flüchtige computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden ausführbare Anweisungen ausgeführt, so dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - beispielsweise speichert ein nicht flüchtiges computerlesbares Speichermedium Anweisungen und eine Haupt-Zentralverarbeitungseinheit („CPU“) führt einige Anweisungen aus, während eine Graphikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems getrennte Prozessoren auf und unterschiedliche Prozessoren führen unterschiedliche Teilsätze von Anweisungen aus.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme konfiguriert, um ein oder mehrere Dienste zu implementieren, die einzeln oder gemeinsam Vorgänge von hier beschriebenen Prozessen durchführen, und derartige Computersysteme sind mit anwendbarer Hardware und/oder Software konfiguriert, welche die Durchführung von Vorgängen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung, und ist in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das ein verteiltes Computersystem die hier beschriebenen Vorgänge durchführt und sodass eine einzelne Vorrichtung nicht alle Vorgänge durchführt.
  • Die Verwendung von einzelnen oder allen Beispielen oder einer hier beispielhaften bereitgestellten Formulierung (z.B., „wie beispielsweise“) ist bestimmt, lediglich Ausführungsformen der Offenbarung besser zu beleuchten und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, dass etwas anderes beansprucht ist. Keine Sprache in der Spezifikation sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als wesentlich angibt, um die Offenbarung zu praktizieren.
  • Sämtliche Bezugnahmen, einschließlich Veröffentlichungen, Patenanmeldungen und Patente, die hier zitiert sind, werden hiermit durch Bezugnahme in dem gleichen Ausmaß aufgenommen, als ob jede Bezugnahme einzeln und speziell angegeben würde, um durch Bezugnahme aufgenommen zu werden, und in ihrer Gesamtheit hier dargelegt wären.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es sei zu verstehen, dass diese Begriffe nicht als Synonyme füreinander bestimmt sind. Stattdessen kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander sind. „Gekoppelt“ kann ebenfalls bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch dennoch weiterhin kooperieren oder miteinander wechselwirken.
  • Sofern nicht speziell anders angegeben, wird anerkannt, dass über die gesamte Spezifikation Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ oder dergleichen sich auf eine Aktion und/oder Verfahren eines Computers oder Rechensystems beziehen, oder einer ähnlichen elektronischen Vorrichtung, die Daten manipulieren und/oder Daten transformieren, die als physikalische, wie beispielsweise elektronische, Größen in den Registern des Rechensystems und/oder Speichern in andere Daten, die auf ähnliche Weise als physikalische Größen innerhalb der Speicher des Rechensystems, Registern oder anderer derartiger Informationsspeicherungs-, Übertragungs- oder Anzeigevorrichtungen dargestellt werden.
  • Auf eine ähnliche Art und Weise kann sich der Begriff „Prozessor“ auf jede Vorrichtung oder Abschnitt einer Vorrichtung beziehen, die elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten transformiert, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hier verwendet, können „Software“-Prozesse beispielsweise Software- und/oder Hardwareentitäten umfassen, die Arbeit im Laufe der Zeit durchführen, wie beispielsweise Aufgaben, Threads und intelligente Agenten. Jeder Prozess kann sich ebenfalls auf mehrere Prozesse zum Ausführen von Anweisungen der Reihe nach oder parallel, kontinuierlich oder intermittierend beziehen. Die Begriffe „System“ und „Verfahren“ werden hier austauschbar verwendet, insofern als System ein oder mehrere Verfahren verkörpern und Verfahren als ein System betrachtet werden kann.
  • In dem vorliegenden Dokument können Verweise auf das Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, Computersystem oder computerimplementierte Maschine erfolgen. Erhalten, Erfassen, Empfangen oder Eingeben von analogen und digitalen Daten kann in einer Vielfalt von Möglichkeiten erreicht werden, wie beispielsweise durch Empfangen von Daten als ein Parameter eines Funktionsaufrufs oder eines Aufrufs an eine Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangen oder Eingebens von analogen oder digitalen Daten durch Transferieren von Daten über eine serielle oder parallele Schnittstelle erreicht werden. In einer anderen Implementierung können Prozesse des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch Transferieren von Daten über ein Computernetzwerk von bereitstellender Entität zu erfassender Entität erreicht werden. Verweise können ebenfalls auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Repräsentieren analoger oder digitaler Daten erfolgen. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Repräsentierens analoger oder digitaler Daten durch Transferieren von Daten als ein Eingangs- oder Ausgangsparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Mechanismus zur Interprozesskommunikation erreicht werden.
  • Obwohl die obige Erläuterung beispielhafte Implementierungen von beschriebenen Techniken darlegt, können andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sind bestimmt, innerhalb des Umfangs der Offenbarung zu liegen. Des Weiteren könnten, obwohl spezifische Verteilungen von Verantwortlichkeiten obenstehend zum Zwecke der Erläuterung definiert sind, verschiedene Funktionen und Verantwortlichkeiten in unterschiedlichen Weisen abhängig von den Umständen verteilt und aufgeteilt werden.
  • Des Weiteren sei zu verstehen, obwohl der Gegenstand in einer für strukturelle Merkmale und/oder methodische Handlungen spezifischen Sprache beschrieben wurde, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht notwendigerweise auf beschriebene spezifische Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen des Implementierens der Ansprüche offenbart.

Claims (20)

  1. Verfahren, umfassend: Identifizieren eines ersten Bildes und eines ersten Referenzbildes; Bestimmen erster mehrerer Bewegungsvektoren, MVs, wobei jeder der ersten mehreren MVs eine Verschiebung eines oder mehrerer Pixel der ersten Bildes relativ zu dem ersten Referenzbild kennzeichnet; Identifizieren, unter Verwendung der ersten mehreren MVs, einer ersten Region des ersten Bildes, wobei die erste Region eine anschauliche Darstellung eines oder mehrerer Objekte in dem ersten Bild umfasst; Auswählen, basierend auf einer Größe der ersten Region, eines ersten Modells maschinellen Lernens, MLM, aus mehreren MLMs, wobei jedes der mehreren MLMs einer jeweiligen einen von mehreren Eingabegrößen entspricht; Auswählen, basierend auf der Größe der ersten Region und einer dem ersten MLM entsprechenden Eingabegröße, eines ersten Abschnitts des ersten Bildes, wobei der erste Abschnitt die erste Region umfasst; und Erfassen einer Anwesenheit des einen oder mehrerer Objekte in dem ersten Bild basierend auf einer Ausgabe der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM.
  2. Verfahren gemäß Anspruch 1, wobei der erste Abschnitt des ersten Bildes ausgewählt wird, um eine Größe aufzuweisen, die gleich der dem ersten MLM entsprechenden Eingabegröße ist.
  3. Verfahren gemäß Anspruch 1 oder 2, wobei der erste Abschnitt der ersten Bildes ausgewählt wird, um eine Größe aufzuweisen, die von der Eingabegröße des ersten MLM unterschiedlich ist, wobei das Verfahren ferner umfasst: Umskalieren, vor der Verarbeitung des ersten Abschnitts durch das erste MLM, des ersten Abschnitts des ersten Bildes, um der Eingabegröße zu entsprechen, die dem ersten MLM entspricht.
  4. Verfahren gemäß einem vorangehenden Anspruch, wobei die Ausgabe der Verarbeitung des ersten Abschnitts durch das erste MLM einen Begrenzungsrahmen für mindestens ein Objekt des einen oder mehrerer Objekte in dem ersten Bild umfasst.
  5. Verfahren gemäß einem vorangehenden Anspruch, ferner umfassend: Identifizieren eines zweiten Bildes und eines zweiten Referenzbildes; Bestimmen zweiter mehrerer Bewegungsvektoren (MVs), wobei jeder der zweiten mehreren MVs eine Verschiebung eines oder mehrerer Pixel des zweiten Bildes relativ zu dem zweiten Referenzbild kennzeichnet; Identifizieren, unter Verwendung der zweiten mehreren MVs, einer zweiten Region des zweiten Bildes, wobei die zweite Region eine anschauliche Darstellung eines oder mehrerer Objekte in dem zweiten Bild umfasst; Auswählen, basierend auf einer Größe der zweiten Region, eines zweiten Modells maschinellen Lernens (MLM) der mehreren MLMs, wobei einer des zweiten MLM entsprechende Eingabegröße von der dem ersten MLM entsprechenden Eingabegröße unterschiedlich ist; Auswählen, basierend auf der Größe der zweiten Region und der dem zweiten MLM entsprechenden Eingabegröße, eines zweites Abschnitts des zweiten Bildes, wobei der zweite Abschnitt die zweite Region umfasst; und Erfassen der Anwesenheit des einen oder mehrerer Objekte in dem zweiten Bild unter Verwendung einer Ausgabe der Verarbeitung des zweiten Abschnitts unter Verwendung des zweiten MLM.
  6. Verfahren gemäß Anspruch 5, ferner umfassend Klassifizieren des einen oder mehrerer Objekten in dem ersten Bild und des einen oder mehrerer Objekte in dem zweiten Bild, durch: Verarbeiten einer kombinierten Eingabe unter Verwendung eines oder mehrerer Klassifikator-MLMs, wobei die kombinierte Eingabe umfasst: die Ausgabe der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM, und die Ausgabe der Verarbeitung des zweiten Abschnitts unter Verwendung des zweiten MLM, und wobei das eine oder mehrere Klassifikator-MLMs trainiert werden, um einen Typ von einem oder mehreren Objekten zu bestimmen, die in der kombinierten Eingabe anschaulich dargestellt sind.
  7. Verfahren gemäß Anspruch 6, wobei eine Ausgabe, die unter Verwendung des einen oder mehrerer Klassifikator-MLMs erzeugt wurde, eine oder mehrere Inferenzen umfasst, die i) einem Typ eines Fahrzeugs, ii) einer Marke des Fahrzeugs oder iii) einem Modell des Fahrzeugs entspricht, für mindestens ein Objekt des einen oder mehrerer Objekten in mindestens einem von dem ersten Bild oder dem zweiten Bild.
  8. Verfahren gemäß Anspruch 6 oder 7, wobei die kombinierte Eingabe, die unter Verwendung des einen oder mehrerer Klassifikator-MLMs verarbeitet wird, eine von mehreren kombinierten Eingaben ist, und wobei das eine oder mehrere Klassifikator-MLMs konfiguriert sind, um eine Pipeline-Verarbeitung der mehreren kombinierten Eingaben durchzuführen.
  9. Verfahren gemäß einem der Ansprüche 5 bis 8, wobei das erste Bild und das erste Referenzbild von einer ersten Kamera erhalten werden, wobei das zweite Bild und das zweite Referenzbild durch eine zweite Kamera erhalten werden, und wobei ein Sichtfeld der ersten Kamera von einem Sichtfeld der zweiten Kamera unterschiedlich ist.
  10. Verfahren gemäß einem vorangehenden Anspruch, wobei die Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM das Ausführen einer oder mehrerer Rechnungen umfasst, die dem ersten MLM unter Verwendung einer oder mehrerer Graphikverarbeitungseinheiten zugeordnet sind.
  11. System, umfassend: eine Speichervorrichtung; und eine oder mehrere Verarbeitungsvorrichtungen, die mit der Speichervorrichtung kommunikativ gekoppelt sind, um: ein erstes Bild und ein erstes Referenzbild zu identifizieren; erste mehrere Bewegungsvektoren, MVs, zu bestimmen, wobei jeder der ersten mehreren MVs eine Verschiebung eines oder mehrerer Pixel der ersten Bildes relativ zu dem ersten Referenzbild kennzeichnet; unter Verwendung der ersten mehreren MVs eine erste Region des ersten Bildes zu identifizieren, wobei die erste Region eine anschauliche Darstellung eines oder mehrerer Objekten in dem ersten Bild umfasst; basierend auf einer Größe der ersten Region ein erstes Modell maschinellen Lernens, MLM, aus mehrere MLMs auszuwählen, wobei jedes der mehreren MLMs einer jeweiligen einen von mehreren Eingabegrößen entspricht; basierend auf der Größe der ersten Region und einer Eingabegröße des ersten MLM einen ersten Abschnitt des ersten Bild auszuwählen, wobei der erste Abschnitt umfasst die erste Region umfasst; und die Anwesenheit des einen oder mehrerer Objekte in dem ersten Bild basierend auf einer Ausgabe der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM zu erfassen.
  12. System gemäß Anspruch 11, wobei der erste Abschnitt des ersten Bildes ausgewählt wird, um eine Größe aufzuweisen, die gleich der dem ersten MLM entsprechende Eingabegröße ist.
  13. System gemäß Anspruch 11 oder 12, wobei der erste Abschnitt des ersten Bildes ausgewählt wird, um eine Größe aufzuweisen, die von der Eingabegröße des ersten MLM unterschiedlich ist, und wobei die eine oder mehrere Verarbeitungsvorrichtungen ferner zu Folgendem dienen: Umskalieren, vor der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM, des ersten Abschnitts des ersten Bildes, um der Eingabegröße zu entsprechen, die dem ersten MLM entspricht.
  14. System gemäß einem der Ansprüche 11 bis 13, wobei die eine oder mehrere Verarbeitungsvorrichtungen ferner zu Folgendem dienen: Identifizieren eines zweiten Bildes und eines zweiten Referenzbildes; Bestimmen zweiter mehrerer Bewegungsvektoren (MVs), wobei jedes der zweiten mehreren MVs die Verschiebung eines oder mehrerer Pixel des zweiten Bildes relativ zu dem zweiten Referenzbild kennzeichnet; Identifizieren, unter Verwendung der zweiten mehreren MVs, einer zweiten Region des zweiten Bildes, wobei die zweite Region eine anschauliche Darstellung eines oder mehrerer Objekte in dem zweiten Bild umfasst; Auswählen, basierend auf einer Größe der zweiten Region, eines zweiten Modells maschinellen Lernens (MLM) der mehreren MLMs, wobei eine dem zweiten MLM entsprechende Eingabegröße von der dem ersten MLM entsprechenden Eingabegröße unterschiedlich ist; Auswählen, basierend auf der Größe der zweiten Region und der Eingabegröße des zweiten MLM, eines zweiten Abschnitts des zweiten Bildes, wobei der zweite Abschnitt die zweite Region umfasst; und Erfassen der Anwesenheit des einen oder mehrerer Objekte in dem zweiten Bild unter Verwendung einer Ausgabe der Verarbeitung des zweiten Abschnitts unter Verwendung des zweiten MLM.
  15. System gemäß Anspruch 14, wobei die eine oder mehrere Verarbeitungsvorrichtungen ferner zu Folgendem dienen: Verarbeiten einer kombinierten Eingabe unter Verwendung eines oder mehrere Klassifikator-MLMs, wobei die kombinierte Eingabe umfasst: die Ausgabe der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM, und die Ausgabe der Verarbeitung der zweiten Abschnitts unter Verwendung des zweiten MLM, und wobei das eine oder mehrere Klassifikator-MLMs trainiert werden, um einen Typ eines oder mehrere Objekten zu bestimmen, die in der kombinierten Eingabe anschaulich dargestellt sind.
  16. System gemäß Anspruch 15, wobei eine Ausgabe, die unter Verwendung des einen oder mehrerer Klassifikator-MLMs erzeugt wird, eine oder mehrere Inferenzen umfasst, die i) einem Typ eines Fahrzeug, ii) einer Marke des Fahrzeugs oder iii) einem Modell des Fahrzeugs entsprechen, für an einem Objekt des einen oder mehrerer Objekte in mindestens einem des ersten Bildes oder des zweiten Bildes .
  17. System gemäß einem der Ansprüche 11 bis 16, wobei die eine oder mehrere Verarbeitungsvorrichtungen eine oder mehrere Graphikverarbeitungseinheiten umfassen.
  18. Nichttransitorisches computerlesbares Medium, das Anweisungen darauf speichert, wobei die Anweisungen, wenn durch eine Verarbeitungsvorrichtung ausgeführt, die Verarbeitungsvorrichtung veranlassen: ein erstes Bild und ein erstes Referenzbild zu identifizieren, erste mehrere Bewegungsvektoren, MVs, zu bestimmen, wobei jedes der ersten mehreren MVs eine Verschiebung von einem oder mehreren Pixeln der ersten Bildes relativ zu dem ersten Referenzbild kennzeichnet; unter Verwendung der ersten mehreren MVs, eine ersten Region der ersten Bildes zu identifizieren, wobei die erste Region eine anschauliche Darstellung von einem oder mehreren Objekten in dem ersten Bild umfasst; basierend auf einer Größe der ersten Region ein erstes Modell maschinellen Lernens, MLM, von mehreren MLMs auszuwählen, wobei jedes der mehreren MLMs einer jeweiligen von mehreren Eingabegrößen entspricht; basierend auf der Größe der ersten Region und einer dem ersten MLM entsprechenden Eingabegröße einen ersten Abschnitt des ersten Bildes auswählen, wobei der erste Abschnitt die erste Region umfasst; und die Anwesenheit des einen oder mehrerer Objekte in dem ersten Bild basierend auf einer Ausgabe der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM zu erfassen.
  19. Computerlesbares Medium gemäß Anspruch 18, wobei die Anweisungen ferner die Verarbeitungsvorrichtung veranlassen sollen: ein zweites Bild und ein zweites Referenzbild zu identifizieren; zweite mehrere Bewegungsvektoren, MVs, zu bestimmen, wobei jedes der zweiten mehreren MVs die Verschiebung von einem oder mehreren Pixeln des zweiten Bildes relativ zu dem zweiten Referenzbild kennzeichnen; unter Verwendung der zweiten mehreren MVs eine zweite Region des zweiten Bildes zu identifizieren, wobei die zweite Region eine anschauliche Darstellung eines oder mehrerer Objekte in dem zweiten Bild umfasst; basierend auf einer Größe der zweiten Region ein zweites Modell maschinellen Lernens (MLM) der mehreren MLMs zu identifizieren, wobei eine Eingabegröße, die dem zweiten MLM entspricht, von der Eingabegröße unterschiedlich ist, die dem ersten MLM entspricht; basierend auf der Größe der zweiten Region und der Eingabegröße des zweiten MLM einen zweiten Abschnitt des zweiten Bildes auszuwählen, wobei der zweite Abschnitt die zweite Region umfasst; und die Anwesenheit des einen oder mehrerer Objekten in dem zweiten Bild basierend auf einer Ausgabe der Verarbeitung des zweiten Abschnitts unter Verwendung des zweiten MLM zu erfassen.
  20. Computerlesbares Medium gemäß Anspruch 19, wobei die Anweisungen ferner veranlassen sollen, dass die Verarbeitungsvorrichtung: eine kombinierte Eingabe unter Verwendung eines oder mehrerer Klassifikator-MLMs verarbeitet, wobei die kombinierte Eingabe umfasst: die Ausgabe der Verarbeitung des ersten Abschnitts unter Verwendung des ersten MLM, und die Ausgabe der Verarbeitung des zweiten Abschnitts unter Verwendung des zweiten MLM, und wobei das eine oder mehrere Klassifikator-MLMs trainiert werden, um einen Typ eines oder mehrerer Objekte zu bestimmen, die in der kombinierten Eingabe anschaulich dargestellt werden.
DE102023101265.7A 2022-01-25 2023-01-19 Objekterfassung bei Bildstromverarbeitung unter Verwendung von optischem Fluss mit dynamischen Regionen von Interesse Pending DE102023101265A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/584,151 2022-01-25
US17/584,151 US20230237671A1 (en) 2022-01-25 2022-01-25 Object detection in image stream processing using optical flow with dynamic regions of interest

Publications (1)

Publication Number Publication Date
DE102023101265A1 true DE102023101265A1 (de) 2023-07-27

Family

ID=87068411

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023101265.7A Pending DE102023101265A1 (de) 2022-01-25 2023-01-19 Objekterfassung bei Bildstromverarbeitung unter Verwendung von optischem Fluss mit dynamischen Regionen von Interesse

Country Status (3)

Country Link
US (1) US20230237671A1 (de)
CN (1) CN116503772A (de)
DE (1) DE102023101265A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836968B1 (en) * 2022-12-08 2023-12-05 Sas Institute, Inc. Systems and methods for configuring and using a multi-stage object classification and condition pipeline

Also Published As

Publication number Publication date
CN116503772A (zh) 2023-07-28
US20230237671A1 (en) 2023-07-27

Similar Documents

Publication Publication Date Title
DE112020001253T5 (de) Techniken zum Trainieren eines neuronalen Netzes unter Verwendung von Transformationen
DE112020003547T5 (de) Transfer Learning für neuronale Netzwerke
DE102020113280A1 (de) Automatische erzeugung von grundwahrheitsdaten zum trainieren oder umzutrainieren eines oder mehrerer modelle für maschinelles lernen
DE102021128292A1 (de) Skalierbare semantische bildsuche mit deep- template- matching
DE112021000120T5 (de) Modellprädiktive regelungstechniken für autonome systeme
DE102021105080A1 (de) Techniken zur verwendung eines neuronalen netzwerks zur erweiterung eines bilds
DE102021121560A1 (de) Objektbild vervollständigung
DE112021001481T5 (de) Neuronales rendern für inverse grafikgenerierung
DE112021001762T5 (de) Erzeugen von kennzeichnungen für synthetische bilder unter verwenden eines oder mehrerer neuronaler netzwerke
DE102021113105A1 (de) Techniken zum modifizieren und trainieren eines neuronalen netzwerks
DE102021125231A1 (de) Unüberwachte domainanpassung mit neuronalen netzen
DE102021125238A1 (de) Auf fourier-transformation basierte bildsynthese unter verwendung von neuralen netzen
DE102022114651A1 (de) Training von objekterfassungssystemen mit generierten bildern
DE102022110657A1 (de) High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen
DE112021002965T5 (de) Generierung von szenengraphen für unmarkierte daten
DE112020002425T5 (de) Bewegungsvorhersage unter verwendung eines oder mehrerer neuronaler netzwerke
DE102022128027A1 (de) Fehlererkennung mit einem oder mehreren neuronalen netzen
DE102022101664A1 (de) Techniken des maschinellen lernens zur verbesserung von anwendungen für videokonferenzen
DE102021133631A1 (de) Gezielte objekterkennung in bildverarbeitungsanwendungen
DE102021131289A1 (de) Echtzeit-rendering mit impliziten formen
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102022112157A1 (de) Echtzeit-verbesserung für streaming-inhalt
DE102023113190A1 (de) Identifizieren von Applikationspuffern zum Nachbearbeiten und Wiederverwenden in sekundären Applikationen
DE102022121509A1 (de) Einzelbild-inversrendering
DE102022117298A1 (de) Zusammenfügungsqualitätsbewertung für rundumsichtsysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed