-
QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität der vorläufigen Patentanmeldung der vereinigten Staaten mit der Seriennummer 61/794702, die am 15. März 2013 eingereicht wurde. Der Gegenstand dieser verwandten Anmeldung ist durch Bezugnahme mit eingeschlossen.
-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Ausführungsformen der vorliegenden Erfindung betreffen generell die Computergrafik und insbesondere die Ausführung von Objekterkennungsoperationen mittels einer grafischen Verarbeitungseinheit (GPU).
-
Beschreibung des Stands der Technik
-
Eine automatische Echtzeiterkennung von Objekten (beispielsweise Gesichter, Tiere, Symbole, Fußgänger, usw.) in Bildern ist eine gut bekannte Operation auf mittlerer Ebene in der Computervision, die Auslöser für viele Operationen der Computervision auf höherer Ebene ist. Beispielsweise ist die Objekterkennung ein Vorläufer für die Verfolgung, das Verständnis einer Szene und die Interpretation sowie den Abruf von Bildern auf Inhaltsbasis, usw. Viele Computersysteme, die zur Einrichtung einer konventionellen Objekterkennung ausgebildet sind, beruhen auf einer zentralen Recheneinheit (CPU). Um zu erkennen, ob ein spezielles Objekt in einem Bild enthalten ist, führt die CPU typischerweise zwei allgemeine Schritte aus. Erstens, in einem Trainingsschritt verwendet die CPU „positive” Bilder des Objekts und „negative” Bilder von Nicht-Objekten, um eine statistische Musterklassifizierungseinheit zu trainieren. Zweitens, in einem Ausführungsschritt wendet die CPU die trainierte Musterklassifizierungseinheit auf jedes Pixel eines eingespeisten Bildes an, um zu bestimmen, ob ein Fenster (d. h. ein Gebiet), das das Pixel umgibt, dem Objekt entspricht. Um ferner das Objekt bei mehreren Skalierungsstufen zu finden, skaliert die CPU das eingegebene Bild auf verschiedene Größen und wendet die Musterklassifizierungseinheit auf jedes skalierte Bild an. Folglich führt die CPU die gleiche Gruppe an Objekterkennungsoperationen an einer sehr großen Anzahl an Pixel über mehrere skalierte Bilder hinweg aus.
-
Um das Leistungsverhalten der Objekterkennung zu optimieren, sind viele CPUs ausgebildet, einen Algorithmus einzurichten, der als kaskardierte adaptiver verstärkter Klassifizierungs-Algorithmus (CABCA) bekannt ist. In dem CABCA-Ansatz enthält eine kaskardierte Klassifizierungseinheit eine Reihe kleinerer Klassifizierungseinheiten, häufig mit der Reihe nach ansteigender Komplexität, die die CPU auf jedes Pixel in einer Reihe diskreter Stufen anwendet. Wenn in jeder Stufe die CPU ermittelt, dass ein spezielles Pixel nicht dem Objekt entspricht, dann hört die CPU mit der Verarbeitung des Pixel auf und beginnt die Verarbeitung des nächsten Pixel. Als Folge von „frühen Abbrüchen” wird die Anzahl kleinerer Klassifizierungseinheiten, die die CPU auf jedes Pixel anwendet, für Pixel reduziert, die nicht zu dem Objekt gehören.
-
Fortschrittliche Computersysteme enthalten in zunehmendem Maße eine oder mehrere grafische Verarbeitungseinheiten (GPU), die eine sehr hohe Leistungsfähigkeit unter Anwendung einer relativ kleinen Anzahl kleiner, paralleler Ausführungsstränge in speziellen programmierbaren Hardware-Verarbeitungseinheiten besitzen. Die spezielle Gestaltung der Parallelverarbeitungssubsysteme ermöglicht es für gewöhnlich, dass diese Subsysteme effizient gewisse Aufgaben unter Anwendung eines hohen Volumens an gleichzeitigen Rechenoperationen und Speicheroperationen ausführen. Da die Objekterkennung die Ausführung einer großen Menge an Objekterkennungsoperationen erfordert, die gleichzeitig über Pixel und Bilder hinweg ausgeführt werden können, nutzen viele fortschrittliche Computersysteme vorteilhaft die GPU aus, um diese Operationen auszuführen. Aufgrund der sequenziellen Natur der kaskadierten Klassifizierungseinheit und aufgrund der unterschiedlichen Anzahl an Klassifizierungseinheiten, die auf jedes Pixel angewendet wird, nutzt jedoch der CABCA-Ansatz für die Objekterkennung die Verarbeitungsfähigkeiten von GPUs nicht vollständig aus.
-
Es sei beispielsweise angenommen, dass ein erstes Pixel eines Bildes mit dem Objekt verknüpft ist, aber das zweite Pixel des Bildes ist nicht mit dem Objekt verknüpft. Es sei ferner angenommen, dass die GPU das Bild unter Anwendung einer kaskadierten Klassifizierungseinheit verarbeiten soll, die 16 kleinere Klassifizierungseinheiten enthält. Es sei schließlich angenommen, dass eine erste Verarbeitungseinheit in der GPU ermitteln soll, dass das erste Pixel nicht mit dem Objekt verknüpft ist, wobei dies auf der Grundlage der ersten kleineren Klassifizierungseinheit erfolgen soll. In einem derartigen Szenario würde die erste Verarbeitungseinheit mit der Verarbeitung des ersten Pixel aufhören und wäre daher untätig, bis die Verarbeitungseinheit dem zweiten Pixel zugewiesen wird, und die 15 verbleibenden kleineren Klassifizierungseinheiten auf das zweite Pixel anwendet, die in der kaskadierten Klassifizierungseinheit enthalten sind. Da die Anzahl an Verarbeitungseinheiten, die in der GPU enthalten sind, begrenzt ist, reduzieren untätige Verarbeitungseinheiten die Effizienz der GPU und begrenzen die Geschwindigkeit, mit der das Computersystem eine Objekterkennung ausführt.
-
Was daher auf diesem Gebiet der Technik erforderlich ist, ist eine effizientere Technik zur Ausführung von Objekterkennungsoperationen durch parallele Verarbeitungsarchitekturen.
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Eine Ausführungsform der vorliegenden Erfindung gibt ein computerimplementiertes Verfahren zur Erkennung eines Objekts in einem oder mehreren Bildern an. Das Verfahren umfasst die Auswahl einer ersten Teilgruppe an Pixel, die in einem ersten Bild enthalten ist, Zuordnen eines ersten Ausführungsstrangs zu einem ersten Pixel, das in der ersten Teilgruppe an Pixel enthalten ist, und Veranlassen, dass der erste Ausführungsstrang einen ersten Entscheidungsbaum, der in einer Gruppe mehrerer Entscheidungsbäume enthalten ist, auf das erste Pixel anwendet, um eine erste Wahrscheinlichkeit zu ermitteln, dass das erste Pixel mit einem ersten Objekt verknüpft ist, und wodurch eine erste Eintrittswahrscheinlichkeit angegeben ist, dass das erste Objekt in dem ersten Bild enthalten ist, wobei die Gruppe an mehreren Entscheidungsbäumen eine Zufalls-Wald-Klassifizierungseinheit ist.
-
Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass die gleichförmige Struktur der Zufalls-Wald-Klassifizierungseinheit auf die parallele Architektur anpassbar ist, die durch viele Parallelverarbeitungseinheiten, etwa grafische Verarbeitungseinheiten, eingerichtet wird. Insbesondere können Parallelverarbeitungseinheiten die Zufalls-Wald-Klassifizierungseinheit auf mehrere Pixel gleichzeitig anwenden – wobei äquivalente mathematische Operationen an jedem Pixel ausgeführt werden. Daher nutzt ein derartiger Ansatz die Fähigkeit eines parallelen Verarbeitungssystems vorteilhaft aus, um den gleichen Befehl an mehreren Pixel effizient auszuführen. Im Gegensatz dazu reduziert die Serialisierung und die Nicht-Gleichförmigkeit, die einer konventionellen Objekterkennung innewohnt, die Effizienz von Parallelverarbeitungssystemen. Folglich ist die Ausführung einer Objekterkennung unter Anwendung einer Zufalls-Wald-Klassifizierungseinheit effektiver als konventionelle Vorgehensweisen für die Objekterkennung.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert verstanden werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, mit Bezug zu Ausführungsformen angegeben, wovon einige in den angefügten Zeichnungen dargestellt sind. Es sollte jedoch beachtet werden, dass die angefügten Zeichnungen nur typische Ausführungsformen dieser Erfindung zeigen und daher nicht als eine Einschränkung ihres Schutzbereichs zu betrachten sind, da die Erfindung andere gleichermaßen wirksame Ausführungsformen zulässt.
-
1 ist eine Blockansicht, die ein Computersystem darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren;
-
2 ist eine Blockansicht einer Parallelverarbeitungseinheit, die in dem Parallelverarbeitungssubsystem aus 1 enthalten ist, gemäß einer Ausführungsform der vorliegenden Erfindung;
-
3 ist eine Blockansicht eines allgemeinen Verarbeitungs-Clusters, der in der Parallelverarbeitungseinheit aus 2 enthalten ist, gemäß einer Ausführungsform der vorliegenden Erfindung;
-
4 ist eine Konzeptansicht, die zeigt, wie ein mehrblöckiges lokales binäres Mustermerkmal gemäß einer Ausführungsform der vorliegenden Erfindung berechnet werden kann;
-
5 ist eine Konzeptansicht, die zeigt, wie eine Zufalls-Wald-Klassifizierungseinheit gemäß einer Ausführungsform der vorliegenden Erfindung trainiert werden kann;
-
6 ist eine Konzeptansicht einer Bildpyramide gemäß einer Ausführungsform der vorliegenden Erfindung;
-
7A–7B zeigen ein Flussdiagramm von Verfahrensschritten zum Trainieren einer Zufalls-Wald-Klassifizierungseinheit gemäß einer Ausführungsform der vorliegenden Erfindung; und
-
8A–8B zeigen ein Flussdiagramm von Verfahrensschritten zur Ausführung von Objekterkennungsoperationen mittels einer parallelen Verarbeitungsarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden Beschreibung sind zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Der Fachmann erkennt jedoch, dass die vorliegende Erfindung auch ohne eines oder mehrerer dieser speziellen Details in die Praxis umgesetzt werden kann.
-
Systemüberblick
-
1 ist eine Blockansicht, die ein Computersystem 100 darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Wie gezeigt, umfasst das Computersystem 100, ohne Einschränkung, eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, der mit einem Parallelverarbeitungssubsystem 112 über eine Speicherbrücke 105 und einen Kommunikationspfad 113 verbunden ist. Die Speicherbrücke 105 ist ferner mit einer I/O-(Eingabe/Ausgabe-)Brücke 107 über einen Kommunikationspfad 106 verbunden, und die I/O-Brücke 107 ist wiederum mit einem Schalter bzw. eine Schalteinrichtung 116 verbunden.
-
Im Betrieb ist die I/O-Brücke 107 ausgebildet, eine Anwendereingabeinformation aus Eingabegeräten 108 (beispielsweise eine Tastatur, eine Maus, eine Video/Bild-Aufnahmeeinrichtung, usw.) zu empfangen und die Eingabeinformation an die CPU 102 zur Verarbeitung über den Kommunikationspfad 106 und die Speicherbrücke 105 weiterzuleiten. In einigen Ausführungsformen ist die eingegebene Information eine aktuelle Einspeisung aus einer Kamera/Bildaufnahmeeinrichtung oder Videodaten, die auf einem digitalen Speichermedium gespeichert sind, auf der Objekterkennungsoperationen ausgeführt werden. Der Schalter 116 ist ausgebildet, Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten des Computersystems 100, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121, bereitzustellen.
-
Wie ferner gezeigt ist, ist die I/O-Brücke 107 mit einer Systemdiskette 114 verbunden, die ausgebildet ist, Inhalt und Anwendungen und Daten zur Verwendung durch die CPU 102 und das Parallelverarbeitungssubsystem 112 zu speichern. Generell stellt die Systemdiskette 114 nicht-flüchtigen Speicher für Anwendungen und Daten bereit und kann stationäre oder entfernbare Festplattenlaufwerke, Flash-Speichereinrichtungen und CD-ROM (Kompaktdisketten-Nur-Lese-Speicher), DVD-ROM (digitale Vielseitigkeitsdisketten-ROM), Blu-ray, HD-DVD (hochauflösende DVD) oder andere magnetische, optische oder Halbleiterspeichereinrichtungen umfassen. Obwohl dies nicht explizit gezeigt ist, können ferner andere Komponenten, etwa ein universeller serieller Bus oder andere Portverbindungen, Kompaktdisketten Laufwerke, Laufwerke für digitale Vielseitigkeitsdisketten, Filmaufzeichnungsgeräte und dergleichen ebenfalls mit der I/O-Brücke 107 verbunden sein.
-
In diversen Ausführungsformen kann die Speicherbrücke 105 ein Nordbrücken-Chip sein, und die I/O-Brücke 107 kann ein Südbrücken-Chip sein. Ferner können die Kommunikationspfade 106 und 113 sowie andere Kommunikationspfade in dem Computersystem 100 unter Anwendung beliebiger technisch geeigneter Protokolle eingerichtet werden, wozu gehören, ohne Einschränkung, AGP (beschleunigter Graphikport), HyperTransport oder ein anderes Bus- oder Punkt-Zu-Punkt-Kommunikationsprotokoll, das im Stand der Technik bekannt ist.
-
In einigen Ausführungsformen umfasst das Parallelverarbeitungssubsystem 112 ein grafisches Subsystem, das Pixel an ein Anzeigegerät 110 liefert, das eine konventionelle Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine Anzeige mit lichtemittierenden Dioden oder dergleichen sein kann. In derartigen Ausführungsformen enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafik- und Videoverarbeitung optimiert ist, wozu beispielsweise eine Videoausgabeschaltung gehört. Wie nachfolgend detaillierter mit Bezug zu 2 beschrieben ist, kann eine derartige Schaltung über eine oder mehrere Parallelverarbeitungseinheiten (PPUs) hinweg vorgesehen sein, die in dem Parallelverarbeitungssubsystem 112 enthalten sind. In anderen Ausführungsformen enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die eine Verarbeitung für Allgemeinzwecke und/oder Rechenverarbeitung optimiert ist. Wiederum kann eine derartige Schaltung über eine oder mehrere PPUs hinweg integriert sein, die in dem Parallelverarbeitungssubsystem 112 enthalten sind und die ausgebildet sind, derartige Operationen für Allgemeinzwecke und/oder Berechnungen auszuführen. In noch anderen Ausführungsformen können die eine oder die mehreren PPUs, die in dem Parallelverarbeitungssubsystem 112 enthalten sind, ausgebildet sein, eine grafische Verarbeitung, eine Verarbeitung für Allgemeinzwecke und Rechenverarbeitungsoperationen auszuführen. Der Systemspeicher 104 enthält mindestens einen Gerätetreiber 103, der ausgebildet ist, die Verarbeitungsoperationen der einen oder mehreren PPUs in dem Parallelverarbeitungssubsystem 112 zu verwalten. Der Systemspeicher 104 enthält ferner eine Softwareanwendung 125, die in der CPU 102 ausgeführt wird und Befehle ausgeben kann, die den Betrieb der GPUs steuern.
-
In diversen Ausführungsformen kann das Parallelverarbeitungssubsystem 112 in einem oder mehreren der anderen Elemente aus 1 integriert sein, um ein einzelnes System zu bilden. Beispielsweise kann das Parallelverarbeitungssubsystem 112 mit der CPU 102 und anderer Verbindungsschaltung auf einem einzelnen Chip integriert sein, um ein System-auf-einem-Chip (SoC) zu bilden.
-
Es ist zu beachten, dass das hierin gezeigte System nur anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und der Anordnung von Brücken, die Anzahl von CPUs 102 und die Anzahl an Parallelverarbeitungssubsystemen 112 können nach Bedarf modifiziert werden. Beispielsweise könnte in einigen Ausführungsformen der Systemspeicher 104 mit der CPU 102 direkt anstatt über die Speicherbrücke 105 verbunden sein, und andere Einrichtungen könnten mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102 kommunizieren. In anderen alternativen Topologien kann das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt mit der Speicherbrücke 105 verbunden sein. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein, anstatt dass sie als einzelne oder mehrere diskrete Bauelemente vorhanden sind. Schließlich können in gewissen Ausführungsformen eine oder mehrere der in 1 gezeigten Komponenten nicht vorhanden sein. Beispielsweise könnte der Schalter 116 weggelassen werden, und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 könnten direkt mit der I/O-Brücke 107 verbunden sein.
-
2 ist eine Blockansicht einer Parallelverarbeitungseinheit (PPU) 202, die in dem Parallelverarbeitungssubsystem 112 aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist. Obwohl 2 eine einzelne PPU 202 zeigt, kann, wie zuvor angegeben ist, das Parallelverarbeitungssubsystem 112 eine beliebige Anzahl an PPUs 202 enthalten. Wie gezeigt, ist die PPU 202 mit einem lokalen Parallelverarbeitungs-(PP-)Speicher 204 verbunden. Die PPU 202 und der PP-Speicher 204 können realisiert werden, indem ein oder mehrere integrierte Schaltungsbauelemente, etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC) oder Speicherbauelemente verwendet werden, oder sie können in einer beliebigen anderen technisch machbaren Weise realisiert werden.
-
In einigen Ausführungsformen umfasst die PPU 202 eine grafische Verarbeitungseinheit (GPU), die ausgebildet sein kann, eine Grafikverarbeitungs-Pipeline zu realisieren, um diverse Operationen auszuführen, die mit der Erzeugung von Pixeldaten auf der Grundlage von Grafikdaten, die von der CPU 102 und/oder dem Systemspeicher 104 bereitgestellt werden, im Zusammenhang stehen. Wenn Grafikdaten verarbeitet werden, kann der PP-Speicher 204 als Grafikspeicher verwendet werden, der einen oder mehrere konventionelle Blockpuffer bzw. Bildpuffer enthält, und bei Bedarf auch ein oder mehrere Bilderzeugungsziele enthält. Unter anderem kann der PP-Speicher 204 eingesetzt werden, um Pixeldaten zu speichern und zu aktualisieren und um endgültige Pixeldaten oder Anzeigeblöcke an das Anzeigegerät 110 für die Anzeige zu übertragen. In einigen Ausführungsformen kann die PPU 202 auch für eine Verarbeitung für Allgemeinzwecke und Rechenoperationen ausgebildet sein.
-
Beim Betrieb ist die CPU 102 der übergeordnete Prozessor des Computersystems 100, um die Funktion anderer Systemkomponenten zu steuern und zu koordinieren. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPU 202 steuern. In einigen Ausführungsformen schreibt die CPU 102 einen Strom an Befehlen für die PPU 202 in eine Datenstruktur (die weder in 1 noch in 2 explizit gezeigt ist), die in dem Systemspeicher 104, in dem PP-Speicher 204 oder an einer anderen Speicherstelle angeordnet sein kann, auf die sowohl die CPU 102 als auch die PPU 202 zugreifen können. Ein Zeiger auf die Datenstruktur wird in einen Schiebepuffer geschrieben, um die Verarbeitung des Stroms an Befehlen in der Datenstruktur zu initiieren. Die PPU 202 liest Befehlsströme aus dem Schiebepuffer aus und führt dann Befehle asynchron zum Betrieb der CPU 102 aus. In Ausführungsformen, in denen mehrere Schiebepuffer erzeugt werden, können Prioritäten für die Ausführung für jeden Schiebepuffer durch ein Anwendungsprogramm über den Gerätetreiber 103 angegeben werden, um die Disponierung der unterschiedlichen Schiebepuffer zu steuern.
-
Wie ferner gezeigt ist, enthält die PPU 202 eine I/O-(Eingabe/Ausgabe-)Einheit 205, die mit dem Rest des Computersystems 100 über den Kommunikationspfad 113 und die Speicherbrücke 105 in Verbindung steht. Die I/O-Einheit 205 erzeugt Pakete (oder andere Signale) für die Übertragung auf dem Kommunikationspfad 113 und empfängt ferner alle eintreffenden Pakete (oder andere Signale) aus dem Kommunikationspfad 113, um die eintreffenden Pakete zu geeigneten Komponenten der PPU 202 weiterzuleiten. Beispielsweise können Befehle, die Verarbeitungsaufgaben betreffen, zu einer Hauptschnittstelle 206 gesendet werden, während Befehle, die Speicheroperationen (beispielsweise lesen aus dem PP-Speicher 204 oder speichern in denselben) betreffen, zu einer Kreuzungseinheit 210 geleitet werden können. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und sendet den in dem Schiebepuffer gespeicherten Befehlsstrom an einen Frontbereich 212.
-
Wie zuvor in Verbindung mit 1 erwähnt ist, kann die Verbindung der PPU 202 mit dem Rest des Computersystems 100 auch anders sein. In einigen Ausführungsformen ist das Parallelverarbeitungssubsystem 112, das zumindest eine PPU 202 enthält, als eine Zusatzkarte realisiert, die in einen Erweiterungssteckplatz des Computersystems 100 eingeführt werden kann. In anderen Ausführungsformen kann die PPU 202 zusammen mit einer Busbrücke, etwa der Speicherbrücke 105 oder der I/O-Brücke 107 auf einem einzelnen Chip integriert sein. Wiederum können in noch anderen Ausführungsformen einige oder alle Elemente der PPU 202 zusammen mit der CPU 102 in einer einzelnen integrierten Schaltung oder einem System-auf-einem-Chip (SoC) enthalten sein.
-
Während des Betriebs überträgt der Frontbereich 212 Verarbeitungsaufgaben, die von der Hauptschnittstelle 206 empfangen werden, zu einer Arbeitsverteilungseinheit (nicht gezeigt) in der Aufgaben/Arbeitseinheit 207. Die Arbeitsverteilungseinheit empfängt Zeiger auf Verarbeitungsaufgaben, die als Aufgaben-Metadaten (TMD) kodiert sind und in dem Speicher gespeichert sind. Die Zeiger auf die TMD sind in einem Befehlsstrom enthalten, der als ein Schiebepuffer gespeichert ist und von der Frontbereichseinheit 212 aus der Hauptschnittstelle 206 empfangen wird. Verarbeitungsaufgaben, die als TMD kodiert sein können, enthalten Indizes, die mit den zu verarbeitenden Daten verknüpft sind, sowie Zustandsparameter und Befehle, die festlegen, wie die Daten zu verarbeiten sind. Beispielsweise können die Zustandsparameter und Befehle das Programm festlegen, das an den Daten auszuführen ist. Die Aufgaben/Arbeitseinheit 207 empfängt Aufgaben aus dem Frontbereich 212 und stellt sicher, dass die GPCs 208 in einen zulässigen Zustand konfiguriert werden, bevor die Verarbeitungsaufgaben, die jeweils durch die TMD spezifiziert ist, initiiert werden. Es kann eine Priorität jeweils für die TMD angegeben werden, die verwendet wird, um die Ausführung der Verarbeitungsaufgaben zu disponieren. Verarbeitungsaufgaben können auch aus dem Verarbeitungs-Cluster-Array 230 empfangen werden. Optional können die TMD einen Parameter enthalten, der steuert, ob die TMD dem vorderen Teil oder dem hinteren Teil einer Liste von Verarbeitungsaufgaben (oder einer Liste von Zeigern auf die Verarbeitungsaufgaben) hinzugefügt werden, wodurch eine weitere Ebene an Steuerbarkeit neben der Ausführungspriorität bereitgestellt wird.
-
Die PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur auf der Grundlage eines Verarbeitungs-Cluster-Arrays 230, das eine Gruppe aus C allgemeinen Verarbeitungs-Clustern (GPCs) 208 enthält, wobei C ≥ 1 ist. Jeder GPC 208 ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) an Strängen gleichzeitig zu bearbeiten, wobei jeder Strang eine Instanz eines Programms ist. In diversen Anwendungen können unterschiedliche GPCs 208 für die Verarbeitung unterschiedlicher Arten von Programmen oder für die Ausführung unterschiedlicher Arten von Berechnungen zugewiesen werden. Die Zuweisung von GPCs 208 kann sich in Abhängigkeit der Arbeitslast, die für jede Art von Programm oder Berechnung auftritt, ändern.
-
Die Speicherschnittstelle 214 enthält eine Gruppe an D Partitionseinheiten 215, wobei D ≥ 1 ist. Jede Partitionseinheit 215 ist mit einem oder mehreren dynamischen Speichern mit wahlfreiem Zugriff (DRAM) 220 verbunden, die in dem PP-Speicher 204 liegen. In einer Ausführungsform ist die Anzahl an Partitionseinheiten 215 gleich der Anzahl an DRAM 220, und jede Partitionseinheit 215 ist mit einem anderen DRAM 220 verbunden. In anderen Ausführungsformen kann sich die Anzahl an Partitionseinheiten 215 von der Anzahl der DRAM 220 unterscheiden. Der Fachmann erkennt, dass ein DRAM 220 durch eine beliebige andere technische geeignete Speichereinrichtung ersetzt werden kann. Während des Betriebs können diverse Bilderzeugungsziele, etwa Texturkarten und Blockpuffer in den DRAM 220 gespeichert werden, so dass die Partitionseinheiten 215 Bereiche jedes Bilderzeugungsziels parallel beschreiben können, um effizient die verfügbare Bandbreite des PP-Speichers 204 auszunutzen.
-
Ein gegebener GPC 208 kann Daten verarbeiten, die in einen der DRAM 220 in dem PP-Speicher 204 zu schreiben sind. Die Kreuzungseinheit 210 ist ausgebildet, die Ausgabe jedes GPC 208 dem Eingang einer Partitionseinheit 215 oder einem anderen GPC 208 für die weitere Verarbeitung zuzuleiten. Die GPCs 208 kommunizieren mit der Speicherschnittstelle 214 über die Kreuzungseinheit 210, um diverse DRAMs 220 auszulesen oder zu beschreiben. In einer Ausführungsform hat die Kreuzungseinheit 210 eine Verbindung zu der I/O-Einheit 205 zusätzlich zu einer Verbindung zu dem PP-Speicher 204 über die Speicherschnittstelle 214, wodurch somit die Verarbeitungskerne in den unterschiedlichen GPCs 208 in der Lage sind, mit dem Systemspeicher 104 oder mit einem Speicher, der nicht lokal für die PPU 202 ist, zu kommunizieren. In der Ausführungsform aus 2 ist die Kreuzungseinheit 210 direkt mit der I/O-Einheit 205 verbunden. In diversen Ausführungsformen kann die Kreuzungseinheit 210 virtuelle Kanäle benutzen, um Verkehrsströme zwischen den GPCs 208 und den Partitionseinheiten 215 zu trennen.
-
Die GPCs 208 können dabei programmiert werden, Verarbeitungsaufgaben auszuführen, die eine Fülle von Anwendungen betreffen, wozu gehören, ohne Einschränkung: lineare und nichtlineare Datentransformationen, die Filterung von Video- und/oder Audiodaten, Modellierungsoperationen (beispielsweise die Anwendung physikalischer Gesetze zur Bestimmung von Position, Geschwindigkeit und anderen Attributen von Objekten), Bilderzeugungsoperationen (beispielsweise Programme für Parkettierungs-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel/Fragment-Schattierung), allgemeine Rechenoperationen, usw. Im Betrieb ist die PPU 202 ausgebildet, Daten aus dem Systemspeicher 104 und/oder dem PP-Speicher 204 zu einer oder mehreren chipinternen Speichereinheiten zu übertragen, die Daten zu verarbeiten und die Ergebnisdaten zurück in den Systemspeicher 104 und/oder den PP-Speicher 204 zu schreiben. Auf die Ergebnisdaten können dann andere Systemkomponenten zugegriffen, wozu die CPU 102, eine weitere PPU 202 in dem Parallelverarbeitungssubsystem 112 oder ein weiteres Parallelverarbeitungssubsystem 112 in dem Computersystem 100 gehören.
-
Wie zuvor angegeben ist, kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte bereitgestellt sein, oder mehrere Zusatzkarten können mit dem Kommunikationspfad 113 verbunden sein, oder eine oder mehrere der PPUs 202 können in einem Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen und/oder unterschiedliche Größen des PP-Speichers 204 aufweisen. In Ausführungsformen, in denen mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu gehören, ohne Einschränkung: Tischrechner, mobile Rechner, Personalcomputer in Form von Handgeräten oder andere Handgeräte, Dienstleister-Rechner, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen.
-
3 ist eine Blockansicht eines GPC 208, der in der PPU 202 aus 2 enthalten ist, gemäß einer Ausführungsform der vorliegenden Erfindung. Im Betrieb kann der GPC 208 ausgebildet sein, eine große Anzahl an Strängen parallel auszuführen, um eine Grafikverarbeitung, eine allgemeine Verarbeitung und/oder Rechenoperationen auszuführen. Im hierin verwendeten Sinne bezeichnet ein „Strang” eine Instanz eines speziellen Programms, das mit einer speziellen Gruppe an Eingangsdaten ausgeführt wird. In einigen Ausführungsformen werden Einzelbefehl-Mehrfachdaten-(SIMD-)Befehlsausgabetechniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an Strängen zu unterstützen, ohne dass mehrere unabhängige Befehlseinheiten bereitgestellt werden. In anderen Ausführungsformen werden Einzelbefehl-Mehrfach-Strang-(SIMT-)Techniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an generell synchronisierten Strängen zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die ausgebildet ist, Befehle an eine Gruppe von Verarbeitungseinheiten in dem GPC 208 auszugeben. Anders als ein SIMD-Ausführungsregime, in welchem alle Verarbeitungseinheiten typischerweise identische Befehle ausführen, erlaubt eine SIMT-Ausführung, dass unterschiedliche Stränge effizienter divergenten Ausführungspfaden in einem gegebenen Programm folgen. Der Fachmann erkennt, dass ein SIMD-Verarbeitungsregime eine funktionale Untergruppe eines SIMT-Verarbeitungsregimes repräsentiert.
-
Der Betrieb des GPC 208 wird von einem Pipeline-Verwalter 305 gesteuert, der Verarbeitungsaufgaben, die aus einer Arbeitsverteilungseinheit (nicht gezeigt) in der Aufgaben/Arbeitseinheit 207 empfangen werden, auf einen oder mehrere Datenstrom-Multiprozessoren (SM) 310 verteilt. Der Pipeline-Verwalter 305 kann ferner ausgebildet sein, eine Arbeitsverteilungskreuzungseinheit 330 zu steuern, indem Ziele für verarbeitete Daten angegeben werden, die von den SM 310 ausgegeben werden.
-
In einer Ausführungsform enthält der GPC 208 eine Gruppe an P SM 310, wobei P ≥ 1 ist. Ferner enthält jeder SM 310 eine Gruppe an Funktionsausführungseinheiten (nicht gezeigt), etwa Ausführungseinheiten und Lade-Speichereinheiten. Verarbeitungsoperationen, die speziell für jeweilige Funktionsausführungseinheiten sind, können als Pipeline ausgeführt werden, wodurch es möglich ist, dass ein neuer Befehl für die Ausführung ausgegeben wird, bevor ein vorhergehender Befehl die Ausführung abgeschlossen hat. Es kann eine beliebige Kombination an funktionalen Ausführungseinheiten innerhalb eines gegebenen SM 310 bereitgestellt werden. In diversen Ausführungsformen können die funktionalen Ausführungseinheiten ausgebildet sein, eine Vielzahl unterschiedlicher Operationen zu unterstützen, wozu Ganzzahlarithmetik und Gleitkommaarithmetik (beispielsweise Addition und Multiplikation), Vergleichsoperationen, Bool'sche Operationen (UND, ODER, EXKLUSIV ODER), Bit-Verschiebung und Berechnung diverser algebraischer Funktionen gehören (beispielsweise ebene Interpolation und trigonometrische, exponentielle und logarithmische Funktionen usw.). Vorteilhafterweise kann die gleiche funktionale Ausführungseinheit ausgebildet sein, unterschiedliche Operationen auszuführen.
-
Im Betrieb ist jeder SM 310 ausgebildet, eine oder mehrere Stranggruppen zu verarbeiten. Im hierin verwendeten Sinne bezeichnet eine „Stranggruppe” oder „Kette” eine Gruppe an Strängen, die gleichzeitig das gleiche Programm an unterschiedlichen Eingangsdaten ausführen, wobei ein Strang der Gruppe einer anderen Ausführungseinheit innerhalb eines SM 310 zugewiesen ist. Eine Stranggruppe kann weniger Stränge als die Anzahl an Ausführungseinheiten innerhalb des SM 310 aufweisen, in welchem Falle die Ausführung während gewisser Zyklen stillsteht, wenn die Stranggruppe verarbeitet wird. Eine Stranggruppe kann auch mehr Stränge als die Anzahl an Ausführungseinheiten in dem SM 310 enthalten, in welchem Falle die Verarbeitung sich über mehrere aufeinander folgender Taktzyklen erstrecken kann. Da jeder SM 310 bis zu G Stranggruppen gleichzeitig handhaben kann, ergibt sich, dass bis zu G·P Stranggruppen in einem GPC 208 zu jeder Zeit ausgeführt werden können.
-
Ferner können mehrere miteinander in Beziehung stehende Stranggruppen (in unterschiedlichen Phasen der Ausführung) gleichzeitig innerhalb eines SM 310 aktiv sein. Diese Ansammlung von Stranggruppen wird hierin als ein „kooperatives Strang-Array” („CTA”) oder „Strang-Array” bezeichnet. Die Größe eines speziellen CTA ist gleich p·k, wobei k die Anzahl gleichzeitig ausgeführter Stränge in einer Stranggruppe ist, was typischerweise ein ganzzahliges Vielfaches der Anzahl an Ausführungseinheiten innerhalb des SM 310 ist, und wobei p die Anzahl an Stranggruppen ist, die gleichzeitig in dem SM 310 aktiv sind.
-
Obwohl dies in 3 nicht gezeigt ist, enthält jeder SM 310 einen Cache-Speicher der Ebene eins (L1) oder verwendet Speicherplatz in einem entsprechenden L1-Cache-Speicher außerhalb des SM 310, um unter anderem Lade-und Speicheroperationen zu handhaben, die von den Ausführungseinheiten ausgeführt werden. Jeder SM 310 hat auch Zugriff zu Cache-Speichern der Ebene zwei (L2) (nicht gezeigt), die von allen GPCs 208 in der PPU 202 gemeinsam benutzt werden. Die L2-Cache-Speicher können verwendet werden, um Daten zwischen Strängen auszutauschen. Schließlich können die SM 310 auch Zugriff auf einen Chip externen „globalen” Speicher haben, der den PP-Speicher 204 und/oder den Systemspeicher 104 enthalten kann. Zu beachten ist, dass jeder Speicher außerhalb der PPU 202 als ein globaler Speicher verwendet werden kann. Wie ferner in 3 gezeigt ist, kann ein Cache-Speicher der Ebene eins-Punkt-fünf (L1.5) in dem GPC 208 enthalten und ausgebildet sein, Daten zu empfangen und zu halten, die von dem Speicher über die Speicherschnittstelle 214 von den SM 310 angefordert wurden. Derartige Daten können umfassen, ohne Einschränkung, Befehle, gleichförmige Daten und konstante Daten. In Ausführungsformen mit mehreren SM 310 in dem GPC 208 können die SM 310 vorteilhaft gemeinsame Befehle und Daten, die in dem L1.5-Cache-Speicher 335 zwischengespeichert sind, gemeinsam nutzen.
-
Jeder GPC 208 kann eine zugehörige Speicherverwaltungseinheit (MMU) 320 aufweisen, die ausgebildet ist, virtuelle Adressen auf physikalische Adressen abzubilden. In diversen Ausführungsformen kann die MMU 320 in dem GPC 208 oder in der Speicherschnittstelle 214 angeordnet sein. Die MMU 320 enthält eine Gruppe aus Seitentabelleneinträgen (PTE), die verwendet wird, um eine virtuelle Adresse auf eine physikalische Adresse einer Kachel oder einer Speicherseite oder optional einen Cache-Zeilenindex abzubilden. Die MMU 320 kann Adressen-Translations-Nebenschaupuffer (TLB) oder Cache-Speicher enthalten, die in den SM 310 oder in einem oder mehreren L1-Cache-Speichern oder innerhalb des GPC 208 liegen.
-
In grafischen Anwendungen und Rechenanwendungen kann der GPC 208 derart ausgebildet sein, dass jeder SM 310 mit einer Textureinheit 315 verbunden ist, um Texturzuordnungsoperationen auszuführen, etwa die Ermittlung von Texturabtastpositionen, Auslesen von Texturdaten und Filtern der Texturdaten.
-
Im Betrieb sendet jeder SM 310 eine verarbeitete Aufgabe zu der Arbeitsverteilungskreuzungseinheit 330, um die verarbeitete Aufgabe einem weiteren GPC 208 für die Weiterverarbeitung zuzuführen, oder um die verarbeitete Aufgabe in einem L2-Cache-Speicher (nicht gezeigt), in dem Parallelverarbeitungsspeicher 204 oder in dem Systemspeicher 104 über die Kreuzungseinheit 210 zu speichern. Ferner ist eine Vor-Rasteroperations-(Vor-ROP)Einheit 325 ausgebildet, Daten aus dem SM 310 zu empfangen, Daten zu einer oder mehreren Rasteroperations-(ROP-)Einheiten in den Partitionseinheiten 215 zu senden, Optimierungen für die Farbmischung auszuführen, Pixelfarbdaten zu verwalten und Adressenübersetzungen auszuführen.
-
Zu beachten ist, dass die hierin beschriebene Kernarchitektur anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Unter anderem kann eine beliebige Anzahl an Verarbeitungseinheiten, etwa SM 310, Textureinheiten 315 oder Vor-ROP-Einheiten 325 in dem GPC 208 enthalten sein. Wie ferner zuvor in Verbindung mit 2 beschrieben ist, kann die PPU 202 eine beliebige Anzahl an GPCs 208 enthalten, die funktionell ähnlich zueinander ausgebildet sein können, so dass das Ausführungsverhalten nicht davon abhängt, welcher GPC 208 welche spezielle Verarbeitungsaufgabe empfängt. Ferner kann jeder GPC 208 unabhängig zu anderen GPCs 208 in der PPU 202 arbeiten, um Aufgaben für ein oder mehrere Anwendungsprogramme auszuführen. Im Lichte des zuvor Gesagten kann der Fachmann erkennen, dass die in den 1–3 beschriebene Architektur in keiner Weise einschränkend für den Schutzbereich der vorliegenden Erfindung ist.
-
Ausführung von Objekterkennungsoperationen
-
Es gilt wieder, dass die Softwareanwendung 125 die PPU 202 konfiguriert, um eine große Anzahl an Strängen parallel auszuführen, um grafische Operationen, Operationen für allgemeine Verarbeitung und/oder Rechenoperationen auszuführen. Insbesondere ist die PPU 202 für Operationen als Teil der Erfassung von Instanzen eines Objekts oder einer Objektklasse (beispielsweise Gesichter, Tiere, Symbole, Fußgänger, usw.) mit mehreren Skalierungsstufen in Bildern konfiguriert. In einigen Ausführungsformen können die CPU 102 und die PPU 202 ausgebildet sein, gemeinsam eine Objekterfassung bzw. Objekterkennung in zwei allgemeinen Schritten auszuführen – ein Trainingsschritt und ein Ausführungsschritt. Vorteilhafterweise sind die CPU 102 und die PPU 202 ausgebildet, eine Objekterkennung unter Anwendung von Merkmalen eines mehrblöckigen lokalen Binärmusters (MB-LBP) realisieren, die in effizienter Weise unterscheidende Bildstrukturen in Verbindung mit einer Zufalls-Wald-Klassifizierungseinheit (RF) wiedergeben, die an die parallele Architektur der PPU 202 anpassbar ist.
-
In einer Ausführungsform führt die CPU 102 den Trainingsschritt in zwei aufeinanderfolgenden Phasen aus. Zuerst trainiert in einer anfänglichen Phase die CPU 102 die RF-Klassifizierungseinheit, um zwischen Bildern, die Objekte enthalten (hierin auch als interessierende Objekte bezeichnet) und Nicht-Objekte (die auch hierin als nicht interessierende Objekte bezeichnet sind) enthalten, auf der Grundlage einer anfänglichen Ansammlung an MB-LBP-Merkmalen. Anzumerken ist, dass die CPU 102 zufällig die anfängliche Ansammlung an MB-LBP-Merkmalen aus einer relativ großen Menge möglicher MB-LBP-Merkmale auswählt. Die CPU 102 analysiert dann die trainierte RF-Klassifizierungseinheit, um in vernünftiger Weise eine reduzierte Ansammlung an MB-LBP-Merkmalen auszuwählen, die in optimaler Weise zwischen den Objekten und den Nicht-Objekten unterscheiden. Nachfolgend setzt in einer reduzierten Phase die CPU 102 die RF-Klassifizierungseinheit in einen anfänglichen Zustand zurück und trainiert die RF-Klassifizierungseinheit erneut auf der Grundlage der reduzierten Ansammlung an MB-LBP-Merkmalen. Da die CPU 120 die reduzierte Ansammlung an MB-LBP-Merkmalen auf der Grundlage der gezeigten Unterscheidungsfähigkeit der MB-LBP-Merkmale auswählt, wird die Effektivität der erneut trainierten RF-Klassifizierungseinheit höher im Vergleich zu der anfänglich trainierten RF-Klassifizierungseinheit. Folglich können die Tiefe und die Breite der RF-Klassifizierungseinheit im Vergleich zu konventionell trainierten Klassifizierungseinheiten reduziert werden – ohne Genauigkeit einzubüßen. Daher können die Zeit und der Speicher, die zum Ausführen einer Objekterkennung unter Anwendung der RF-Klassifizierungseinheit erforderlich sind, verringert werden, während die Genauigkeit der Ergebnisse erhöht wird.
-
Nachdem die CPU 102 die RF-Klassifizierungseinheit trainiert hat, arbeiten die CPU 102 und die PPU 202 zusammen, um den Ausführungsschritt der Objekterfassung bzw. Objekterkennung auszuführen. Anzumerken ist, dass die CPU 102 die RF-Klassifizierungseinheit auf mehrere skalierte Versionen eines Eingangsbildes anwendet, wodurch der Objekterkennung für mehrere Skalierungsstufen in dem Eingangsbild ausgeführt wird. Die PPU 202 unterteilt jedes skalierte Bild in Gruppen an Pixel und kopiert die Bilddaten, die mit jeder Gruppe an Pixel verknüpft sind, die als ein „Speicherfleck bzw. Speicherabschnitt” bekannt sind, von dem Systemspeicher 104 in den PP-Speicher 204. Für jede Gruppe an Pixel verknüpft die PPU 202 einen anderen Strang mit jedem Pixel, das in der Gruppe an Pixel enthalten ist, und veranlasst dann, dass die Stränge gleichzeitig die Gruppe an Pixel verarbeiten. Genauer gesagt, jeder Strang verarbeitet Bilddaten, die in dem Speicherfleck enthalten sind, berechnet das MB-LBP-Merkmal des zugehörigen Pixel und wendet die RF-Klassifizierungseinheit auf das zugehörige Pixel an, um zu ermitteln, ob das Pixel mit dem interessierenden Objekt verknüpft ist. Vorteilhafterweise wendet die PPU 202 die gleiche Anzahl und die gleiche Art an Operationen für jedes Pixel an, wodurch die SIMD-Eigenschaften der PPU 202 ausgenutzt werden. Im Gegensatz dazu wendet eine Verarbeitungseinheit, die eine Objekterkennung unter Anwendung einer konventionellen kaskadierten Klassifizierungseinheit ausführt, typischerweise eine andere Anzahl und/oder Art von Operationen auf jedes Pixel an, und nutzt daher nicht die vollen Möglichkeiten der parallelen Verarbeitungseigenschaften der Verarbeitungseinheit.
-
4 ist eine Konzeptansicht, die zeigt, wie ein Merkmal des mehrblöckigen lokalen Binärmusters (MB-LBP) 410 gemäß einer Ausführungsform der vorliegenden Erfindung berechnet werden kann. Jedes MB-LBP-Merkmal 410 gehört zu einem speziellen Pixel und zusammen kodiert eine Gruppe an MB-LBP-Merkmalen 410 lokale Bildtexturen – wodurch effizient ein weiter Bereich von Bildstrukturen über einen weiten Bereich von Skalierungsstufen und Positionen abgedeckt wird. Vorteilhafterweise sind MB-LBP-Merkmale 410 robust im Hinblick auf lokale Beleuchtungsschwankungen, kodieren Signalunterschiede in allen Richtungen und sind einfach zu berechnen. Im Gegensatz dazu sind Haar-Merkmale (eine alternative Merkmalsdarstellung) weniger robust im Hinblick auf Belichtungsbedingungen und kodieren keine Unterschiede im Signal in allen Richtungen.
-
Als Teil des Trainingsschritts berechnet die PPU 202 die MB-LBP-Merkmale 410, die mit Bildern der interessierenden Objekte und mit Bildern der nicht interessierenden Objekte verknüpft sind. Nachfolgend berechnet als Teil des Ausführungsschritts die PPU 202 die MB-LBP-Merkmale 410, die mit dem Eingangsbild und einer Version mit geeigneter Größe der Eingangsbilder verknüpft sind. In einigen Ausführungsformen berechnet die PPU 202 die MB-LBP-Merkmale 410 über mehrere sequenzielle Bildblöcke (beispielsweise Video) hinweg. In alternativen Ausführungsformen kann die CPU 102 ausgebildet sein, die MB-LBP-Merkmale 410 der Bilder der interessierenden Objekte und der Bilder der nicht interessierenden Objekte anstelle oder in Verbindung mit der PPU 202 zu berechnen. In anderen Ausführungsformen kann die CPU 102 ausgebildet sein, die MB-LBP-Merkmale 410 der Eingangsbilder und der Version mit geänderter Größe der Eingangsbilder anstatt oder in Verbindung mit der PPU 202 zu berechnen. Beim Betrieb zeugt vor der Berechnung der MB-LBP-Merkmale 410 die CPU 102 eine Graustufe des Bildes und berechnet eine zugehörige Datenstruktur, die als ein „integrales Bild” bekannt ist. Das integrale Bild ermöglicht es der PPU 202, den Mittelwert der Graustufenwerte, die in einem Block an Pixel mit festgelegter Größe enthalten sind, effizient zu berechnen.
-
Die PPU 202 berechnet das MB-LBP-Merkmal 410 eines speziellen Pixel auf der Grundlage der Graustufenwerte von Pixel, die in einer nahe gelegenen Gruppe an Pixel, die als ein Pixelfenster 408 bekannt sind, enthalten sind. Wie gezeigt, ist das Pixelfenster 408 ein zweidimensionales Feld bzw. Array aus 54 Pixel, die in sechs Zeilen und neun Spalten angeordnet sind. Jedes Pixelfenster 408 enthält neun Blöcke mit festgelegter Größe 402 an Pixel, die in drei Zeilen und drei Spalten angeordnet sind. Wie explizit für den oberen linken Block 402(0) gezeigt ist, ist jeder Block 402 ein zweidimensionales Array aus sechs Pixel, die in zwei Reihen und drei Spalten angeordnet sind. In anderen Ausführungsformen können das Pixelfenster 408 und die Blöcke 402, die in dem Pixelfenster 408 enthalten sind, eine beliebige Abmessung und ein beliebiges Aspektverhältnis besitzen. Für ein spezielles Pixel kann ferner das entsprechende Pixelfenster 408 in einer beliebigen technisch machbaren Weise ermittelt werden. Für ein Pixel an einer Position (4, 3) kann beispielsweise das Pixelfenster 408 Pixel enthalten, die in dem rechteckigen Gebiet enthalten sind, das von der Position (0, 0) und der Position (9, 6) begrenzt ist. Alternativ kann das Pixelfenster 408 Pixel in dem rechteckigen Gebiet enthalten, das von der Position (4, 3) und der Position (13, 9) begrenzt ist.
-
Im Betrieb berechnet die PPU 202 das MB-LBP-Merkmal 410 der Pixel in zwei Schritten. In dem ersten Schritt berechnet die PPU 202 den gemittelten Graustufenwert 404 jedes der neun Blöcke 402. Wie gezeigt, enthält der Block 402(0) die Graustufenwerte 6, 8, 8, 6, 6 und 8. Daher berechnet die PPU 202 einen Wert von sieben für den gemittelten Graustufenwert 404(0) des Blocks 402(0). Wie ferner gezeigt ist, berechnet die PPU 202 einen Wert von neun für den gemittelten Graustufenwert 404(8) eines zentralen Blocks 402(8), einen Wert von 19 für den gemittelten Graustufenwert 404(4) des unteren rechten Blocks 402(4) und Werte von acht, zwölf, elf, zwanzig, sechs und acht für die gemittelten Graustufenwerte 404 der verbleibenden Blöcke 402.
-
In dem zweiten Schritt – Schwellwertbildung 415 – erzeugt die PPU 202 die Werte, die das MB-LBP-Merkmal 410 repräsentieren. Im Betrieb subtrahiert die PPU 202 den gemittelten Graustufenwert des zentralen Blocks 402 von jedem der gemittelten Graustufenwerte 404 der acht Blöcke 402, die den zentralen Block 404 umgeben. Die PPU 202 kodiert dann die Vorzeichen dieser Differenzen. Wenn das Vorzeichen der Differenz, die mit einem speziellen Block 402 verknüpft ist, streng negativ ist, dann setzt die PPU 202 den Vorzeichenwert, der mit dem speziellen Block 402 verknüpft ist, auf ein binäres „0”. Wenn andererseits das Vorzeichen der Differenz, die mit dem speziellen Block 402 verknüpft ist, nicht streng negativ ist, dann setzt die PPU 202 den Vorzeichenwert, der mit dem speziellen Block 402 verknüpft ist, auf ein binäres „0”. Wie gezeigt, berechnet die PPU 202 acht Vorzeichenwerte 0, 0, 1, 1, 1, 1, 0 und 0. Nachfolgend führt die PPU 202 eine Verkettungsoperation an den acht Vorzeichenwerten aus, um das MB-LBP-Merkmal 410 als „00111100” zu berechnen.
-
Das MB-LBP-Merkmal 410 kann visuell ausgedrückt werden – Beschreibung 425. Das graue Recheck repräsentiert den zentralen Block 402, die schwarzen Rechtecke repräsentieren die Blöcke 402, die mit Vorzeichenwerten von „0” verknüpft sind, und die nicht ausgefüllten Rechtecke repräsentieren die Blöcke 402, die mit Vorzeichenwerten von „1” verknupft sind.
-
5 ist eine Konzeptansicht, die darstellt, wie eine Zufalls-Wald-(RF-)Klassifizierungseinheit 510 trainiert werden kann gemäß einer Ausführungsform der vorliegenden Erfindung. Wie der Fachmann erkennt, ist die Menge an Operationen, die zur Ausführung der Trainingsphase der Objekterkennung erforderlich ist, wesentlich größer als die Menge an Operationen, die zur Ausführung der Ausführungsphasen der Objekterkennung erforderlich ist. Ferner ist die überwiegende Mehrheit der Operationen, die zur Ausführung der Ausführungsphase der Objekterkennung erforderlich sind, Entscheidungsoperationen, die zwischen Objekten und Nicht-Objekten unterscheiden. Vorteilhafterweise trainiert die CPU 102 die RF-Klassifizierungseinheit 510 in zwei Schritten, die so gestaltet sind, dass die Anzahl der Entscheidungsoperationen reduziert wird, die zur genauen Unterscheidung zwischen Objekten und Nicht-Objekten erforderlich sind, und die Gestaltung ist auch so, dass die Erkennungsgenauigkeit im Vergleich zu konventionellen Klassifizierungseinheit verbessert wird.
-
Wie gezeigt, enthält die RF-Klassifizierungseinheit 510 einen oder mehrere identisch strukturierte unabhängige Entscheidungsbäume 520. Zu beachten ist, dass die CPU 102 anfänglich die RF-Klassifizierungseinheit 510 so konfiguriert, dass sie eine Gruppe an F unabhängigen Entscheidungsgründen 520 enthält, wobei F ≥ 1 ist. Nachfolgend setzt die CPU 102 die RF-Klassifizierungseinheit 410 zurück, so dass sie eine Gruppe an G unabhängigen Entscheidungsbäumen 520 enthält, wobei F ≥ D ≥ 1. Beispielsweise kann die CPU 102 anfänglich die RF-Klassifizierungseinheit 510 so konfigurieren, dass sie 1024 Entscheidungsbäume 520 enthält, und nachfolgend kann die CPU 102 die RF-Klassifizierungseinheit 510 zurücksetzen, so dass sie 32 Entscheidungsbäume 520 enthält. Im Betrieb kann die CPU 102 die Anzahl der Entscheidungsbäume 520, die in der RF-Klassifizierungseinheit 410 enthalten ist, in Verbindung mit der Optimierung der Teilgruppe an MB-LBP-Merkmalen 410, die zum Trainieren der RF-Klassifizierungseinheit 510 verwendet wird, reduzieren. Zu beachten ist, dass jeder der Entscheidungsbäume 520 eine gleiche Tiefe 550 und identisch strukturierte Zweige aufweist. In anderen Ausführungsformen kann die CPU 102 die gleiche Tiefe 550 in Verbindung mit der Zurücksetzung der RF-Klassifizierungseinheit 510 ändern. Jedoch sind über eine spezielle trainierte RF-Klassifizierungseinheit 510 hinweg die Entscheidungsbäume 520 von gleicher Tiefe 550.
-
Wie gezeigt, erzeugt anfänglich die CPU 102 die RF-Klassifizierungseinheit 510 und trainiert die RF-Klassifizierungseinheit 510 auf der Grundlage einer anfänglichen Ansammlung 505 an MB-LBP-Merkmalen. Zu beachten ist, dass die anfängliche MB-LBP-Merkmalsansammlung 505 eine zufällig ausgewählte Teilmenge der Gruppe aller möglicher MB-LBP-Merkmale 410 ist. Generell ist die Gruppe aller möglichen MB-LBP-Merkmale 410 wesentlich größer als die zufällig ausgewählte Ansammlung 505 an MB-LBP-Merkmalen. Die CPU 102 erzeugt die anfängliche Ansammlung 505 an MB-LBP-Merkmalen in einer beliebigen technisch machbaren Weise. Beispielsweise erkennt der Fachmann, dass die CPU 102 die anfängliche Ansammlung 505 an MB-LBP-Merkmalen durch „Einsackung” erzeugen kann.
-
Nachfolgend wählt für jeden Entscheidungsbaum 520, der in der RF-Klassifizierungseinheit 510 enthalten ist, die CPU 102 eine zufällige Teilmenge an Merkmalen aus der anfänglichen Ansammlung 505 aus MB-LBP-Merkmalen aus. Die CPU 102 trainiert dann jeden Entscheidungsbaum 520 für eine Gruppe aus „positiven” Bildern, die interessierende Objekte enthalten, und mit einer Gruppe aus „negativen” Bildern, die keine interessierenden Objekte enthalten. Bei jeder Aufteilung in dem Entscheidungsbaum 520 wählt die CPU 102 zufällig eine Teilmenge der MB-LBP-Merkmale 410 aus, die in dem Entscheidungsbaum 520 enthalten sind. Die CPU 102 analysiert dann diese Teilmenge der anfänglichen Ansammlung 505 an MB-LBP-Merkmalen, um das MB-LBP-Merkmal 410 zu ermitteln, dass am genauesten zwischen den positiven Bildern und den negativen Bildern unterscheidet. Die CPU 102 wählt dieses lokal am besten unterscheidende MB-LBP-Merkmal 410 für die Aufteilung aus.
-
Nachdem die CPU 102 alle Entscheidungsbäume 520(0) bis 520(F – 1) trainiert hat, analysiert die CPU 102 die anfänglich trainierte RF-Klassifizierungseinheit 510, um die Häufigkeit zu berechnen, mit der jedes der MB-LBP-Merkmale 410 als eine Aufteilung in den Entscheidungsbäumen 520 auftritt. Generell bewertet die CPU 102 die Entscheidungsfähigkeit eines speziellen MB-LBP-Merkmals 410 auf der Grundlage dieser Häufigkeit. Beispielsweise kann in einigen Ausführungsformen die CPU 102 ausgebildet sein zu ermitteln, dass ein MB-LBP-Merkmal 410, das als Aufteilung weniger als sechs Mal in den 1024 Entscheidungsbäumen 520 auftritt, keine verwertbare Unterscheidungsfähigkeit besitzt. Generell wählt die CPU 102 die Teilmenge der stärksten unterscheidenden MB-LBP-Merkmale 410 als eine reduzierte Ansammlung 565 an MB-LBP-Merkmalen aus. Beispielsweise wählt in einigen Ausführungsformen die CPU 102 alle MB-LBP-Merkmale 410 aus, die in einer Aufteilung mehr als acht mal in den Entscheidungsbäumen 520 auftreten.
-
Die CPU 102 setzt dann die RF-Klassifizierungseinheit 510 in einen nicht trainierten Zustand zurück. In einigen Ausführungsformen reduziert die CPU 102 die Anzahl an Entscheidungsbäumen 520, die in der RF-Klassifizierungseinheit 510 enthalten sind. Nachfolgend wählt die CPU 102 für jeden der Entscheidungsbäume 520(0) bis 520(F – 1) eine zufällige Teilmenge an Merkmalen aus der reduzierten Ansammlung 565 an MB-LBP-Merkmalen aus. Die CPU 102 trainiert jeden Entscheidungsbaum 520 erneut mit der Gruppe positiver Bilder und der Gruppe negativer Bilder. Bei der Aufteilung in dem Entscheidungsbaum 520 wählt die CPU 102 zufällig eine Teilmenge der MB-LBP-Merkmale 410 aus, die in dem Entscheidungsbaum 520 enthalten sind. Die CPU 102 analysiert dann diese Teilmenge der reduzierten Ansammlung 565 an MB-LBP-Merkmalen, um das MB-LBP-Merkmal 410 zu ermitteln, dass die genaueste Unterscheidung zwischen den positiven Bildern und der negativen Bildern bietet. Die CPU 102 wählt dieses lokal am stärksten unterscheidende MB-LBP-Merkmal 410 für die Aufteilung aus.
-
Vorteilhafterweise verbessert diese Trainingstechnik mit zwei Durchlaufen deutlich das Leistungsverhalten der RF-Klassifizierungseinheit 510. Insbesondere wird die Genauigkeit, mit der die RF-Klassifizierungseinheit 510 Objekte erkennt, verbessert im Vergleich zu konventionell trainierten Klassifizierungseinheiten mit vergleichbarer Größe. Ferner kann die Softwareanwendung 125 die gleiche Tiefe 510 der RF-Klassifizierungseinheit 510 und/oder die Anzahl der Entscheidungsbäume 520, die in der RF-Klassifizierungseinheit 510 enthalten sind, auf der Grundlage von Zeit- und Genauigkeitsrandbedingungen der Softwareanwendung 125 einstellen. In anderen Ausführungsformen kann die PPU 202 ausgebildet sein, eine oder mehrere in dem Trainingsschritt enthaltene Operationen auszuführen.
-
6 ist eine Konzeptansicht einer Bildpyramide 600 gemäß einer Ausführungsform der vorliegenden Erfindung. Um Objekte in einem Eingangsbild in einer Vielzahl von unterschiedlichen Skalierungsstufen zu erkennen, führt die CPU 102 Operationen zur Größenänderung an dem Eingangsbild aus, um die Bildpyramide 600 zu erzeugen. Daraufhin arbeiten die CPU 102 und die PPU 202 zusammen, um eine Objekterkennung an der Bildpyramide 600 auszuführen.
-
Wie gezeigt, enthält die Bildpyramide 600 eine Gruppe aus N skalierten Bildern 620, wobei N ≥ 1. Jedes der skalierten Bilder 620 repräsentiert das Eingangsbild mit einer anderen Vergrößerung. Beispielsweise kann ein erstes skaliertes Bild 620(0) eine vergrößerte Version des Eingangsbild repräsentieren, ein zweites skaliertes Bild 620(1) kann das Originalbild repräsentieren, und ein drittes skaliertes Bild 620(2) kann eine verkleinerte Version des Eingangsbild repräsentieren.
-
Für jedes der skalierten Bilder 620 erzeugt die CPU 102 eine Graustufe des Bildes und berechnet das integrale Bild, das mit den skalierten Bilder 620 verknüpft ist. Wie zuvor hierin erläutert ist, teilt dann die CPU 102 das skalierte Bild 620 in Speicherflecken 650 ein. Jeder Speicherfleck 650 gehört zu einer Gruppe an Pixel. Ferner ist jedes Pixel mit einem speziellen Pixelfenster 408 verknüpft. Die Größe und das Aspektverhältnis des Speicherflecks 650 und des Pixelfensters 408 können auf beliebige technisch machbare Weise ermittelt werden. Beispielsweise kann die CPU 102 die Größe und das Aspektverhältnis des Pixelfensters 408 auf der Grundlage der Anzahl an Strängen in der Kette ermitteln. Ferner kann die CPU 102 die Größe und das Aspektverhältnis des Speicherflecks auf der Grundlage der Größe und des Aspektverhältnisses des Pixelfensters 408 und der Architektur der PPU 202 ermitteln.
-
Als Teil des Ausführungsschritts der Objekterkennung kopiert die PPU 202 die trainierte RF-Klassifizierungseinheit 510 aus dem Systemspeicher 104 in den PP-Speicher 204. Nachfolgend wählt die PPU 202 eine Gruppe an Pixel aus und ordnet jeweils einen anderen Strang in dem Pixel zu, das in der Gruppe an Pixel enthalten ist. Die PPU 202 wählt ein spezielles skaliertes Bild 620 aus und kopiert den Speicherfleck 650, der sowohl zu der ausgewählten Gruppe an Pixel und dem ausgewählten skalierten Bild 620 gehört, aus dem Systemspeicher 104 in den PP-Speicher 204. Die PPU 202 veranlasst dann, dass die Stränge gleichzeitig die RF-Klassifizierungseinheit 510 auf die Pixel, die in der Gruppe an Pixel enthalten sind, anwenden. Die PPU 202 kann dann die RF-Klassifizierungseinheit 510 in beliebiger technisch machbarer Weise speichern und anwenden. Beispielsweise kann die PPU 202 die RF-Klassifizierungseinheit 510 in Tabellenformspeichern in einer Reihenfolge zur Durchsuchung in der Breite zuerst, und wenn die PPU 202 die Gruppe an Pixel verarbeitet, greifen die unterschiedlichen Stränge auf diverse Positionen in der Tabelle zu. In anderen Ausführungsformen kann die PPU 202 eine beliebige Anzahl an Strängen zuweisen, um eine beliebige Anzahl an Pixel zu verarbeiten, und sie braucht auch nicht alle Pixel zu verarbeiten, die in allen skalierten Bildern 620 enthalten sind. Beispielsweise ist in einigen Ausführungsformen die PPU 202 ausgebildet, nur abwechselnd vorliegende Pixel, die in größeren skalierten Bildern 620 enthalten sind, zu verarbeiten.
-
Zunächst berechnet jeder Strang die erforderlichen MB-LBP-Merkmale 410 des zugeordneten Pixel auf der Grundlage der Teilmenge an Daten, die in dem Speicherfleck 650 enthalten sind, der dem Pixelfenster 408 entspricht, das dem zugewiesenen Pixel zugeordnet ist. Nachfolgend wendet jeder Strang sequenziell jeden Entscheidungsbaum 520, der in der RF-Klassifizierungseinheit 510 enthalten ist, auf das zugewiesene Pixel an. Schließlich erzeugt jeder Strang einen Objektkonfidenzwert, der die Wahrscheinlichkeit der Anwesenheit des Objekts an der Position des zugewiesenen Pixel repräsentiert, auf der Grundlage der einzelnen Bestimmungen in jedem der Entscheidungsbäume 520.
-
Wie gezeigt, enthält in einer Ausführungsform jedes Pixelfenster 408 480 Pixel, die in 20 Spalten und 24 Reihen angeordnet sind. Folglich wird, wie zuvor hierin offenbart ist, das MB-LBP-Merkmal 410, das mit einem jeweiligen Pixel verknüpft ist, auf der Grundlage einer Gruppe von 480 Pixel berechnet. Ferner enthält jeder Speicherfleck 650 die Bilddaten für 256 Pixelfenster 408, die in 32 Spalten und 8 Zeilen angeordnet sind. Daher enthält jeder Speicherfleck 650 Bilddaten für 1664 Pixel, die in 52 Spalten und 32 Reihen angeordnet sind. Die in einem speziellen Speicherfleck 650 enthaltenen Bilddaten ermöglichen es der PPU 202, die MB-LBP-Merkmale 410 zu ermitteln, die mit einer Gruppe aus seiner 56 Pixel verknüpft sind, die in 32 Spalten und 8 Zeilen für ein spezielles skaliertes Bild 620 angeordnet sind. Im Betrieb verarbeitet jeder Strang, der in „8 Ketten von 32 Strängen” 655 enthalten ist, eines der 256 Pixelfenster 408, die zu einem jeweiligen Speicherfleck 650 gehören. Wie gezeigt, wenden die 8 Ketten aus 32 Strängen 655 die RF-Klassifizierungseinheit 510 auf 256 Pixel an, wodurch der obere linke Speicherfleck 650, der in dem skalierten Bild 620(0) enthalten ist, verarbeitet wird.
-
Die PPU 202 fährt fort, Gruppen an Pixel und skalierte Bilder 620 zu verarbeiten, bis die PPU 202 einen Objektkonfidenzwert für jedes Pixel und jedes skalierte Bild 620, das in der Bildpyramide 600 enthalten ist, berechnet hat. Die CPU 102 beendet dann den Ausführungsschritt des Objekterkennungsprozesses. Im Betrieb ermittelt die CPU 102 Kennungen auf der Grundlage der Objektkonfidenzwerte, die von der PPU 202 pro Pixel und pro skalierten Bild berechnet wurden. Wenn die CPU 102 bestimmt, dass ein Objektkonfidenzwert größer als ein vorbestimmter Schwellwert ist, dann betrachtet die CPU den Objektkonfidenzwert so, dass dieser eine „Erkennung” repräsentiert, die mit dem Pixel verknüpft ist. Die CPU 102 komprimiert mehrere überlappende Erkennungen innerhalb und zwischen den skalierten Bildern 620 über eine Nicht-Maximum-Unterdrückung, um die endgültigen Erkennungen zu ermitteln. Für jede endgültige Erkennung berechnet die CPU 102 einen gesamten Objektkonfidenzwert auf der Grundlage der gewichteten Summe des Durchschnitts der pro Pixel, pro skalierten Bild berechneten Objektkonfidenzwerte von überlappenden Erkennungen und der Anzahl an überlappenden Erkennungen. Schließlich führt die CPU 102 eine weitere Verarbeitung aus, etwa eine Objektdefinition, eine Objektklassifizierung, Verfolgung, usw.
-
In anderen Ausführungsformen kann eine beliebige Verarbeitungseinheit oder eine Kombination aus Verarbeitungseinheiten eine beliebige Operation ausführen, die in den Objekterkennungsprozess enthalten ist. Beispielsweise verarbeitet in einigen Ausführungsformen die CPU 102 die kleinsten der skalierten Bilder 620, die in der Bildpyramide 600 enthalten sind. In anderen Ausführungsformen kopiert die CPU 102 nicht verarbeitete Speicherflecken 650 in den PP-Speicher 204, wenn die PPU 202 die RF-Klassifizierungseinheit 510 auf einen oder mehrere Speicherflecken 650 anwendet. In anderen Ausführungsformen kann eine beliebige Verarbeitungseinheit Erkennungen ermitteln und die mehreren Erkennungen in einer beliebigen technisch machbaren Weise zusammenfassen.
-
7A–7B zeigen ein Flussdiagramm von Verfahrensschritten zum Trainieren einer Zufalls-Wald-Klassifizierungseinheit gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte mit Bezug zu Systemen der 1–6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Realisierung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
-
Wie gezeigt, beginnt ein Verfahren 700 in einem Schritt 702, in welchem die CPU 102 zufällig eine anfängliche Ansammlung 505 aus MB-LBP-Merkmalen aus der Gruppe aller möglichen MB-LBP-Merkmale 410 auswählt. Im Schritt 704 initialisiert die CPU 102 die RF-Klassifizierungseinheit 510 mit einem untrainierten Zustand. Die CPU 102 wählt dann den ersten Entscheidungsbaum 520 aus, der in der RF-Klassifizierungseinheit 510 enthalten ist. Im Schritt 706 initialisiert die CPU 102 den ausgewählten Entscheidungsbaum 520 derart, dass dieser eine zufällige Teilmenge an MB-LBP-Merkmalen 410 aus der anfänglichen Ansammlung 505 an MB-LBP-Merkmalen enthält.
-
Im Schritt 708 trainiert die CPU 102 den ausgewählten Entscheidungsbaum 520 mit einer Gruppe positiver Bilder, die interessierende Objekte enthalten, und mit einer Gruppe negativer Bilder, die keine interessierenden Objekte enthalten. Bei jeder Aufteilung in dem ausgewählten Entscheidungsbaum 520 wählt die CPU 102 zufällig eine Teilmenge der MB-LBP-Merkmale 410 aus, die in dem Entscheidungsbaum 520 enthalten sind. Die CPU 102 analysiert dann diese Teilmenge der anfänglichen Ansammlung 505 aus MB-LBP-Merkmalen, um das MB-LBP-Merkmal 410 zu ermitteln, das eine genaueste Unterscheidung zwischen den positiven Bildern und der negativen Bildern liefert. Die CPU 102 wählt dieses lokal am meisten unterscheidende MB-LBP-Merkmal 410 für die Teilung in dem ausgewählten Entscheidungsbaum 520 aus. Wenn im Schritt 710 die CPU 102 ermittelt, dass der ausgewählte Entscheidungsbaum 520 nicht der letzte Entscheidungsbaum 520 ist, der in der RF-Klassifizierungseinheit 510 enthalten ist, dann geht das Verfahren 700 weiter zum Schritt 712. Im Schritt 712 wählt die CPU 102 den nächsten Entscheidungsbaum 520 aus, der in der RF-Klassifizierungseinheit 510 enthalten ist, und das Verfahren 700 geht zurück zum Schritt 706. Die CPU 102 läuft zyklisch durch die Schritte 706–712, wobei jeder Entscheidungsbaum 520 trainiert wird, bis die CPU 102 das Training aller Entscheidungsbäume 520, die in der RF-Entscheidungseinheit 510 enthalten sind, beendet hat.
-
Wenn im Schritt 710 die CPU 102 ermittelt, dass der ausgewählte Entscheidungsbaum 520 der letzte Entscheidungsbaum 520 ist, der in der RF-Klassifizierungseinheit 510 enthalten ist, dann geht das Verfahren 700 weiter zum Schritt 714. Im Schritt 714 analysiert die CPU 102 die RF-Klassifizierungseinheit 510 und wählt die Teilmenge an MB-LBP-Merkmalen 410 aus, die am häufigsten als eine Aufteilung in den Entscheidungsbäumen 520 aufgetreten sind. Zusammen bilden diese ausgewählten MB-LBP-Merkmale 410 die reduzierte Ansammlung 565 an MB-LBP-Merkmalen. Im Schritt 716 setzt die CPU 102 die RF-Klassifizierungseinheit 510 in einen nicht trainierten Zustand zurück. In einigen Ausführungsformen reduziert die CPU 102 auch die Anzahl an Entscheidungsbäumen 520, die in der RF-Klassifizierungseinheit 510 enthalten sind. Danach wählt die CPU 102 den ersten Entscheidungsbaum 520, der in der RF-Klassifizierungseinheit 510 enthalten ist, aus. Im Schritt 718 initialisiert die CPU 102 den ausgewählten Entscheidungsbaum 520, so dass er eine zufällige Teilmenge der MB-LBP-Merkmale 410 aus der reduzierten Ansammlung 565 an MB-LBP-Merkmalen enthält.
-
Im Schritt 720 trainiert die CPU 102 den ausgewählten Entscheidungsbaum 520 erneut mit den positiven Bildern und den negativen Bildern. Bei jeder Aufteilung in dem ausgewählten Entscheidungsbaum 520 wählt die CPU 102 zufällig eine Teilmenge der MB-LBP-Merkmale 410, die in dem Entscheidungsbaum 520 enthalten sind. Die CPU 102 analysiert dann diese Teilmenge der reduzierten Ansammlung 565 an MB-LBP-Merkmalen, um das MB-LBP-Merkmal 410 ermitteln, dass am genauesten zwischen den positiven Bildern und den negativen Bildern unterscheidet. Die CPU 102 wählt dieses lokal am besten unterscheidende MB-LBP-Merkmal 410 für die Aufteilung in dem ausgewählten Entscheidungsbaum 520 aus. Wenn im Schritt 722 die CPU 102 ermittelt, dass der ausgewählte Entscheidungsbaum 520 nicht der letzte Entscheidungsbaum 520 ist, der in der RF-Klassifizierungseinheit 510 enthalten ist, dann geht das Verfahren 700 weiter zum Schritt 724. Im Schritt 724 wählt die CPU 102 den nächsten Entscheidungsbaum 520 aus, der in der RF-Klassifizierungseinheit 510 enthalten ist, uns das Verfahren 700 geht zum Schritt 718 zurück. Die CPU 102 läuft zyklisch durch die Schritte 718–724, wobei jeder Entscheidungsbaum 520 neu trainiert wird, bis die CPU 102 das erneute Training aller Entscheidungsbäume 520, die in der RF-Klassifizierungseinheit 510 enthalten sind, abgeschlossen hat. Wenn im Schritt 722 die CPU 102 ermittelt, dass der ausgewählte Entscheidungsbaum 520 der letzte Entscheidungsbaum 520 ist, der in der RF-Klassifizierungseinheit 510 enthalten ist, dann endet das Verfahren 700. In anderen Ausführungsformen können die Schritte 714–724 beliebig häufig wiederholt werden – wodurch die Genauigkeit der RE-Klassifizierungseinheit 510 bei jeder Wiederholung verbessert wird.
-
8A–8B zeigen ein Flussdiagramm von Verfahrensschritten zur Ausführung einer Objekterkennung über eine parallele Verarbeitungsarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte mit Bezug zu Systemen der 1–6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
-
Wie gezeigt beginnt ein Verfahren 800 in einem Schritt 801, wobei die CPU 102 ein Eingangsbild empfängt und die zugehörige Bildpyramide 600 erzeugt. Im Schritt 802 wählt die PPU 202 eine erste Gruppe an Pixel und das erste skalierte Bild 620 aus, das in der Bildpyramide 600 enthalten ist. Im Schritt 804 ordnet die PPU 202 jeweils einen anderen Strang zur Verarbeitung jedes der Pixel, die in der ausgewählten Gruppe an Pixel enthalten sind, zu. Im Schritt 806 wählt die PPU 202 den Speicherfleck 650 aus, der in dem ausgewählten skalierten Bild 620 enthalten ist, das die Pixelfenster 408 enthält, die der ausgewählten Gruppe an Pixel zugeordnet sind. Im Schritt 808 kopiert die PPU 202 den Speicherfleck 650 aus dem Systemspeicher 104 in den PP-Speicher 204.
-
Im Schritt 810 veranlasst die PPU 202, dass die Stränge, die der ausgewählten Gruppe an Pixel zugeordnet sind, gleichzeitig die erforderlichen MB-LBP-Merkmale 410 pro Pixel berechnen, die den zugeordneten Pixel zugeordnet sind, auf der Grundlage der geeigneten Pixelfenster 408. Im Schritt 812 veranlasst die PPU 202, dass die der ausgewählten Gruppe an Pixel zugewiesenen Stränge gleichzeitig die RF-Klassifizierungseinheit 520 auf die zugewiesenen Pixel anwenden. Als Teil dieses Schrittes wendet jeder Strang sequenziell jeden Entscheidungsbaum 520, der in der RF-Klassifizierungseinheit 510 enthalten ist, auf das zugeordnete Pixel an. Jeder Strang erzeugt dann einen Objektkonfidenzwert (speziell für das zugewiesene Pixel und das ausgewählte skalierte Bild 620), der die Wahrscheinlichkeit der Anwesenheit des Objekts an der Position des zugeordneten Pixel repräsentiert, auf der Grundlage der individuellen Bestimmungen jedes der Entscheidungsbäume 520.
-
Im Schritt 814 geht das Verfahren 800 weiter zum Schritt 816, wenn die PPU 202 ermittelt, dass das ausgewählte skalierte Bild 620 nicht das letzte skalierte Bild 620 ist, das in der Bildpyramide 600 enthalten ist. Im Schritt 816 wählt die PPU 202 das nächste skalierte Bild 620 aus, das in der Bildpyramide 600 enthalten ist, und das Verfahren 800 geht weiter zum Schritt 806. Die PPU 202 wiederholt zyklisch die Schritte 806–816, wodurch der Speicherfleck 650, der sowohl mit der ausgewählten Gruppe an Pixel als auch mit dem ausgewählten skalierten Bild 620 verknüpft ist, verarbeitet wird, bis die PPU 202 die ausgewählte Gruppe an Pixel für alle skalierten Bilder 620, die in der Bildpyramide 600 enthalten sind, verarbeitet hat.
-
Wenn im Schritt 814 die PPU 202 ermittelt, dass das ausgewählte skalierte Bild 620 das letzte skalierte Bild 620, das in der Bildpyramide 600 enthalten ist, dann geht das Verfahren 800 weiter zum Schritt 818. Wenn im Schritt 816 die PPU 202 ermittelt, dass die ausgewählte Gruppe an Pixel nicht die letzte Gruppe an Pixel ist, die in der Bildpyramide 600 enthalten ist, dann geht das Verfahren 800 weiter zum Schritt 820. Im Schritt 820 wählt die PPU 202 die nächste Gruppe an Pixel, die in der Bildpyramide 600 enthalten ist, aus, und das Verfahren 800 kehrt zum Schritt 804 zurück. Die PPU 202 durchläuft zyklisch die Schritte 804–818, wobei jede Gruppe an Pixel über alle skalierten Bilder 620 hinweg verarbeitet wird, bis die PPU 202 alle Pixel über alle skalierten Bilder 620, die in der Bildpyramide 600 enthalten sind, hinweg verarbeitet hat.
-
Wenn im Schritt 818 die PPU 202 ermittelt, dass die ausgewählte Gruppe an Pixel die letzte Gruppe an Pixel ist, die in der Bildpyramide 600 enthalten ist, dann geht das Verfahren 800 weiter zum Schritt 822. Im Schritt 892 ermittelt die CPU 102 Erkennungen auf der Grundlage der Bildobjektkonfidenzwerte pro Pixel pro skaliertem Bild, die von der PPU 202 berechnet wurden. Die CPU 102 kombiniert dann mehrere überlappende Erkennungen durch eine Nicht-Maximum-Unterdrückung, um die endgültigen Erkennungen zu bestimmen. Im Schritt 824 berechnet für jede endgültige Erkennung die CPU 102 einen gesamten Objektkonfidenzwert auf der Grundlage der gewichteten Summe des Mittelwerts der Objektkonfidenzwerte pro Pixel pro skaliertem Bild überlappender Erkennungen und der Anzahl an überlappenden Erkennungen.
-
Zusammengefasst gilt: in dem Trainingsschritt eines Objekterkennungsalgorithmus trainiert ein Computersystem eine Zufalls-Wald-(RF-)Klassifizierungseinheit in zwei Phasen – eine anfängliche Merkmalsphase und eine reduzierte Merkmalsphase. Die RF-Klassifizierungseinheit enthält mehrere unabhängige Entscheidungsbäume, die strukturell identisch ist. In der anfänglichen Merkmalsphase wählt das Computersystem zufällig eine anfängliche Ansammlung an Merkmalen in Form von mehrblöckigen lokalen binären Mustern (MB-LBP) aus der Gruppe aller möglichen MB-LBP-Merkmale aus, die das Objekt beschreiben. Das Computersystem trainiert jeden der Entscheidungsbäume unabhängig mit der zufälligen Teilmenge der anfänglichen Ansammlung aus MB-LBP-Merkmalen, wobei das am besten unterscheidende MB-LBP-Merkmal für jede Aufteilung in dem Baum ausgewählt wird.
-
Nach dem anfänglichen Training der RF-Klassifizierungseinheit analysiert das Computersystem den Entscheidungsbaum, der in der RF-Klassifizierungseinheit enthalten ist, um die MB-LBP-Merkmale zu ermitteln, die bei Aufteilungen am häufigsten ausgewählt wurden. Zusammen bilden diese MB-LBP-Merkmale eine reduzierte Ansammlung an MB-LBP-Merkmalen. In der reduzierten Merkmalsphase setzt das Computersystem die RF-Klassifizierungseinheit auf einen anfänglichen Zustand zurück und trainiert jeden der Entscheidungsbäume erneut unabhängig für eine Teilmenge der Merkmale, die zufällig aus der reduzierten Ansammlung an MB-LBP-Merkmalen ausgewählt ist. Wiederum wählt das Computersystem die am meisten unterscheidenden MB-LBP-Merkmale für die Aufteilung in dem Baum aus. Die RF-Klassifizierungseinheit, die durch diesen Trainingsprozess mit den zwei Phasen erzeugt wird, enthält mehrere unabhängige Entscheidungsbäume mit gleicher Tiefe, die unabhängig auf der Grundlage einer deterministisch optimierten Teilmenge an MB-LBP-Merkmalen trainiert sind.
-
Danach erzeugt in einem Ausführungsschritt des Objekterkennungsalgorithmus die CPU eine Bildpyramide skalierte Bilder auf der Grundlage eines Eingangsbildes. Eine GPU in dem Computersystem verarbeitet gleichzeitig mehrere Bildpixel, die in jedem der skalierten Bilder enthalten sind. In einem Falle ordnet die GPU jeweils einen anderen Strang zu, um jedes Pixel zur Anwendung der RF-Klassifizierungseinheit zu verarbeiten. Jeder dieser Stränge berechnet die MB-LBP-Merkmale, die mit einem Pixelfenster verknüpft sind, das die Pixelposition umgibt, wendet sequenziell jeden Entscheidungsbaum, der in der RF-Klassifizierungseinheit enthalten ist, auf die MB-LBP-Merkmale an und erzeugt einen Objektkonfidenzwert pro Pixel pro skaliertem Bild. Der Objektkonfidenzwert pro Pixel pro skaliertem Bild repräsentiert die Wahrscheinlichkeit der Anwesenheit des Objekts an der Pixelposition. Wenn die CPU ermittelt, dass ein Objektkonfidenzwert größer als ein vorbestimmter Schwellwert ist, dann betrachtet die CPU den Objektkonfidenzwert so, dass dieser eine „Erkennung” repräsentiert, die mit dem Pixel verknüpft ist. Die CPU fasst mehrere überlappende Erkennungen innerhalb und zwischen skalierten Bilder durch eine nicht-maximale Unterdrückung zusammen, um die endgültigen Erkennungen zu ermitteln. Für jede endgültige Erkennung berechnet die CPU dann einen gesamten Objektkonfidenzwert auf der Grundlage der gewichteten Summe des Mittelwerts der Objektkonfidenzwerte pro Pixel pro skaliertem Bild von überlappenden Erkennungen und auf der Grundlage der Anzahl an überlappenden Erkennungen.
-
Vorteilhafterweise nutzt die Ausführung einer Objekterkennung unter Anwendung einer RF-Klassifizierungseinheit, die strukturell identische Entscheidungsbäume enthält, die parallele Architektur der GPU aus. Zu beachten ist, dass die Anwendung der RF-Klassifizierungseinheit auf jedes Pixel die Ausführung äquivalenter mathematischer Operationen an jedem Pixel nach sich zieht. Folglich nutzt die Ausführung der Objekterkennung unter Anwendung einer RF-Klassifizierungseinheit die Fähigkeiten der GPU aus, um optimal und gleichzeitig den gleichen Befehl an mehreren Pixel auszuführen. Ferner kann durch die Verwendung einer Trainingsprozedur mit zwei Phasen zur Optimierung der MB-LBP-Merkmale, die zum Trainieren der RF-Klassifizierungseinheit verwendet werden, die Genauigkeit der RF-Klassifizierungseinheit im Vergleich zu typischen konventionell trainierten Klassifizierungseinheiten verbessert werden. Somit ermöglichen die hierin beschriebenen Techniken eine effizientere und genauere Objekterkennung als konventionelle Objekterkennungsansätze.
-
Eine Ausführungsform der Erfindung kann als ein Programmprodukt zur Verwendung in einem Computersystem realisiert werden. Das bzw. die Programme des Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Vielzahl von computerlesbaren Speichermedien enthalten sein. Zu anschaulichen computerlesbaren Speichermedien gehören, ohne Einschränkung: (i) nicht-beschreibbare Speichermedien (beispielsweise Nur-Lese-Speichereinrichtungen in einem Computer, etwa CD-ROM-Disketten, die von einem CD-ROM-Laufwerk lesbar sind, Flash-Speicher, ROM-Chips oder eine andere Art eines nicht flüchtigen Halbleiterspeichers), auf welchen Information permanent gespeichert ist; und (ii) beschreibbare Speichermedien (beispielsweise Disketten in einem Diskettenlaufwerk oder ein Festplattenlaufwerk oder eine andere Art eines Halbleiterspeichers mit wahlfreiem Zugriff), auf welchen änderbare Information gespeichert ist.
-
Die Erfindung ist mit Bezug zu speziellen Ausführungsformen beschrieben worden. Der Fachmann erkennt jedoch, dass diverse Modifizierungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Erfindung abzuweichen, wie sie in den angefügten Patentansprüchen angegeben ist. Die vorhergehende Beschreibung und die Zeichnungen sind daher als anschaulich und nicht als beschränkend zu betrachten.
-
Daher ist der Schutzbereich der vorliegenden Erfindung durch die folgenden Patentansprüche festgelegt.