-
QUERVERWEIS AUF VERWANDTE ANWENDUNG
-
Diese Anmeldung beansprucht den Vorteil der am 5. Dezember 2016 eingereichten vorläufigen
US-Patentanmeldung Nr. 62/430,307 , deren Gesamtheit hiermit durch Verweis aufgenommen wird.
-
TECHNISCHER BEREICH
-
Der vorliegende Gegenstand betrifft die Verarbeitung von Daten unter Verwendung von Faltungsneuronalen Netzen (CNNs).
-
HINTERGRUND
-
CNNs können für die Ausführung verschiedener Aufgaben mit verschiedenen Datentypen geschult werden. So können beispielsweise CNNs für den Empfang von Daten über Dokumente und für die Durchführung der Dokumentenklassifizierung geschult werden. Als weiteres Beispiel können CNNs trainiert werden, um computerimplementierte visuelle Objektklassifizierung durchzuführen, die auch als Objekterkennung bezeichnet wird. Die Objekterkennung bezieht sich auf die Klassifizierung visueller Darstellungen von realen Objekten in Standbildern oder Bewegungsvideos, die von einer Kamera aufgenommen wurden. Durch die Durchführung der visuellen Objektklassifizierung wird jedes visuelle Objekt, das in den Standbildern oder im Bewegungsvideo gefunden wird, nach seinem Typ klassifiziert (wie z.B. Mensch, Fahrzeug oder Tier).
-
Automatisierte Sicherheits- und Überwachungssysteme verwenden in der Regel Videokameras oder andere Bilderfassungsgeräte oder Sensoren, um Bilddaten wie Video- oder Videomaterial zu sammeln. In den einfachsten Systemen werden die durch die Bilddaten dargestellten Bilder zur gleichzeitigen Überprüfung durch das Sicherheitspersonal angezeigt und/oder nach einem Sicherheitsverstoß zur späteren Überprüfung aufgezeichnet. In diesen Systemen wird die Aufgabe der Erkennung und Klassifizierung visueller Objekte von Interesse von einem menschlichen Beobachter übernommen. Ein bedeutender Fortschritt entsteht, wenn das System selbst in der Lage ist, die Objekterkennung und - klassifizierung teilweise oder vollständig durchzuführen.
-
In einem typischen Überwachungssystem kann man daran interessiert sein, Objekte wie Menschen, Fahrzeuge, Tiere usw. zu erkennen, die sich durch die Umgebung bewegen. Wenn jedoch beispielsweise ein Kind in einem großen Einkaufszentrum verloren geht, kann es für das Sicherheitspersonal sehr zeitaufwendig sein, Videomaterial für das verlorene Kind manuell zu überprüfen. Die computerimplementierte Erkennung von Objekten in den Bildern, die durch die von den Kameras erfassten Bilddaten repräsentiert werden, kann die Aufgabe, relevante Videoabschnitte durch das Sicherheitspersonal zu überprüfen, erheblich erleichtern, um das verlorene Kind rechtzeitig zu finden. Um die Genauigkeit zu erhöhen, können verschiedene CNNs, die Teil des Überwachungssystems sind, für verschiedene Aufgaben ausgebildet werden (z.B. kann ein CNN für die Erkennung von Menschen und ein anderes CNN für die Erkennung von Fahrzeugen ausgebildet werden).
-
Allerdings erfordert die computerimplementierte Analyse von Videos zur Detektion und Erkennung von Objekten und welche Objekte ähnlich sind, erhebliche Rechenressourcen, zumal die gewünschte Genauigkeit zunimmt.
-
ZUSAMMENFASSUNG
-
Gemäß einem ersten Aspekt ist ein Datenverarbeitungssystem vorgesehen, das ein erstes neuronales Faltungsnetzwerk (CNN) umfasst, das zur Durchführung einer ersten Aufgabe ausgebildet ist, wobei das erste CNN eine erste Gruppe von Schichten umfasst, die in Reihe mit einer zweiten Gruppe von Schichten verbunden sind und so konfiguriert sind, dass Daten für das erste CNN in die erste Gruppe von Schichten eingegeben werden; und ein zweites CNN, das zur Durchführung einer zweiten Aufgabe ausgebildet ist, wobei das zweite CNN die erste Gruppe von Schichten umfasst, die in Reihe mit einer dritten Gruppe von Schichten verbunden sind, und so konfiguriert ist, dass Daten für das zweite CNN in die erste Gruppe von Schichten eingegeben werden.
-
Die Daten für das erste CNN können ein erstes Bild und die Daten für das zweite CNN können ein zweites Bild umfassen.
-
Der erste und der zweite CNN können konfiguriert werden, um das erste und das zweite Bild als Teil eines ersten Stapels von Bilddaten bzw. eines zweiten Stapels von Bilddaten zu empfangen, wobei der erste Stapel von Bilddaten das erste Bild und der zweite Stapel von Bilddaten das zweite Bild umfasst.
-
Jeder der ersten und zweiten Stapel von Bilddaten kann eine vierdimensionale Datenstruktur umfassen.
-
Der erste und zweite Stapel von Bilddaten können unterschiedlich sein.
-
Der erste und zweite Stapel von Bilddaten kann der gleiche Stapel von Bildern sein.
-
Die ersten und zweiten CNNs können so konfiguriert werden, dass die erste Gruppe von Schichten das erste Bild und das zweite Bild verarbeitet, die zweite Gruppe von Schichten empfängt das erste Bild, nachdem das erste Bild durch die erste Gruppe von Schichten verarbeitet wurde, und nicht das zweite Bild, nachdem das zweite Bild durch die erste Gruppe von Schichten verarbeitet wurde, und die dritte Gruppe von Schichten empfängt das zweite Bild, nachdem das zweite Bild durch die erste Gruppe von Schichten verarbeitet wurde, und nicht das erste Bild, nachdem das erste Bild durch die erste Gruppe von Schichten verarbeitet wurde.
-
Der erste CNN kann konfiguriert werden, um eine erste Aufgabe auszuführen, die das Erzeugen eines Merkmalsvektors umfasst, der einen ersten Objekttyp identifiziert, der im ersten Bild dargestellt ist, und der zweite CNN kann konfiguriert werden, um eine zweite Aufgabe auszuführen, die das Erzeugen eines Merkmalsvektors umfasst, der einen zweiten und anderen Objekttyp identifiziert, der im zweiten Bild dargestellt ist.
-
Das System kann ferner eine Videoerfassungsvorrichtung umfassen, die mit dem ersten und zweiten CNN kommuniziert, wobei die Videoerfassungsvorrichtung konfiguriert ist, um das erste und zweite Bild als Abschnitte von ersten und zweiten Videobildern zu erzeugen, die von der Videoerfassungsvorrichtung erfasst werden.
-
Die Videoaufnahmevorrichtung kann konfiguriert werden, um das erste und zweite Bild unter Verwendung des ersten und zweiten CNNs zu verarbeiten.
-
Das System kann ferner einen Server umfassen, der mit der Videoerfassungsvorrichtung kommunikativ ist, wobei die Videoerfassungsvorrichtung konfiguriert ist, um das erste und zweite Bild an den Server zu übertragen, und wobei der Server konfiguriert ist, um das erste und zweite Bild unter Verwendung des ersten und zweiten CNNs zu verarbeiten.
-
Gemäß einem weiteren Aspekt ist ein Datenverarbeitungsverfahren vorgesehen, das das Verarbeiten eines ersten Datenstapels unter Verwendung eines ersten neuronalen Faltungsnetzwerks (CNN) umfasst, wobei der erste CNN eine erste Gruppe von Schichten umfasst, die in Reihe mit einer zweiten Gruppe von Schichten verbunden sind, wobei der erste Datenstapel über die erste Gruppe von Schichten in das erste CNN eingegeben wird; und Verarbeiten eines zweiten Datenstapels unter Verwendung eines zweiten CNN, wobei der zweite CNN die erste Gruppe von Schichten umfasst, die in Reihe mit einer dritten Gruppe von Schichten verbunden sind, wobei der zweite Datenstapel über die erste Gruppe von Schichten in das zweite CNN eingegeben wird.
-
Der erste Datenstapel kann ein erstes Bild und der zweite Datenstapel ein zweites Bild umfassen.
-
Das erste und das zweite CNN können konfiguriert werden, um das erste und das zweite Bild als Teil eines ersten Stapels von Bilddaten bzw. eines zweiten Stapels von Bilddaten zu empfangen, wobei der erste Stapel von Bilddaten das erste Bild und der zweite Stapel von Bilddaten das zweite Bild umfasst.
-
Jeder der ersten und zweiten Stapel von Bilddaten kann eine vierdimensionale Datenstruktur umfassen.
-
Der erste und zweite Stapel von Bilddaten können unterschiedlich sein.
-
Der erste und zweite Stapel von Bilddaten kann der gleiche Stapel von Bildern sein.
-
Die erste Gruppe von Schichten kann das erste Bild und das zweite Bild verarbeiten, die zweite Gruppe von Schichten kann das erste Bild empfangen, nachdem das erste Bild durch die erste Gruppe von Schichten verarbeitet wurde, und nicht das zweite Bild, nachdem das zweite Bild durch die erste Gruppe von Schichten verarbeitet wurde, und die dritte Gruppe von Schichten kann das zweite Bild empfangen, nachdem das zweite Bild durch die erste Gruppe von Schichten verarbeitet wurde und nicht das erste Bild, nachdem das erste Bild durch die erste Gruppe von Schichten verarbeitet wurde.
-
Das erste CNN kann eine erste Aufgabe ausführen, die das Erzeugen eines Merkmalsvektors umfasst, der einen ersten Objekttyp identifiziert, der in dem ersten Bild dargestellt ist, und das zweite CNN kann eine zweite Aufgabe ausführen, die das Erzeugen eines Merkmalsvektors umfasst, der einen zweiten und einen anderen Objekttyp identifiziert, der in dem zweiten Bild dargestellt ist.
-
Das Verfahren kann ferner das Erfassen von ersten und zweiten Videobildern auf einer Videoerfassungsvorrichtung, das Erzeugen des ersten und zweiten Bildes als Abschnitte des ersten und zweiten Videobilds auf der Videoerfassungsvorrichtung und das Senden des ersten und zweiten Bildes an die erste Gruppe von Schichten umfassen.
-
Das erste und zweite CNN kann auf dem Videoaufnahmegerät laufen.
-
Das erste und zweite Bild kann von der Videoaufnahmevorrichtung an einen Server gesendet werden, auf dem der erste und zweite CNN laufen.
-
Gemäß einem weiteren Aspekt ist ein Datenverarbeitungssystem vorgesehen, das einen Prozessor umfasst; und
- eine Speichervorrichtung mit darauf gespeichertem Computerprogrammcode, der durch den Prozessor ausführbar ist und der, wenn er durch den Prozessor ausgeführt wird, bewirkt, dass der Prozessor ein Verfahren durchführt, das die Verarbeitung eines ersten Datenstapels unter Verwendung eines ersten neuronalen Faltungsnetzwerks (CNN) umfasst, wobei das erste CNN eine erste Gruppe von Schichten umfasst, die in Reihe mit einer zweiten Gruppe von Schichten verbunden sind, wobei der erste Datenstapel über die erste Gruppe von Schichten in das erste CNN eingegeben wird; und Verarbeiten eines zweiten Datenstapels unter Verwendung eines zweiten CNN, wobei das zweite CNN die erste Gruppe von Schichten umfasst, die in Reihe mit einer dritten Gruppe von Schichten verbunden sind, wobei der zweite Datenstapel über die erste Gruppe von Schichten in das zweite CNN eingegeben wird.
-
Der erste Datenstapel kann ein erstes Bild und der zweite Datenstapel ein zweites Bild umfassen.
-
Das erste und das zweite CNN kann konfiguriert werden, um das erste und das zweite Bild als Teil eines ersten Stapels von Bilddaten bzw. eines zweiten Stapels von Bilddaten zu empfangen, wobei der erste Stapel von Bilddaten das erste Bild und der zweite Stapel von Bilddaten das zweite Bild umfasst.
-
Jeder der ersten und zweiten Stapel von Bilddaten kann eine vierdimensionale Datenstruktur umfassen.
-
Der erste und zweite Stapel von Bilddaten können unterschiedlich sein.
-
Der erste und zweite Stapel von Bilddaten kann der gleiche Stapel von Bildern sein.
-
Die erste Gruppe von Schichten kann das erste Bild und das zweite Bild verarbeiten, die zweite Gruppe von Schichten kann das erste Bild empfangen, nachdem das erste Bild durch die erste Gruppe von Schichten verarbeitet wurde, und nicht das zweite Bild, nachdem das zweite Bild durch die erste Gruppe von Schichten verarbeitet wurde, und die dritte Gruppe von Schichten kann das zweite Bild empfangen, nachdem das zweite Bild durch die erste Gruppe von Schichten verarbeitet wurde und nicht das erste Bild, nachdem das erste Bild durch die erste Gruppe von Schichten verarbeitet wurde.
-
Das erste CNN kann eine erste Aufgabe ausführen, die das Erzeugen eines Merkmalsvektors umfasst, der einen ersten Objekttyp identifiziert, der in dem ersten Bild dargestellt ist, und das zweite CNN kann eine zweite Aufgabe ausführen, die das Erzeugen eines Merkmalsvektors umfasst, der einen zweiten und einen anderen Objekttyp identifiziert, der in dem zweiten Bild dargestellt ist.
-
Das System kann ferner eine Videoerfassungsvorrichtung umfassen, die konfiguriert ist, um erste und zweite Videobilder zu erfassen, das erste und zweite Bild als Abschnitte des ersten und zweiten Videobilds zu erzeugen und das erste und zweite Bild an die erste Gruppe von Schichten zu senden.
-
Das erste und zweite CNN können auf dem Videoerfassungsvorrichtung laufen.
-
Das erste und zweite Bild können von der Videoaufnahmevorrichtung an einen Server gesendet werden, auf dem der erste und zweite CNN laufen.
-
Gemäß einem weiteren Aspekt ist ein Verfahren zum Trainieren eines Datenverarbeitungssystems vorgesehen, wobei das Verfahren das Trainieren eines initialen ersten neuronalen Faltungsnetzwerks (CNN) umfasst, das erste CNN-Schichten umfasst, die in Reihe geschaltet sind; das Trainieren eines initialen zweiten CNN, das zweite CNN-Schichten umfasst, die in Reihe geschaltet sind; das Erzeugen eines modifizierten zweiten CNN durch Ersetzen von N der zweiten CNN-Schichten aus einem Eingang des initialen zweiten CNN durch M der ersten CNN-Schichten aus einem Eingang des initialen ersten CNN, wobei N und M positive ganze Zahlen sind; und das Trainieren des modifizierten zweiten CNN.
-
Das Verfahren kann ferner das Erzeugen eines modifizierten ersten CNN durch Ersetzen von X der ersten CNN-Schichten aus einem Eingang des initialen ersten CNN durch Y der zweiten CNN-Schichten aus einem Eingang des initialen zweiten CNN umfassen, wobei X und Y positive ganze Zahlen sind; und das Trainieren des modifizierten ersten CNN.
-
X und Y können gleich sein.
-
Das Erstellen des modifizierten zweiten CNN kann durchgeführt werden, nachdem das Training für das initiale erste CNN und das initiale zweite CNN abgeschlossen ist, und das Training des modifizierten zweiten CNN kann durchgeführt werden, ohne die Parameter der initialen ersten CNN-Schichten zu ändern, die einen Teil des modifizierten zweiten CNN umfassen.
-
Das Verfahren kann ferner nach dem Training des modifizierten zweiten CNN das Vergleichen der Genauigkeit des modifizierten zweiten CNN mit der Genauigkeit des anfänglichen zweiten CNN umfassen; und wenn die Genauigkeit des modifizierten zweiten CNN die Genauigkeit des anfänglichen zweiten CNN übersteigt, das Ersetzen der Schicht M+ 1 auf die Schicht M+a des modifizierten zweiten CNN mit der Schicht M+ 1 auf die Schicht M+b des initialen ersten CNN, wobei a und b jeweils eine positive ganze Zahl sind; und dann ohne Änderung der Parameter der ersten CNN-Schichten, die einen Teil des modifizierten zweiten CNN umfassen, das Training des modifizierten zweiten CNN. a und b können gleich sein und können gleich 1 sein.
-
Das Verfahren kann ferner nach dem Training des modifizierten zweiten CNN das Vergleichen der Genauigkeit des modifizierten zweiten CNN mit der Genauigkeit des initialen zweiten CNN umfassen; und wenn die Genauigkeit des modifizierten zweiten CNN die Genauigkeit des initialen zweiten CNN übersteigt, das Ersetzen der Schicht M zu Schicht M-a des modifizierten zweiten CNN mit Schicht N zu Schicht N-b des anfänglichen zweiten CNN, wobei a und b jeweils eine ganze Zahl von mindestens Null ist; und dann ohne Änderung der Parameter der ersten CNN-Schichten, die einen Teil des modifizierten zweiten CNN umfassen, das Training des modifizierten zweiten CNN. a und b können gleich sein und können gleich 0 sein.
-
N und M können gleich sein.
-
Gemäß einem weiteren Aspekt ist ein System zum Trainieren eines Bildverarbeitungssystems vorgesehen, das einen Prozessor umfasst; und eine Speichervorrichtung, auf der ein Computerprogrammcode gespeichert ist, der von dem Prozessor ausführbar ist und der, wenn er von dem Prozessor ausgeführt wird, bewirkt, dass der Prozessor ein Verfahren durchführt, das das das Trainieren eines initialen ersten neuronalen Faltungsnetzwerks (CNN) umfasst, das erste CNN-Schichten umfasst, die in Reihe geschaltet sind; Trainieren eines initialen zweiten CNN, umfassend zweite CNN-Schichten, die in Reihe geschaltet sind; Erzeugen eines modifizierten zweiten CNN durch Ersetzen von N der zweiten CNN-Schichten aus einem Eingang des initialen zweiten CNN durch M der ersten CNN-Schichten aus einem Eingang des initialen ersten CNN, wobei N und M positive ganze Zahlen sind; und Trainieren des modifizierten zweiten CNN.
-
Das Verfahren kann ferner das Erzeugen eines modifizierten ersten CNN durch Ersetzen von X der ersten CNN-Schichten aus einem Eingang des initialen ersten CNN durch Y der zweiten CNN-Schichten aus einem Eingang des initialen zweiten CNN umfassen, wobei X und Y positive ganze Zahlen sind; und das Trainieren des modifizierten ersten CNN.
-
X und Y können gleich sein.
-
Das Erstellen des modifizierten zweiten CNN kann durchgeführt werden, nachdem das Training für das initiale erste CNN und das initiale zweite CNN abgeschlossen ist, und das Training des modifizierten zweiten CNN kann durchgeführt werden, ohne die Parameter der initialen ersten CNN-Schichten zu ändern, die einen Teil des modifizierten zweiten CNN umfassen.
-
Das Verfahren kann ferner nach dem Training des modifizierten zweiten CNN das Vergleichen der Genauigkeit des modifizierten zweiten CNN mit der Genauigkeit des anfänglichen zweiten CNN umfassen; und wenn die Genauigkeit des modifizierten zweiten CNN die Genauigkeit des anfänglichen zweiten CNN übersteigt, das Ersetzen der Schicht M+ 1 auf die Schicht M+a des modifizierten zweiten CNN mit der Schicht M+ 1 auf die Schicht M+b des initialen ersten CNN, wobei a und b jeweils eine positive ganze Zahl sind; und dann ohne Änderung der Parameter der ersten CNN-Schichten, die einen Teil des modifizierten zweiten CNN umfassen, das Training des modifizierten zweiten CNN. a und b können gleich sein und können gleich 1 sein.
-
Das Verfahren kann ferner nach dem Training des modifizierten zweiten CNN das Vergleichen der Genauigkeit des modifizierten zweiten CNN mit der Genauigkeit des initialen zweiten CNN umfassen; und wenn die Genauigkeit des modifizierten zweiten CNN die Genauigkeit des initialen zweiten CNN übersteigt, das Ersetzen der Schicht M zu Schicht M-a des modifizierten zweiten CNN mit Schicht N zu Schicht N-b des initialen zweiten CNN, wobei a und b jeweils eine ganze Zahl von mindestens Null ist; und dann ohne Änderung der Parameter der ersten CNN-Schichten, die einen Teil des modifizierten zweiten CNN umfassen, das Training des modifizierten zweiten CNN. a und b können gleich sein und können gleich 0 sein.
-
N und M können gleich sein.
-
Gemäß einem weiteren Aspekt ist ein nichtflüchtiges, computerlesbares Medium vorgesehen, auf dem ein Computerprogrammcode gespeichert ist, der vom Prozessor ausführbar ist und der, wenn er vom Prozessor ausgeführt wird, bewirkt, dass der Prozessor das Verfahren eines der vorstehenden Aspekte und geeignete Kombinationen davon ausführt.
-
Diese Zusammenfassung beschreibt nicht unbedingt den gesamten Umfang aller Aspekte. Andere Aspekte, Merkmale und Vorteile werden für diejenigen, die gewöhnliche Fertigkeiten in der Technik besitzen, offensichtlich sein, wenn man sich die folgende Beschreibung der exemplarischen Ausführungsformen ansieht.
-
Figurenliste
-
Die detaillierte Beschreibung bezieht sich auf die folgenden Abbildungen, in denen:
- 1 veranschaulicht ein Blockdiagramm der angeschlossenen Geräte eines Videoerfassungs- und Wiedergabesystems gemäß einer exemplarischen Ausführungsform;
- 2A veranschaulicht ein Blockdiagramm einer Reihe von Betriebsmodulen des Videoerfassungs- und Wiedergabesystems gemäß einer exemplarischen Ausführungsform;
- 2B veranschaulicht ein Blockdiagramm eines Satzes von Betriebsmodulen des Videoerfassungs- und Wiedergabesystems gemäß einer bestimmten exemplarischen Ausführungsform, wobei das Videoanalysemodul 224, das Videoverwaltungsmodul 232 und die Speichervorrichtung 240 vollständig auf einer oder mehreren Bilderfassungsvorrichtungen 108 implementiert sind;
- 3 veranschaulicht ein Flussdiagramm einer exemplarischen Ausführungsform eines Verfahrens zur Durchführung von Videoanalysen an einem oder mehreren Einzelbildern eines von einer Videoaufnahmevorrichtung aufgenommenen Videos;
- 4 veranschaulicht ein Flussdiagramm einer exemplarischen Ausführungsform eines Verfahrens zur Durchführung einer Erscheinungsanpassung, um ein Objekt von Interesse auf einem oder mehreren Einzelbildern eines von einer Videoaufnahmevorrichtung (Kamera) aufgenommenen Videos zu lokalisieren;
- 5 veranschaulicht ein Flussdiagramm der exemplarischen Ausführungsform von 4, das Details der Erscheinungssuche zeigt, um beim Kunden eine Übereinstimmung des Erscheinungsbildes durchzuführen, um aufgenommene Videos eines Objekts von Interesse zu finden;
- 6 veranschaulicht ein Flussdiagramm der exemplarischen Ausführungsform von 4, das Details der zeitgesteuerten Erscheinungssuche zeigt, um eine Erscheinungsanpassung beim Kunden 420 durchzuführen, um aufgezeichnete Videos eines Objekts von Interesse entweder vor oder nach einer ausgewählten Zeit zu finden;
- 7 veranschaulicht Blockdiagramme, wie beispielsweise Metadaten eines Objektprofils vor der Speicherung und das verkleinerte Objektprofil für die Speicherung;
- 8 veranschaulicht die Szene und die Chips der exemplarischen Ausführungsform von 4;
- 9 veranschaulicht ein Blockdiagramm eines Satzes von operativen Submodulen des Videoanalysemoduls gemäß einer exemplarischen Ausführungsform;
- 10 stellt ein Paar von Lernmaschinen dar, das ein neuronales Faltungsnetzwerk umfasst, das ausgebildet ist, um einen Merkmalsvektor für eine Person auszugeben, und ein anderes neuronales Faltungsnetzwerk, das ausgebildet ist, um einen Merkmalsvektor für einen Kopf auszugeben, gemäß einer weiteren exemplarischen Ausfü hru ngsform;
- 11A stellt ein neuronales Faltungsnetzwerk dar, das zur Ausgabe eines Merkmalsvektors für einen Kopf ausgebildet ist, das zwei Schichten des neuronalen Faltungsnetzwerks von 10 verwendet, das zur Ausgabe eines Merkmalsvektors für eine Person gemäß einer weiteren exemplarischen Ausführungsform ausgebildet ist;
- 11B stellt zwei neuronale Faltungsnetze dar, die für zwei verschiedene Aufgaben ausgebildet sind und die Schichten miteinander teilen, wie in einem anderen Beispiel dargestellt;
- 12 stellt vier neuronale Faltungsnetze dar, die für vier verschiedene Aufgaben ausgebildet sind und die Schichten miteinander teilen, wie in einem anderen Beispiel dargestellt;
- 13 stellt ein Flussdiagramm eines Verfahrens zum Bestimmen der Anzahl von Schichten eines ersten neuronalen Faltungsnetzwerks dar, die mit einem zweiten neuronalen Faltungsnetzwerk gemäß einer weiteren exemplarischen Ausführungsform gemeinsam genutzt werden sollen; und
- 14 stellt ein konvolutionäres neuronales Netzwerk nach einer weiteren exemplarischen Ausführungsform dar, bei der verschiedene Merkmalsvektoren mit unterschiedlichen Genauigkeiten erzeugt werden.
-
Es ist zu beachten, dass die in den Abbildungen dargestellten Elemente aus Gründen der Einfachheit und Klarheit nicht unbedingt maßstabsgetreu dargestellt wurden. So können beispielsweise die Dimensionen einiger der Elemente aus Gründen der Übersichtlichkeit im Vergleich zu anderen Elementen übertrieben sein. Darüber hinaus können gegebenenfalls Referenznummern zwischen den Ziffern wiederholt werden, um entsprechende oder analoge Elemente anzugeben.
-
DETAILLIERTE BESCHREIBUNG VON VERSCHIEDENEN AUSFÜHRUNGSFORMEN
-
Zahlreiche spezifische Details werden erläutert, um ein gründliches Verständnis der hierin beschriebenen exemplarischen Ausführungsformen zu ermöglichen. Es wird jedoch von denjenigen mit gewöhnlichen Fähigkeiten in der Technik verstanden, dass die hierin beschriebenen Ausführungsformen ohne diese spezifischen Details praktiziert werden können. In anderen Fällen wurden bekannte Methoden, Verfahren und Komponenten nicht im Detail beschrieben, um die hierin beschriebenen Ausführungsformen nicht zu verdecken. Darüber hinaus ist diese Beschreibung nicht als Einschränkung des Umfangs der hierin beschriebenen Ausführungsformen zu verstehen, sondern lediglich als Beschreibung der Umsetzung der verschiedenen hierin beschriebenen Ausführungsformen.
-
Das Wort „a“ oder „an“, wenn es in Verbindung mit dem Begriff „umfassend“ oder „einschließend“ in den Ansprüchen und/oder der Spezifikation verwendet wird, kann „eins“ bedeuten, steht aber auch im Einklang mit der Bedeutung von „ein oder mehrere“, „mindestens ein“ und „ein oder mehrere als eins“, sofern der Inhalt nichts anderes bestimmt. Ebenso kann das Wort „andere“ mindestens eine Sekunde oder mehr bedeuten, es sei denn, der Inhalt verlangt eindeutig etwas anderes.
-
Die hierin verwendeten Begriffe „gekoppelt“, „koppelnden“ oder „verbunden“ können je nach Kontext, in dem diese Begriffe verwendet werden, unterschiedliche Bedeutungen haben. So können beispielsweise die Begriffe gekoppelt, koppelnden t oder verbunden eine mechanische oder elektrische Bedeutung haben. So können beispielsweise, wie hierin verwendet, die Begriffe gekoppelt, koppelnden oder verbunden darauf hinweisen, dass zwei Elemente oder Vorrichtungen je nach Kontext direkt miteinander verbunden oder über ein oder mehrere Zwischenelemente oder Vorrichtungen über ein elektrisches Element, ein elektrisches Signal oder ein mechanisches Element miteinander verbunden sind.
-
Dabei kann ein Bild eine Vielzahl von sequentiellen Bildrahmen beinhalten, die zusammen ein von der Videoaufnahmevorrichtung aufgenommenes Video bilden. Jeder Bildausschnitt kann durch eine Matrix von Pixeln dargestellt werden, wobei jedes Pixel einen Pixelbildwert aufweist. So kann beispielsweise der Pixelbildwert ein numerischer Wert auf Graustufen (z.B. 0 bis 255) oder eine Vielzahl von numerischen Werten für Farbbilder sein. Beispiele für Farbräume, die zur Darstellung von Pixelbildwerten in Bilddaten verwendet werden, sind RGB, YUV, CYKM, YCBCR 4:2:2, YCBCR 4:2:0 Bilder.
-
„Metadaten“ oder Varianten davon beziehen sich auf Informationen, die durch computerimplementierte Analyse von Bildern einschließlich Bildern in Videos erhalten wurden. So kann beispielsweise die Videoverarbeitung Bildverarbeitungsvorgänge, das Analysieren, Verwalten, Komprimieren, Codieren, Speichern, Übertragen und/oder Wiedergeben der Videodaten umfassen, ist aber nicht darauf beschränkt. Die Analyse des Videos kann das Segmentieren von Bereichen von Einzelbildern und das Erkennen von visuellen Objekten, das Verfolgen und/oder Klassifizieren von visuellen Objekten innerhalb der erfassten Szene, die durch die Bilddaten dargestellt wird, beinhalten. Die Verarbeitung der Bilddaten kann auch zusätzliche Informationen über die in den auszugebenden Bildern erfassten Bilddaten oder visuellen Objekte verursachen. Solche Zusatzinformationen werden beispielsweise allgemein als Metadaten verstanden. Die Metadaten können auch für die Weiterverarbeitung der Bilddaten verwendet werden, wie z.B. das Zeichnen von Begrenzungsrahmen um erkannte Objekte in den Bildrahmen.
-
Wie von einem Fachmann geschätzt wird, können die verschiedenen hierin beschriebenen exemplarischen Ausführungsformen als Verfahren, System oder Computerprogrammprodukt ausgeführt werden. Dementsprechend können die verschiedenen exemplarischen Ausführungsformen in Form einer vollständigen Hardwareausführungsform, einer vollständigen Softwareausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform, die Soft- und Hardwareaspekte kombiniert, die im Allgemeinen alle als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können, erfolgen. Darüber hinaus können die verschiedenen exemplarischen Ausführungsformen in Form eines Computerprogrammprodukts auf einem computerverwendbaren Speichermedium mit einem in dem Medium enthaltenen computerverwendbaren Programmcode vorliegen.
-
Es darf jedes geeignete computerverwendbare oder computerlesbare Medium verwendet werden. Das computerverwendbare oder computerlesbare Medium kann beispielsweise ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung, eine Vorrichtung oder ein Übertragungsmedium sein. Im Zusammenhang mit diesem Dokument kann ein computerverwendbares oder computerlesbares Medium jedes Medium sein, das das Programm zur Verwendung durch oder in Verbindung mit dem Befehlsausführungssystem, der Vorrichtung oder der Vorrichtung enthalten, speichern, kommunizieren, verbreiten oder transportieren kann.
-
Computerprogrammcode zur Ausführung von Operationen verschiedener exemplarischer Ausführungsformen kann in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++, Python oder dergleichen geschrieben werden. Der Computerprogrammcode zur Durchführung von Operationen verschiedener exemplarischer Ausführungsformen kann jedoch auch in herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben werden. Der Programmcode kann vollständig auf einem Computer, teilweise auf dem Computer, als eigenständiges Softwarepaket, teilweise auf dem Computer und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. In diesem Szenario kann der entfernte Computer über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN) mit dem Computer verbunden sein, oder die Verbindung kann zu einem externen Computer hergestellt werden (z.B. über das Internet über einen Internet Service Provider).
-
Im Folgenden werden verschiedene exemplarische Ausführungsformen mit Bezug auf Flussdiagrammdarstellungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagramm-Illustrationen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagramm-Illustrationen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Sondercomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine zur Verfügung gestellt werden, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Ausführung der im Flussdiagramm und/oder Blockdiagrammblock oder den Blockdiagrammblöcken angegebenen Funktionen/Aktionen schaffen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Speicher gespeichert werden, der einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die im computerlesbaren Speicher gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die im Flussdiagramm und/oder Blockdiagramm angegebene Funktion/Aktion umsetzen.
-
Die Computerprogrammanweisungen können auch in einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um eine Reihe von Betriebsschritten zu veranlassen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Schritte zur Implementierung der im Flussdiagramm und/oder Blockdiagrammblock oder den Blocks angegebenen Funktionen/Aktionen vorsehen.
-
Unter Bezugnahme nun auf 1 ist darin ein Blockdiagramm der angeschlossenen Geräte eines Videoerfassungs- und Wiedergabesystems 100 gemäß einer exemplarischen Ausführungsform dargestellt. So kann beispielsweise das Videoerfassungs- und Wiedergabesystem 100 als Videoüberwachungssystem verwendet werden. Das Videoerfassungs- und Wiedergabesystem 100 beinhaltet Hard- und Software, die die hierin beschriebenen Prozesse und Funktionen ausführen.
-
Das Videoerfassungs- und Wiedergabesystem 100 beinhaltet mindestens eine Videoerfassungsvorrichtung 108, die betreibbar ist, um eine Vielzahl von Bildern zu erfassen und Bilddaten zu erzeugen, die die Vielzahl der erfassten Bilder darstellen. Die Videoerfassungsvorrichtung 108 oder Kamera 108 ist eine Bilderfassungsvorrichtung und beinhaltet Sicherheitsvideokameras.
-
Jede Videoerfassungsvorrichtung 108 beinhaltet mindestens einen Bildsensor 116 zum Erfassen einer Vielzahl von Bildern. Die Videoaufnahmevorrichtung 108 kann eine digitale Videokamera sein und der Bildsensor 116 kann das aufgenommene Licht als digitale Daten ausgeben. So kann beispielsweise der Bildsensor 116 ein CMOS, NMOS oder CCD sein. In einigen Ausführungsformen kann die Videoaufnahmevorrichtung 108 eine analoge Kamera sein, die mit einem Encoder verbunden ist.
-
Der mindestens eine Bildsensor 116 kann zum Erfassen von Licht in einem oder mehreren Frequenzbereichen betreibbar sein. So kann beispielsweise der mindestens eine Bildsensor 116 betreibbar sein, um Licht in einem Bereich zu erfassen, der im Wesentlichen dem Frequenzbereich des sichtbaren Lichts entspricht. In anderen Beispielen kann der mindestens eine Bildsensor 116 betreibbar sein, um Licht außerhalb des sichtbaren Lichtbereichs, wie beispielsweise im Infrarot- und/oder Ultraviolettbereich, zu erfassen. In anderen Beispielen kann die Videoaufnahmevorrichtung 108 eine Multisensorkamera sein, die zwei oder mehr Sensoren beinhaltet, die zum Erfassen von Licht in verschiedenen Frequenzbereichen betreibbar sind.
-
Die mindestens eine Videoaufnahmevorrichtung 108 kann eine spezielle Kamera beinhalten. Es versteht sich, dass sich eine spezielle Kamera hierin auf eine Kamera bezieht, deren Hauptmerkmale die Aufnahme von Bildern oder Videos sind. In einigen exemplarischen Ausführungsformen kann die dedizierte Kamera Funktionen ausführen, die den aufgenommenen Bildern oder Videos zugeordnet sind, wie beispielsweise, aber nicht darauf beschränkt, die Verarbeitung der von ihr oder einer anderen Videoerfassungsvorrichtung 108 erzeugten Bilddaten. Die dedizierte Kamera kann beispielsweise eine Überwachungskamera sein, wie beispielsweise eine Schwenk-/Neige-Zoomkamera, Dome-Kamera, Deckeneinbaukamera, Boxkamera und Kugelkamera.
-
Zusätzlich oder alternativ kann die mindestens eine Videoaufnahmevorrichtung 108 eine integrierte Kamera beinhalten. Es versteht sich, dass sich eine eingebettete Kamera hierin auf eine Kamera bezieht, die in eine Vorrichtung eingebettet ist, die betriebsbereit ist, um Funktionen auszuführen, die nichts mit dem aufgenommenen Bild oder Video zu tun haben. Die eingebettete Kamera kann beispielsweise eine Kamera sein, die sich auf einem beliebigen Laptop, Tablett, Drohnengerät, Smartphone, Videospielkonsole oder Controller befindet.
-
Jede Videoerfassungsvorrichtung 108 beinhaltet einen oder mehrere Prozessoren 124 (CPU), eine oder mehrere mit den Prozessoren gekoppelte Speichervorrichtungen 132 (Speicher) und eine oder mehrere Netzwerkschnittstellen. Die Speichervorrichtung kann einen lokalen Speicher (wie z.B. einen Direktzugriffsspeicher und einen Cache-Speicher) beinhalten, der bei der Ausführung von Programmanweisungen verwendet wird. Der Prozessor führt Computerprogrammanweisungen (wie z.B. ein Betriebssystem und/oder Anwendungsprogramme) aus, die auf der Speichervorrichtung gespeichert werden können.
-
In verschiedenen Ausführungsformen kann der Prozessor 124 durch jede geeignete Verarbeitungsschaltung mit einer oder mehreren Schaltungseinheiten implementiert werden, einschließlich eines digitalen Signalprozessors (DSP), eines eingebetteten Grafikprozessor (GPU) usw., und jede geeignete Kombination davon, die unabhängig oder parallel arbeitet, einschließlich möglicherweise redundanter Betriebsweise. Eine solche Verarbeitungsschaltung kann durch eine oder mehrere integrierte Schaltungen (IC) implementiert werden, einschließlich der Implementierung durch eine monolithische integrierte Schaltung (MIC), eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA) usw. oder eine geeignete Kombination derselben. Zusätzlich oder alternativ kann eine solche Verarbeitungsschaltung beispielsweise als speicherprogrammierbare Steuerung (PLC) (PLC: „programmable logic Controller“)) implementiert werden. Der Prozessor kann eine Schaltung zum Speichern von Speicher, wie beispielsweise digitale Daten, beinhalten und kann beispielsweise die Speicherschaltung umfassen oder in kabelgebundener Verbindung mit der Speicherschaltung stehen.
-
In verschiedenen exemplarischen Ausführungsformen ist die mit der Prozessorkreisschaltung gekoppelte Speichervorrichtung 132 zum Speichern von Daten und Computerprogrammbefehlen betreibbar. Typischerweise ist die Speichervorrichtung ganz oder teilweise eine digitale elektronische integrierte Schaltung oder aus einer Vielzahl von digitalen elektronischen integrierten Schaltungen gebildet. Die Speichervorrichtung kann zum Beispiel als Nur-Lese-Speicher (ROM), Programmierbarer Nur-Lese-Speicher (PROM), Löschbarer Programmierbarer Nur-Lese-Speicher (EPROM), Elektrisch Löschbarer Programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein oder mehrere Flash-Laufwerke, universelle serielle Bus-(USB)-Speichereinheiten, magnetischer Speicher, optischer Speicher, magnetisch-optischer Speicher usw. oder eine beliebige Kombination davon implementiert werden. Die Speichervorrichtung kann betreibbar sein, um den Speicher als flüchtigen Speicher, nichtflüchtigen Speicher, dynamischen Speicher usw. oder eine beliebige Kombination davon zu speichern.
-
In verschiedenen exemplarischen Ausführungsformen kann eine Vielzahl der Komponenten der Bilderfassungsvorrichtung 108 innerhalb eines Systems auf einem Chip (SOC) gemeinsam implementiert werden. So können beispielsweise der Prozessor 124, die Speichervorrichtung 116 und die Netzwerkschnittstelle innerhalb eines SOC implementiert werden. Darüber hinaus können bei dieser Implementierung ein Universalprozessor und ein oder mehrere Grafikprozessoren und ein DSP gemeinsam innerhalb des SOC implementiert werden.
-
In Fortführung von 1 ist jede der mindestens einen Videoaufnahmevorrichtungen 108 mit einem Netzwerk 140 verbunden. Jede Videoerfassungsvorrichtung 108 ist betreibbar, um Bilddaten auszugeben, die Bilder darstellen, die sie erfasst und über das Netzwerk überträgt.
-
Es versteht sich, dass das Netz 140 jedes geeignete Kommunikationsnetz sein kann, das den Empfang und die Übertragung von Daten ermöglicht. So kann beispielsweise das Netzwerk 140 ein lokales Netzwerk, ein externes Netzwerk (wie z.B. ein WAN oder das Internet) oder eine Kombination davon sein. In anderen Beispielen kann das Netzwerk 140 ein Cloud-Netzwerk beinhalten.
-
In einigen Beispielen beinhaltet das Videoerfassungs- und Wiedergabesystem 100 eine Verarbeitungsvorrichtung 148. Die Verarbeitungsvorrichtung 148 ist betreibbar, um die von einer Videoaufnahmevorrichtung 108 ausgegebenen Bilddaten zu verarbeiten. Die Verarbeitungsvorrichtung 148 beinhaltet auch einen oder mehrere Prozessoren und eine oder mehrere Speichervorrichtungen, die mit einem Prozessor (CPU) gekoppelt sind. Die Verarbeitungsvorrichtung 148 kann auch eine oder mehrere Netzwerkschnittstellen beinhalten. Zur besseren Veranschaulichung wird nur ein Verarbeitungsgerät 148 dargestellt; es versteht sich jedoch, dass das Videoerfassungs- und Wiedergabesystem 100 eine beliebige Anzahl von Verarbeitungsgeräten 148 beinhalten kann.
-
So ist beispielsweise die Verarbeitungsvorrichtung 148 wie dargestellt mit einer Videoaufnahmevorrichtung 108 verbunden, die möglicherweise keinen Speicher 132 oder CPU 124 zur Verarbeitung von Bilddaten aufweist. Die Verarbeitungsvorrichtung 148 kann ferner an das Netzwerk 140 angeschlossen sein.
-
Gemäß einer exemplarischen Ausführungsform und wie in 1 dargestellt, beinhaltet das Videoerfassungs- und Wiedergabesystem 100 mindestens eine Workstation 156 (wie beispielsweise einen Server), die jeweils einen oder mehrere Prozessoren mit Grafikverarbeitungseinheiten (GPUs) aufweist. Die mindestens eine Workstation 156 kann auch Speicherplatz beinhalten. Die Workstation 156 empfängt Bilddaten von mindestens einer Videoaufnahmevorrichtung 108 und führt die Verarbeitung der Bilddaten durch. Die Workstation 156 kann weiterhin Befehle zur Verwaltung und/oder Steuerung einer oder mehrerer der Bilderfassungsvorrichtungen 108 senden. Die Workstation 156 kann Rohbilddaten von der Videoaufnahmevorrichtung 108 empfangen. Alternativ oder zusätzlich kann die Workstation 156 Bilddaten empfangen, die bereits einer Zwischenverarbeitung unterzogen wurden, wie beispielsweise die Verarbeitung an der Videoaufnahmevorrichtung 108 und/oder an einem Verarbeitungsgerät 148. Die Workstation 156 kann auch Metadaten aus den Bilddaten empfangen und die Bilddaten weiterverarbeiten.
-
Es versteht sich, dass, während eine einzelne Workstation 156 in 1 dargestellt ist, die Workstation als eine Zusammenfassung einer Vielzahl von Workstations implementiert werden kann.
-
Das Videoerfassungs- und Wiedergabesystem 100 beinhaltet ferner mindestens eine Client-Vorrichtung 164, die mit dem Netzwerk 140 verbunden ist. Die Client-Vorrichtung 164 wird von einem oder mehreren Benutzern verwendet, um mit dem Videoaufnahme- und Wiedergabesystem 100 zu interagieren. Dementsprechend beinhaltet die Client-Vorrichtung 164 mindestens eine Anzeigevorrichtung und mindestens eine Benutzereingabevorrichtung (wie z.B. eine Maus, Tastatur oder einen Touchscreen). Die Client-Vorrichtung 164 ist betreibbar, um auf ihrer Anzeigevorrichtung eine Benutzeroberfläche zum Anzeigen von Informationen, Empfangen von Benutzereingaben und Abspielen von Videos anzuzeigen. So kann beispielsweise die Client-Vorrichtung ein Personalcomputer, Laptops, Tablet, Personal Data Assistant (PDA), Mobiltelefon, Smartphone, Spielgerät und anderen mobilen Geräten sein.
-
Die Client-Vorrichtung 164 ist betreibbar, um Bilddaten über das Netzwerk 140 zu empfangen und ist ferner betreibbar, um die empfangenen Bilddaten wiederzugeben. Eine Client-Vorrichtung 164 kann auch Funktionalitäten zur Verarbeitung von Bilddaten aufweisen. So können beispielsweise die Verarbeitungsfunktionen einer Client-Vorrichtung 164 auf die Verarbeitung in Bezug auf die Fähigkeit zur Wiedergabe der empfangenen Bilddaten beschränkt sein. In anderen Beispielen können Bildverarbeitungsfunktionalitäten zwischen der Workstation und einem oder mehreren Client-Geräten 164 geteilt werden.
-
In einigen Beispielen kann das Bilderfassungs- und Wiedergabesystem 100 ohne die Workstation 156 implementiert werden. Dementsprechend können die Bildverarbeitungsfunktionalitäten vollständig auf einem oder mehreren Videoaufnahmegeräten 108 ausgeführt werden. Alternativ können die Bildverarbeitungsfunktionen auch von zwei oder mehr der Videoerfassungsgeräte 108, der Verarbeitungsvorrichtung 148 und den Client-Geräten 164 gemeinsam genutzt werden.
-
Unter Bezugnahme auf 2A ist darin ein Blockdiagramm eines Satzes 200 von Betriebsmodulen des Videoerfassungs- und Wiedergabesystems 100 gemäß einer exemplarischen Ausführungsform dargestellt. Die Betriebsmodule können in Hardware, Software oder beides auf einem oder mehreren der Geräte des Videoerfassungs- und Wiedergabesystems 100 implementiert sein, wie in 1 dargestellt.
-
Der Satz 200 von Betriebsmodulen beinhaltet mindestens ein Videoerfassungsmodul 208. So kann beispielsweise jede Videoaufnahmevorrichtung 108 ein Videoaufnahmemodul 208 implementieren. Das Videoerfassungsmodul 208 ist betreibbar, um eine oder mehrere Komponenten (wie z.B. Sensor 116) einer Videoerfassungsvorrichtung 108 zum Erfassen von Bildern zu steuern.
-
Der Satz 200 von Betriebsmodulen beinhaltet einen Teilmenge 216 von Bilddatenverarbeitungsmodulen. So beinhaltet beispielsweise und wie dargestellt die Teilmenge 216 der Bilddatenverarbeitungsmodule ein Videoanalysemodul 224 und ein Videoverwaltungsmodul 232.
-
Das Videoanalysemodul 224 empfängt Bilddaten und analysiert die Bilddaten, um Eigenschaften oder Eigenschaften des aufgenommenen Bildes oder Videos und/oder von Objekten in der durch das Bild oder Video dargestellten Szene zu bestimmen. Basierend auf den durchgeführten Bestimmungen kann das Videoanalysemodul 224 weitere Metadaten ausgeben, die Informationen über die Bestimmungen liefern. Beispiele für Bestimmungen, die durch das Videoanalysemodul 224 vorgenommen werden, können eine oder mehrere von Vordergrund-/Hintergrundsegmentierung, Objekterkennung, Objektverfolgung, Objektklassifizierung, virtueller Stolperdraht, Anomalieerkennung, Gesichtsdetection, Gesichtserkennung, Kennzeichenerkennung, Identifizierung von zurückgelassenen oder entfernten Objekten und Business Intelligence beinhalten. Es versteht sich jedoch, dass andere in der Technik bekannte Videoanalysefunktionen auch durch das Videoanalysemodul 224 implementiert werden können.
-
Das Videoverwaltungsmodul 232 empfängt Bilddaten und führt Verarbeitungsfunktionen an den Bilddaten zur Videoübertragung, -wiedergabe und/oder - speicherung durch. So kann beispielsweise das Videoverwaltungsmodul 232 die Bilddaten verarbeiten, um die Übertragung der Bilddaten entsprechend dem Bandbreitenbedarf und/oder der Kapazität zu ermöglichen. Das Videoverwaltungsmodul 232 kann auch die Bilddaten gemäß den Wiedergabefähigkeiten einer Client-Vorrichtung 164 verarbeiten, die das Video wiedergeben soll, wie beispielsweise die Rechenleistung und/oder die Auflösung der Anzeige der Client-Vorrichtung 164. Das Videoverwaltungsmodul 232 kann die Bilddaten auch entsprechend der Speicherkapazität innerhalb des Videoerfassungs- und Wiedergabesystems 100 zur Speicherung von Bilddaten verarbeiten.
-
Es wird davon ausgegangen, dass nach einigen Beispielausführungsformen die Teilmenge 216 der Videoverarbeitungsmodule nur eines der Videoanalysemodule 224 und der Videoverwaltungsmodule 232 beinhalten kann.
-
Der Satz 200 von Betriebsmodulen beinhaltet weiterhin einen Teilsatz 240 von Speichermodulen. So beinhaltet beispielsweise die Teilmenge 240 der Speichermodule ein Videospeichermodul 248 und ein Metadatenspeichermodul 256. Das Videospeichermodul 248 speichert Bilddaten, die Bilddaten sein können, die vom Videoverwaltungsmodul verarbeitet werden. Das Metadatenspeichermodul 256 speichert die vom Videoanalysemodul 224 ausgegebenen Informationsdaten.
-
Es versteht sich, dass das Videospeichermodul 248 und das Metadatenspeichermodul 256 zwar als separate Module dargestellt sind, dass sie jedoch innerhalb derselben Hardware-Speichervorrichtung implementiert werden können, wobei logische Regeln implementiert werden, um gespeichertes Video von gespeicherten Metadaten zu trennen. In anderen exemplarischen Ausführungsformen können das Videospeichermodul 248 und/oder das Metadatenspeichermodul 256 innerhalb einer Vielzahl von Hardware-Speichervorrichtungen implementiert werden, in denen ein verteiltes Speicherschema implementiert werden kann.
-
Der Satz von Betriebsmodulen beinhaltet ferner mindestens ein Videowiedergabemodul 264, das zum Empfangen von Bilddaten und zur Wiedergabe der Bilddaten als Video betreibbar ist. So kann beispielsweise das Videowiedergabemodul 264 auf einer Client-Vorrichtung 164 implementiert werden.
-
Die Betriebsmodule des Sets 200 können auf einer oder mehreren der Bilderfassungsvorrichtungen 108, der Verarbeitungsvorrichtung 148, der Workstation 156 und der Client-Vorrichtung 164 implementiert werden. In einigen exemplarischen Ausführungsformen kann ein Betriebsmodul vollständig auf einer einzigen Vorrichtung implementiert werden. So kann beispielsweise das Videoanalysemodul 224 vollständig auf der Workstation 156 implementiert werden. Ebenso kann das Videoverwaltungsmodul 232 vollständig auf der Workstation 156 implementiert werden.
-
In anderen exemplarischen Ausführungsformen können einige Funktionalitäten eines Betriebsmoduls des Satzes 200 teilweise auf einer ersten Vorrichtung und andere Funktionalitäten eines Betriebsmoduls auf einer zweiten Vorrichtung implementiert werden. So können beispielsweise Videoanalysefunktionalitäten zwischen einem oder mehreren Bildaufnahmegeräten 108, einer Verarbeitungsvorrichtung 148 und einer Workstation 156 aufgeteilt werden. Ebenso können die Videoverwaltungsfunktionen auf eine oder mehrere der folgenden Komponenten aufgeteilt werden: Bilderfassungsgerät 108, Verarbeitungsgerät 148 und Workstation 156.
-
Unter Bezugnahme auf 2B ist darin ein Blockdiagramm eines Satzes 200 von Betriebsmodulen des Videoerfassungs- und Wiedergabesystems 100 gemäß einer bestimmten exemplarischen Ausführungsform dargestellt, worin das Videoanalysemodul 224, das Videoverwaltungsmodul 232 und die Speichervorrichtung 240 vollständig auf einer oder mehreren Bilderfassungsvorrichtungen 108 implementiert sind. Alternativ ist das Videoanalysemodul 224, das Videoverwaltungsmodul 232 und die Speichervorrichtung 240 vollständig auf der Verarbeitungsvorrichtung 148 implementiert.
-
Es wird anerkannt, dass die Möglichkeit, die Teilmenge 216 von Bilddaten-(Video-)Verarbeitungsmodulen auf einem einzigen Gerät oder auf verschiedenen Geräten des Videoerfassungs- und Wiedergabesystems 100 zu implementieren, Flexibilität beim Aufbau des Systems 100 ermöglicht.
-
So kann man beispielsweise ein bestimmtes Gerät mit bestimmten Funktionalitäten mit einem anderen Gerät ohne diese Funktionalitäten verwenden. Dies kann bei der Integration von Geräten verschiedener Parteien (z.B. Hersteller) oder bei der Nachrüstung eines bestehenden Videoaufnahme- und Wiedergabesystems sinnvoll sein.
-
Unter Bezugnahme auf 3 ist darin ein Flussdiagramm einer exemplarischen Ausführungsform eines Verfahrens 350 zum Durchführen von Videoanalysen an einem oder mehreren Einzelbildern eines von einer Videoaufnahmevorrichtung 108 aufgenommenen Videos dargestellt. Die Videoanalyse wird vom Videoanalysemodul 224 durchgeführt, um Eigenschaften oder Merkmale des aufgenommenen Bildes oder Videos und/oder von visuellen Objekten in der im Video aufgenommenen Szene zu bestimmen.
-
Bei 300 wird mindestens ein Bildausschnitt des Videos in Vordergrundflächen und Hintergrundflächen unterteilt. Die Segmentierung trennt Bereiche des Bildausschnitts, die bewegten Objekten (oder zuvor bewegten Objekten) in der aufgenommenen Szene entsprechen, von stationären Bereichen der Szene.
-
Bei 302 werden ein oder mehrere visuelle Vordergrundobjekte in der durch den Bildrahmen dargestellten Szene basierend auf der Segmentierung von 300 erkannt. So kann beispielsweise jeder einzelne zusammenhängende Vordergrundbereich oder „Blob“ als visuelles Vordergrund-Objekt in der Szene identifiziert werden. So werden beispielsweise nur zusammenhängende Vordergrundbereiche, die größer als eine bestimmte Größe sind (wie z.B. die Anzahl der Pixel), als visuelles Vordergrund-Objekt in der Szene identifiziert.
-
Metadaten können ferner generiert werden, die sich auf die erfassten Vordergrundbereiche beziehen. Die Metadaten können die Position und die Referenzkoordinaten des visuellen Vordergrundobjekts oder Objekts innerhalb des Bildausschnitts definieren. So können beispielsweise die Standortmetadaten weiter verwendet werden, um ein Begrenzungsrahmen (wie z.B. bei der Codierung von Videos oder der Wiedergabe von Videos) zu erzeugen, der das erkannte visuelle Objekt im Vordergrund umreißt. Das Bild innerhalb des Begrenzungsrahmens wird extrahiert, als „Chip“ bezeichnet, um in Metadaten aufgenommen zu werden, die zusammen mit dem zugehörigen Video an anderen Geräten, wie z.B. der Workstation 156, im Netzwerk 140 weiterverarbeitet werden können. Kurz gesagt, der Chip ist ein zugeschnittener Teil eines Bildausschnitts des Videos, der das erkannte visuelle Objekt im Vordergrund enthält. Das extrahierte Bild, das der Chip ist, kann abwechselnd kleiner sein als das, was sich im Begrenzungsrahmen befindet, oder größer als das, was sich im Begrenzungsrahmen befindet. Die Größe des zu extrahierenden Bildes sollte beispielsweise in der Nähe, aber außerhalb der tatsächlichen Grenzen des erfassten Objekts liegen. Die Begrenzungsrahmen haben typischerweise eine rechteckige Form.
-
Dem Bildausschnitt kann eine visuelle Anzeige hinzugefügt werden, um jedes der erfassten visuellen Objekte im Vordergrund visuell zu identifizieren. Die visuelle Anzeige kann ein Begrenzungsrahmen sein, der jedes der einen oder mehreren visuellen Objekte im Vordergrund innerhalb des Bildrahmens umgibt.
-
In einigen exemplarischen Ausführungsformen kann die Videoanalyse ferner bei 304 das Klassifizieren der bei 302 erfassten visuellen Objekte (oder Objekte) im Vordergrund beinhalten. So kann beispielsweise eine Mustererkennung durchgeführt werden, um die visuellen Objekte im Vordergrund zu klassifizieren. Ein visuelles Vordergrundobjekt kann nach Klassen klassifiziert werden, wie beispielsweise eine Person, ein Auto oder ein Tier. Zusätzlich oder alternativ kann ein visuelles Objekt durch eine Aktion klassifiziert werden, wie beispielsweise Bewegung und Bewegungsrichtung des visuellen Objekts. Es können auch andere Klassifizierer bestimmt werden, wie z.B. Farbe, Größe, Ausrichtung, etc. In spezifischeren Beispielen kann die Klassifizierung des visuellen Objekts die Identifizierung einer Person auf der Grundlage der Gesichtserkennung und die Erkennung von Text, wie beispielsweise eines Nummernschildes, beinhalten. Die visuelle Klassifizierung kann nach Systemen und Methoden durchgeführt werden, die im gemeinsamen
US-Patent Nr. 8,934,709 beschrieben sind, das durch Verweis hierin in seiner Gesamtheit aufgenommen wird.
-
Die Videoanalyse kann ferner bei 306 das Erkennen, ob ein Ereignis aufgetreten ist, und die Art des Ereignisses beinhalten. Die Erkennung des Ereignisses kann auf einem Vergleich der Klassifizierung eines oder mehrerer visueller Objekte im Vordergrund mit einer oder mehreren vordefinierten Regeln basieren. Das Ereignis kann ein Ereignis in der Anomalieerkennung oder Business Intelligence sein, z.B. ob ein Video-Tripwire ausgelöst wurde, die Anzahl der Personen in einem Bereich, ob ein Objekt in der Szene „zurückgelassen“ wurde oder ob ein Objekt in der Szene entfernt wurde.
-
Ein Beispiel für die Videoanalyse bei 306 kann so eingestellt werden, dass nur Menschen erkannt werden und bei einer solchen Erkennung Chips der menschlichen Objekte mit Referenzkoordinaten jedes der Chips zur Aufnahme in Metadaten extrahiert werden, die zusammen mit dem zugehörigen Video an anderen Vorrichtungen, wie beispielsweise der Workstation 156 im Netzwerk 140, weiterverarbeitet werden können.
-
Unter Bezugnahme nun auf 4 ist darin ein Flussdiagramm einer exemplarischen Ausführungsform eines Verfahrens 400 zum Durchführen einer Erscheinungsanpassung zum Auffinden eines Objekts von Interesse auf einem oder mehreren Einzelbildern eines von einer Videoaufnahmevorrichtung 108 (Kamera 108) aufgenommenen Videos dargestellt. Das Video wird von der Kamera 108 über einen Zeitraum aufgenommen. Die Zeit kann über Stunden, Tage oder Monate verteilt sein und auf mehrere Videodateien oder Segmente verteilt sein. Die Bedeutung von „Video“, wie sie hierin verwendet wird, umfasst Videodateien und Videosegmente mit zugehörigen Metadaten, die Zeitangaben enthalten und welche Kamera 108 identifizieren, in Fällen, in denen es mehr als eine Kamera gibt. Die Verarbeitung des Videos wird in mehrere Stufen unterteilt und verteilt, um die Ressourcenauslastung und die Indizierung für die anschließende Suche nach interessanten Objekten (oder Personen) zu optimieren. Das Video, in dem diese interessierten Personen bei der Suche gefunden werden, kann dann von den Nutzern überprüft werden.
-
Das Video der Szene 402 wird von der Kamera 108 aufgenommen. Die Szene 402 befindet sich im Sichtfeld der Kamera 108. Das Video wird vom Videoanalysemodul 224 in der Kamera 108 verarbeitet, um Metadaten mit Chips 404 zu erzeugen. Das Videoanalysemodul 224 übernimmt die Objekterkennung und -klassifizierung und erzeugt aus dem Video Bilder (Chips), die die Objekte in der Szene 402 am besten darstellen. In diesem Beispiel werden die Bilder der Objekte, die als Personen oder Menschen klassifiziert sind, aus dem Video extrahiert und als Chips 404 zur weiteren Identifikationsverarbeitung in die Metadaten aufgenommen. Die Metadaten mit den Chips 404 und dem Video werden über das Netzwerk 140 an einen Server 406 gesendet. Der Server 406 kann die Workstation 156 oder eine Client-Vorrichtung 164 sein.
-
Auf dem Server 406 stehen deutlich mehr Ressourcen zur Verfügung, um 408 die Chips 404 weiterzuverarbeiten und Feature-Vektoren (oder „Signaturen“ oder „Binäre Darstellungen“) 410 zu generieren, um die Objekte in der Szene 402 darzustellen. Der Prozess 408 ist in der Technik beispielsweise als Feature-Deskriptor bekannt.
-
In der Computer-Vision ist ein Feature-Deskriptor allgemein bekannt als ein Algorithmus, der ein Bild aufnimmt und Featurebeschreibungen oder Featurevektoren über eine Bildtransformation ausgibt. Feature-Deskriptoren kodieren Informationen, d.h. ein Bild, in eine Reihe von Zahlen, um als numerischer „Fingerabdruck“ zu fungieren, mit dem ein Merkmal von einem anderen unterschieden werden kann. Im Idealfall sind diese Informationen bei der Bildtransformation invariant, so dass die Merkmale in einem anderen Bild des gleichen Objekts wiedergefunden werden können. Beispiele für Feature-Deskriptor-Algorithmen sind SIFT (Scale-invariant feature transform), HOG (histogram of oriented gradients) und SURF (Speeded Up Robust Features).
-
Ein Merkmalsvektor ist ein n-dimensionaler Vektor von numerischen Merkmalen (Zahlen), die ein Bild eines Objekts darstellen, das von Computern verarbeitet werden kann. Durch den Vergleich des Merkmalsvektors eines Bildes eines Objekts mit dem Merkmalsvektor eines anderen Bildes kann ein computerimplementierbarer Prozess bestimmen, ob das eine Bild und das andere Bild Bilder desselben Objekts sind. Die Bildsignaturen (oder Merkmalsvektoren, oder Einbettung, oder Darstellung, etc.) sind mehrdimensionale Vektoren, die durch (z.B. konvolutionäre) neuronale Netze berechnet werden.
-
Durch die Berechnung des euklidischen Abstands zwischen den beiden Merkmalsvektoren der beiden von der Kamera 108 aufgenommenen Bilder kann ein computerimplementierbarer Prozess einen Ähnlichkeitswert bestimmen, um anzuzeigen, wie ähnlich die beiden Bilder sein können. Die neuronalen Netze werden so trainiert, dass die Merkmalsvektoren, die sie für Bilder berechnen, nahe (niedriger euklidischer Abstand) für ähnliche Bilder und weit (hoher euklidischer Abstand) für ungleiche Bilder sind. Um relevante Bilder abzurufen, wird der Merkmalsvektor des Suchbildes mit den Merkmalsvektoren der Bilder in der Datenbank 414 verglichen. Die Suchergebnisse können in aufsteigender Reihenfolge ihrer Entfernung (Wert zwischen 0 und 1) zum Suchbild angezeigt werden. Der Ähnlichkeitswert kann beispielsweise ein Prozentsatz sein, der aus dem Wert zwischen 0 und 1 umgerechnet wird.
-
In diesem Beispiel verwendet der Prozess 408 eine Lernmaschine, um die Chips 404 zu verarbeiten, um die Merkmalsvektoren oder Signaturen der Bilder der im Video erfassten Objekte zu erzeugen. Die Lernmaschine ist beispielsweise ein neuronales Netzwerk, wie beispielsweise ein Faltungsneuronales Netzwerk (CNN), das auf einer Grafikverarbeitungseinheit (GPU) läuft. Das CNN kann mit Hilfe von Trainingsdatensätzen trainiert werden, die Millionen von Paaren ähnlicher und unähnlicher Bilder enthalten. Das CNN zum Beispiel ist eine siamesische Netzwerkarchitektur, die mit einer kontrastiven Verlustfunktion trainiert wird, um die neuronalen Netze zu trainieren. Ein Beispiel für ein siamesisches Netzwerk ist in Bromley, Jane, et al. „Signaturverifizierung mit einem neuronalen Zeitverzögerungsnetzwerk „Siamese“ beschrieben.“ International Journal of Pattern Recognition and Artificial Intelligence 7.04 (1993): 669-688, dessen Inhalt hiermit durch Verweis in seiner Gesamtheit übernommen wird.
-
Der Prozess 408 setzt ein trainiertes Modell im sogenannten Batch-Learning ein, bei dem die gesamte Schulung durchgeführt wird, bevor sie im Erscheinungsbild-Suchsystem verwendet wird. Das trainierte Modell, in dieser Ausführungsform, ist ein Faltungs-Lernmodell für neuronale Netzwerke mit einem möglichen Satz von Parametern. Es gibt eine Vielzahl von möglichen Parametersätzen für ein bestimmtes Lernmodell. Optimierungsmethoden (z.B. stochastischer Gradientenabstieg) und numerische Gradientenberechnungsmethoden (z.B. Backpropagation) können verwendet werden, um den Parametersatz zu finden, der unsere Zielfunktion minimiert (AKA-Verlustfunktion). Als Zielfunktion wird die kontrastive Verlustfunktion verwendet. Diese Funktion ist so definiert, dass sie hohe Werte benötigt, wenn das aktuell trainierte Modell weniger genau ist (weist hohen Abstand zu ähnlichen Paaren oder niedrigen Abstand zu ungleichen Paaren zu), und niedrige Werte, wenn das aktuell trainierte Modell genauer ist (weist niedrigen Abstand zu ähnlichen Paaren und hohen Abstand zu ungleichen Paaren zu). Der Trainingsprozess reduziert sich somit auf ein Minimierungsproblem. Der Prozess der Suche nach dem genauesten Modell ist der Trainingsprozess, das resultierende Modell mit dem Parametersatz ist das trainierte Modell und der Parametersatz wird nicht verändert, sobald er auf dem Erscheinungsbild-Suchsystem eingesetzt wird.
-
Eine alternative Ausführungsform für den Prozess 408 ist der Einsatz eines Lerngeräts unter Verwendung so genannter Online-Maschinenlernalgorithmen. Die Lernmaschine würde in Prozess 408 mit einem ersten Satz von Parametern eingesetzt werden, jedoch wird das Erscheinungsbild-Suchsystem die Parameter des Modells basierend auf einer Quelle der Wahrheit immer wieder aktualisieren (z.B. Benutzerfeedback bei der Auswahl der Bilder der Objekte von Interesse). Solche Lernmaschinen beinhalten auch andere Arten von neuronalen Netzen sowie faltungsneuronale Netze.
-
Die Chips 404 von menschlichen Objekten werden durch den Prozess 408 verarbeitet, um Merkmalsvektoren 410 zu erzeugen. Die Feature-Vektoren 410 sind indiziert 412 und werden in einer Datenbank 414 mit dem Video gespeichert. Die Merkmalsvektoren 410 sind auch mit Referenzkoordinaten verknüpft, an denen sich die Chips 404 der menschlichen Objekte im Video befinden können. Der Datenbankspeicher 414 beinhaltet das Speichern des Videos mit Zeitstempeln und Kamerakennung sowie die zugehörigen Metadaten mit den Merkmalsvektoren 410 der Chips 404 und Referenzkoordinaten, wo sich die Chips 404 im Video befinden.
-
Um eine bestimmte Person im Video zu lokalisieren, wird ein Merkmalsvektor der betreffenden Person generiert. Merkmalsvektoren 416, die dem Merkmalsvektor der interessierten Person ähnlich sind, werden aus der Datenbank 414 extrahiert. Die extrahierten Feature-Vektoren 416 werden 418 mit einem Schwellenwert-Ähnlichkeitswert verglichen und diejenigen, die den Schwellenwert überschreiten, werden einem Client 420 zur Präsentation vor einem Benutzer bereitgestellt. Der Client 420 verfügt auch über das Videowiedergabemodul 264, mit dem der Benutzer das Video zu den extrahierten Merkmalsvektoren 416 betrachten kann.
-
Im Detail wird das trainierte Modell mit einer vordefinierten Abstandsfunktion trainiert, die zum Vergleich der berechneten Merkmalsvektoren dient. Die gleiche Entfernungsfunktion wird verwendet, wenn das trainierte Modell im Erscheinungsbild-Suchsystem eingesetzt wird. Die Entfernungsfunktion ist der euklidische Abstand zwischen den Merkmalsvektoren, bei dem die Merkmalsvektoren normiert sind, um Einheitsnormen zu haben, und somit liegen alle Merkmalsvektoren auf einer Unit-Norm-Hyperkugel. Nach dem Berechnen und Speichern der Merkmalsvektoren der erkannten Objekte in der Datenbank erfolgt die Suche nach ähnlichen Objekten mit einer exakten Nachbarsuche: die vollständige Auswertung der Entfernung vom abgefragten Merkmalsvektor (Merkmalsvektor des Objekts) zu allen anderen Vektoren im Zeitrahmen des Interesses. Die Suchergebnisse werden in absteigender Reihenfolge ihrer Entfernung zum abgefragten Merkmalsvektor angezeigt.
-
In einer alternativen Ausführungsform kann eine ungefähre Suche nach dem nächsten Nachbarn verwendet werden. Es ist ähnlich wie sein „genaues“ Gegenstück, aber es ruft die wahrscheinlichsten ähnlichen Ergebnisse ab, ohne alle Ergebnisse zu betrachten. Dies ist schneller, kann aber zu falschen Negativen führen. Ein Beispiel für einen ungefähren nächsten Nachbarn kann eine Indizierung eines Hashings der Merkmalsvektoren verwenden. Eine ungefähre Suche nach dem nächsten Nachbarn kann schneller sein, wenn die Anzahl der Merkmalsvektoren groß ist, z.B. wenn die Suchzeiträume lang sind.
-
Für mehr Sicherheit wird davon ausgegangen, dass ein „Objekt des Interesses“ eine „Person des Interesses“ beinhaltet und dass eine „Person des Interesses“ ein „Objekt des Interesses“ beinhaltet.
-
Unter Bezugnahme auf 5 ist darin ein Flussdiagramm der exemplarischen Ausführungsform von 4 dargestellt, das Details der Erscheinungssuche 500 zeigt, um beim Kunden 420 eine Übereinstimmung des Erscheinungsbildes durchzuführen, um aufgenommene Videos eines Objekts von Interesse zu finden. Um eine Erscheinungssuche nach einem Objekt von Interesse einzuleiten, wird ein Merkmalsvektor des Objekts von Interesse benötigt, um in der Datenbank 414 nach ähnlichen Merkmalsvektoren zu suchen. In der Erscheinungssuche 500 sind zwei exemplarische Methoden zum Einleiten einer Erscheinungssuche dargestellt.
-
In der ersten Methode zum Einleiten der Appearance Search 500 wird ein Bild eines Objekts von Interesse 502 beim Kunden 420 empfangen, wo es an den Prozess 408 gesendet wird, um 504 einen Merkmalsvektor des Objekts von Interesse zu erzeugen. In der zweiten Methode sucht der Benutzer 514 in der Datenbank 414 nach einem Bild des Objekts von Interesse und ruft 516 den Merkmalsvektor des Objekts von Interesse ab, der zuvor erzeugt wurde, als das Video zur Speicherung in der Datenbank 414 verarbeitet wurde.
-
Ausgehend vom ersten Verfahren oder dem zweiten Verfahren wird dann in der Datenbank 414 nach Kandidaten-Merkmalsvektoren gesucht, die im Vergleich zum Merkmalsvektor des zu untersuchenden Objekts eine Ähnlichkeitsbewertung aufweisen, die über einen Schwellenwert hinausgeht, der beispielsweise 70% betragen könnte. Die Bilder der Vektoren der Kandidatenmerkmale werden empfangen 508 und dann beim Kunden 420 präsentiert, damit der Benutzer 510 die Bilder der Vektoren der Kandidatenmerkmale auswählen kann, die von Interesse sind oder sein können. Der Client 420 verfolgt die ausgewählten Bilder in einer Liste. Die Liste mit den Bildern, die vom Benutzer als Objekt von Interesse ausgewählt wurden. Optional kann der Benutzer bei Auswahl 510 auch Bilder, die vom Benutzer ausgewählt wurden, aus der Liste entfernen, die später als falsch erachtet wurden.
-
Bei jeder Auswahl eines neuen Bildes (oder von Bildern) des Objekts von Interesse bei Auswahl 510 werden die Merkmalsvektoren der neuen Bilder in der Datenbank 414 gesucht 506 und neue Kandidatenbilder des Objekts von Interesse werden beim Kunden 420 präsentiert, damit der Benutzer erneut 510 neue Bilder auswählen kann, die das Objekt von Interesse sind oder sein können. Diese Suchschleife der Erscheinungssuche 500 kann fortgesetzt werden, bis der Benutzer entscheidet, dass genügend Bilder des Objekts von Interesse gefunden wurden, und beendet die Suche 512. Der Benutzer kann dann beispielsweise die Videos ansehen oder herunterladen, die den Bildern auf der Liste zugeordnet sind.
-
Unter Bezugnahme auf 6 ist darin ein Flussdiagramm der exemplarischen Ausführungsform von 4 dargestellt, das Details der getakteten Erscheinungssuche 600 zur Durchführung einer Erscheinungsanpassung beim Kunden 420 zeigt, um aufgenommene Videos eines Objekts von Interesse entweder vor oder nach einer ausgewählten Zeit zu lokalisieren. Diese Art der Suche ist nützlich, um z.B. einen verlorenen Beutel zu finden, indem man Bilder näher an der aktuellen Zeit findet und die Rückverfolgung in der Zeit, um festzustellen, wer eine Tasche unbeaufsichtigt gelassen hat.
-
Um eine Erscheinungssuche nach einem Objekt von Interesse zu starten, wird ein Merkmalsvektor des Objekts von Interesse benötigt, um in der Datenbank 414 nach ähnlichen Merkmalsvektoren zu suchen. In Timed Appearance Search 600, wie auch in Appearance Search 500, werden zwei exemplarische Methoden zum Einleiten einer zeitgesteuerten Erscheinungssuche veranschaulicht. In der ersten Methode zum Einleiten der Erscheinungssuche 600 wird ein Bild eines Objekts von Interesse 602 beim Kunden 420 empfangen, wo es an den Prozess 408 gesendet wird, um einen Merkmalsvektor des Objekts von Interesse zu erzeugen 604. In der zweiten Methode sucht der Benutzer 614 in der Datenbank 414 nach einem Bild des Objekts von Interesse und ruft 616 den Merkmalsvektor des Objekts von Interesse ab, der zuvor erzeugt wurde, als das Video vor der Speicherung in der Datenbank 414 verarbeitet wurde.
-
Von entweder der ersten Methode oder der zweiten Methode stellt 618 die getaktete Erscheinungssuche 600 ein, um entweder vorwärts oder rückwärts in der Zeit zu suchen. Mit der ersten Methode kann eine Suchzeit vom Benutzer manuell auf 618 eingestellt werden. Bei der zweiten Methode wird die Suchstartzeit 618 zu dem Zeitpunkt eingestellt, zu dem das Bild von der Kamera 108 aufgenommen wurde. In diesem Beispiel wird diese Einstellung auf vorwärts in der Zeit eingestellt, um z.B. ein verlorenes Kind näher an die aktuelle Zeit zu bringen. In einem anderen Beispiel kann diese Einstellung rückwärts eingestellt werden, wenn der Benutzer beispielsweise bestimmen möchte, wer eine Tasche (das Objekt von Interesse) unbeaufsichtigt gelassen haben könnte.
-
Anschließend wird aus der Datenbank 414 nach Kandidaten-Merkmalsvektoren gesucht 606, die im Vergleich zum Merkmalsvektor des Objekts des Interesses eine Ähnlichkeitsbewertung aufweisen, die über einen Schwellenwert hinausgeht, der beispielsweise 80% betragen könnte. Die Bilder der Kandidaten-Merkmalsvektoren werden 608 empfangen und dann beim Kunden 420 präsentiert, damit der Benutzer aus den Bildern der Kandidaten-Merkmalsvektoren ein Bild auswählen kann 610, das für das Objekt von Interesse ist oder sein könnte. Der Client 420 verfolgt die ausgewählten Bilder in einer Liste. Die Liste umfasst die Bilder, die vom Benutzer als das Objekt von Interesse ausgewählt wurden. Optional kann der Benutzer bei Auswahl 610 auch Bilder, die vom Benutzer ausgewählt wurden, aus der Liste entfernen, die später als falsch erachtet wurden.
-
Bei jeder Auswahl eines neuen Bildes des Objekts von Interesse bei Auswahl 610 wird der Merkmalsvektor der neuen Bilder 606, vorwärts in der Zeit ab dem Suchzeitpunkt, in der Datenbank 414 gesucht. Die Suchzeit ist der Zeitpunkt, zu dem das neue Bild von der Kamera 108 aufgenommen wurde. Die neuen Kandidatenbilder des Objekts werden beim Kunden 420 präsentiert, damit der Benutzer ein weiteres neues Bild auswählen kann 610, das das Objekt des Interesses ist oder sein kann. Diese Suchschleife der Timed Appearance Search 600 kann fortgesetzt werden, bis der Benutzer entscheidet, dass genügend Bilder des Objekts von Interesse gefunden wurden, und beendet die Suche 612. Der Benutzer kann dann beispielsweise die Videos ansehen oder herunterladen, die den Bildern auf der Liste zugeordnet sind. Während es sich in diesem Beispiel um eine Suche vorwärts in der Zeit handelt, ist eine Suche rückwärts in der Zeit entsprechend ähnlich, außer dass die Suchen der Datenbank 414 nach Treffern gefiltert werden, die rückwärts oder vorher, die Suchzeit sind.
-
Unter Bezugnahme auf 7 sind darin Blockdiagramme eines exemplarischen Metadaten eines Objektprofils 702 mit Chip 404, wie von der Kamera 108 an den Server 406 gesendet, und ein Beispiel des Objektprofils 704 mit dem Bild 706 (Chip 404), ersetzt durch den Merkmalsvektor 708 des Chips 404 zur Speicherung in der Datenbank 414, dargestellt. Durch das Speichern des Objektprofils 704 mit dem Merkmalsvektor 708 anstelle des Bildes 706 kann etwas Speicherplatz eingespart werden, da die Dateigröße des Bildes 706 größer ist als die Dateigröße des Merkmalsvektors 708. Dadurch können erhebliche Einsparungen bei der Datenspeicherung erzielt werden, da die Chips oft recht groß und zahlreich sein können.
-
Die Daten 710 im Objektprofil 702 und Objektprofil 704 haben z.B. Inhalt wie Zeitstempel, Bildnummer, Auflösung in Pixeln durch Breite und Höhe der Szene, Segmentierungsmaske dieses Rahmens durch Breite und Höhe in Pixeln und Schritt durch Zeilenbreite in Bytes, Klassifizierung (Person, Fahrzeug, andere), Vertrauen durch Prozent der Klassifizierung, Box (Begrenzungsrahmen, der das profilierte Objekt umgibt) durch Breite und Höhe in normierten Sensorkoordinaten, Bildbreite und -höhe in Pixeln sowie Bildlauf (Zeilenbreite in Bytes), Segmentierungsmaske des Bildes, Orientierung und x &. y-Koordinaten des Bildfeldes. Der Merkmalsvektor 708 ist eine binäre Darstellung (binär im Sinne von Null und Eins) des Bildes 706 mit beispielsweise 48 Dimensionen: 48 Gleitkommazahlen. Die Anzahl der Dimensionen kann größer oder kleiner sein, je nachdem, mit welchem Lerngerät die Merkmalsvektoren erzeugt werden. Während höhere Dimensionen im Allgemeinen eine höhere Genauigkeit aufweisen, können die erforderlichen Rechenressourcen auch sehr hoch sein.
-
Der Chip 404 oder das Bild 706 kann mit Referenzkoordinaten aus dem aufgenommenen Video wieder extrahiert werden, so dass der Chip 404 nicht zusätzlich zum Video gespeichert werden muss. Die Referenzkoordinaten können beispielsweise Zeitstempel, Bildnummer und Rahmen beinhalten. Als Beispiel sind die Referenzkoordinaten nur der Zeitstempel mit der zugehörigen Videodatei, bei dem der Zeitstempel eine ausreichende Genauigkeit aufweist, um zum Originalbild zurückzuverfolgen, und bei dem der Zeitstempel keine ausreichende Genauigkeit aufweist, um zum Originalbild zurückzuverfolgen, kann ein Bildrahmen nahe dem Originalbild gut genug sein, da Bildrahmen nahe der Zeit in einem Video im Allgemeinen sehr ähnlich sind.
-
Während in dieser exemplarischen Ausführungsform das Objektprofil 704 einen Merkmalsvektor durch ein Bild ersetzt, können andere Ausführungsformen das Bild mit herkömmlichen Methoden komprimiert haben.
-
Unter Bezugnahme nun auf 8 ist darin die Szene 402 und die Chips 404 der exemplarischen Ausführungsform von 4 dargestellt. In der Szene 402 werden die drei Personen gezeigt, die erkannt werden. Ihre Bilder 802, 806, 808 werden von der Kamera 108 extrahiert und als Chips 404 an den Server 406 gesendet. Die Bilder 802, 806, 808 sind die repräsentativen Bilder der drei Personen im Video über einen längeren Zeitraum. Die drei Personen im Video sind in Bewegung und ihre aufgenommenen Bilder unterscheiden sich entsprechend über einen gegebenen Zeitraum. Um die Bilder auf eine überschaubare Anzahl zu filtern, wird ein repräsentatives Bild (oder mehrere Bilder) als Chips 404 zur weiteren Verarbeitung ausgewählt.
-
Unter Bezugnahme nun auf 9 ist darin ein Blockdiagramm eines Satzes von operativen Submodulen des Videoanalysemoduls 224 gemäß einer exemplarischen Ausführungsform dargestellt. Das Videoanalysemodul 224 beinhaltet eine Reihe von Modulen zur Durchführung verschiedener Aufgaben. So beinhaltet beispielsweise das Videoanalysemodul 224 ein Objekterkennungsmodul 904 zum Erkennen von Objekten, die im Sichtfeld der Videoerfassungsvorrichtung 108 erscheinen. Das Objekterkennungsmodul 904 kann jedes bekannte Objekterkennungsverfahren wie z.B. Bewegungserkennung und Bloberkennung verwenden. Das Objekterkennungsmodul 904 kann die Systeme beinhalten und die in U.S. Pat. beschriebenen Erkennungsmethoden verwenden. Nr. 7.627.171 mit dem Titel „Methoden und Systeme zur Erkennung von Objekten von Interesse an raumzeitlichen Signalen“, deren gesamter Inhalt hierin durch Verweis aufgenommen wird.
-
Das Videoanalysemodul 224 beinhaltet auch ein Objektverfolgungsmodul 908, das mit dem Objekterkennungsmodul 904 verbunden oder gekoppelt ist. Das Objektverfolgungsmodul 908 ist betreibbar, um Instanzen eines vom Objekterkennungsmodul 908 erkannten Objekts zeitlich zuzuordnen. Das Objektverfolgungsmodul 908 kann die Systeme beinhalten und die in U.S. Pat. beschriebenen Verfahren verwenden. Nr. 8.224.029 mit dem Titel „Object Matching for Tracking, Indexing, and Search“, deren gesamter Inhalt hierin durch Verweis aufgenommen wird. Das Objektverfolgungsmodul 908 erzeugt Metadaten, die den visuellen Objekten entsprechen, die es verfolgt. Die Metadaten können den Signaturen des visuellen Objekts entsprechen, die das Aussehen des Objekts oder andere Merkmale darstellen. Die Metadaten werden zur Verarbeitung an den Server 406 übertragen.
-
Das Videoanalysemodul 224 beinhaltet auch ein Objektklassifizierungsmodul 916, das erkannte Objekte aus dem Objekterkennungsmodul 904 klassifiziert und mit dem Objektverfolgungsmodul 908 verbindet. Das Objektklassifizierungsmodul 916 kann intern ein momentanes Objektklassifizierungsmodul 918 und ein zeitliches Objektklassifizierungsmodul 912 beinhalten. Das augenblickliche Objektklassifizierungsmodul 918 bestimmt den Typ eines visuellen Objekts (wie z.B. Mensch, Fahrzeug oder Tier) basierend auf einer einzelnen Instanz des Objekts. Die Eingabe in das augenblickliche Objektklassifizierungsmodul 916 ist vorzugsweise eine Teilregion (z.B. innerhalb eines Begrenzungsrahmens) eines Bildes, in dem sich das visuelle Objekt von Interesse befindet und nicht der gesamte Bildrahmen. Ein Vorteil der Eingabe eines Teilbereichs des Bildrahmens in das Klassifizierungsmodul 916 besteht darin, dass die gesamte Szene nicht zur Klassifizierung analysiert werden muss und somit weniger Rechenleistung benötigt wird. Das Videoanalysemodul 224 kann beispielsweise alle Objekttypen außer den Menschen zur Weiterverarbeitung herausfiltern.
-
Das zeitliche Objektklassifikationsmodul 912 kann auch Klasseninformationen (wie z.B. Menschen, Fahrzeuge oder Tiere) eines Objekts über einen bestimmten Zeitraum aufbewahren. Das zeitliche Objektklassifikationsmodul 912 mittelt die momentane Klasseninformation des Objekts, die vom momentanen Objektklassifikationsmodul 918 über einen Zeitraum während der Lebensdauer des Objekts bereitgestellt wird. Mit anderen Worten, das zeitliche Objektklassifizierungsmodul 912 bestimmt den Objekttyp anhand seiner Darstellung in mehreren Frames. Beispielsweise kann die Ganganalyse der Gangart einer Person nützlich sein, um eine Person zu klassifizieren, oder die Analyse der Beine einer Person kann nützlich sein, um einen Radfahrer zu klassifizieren. Das zeitliche Objektklassifizierungsmodul 912 kann Informationen über die Trajektorie eines Objekts (wie z.B. ob die Trajektorie glatt oder chaotisch ist, oder ob das Objekt beweglich oder bewegungslos ist) und Vertrauensinformationen über die vom momentanen Objektklassifizierungsmodul 918 vorgenommenen Klassifizierungen, gemittelt über mehrere Einzelbilder, kombinieren. So können beispielsweise die vom Objektklassifizierungsmodul 916 bestimmten Klassifizierungsvertrauenswerte basierend auf der Glätte der Trajektorie des Objekts angepasst werden. Das zeitliche Objektklassifizierungsmodul 912 kann ein Objekt einer unbekannten Klasse zuordnen, bis das visuelle Objekt durch das momentane Objektklassifizierungsmodul 918 ausreichend viele Male klassifiziert wird und eine vorbestimmte Anzahl von Statistiken gesammelt wurde. Bei der Klassifizierung eines Objekts kann das zeitliche Objektklassifizierungsmodul 912 auch berücksichtigen, wie lange sich das Objekt im Sichtfeld befindet. Das zeitliche Objektklassifizierungsmodul 912 kann basierend auf den oben beschriebenen Informationen eine endgültige Bestimmung über die Klasse eines Objekts vornehmen. Das zeitliche Objektklassifikationsmodul 912 kann auch einen Hystereseansatz zum Ändern der Klasse eines Objekts verwenden. Genauer gesagt, kann ein Schwellenwert für den Übergang der Klassifizierung eines Objekts von einer unbekannten in eine bestimmte Klasse festgelegt werden, und dieser Schwellenwert kann größer sein als ein Schwellenwert für den entgegengesetzten Übergang (wie beispielsweise von einem Menschen in eine unbekannte Klasse). Das Objektklassifizierungsmodul 916 kann Metadaten erzeugen, die sich auf die Klasse eines Objekts beziehen, und die Metadaten können in der Datenbank 414 gespeichert werden. Das zeitliche Objektklassifikationsmodul 912 kann die vom momentanen Objektklassifikationsmodul 918 vorgenommenen Klassifizierungen aggregieren.
-
In einer alternativen Anordnung wird das Objektklassifizierungsmodul 916 nach dem Objekterkennungsmodul 904 und vor dem Objektverfolgungsmodul 908 platziert, so dass die Objektklassifizierung vor der Objektverfolgung erfolgt. In einer weiteren alternativen Anordnung sind die Objekterkennungs-, Tracking, Zeitklassifizierungs- und Klassifizierungsmodule 904, 908, 912 und 916 wie oben beschrieben miteinander verbunden. In einer weiteren alternativen Ausführungsform kann das Videoanalysemodul 224 die Gesichtserkennung (wie in der Technik bekannt) nutzen, um Gesichter in den Bildern von Menschen zu erkennen und entsprechend Vertrauen zu schaffen. Das Erscheinungssuchsystem einer solchen Ausführungsform kann die Verwendung von Merkmalsvektoren der Bilder oder Chips der Gesichter anstelle des gesamten Menschen beinhalten, wie in 8 dargestellt. Solche Gesichtsmerkmalvektoren können allein oder in Verbindung mit Merkmalsvektoren des gesamten Objekts verwendet werden. Darüber hinaus können Merkmalsvektoren von Teilen von Objekten auch einzeln oder in Verbindung mit Merkmalsvektoren des gesamten Objekts verwendet werden. So kann beispielsweise ein Teil eines Objekts ein Bild eines Ohres eines Menschen sein. Die Ohrerkennung zur Identifizierung von Personen ist in der Technik bekannt.
-
In jedem Bildausschnitt eines Videos erkennt das Videoanalysemodul 224 die Objekte und extrahiert die Bilder jedes Objekts. Ein aus diesen Bildern ausgewähltes Bild wird als Finalisierung des Objekts bezeichnet. Die Finalisierungen der Objekte sollen die beste Darstellung der visuellen Erscheinung jedes Objekts während seiner Lebensdauer in der Szene auswählen. Eine Finalisierung wird verwendet, um einen Signatur-/Feature-Vektor zu extrahieren, der weiterhin verwendet werden kann, um andere Finalisierungen abzufragen, um die nächstgelegene Übereinstimmung in einer Einstellung für die Suche nach Erscheinungsbildern zu ermitteln.
-
Die Fertigstellung des Objekts kann idealerweise auf jedem einzelnen Frame der Lebensdauer des Objekts erzeugt werden. Wenn dies geschieht, dann können die Berechnungsanforderungen zu hoch sein, als dass die Suche nach dem Aussehen derzeit praktikabel wäre, da es viele Bilder in sogar einer Sekunde des Videos gibt. Das Folgende ist ein Beispiel für das Filtern von möglichen Finalisierungen oder die Auswahl eines Bildes aus möglichen Bildern, eines Objekts, das das Objekt über einen bestimmten Zeitraum darstellt, um den Rechenaufwand zu reduzieren.
-
Wenn ein Objekt (ein Mensch) die Szene 402 betritt, wird es vom Objekterkennungsmodul 904 als Objekt erkannt. Das Objektklassifizierungsmodul 916 würde dann das Objekt als Mensch oder Person mit einem Sicherheitsniveau für das Objekt als Mensch klassifizieren. Das Objekt wird in der Szene 402 vom Objektverfolgungsmodul 908 durch jeden der Bilder des von der Kamera 108 aufgenommenen Videos verfolgt. Das Objekt kann auch durch eine Tracknummer identifiziert werden, während es verfolgt wird.
-
In jedem Bildrahmen wird ein Bild des Objekts in einem Begrenzungsrahmen, der das Objekt umgibt, aus dem Bildrahmen extrahiert und das Bild ist ein Chip. Das Objektklassifizierungsmodul 916 stellt z.B. für jeden Bildausschnitt ein Konfidenzniveau für das Objekt als Mensch zur Verfügung. Das Videoanalysemodul 224 führt eine Liste der Top-10-Chips mit den höchsten Sicherheitsstufen, da das Objekt in der Szene 402 verfolgt wird. Wenn das Objektverfolgungsmodul 908 die Spur des Objekts verliert oder wenn das Objekt die Szene verlässt, wird der Chip 404 aus der Liste der 10 Chips ausgewählt, die das Objekt mit der größten Anzahl von Vordergrundpixeln (oder Objektpixeln) anzeigt. Der Chip 404 wird mit den Metadaten zur weiteren Verarbeitung an den Server 406 gesendet. Der Chip 404 stellt das Bild des Objekts über diesen verfolgten Zeitraum dar. Die Vertrauensniveaus werden verwendet, um Chips zurückzuweisen, die möglicherweise kein gutes Bild des Objekts darstellen, z.B. wenn das Objekt einen Schatten kreuzt. Alternativ kann auch mehr als ein Chip aus der Liste der Top-10-Chips ausgewählt werden, um ihn an den Server 406 zu senden. So kann beispielsweise auch ein anderer Chip, der durch das höchste Konfidenzniveau ausgewählt wurde, gesendet werden.
-
Die Liste der Top 10 Chips ist eine Implementierung. Alternativ kann die Liste auch nur 5 Chips oder 20 Chips als weitere Beispiele enthalten. Weiterhin kann die Auswahl eines Chips zum Senden als Chip 404 aus der Liste der Chips periodisch statt unmittelbar nach dem Verlust der Verfolgung erfolgen. Alternativ kann die Chip-Auswahl aus der Liste auf der höchsten Vertrauensstufe und nicht auf der größten Anzahl von Objektpixeln basieren. Alternativ kann sich das Videoanalysemodul 224 auf dem Server 406 (der Workstation 156), der Verarbeitungsvorrichtung 148, der Client-Vorrichtung 164 oder auf anderen Geräten außerhalb der Kamera befinden.
-
Die oben genannten Auswahlkriterien für Chips sind mögliche Lösungen für das Problem der Darstellung einer Objektlebensdauer durch einen einzelnen Chip. Nachfolgend sind weitere Auswahlkriterien angeführt.
-
Alternativ kann die Filtration der Top 10 von n Chips unter Verwendung der Informationen eines Höhenschätzalgorithmus des Objektklassifizierungsmoduls 916 durchgeführt werden. Das Höhenschätzmodul erstellt eine Homologiematrix, die auf den über einen bestimmten Zeitraum beobachteten Positionen von Kopf (oben) und Fuß (unten) basiert. Die Zeit des Lernens der Homologie wird hiermit als Lernphase bezeichnet. Die resultierende Homologie wird ferner verwendet, um die Höhe eines wahren Objekts zu schätzen, das an einem bestimmten Ort erscheint, und wird mit der beobachteten Höhe eines Objekts an diesem Ort verglichen. Sobald das Lernen abgeschlossen ist, können die Informationen des Höhenschätzmoduls verwendet werden, um Chips in der Top-n-Liste herauszufiltern, indem die Höhen der Chips mit der erwarteten Höhe eines Objekts an der Stelle verglichen werden, an der der Chip erfasst wurde. Diese Filtermethode ist als Ablehnungskriterium für Chips gedacht, die False Positives mit hoher Sicherheit sein können, die vom Objektklassifizierungsmodul 916 gemeldet werden. Die resultierenden gefilterten Chips können dann nach der Anzahl der vom Objekt erfassten Vordergrundpixel weiter geordnet werden. Diese mehrstufigen Filterkriterien stellen sicher, dass die Fertigstellung des Objekts nicht nur eine hohe Klassifizierungssicherheit hat, sondern auch den Abmessungen des erwarteten Objekts an seinem Standort entspricht und darüber hinaus eine gute Anzahl von Vordergrundpixeln aufweist, wie sie vom Objekterkennungsmodul 904 gemeldet werden. Der resultierende Chip aus den mehrstufigen Filtrationskriterien kann das Aussehen des Objekts während seiner Lebensdauer im Rahmen besser darstellen als ein Chip, der sich aus einem der oben genannten einzeln angewandten Kriterien ergibt. Das hierin enthaltene Modul für das maschinelle Lernen beinhaltet maschinelle Lernalgorithmen, wie sie in der Technik bekannt sind.
-
Die 10-12 stellen exemplarische Ausführungsformen der Layer-Sharing zwischen mindestens zwei CNNs dar. In mindestens diesen exemplarischen Ausführungsformen wird ein erster CNN für eine erste Aufgabe und ein zweiter CNN für eine zweite Aufgabe trainiert. Das erste CNN umfasst eine erste Gruppe von Schichten, die in Reihe mit einer zweiten Gruppe von Schichten verbunden sind, und ist so konfiguriert, dass Daten für das erste CNN in die erste Gruppe von Schichten eingegeben werden. Das zweite CNN umfasst die erste Gruppe von Schichten, die in Reihe mit einer dritten Gruppe von Schichten verbunden sind, und ist so konfiguriert, dass Daten für das zweite CNN in die erste Gruppe von Schichten eingegeben werden. Auf diese Weise teilen sich die ersten und zweiten CNNs die erste Gruppe von Schichten und sparen so Rechenressourcen, wie beispielsweise Speicher, im Gegensatz zu herkömmlichen CNNs, bei denen die ersten und zweiten CNNs unterschiedlich sind. Insbesondere für Computer-Vision-Anwendungen können die Faltungsschichten, die näher am Eingang eines CNN liegen, in mindestens einigen Beispielen generell als Low-Level-Feature-Detektoren verwendet werden und dementsprechend besser geeignet sein für die gemeinsame Nutzung als Faltungsschichten, die weiter vom Eingang entfernt sind und auf Merkmale höherer Ebene gerichtet sein können.
-
In den 10-12 werden die CNNs als Verarbeitungsbilder dargestellt und werden trainiert, um die Erzeugung von Merkmalsvektoren durchzuführen. In mindestens einigen verschiedenen exemplarischen Ausführungsformen (nicht dargestellt) kann jedoch eine oder mehrere der CNNs, die Schichten miteinander teilen, Nicht-Bilddaten akzeptieren, für verschiedene Arten von Aufgaben verwendet werden oder beides. Selbst in Ausführungsformen, in denen die CNNs für die Bildverarbeitung trainiert werden, können sie beispielsweise für andere Aufgaben als die Generierung von Merkmalsvektoren trainiert werden, wie z.B. Objektklassifizierung und -erkennung. Die CNNs können auch für den Empfang von Nicht-Bilddaten und damit für andere Aufgaben als die Bildverarbeitung geschult werden. So kann beispielsweise ein oder mehrere der CNNs Daten von jedem geeigneten Sensortyp empfangen, wie beispielsweise einem Audiosensor, Sonarsensor oder Radarsensor, Finanzmarktdaten, Zeitreihen- oder Frequenzbereichsdaten und Dokumentdaten. Dementsprechend können auch die Aufgaben, für die die CNNs ausgebildet sind, variieren. In einer exemplarischen Ausführungsform, in der einer der CNNs für den Empfang von Dokumentdaten geschult wird, kann dieser CNN beispielsweise für die Durchführung der Dokumentenklassifizierung geschult werden. In mindestens einigen exemplarischen Ausführungsformen können die CNNs, die Schichten teilen, für den Empfang verschiedener Datentypen trainiert werden (z.B. kann ein CNN für den Empfang von Audiodaten trainiert werden, während der andere für den Empfang von Bilddaten trainiert wird) und dementsprechend verschiedene Arten von Aufgaben ausführen, obwohl sie eine oder mehrere Schichten teilen.
-
Unter Bezugnahme nun auf 10 ist ein Paar von Lernmaschinen in Form eines Personenvektors CNN 1010 und eines ersten Kopfvektors CNN 1020 nach einer weiteren exemplarischen Ausführungsform dargestellt. Die CNNs 1010,1020 werden in der dargestellten exemplarischen Ausführungsform verwendet, um die von der Kamera 108 erzeugten Chips 404 zu verarbeiten. Der Personenvektor CNN 1010 verarbeitet die Chips 404 ganzer Personen („Personen-Chips 404“), wie in 4 dargestellt, während der Kopfvektor CNN 1020 die Chips 404 von Personenköpfen („Kopf-Chips 404“) verarbeitet. In mindestens einigen exemplarischen Ausführungsformen laufen die Personen- und Kopfvektor-CNs 1010,1020 beide auf dem Server 408; in mindestens einigen verschiedenen exemplarischen Ausführungsformen kann jedoch eine oder beide dieser CNNs 1010,1020 alternativ auf der Kamera 108 laufen. Der Personenvektor CNN 1010 wird mit Personenbilddatensätzen trainiert, um Merkmalsvektoren zu erzeugen, die ganze Personen identifizieren („Personenvektoren“), und gibt diese Merkmalsvektoren entsprechend als Reaktion auf die Verarbeitung der Personenchips 404 aus. Der Kopfvektor CNN 1010 wird mit Kopfbilddatensätzen trainiert, um Merkmalsvektoren zu erzeugen, die die Köpfe von Personen identifizieren („Kopfvektoren“), und gibt dementsprechend Merkmalsvektoren aus, die nur Köpfe als Reaktion auf die Verarbeitung der Kopfchips 404 identifizieren.
-
Da der Personenvektor CNN 1010 speziell zum Erzeugen von Personenvektoren unter Verwendung von Personenchips 404 und der Kopfvektor CNN 1020 speziell zum Erzeugen von Kopfvektoren unter Verwendung von Kopfchips 404 ausgebildet ist, ist die Genauigkeit der von der Person bzw. dem Kopfvektor CNNs 1010,1020 erzeugten Personen- und Kopfchips 404 in mindestens einigen Ausführungsformen höher als die von einem einzigen CNN erzeugten Personen- und Kopfvektoren, die zum Erzeugen beider Arten von Vektoren ausgebildet sind. Im Zusammenhang mit Merkmalsvektoren bedeutet „Genauigkeit“, dass der euklidische Abstand zwischen einem Paar von Personen- und Kopfmerkmalvektoren, die für zwei ähnliche Bilder erzeugt werden, die von einem der Personen- bzw. Kopfvektoren CNNs 1010,1020 erzeugt werden, kleiner ist als der euklidische Abstand zwischen den analogen Vektoren, der von einem einzigen CNN erzeugt wird, der ausgebildet ist, beide Arten von Vektoren zu erzeugen.
-
CNNs mit einer oder beiden von verschiedenen Architekturen und unterschiedlichen Parametern können in verschiedenen exemplarischen Ausführungsformen verwendet werden. Zum Beispiel das LeNet5 CNN (siehe z.B, „Gradientenbasiertes Lernen zur Dokumentenerkennung“, Yann LeCun, Leon Bottou, Yoshua Bengio und Patrick Haffner, Proc. des IEEE, Nov. 1998) und GoogLeNet CNN („Going Deeper with Convolutions“, Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, Computer Vision and Pattern Recognition (CVPR), 2015) können in mindestens einigen Beispielausführungen verwendet werden.
-
Wie in 10 dargestellt, bestehen CNNs aus verschiedenen Schichten, die in Reihe geschaltet sind. Wie hierin verwendet, bezieht sich die Schicht N eines CNN, wobei N eine ganze Zahl von mindestens einem ist, auf die Anzahl der Schichten aus dem Eingang des CNN, der das Bild empfängt. Mehrere Schichten können parallel geschaltet werden und erhalten so das Bild zeitgleich. So hat beispielsweise die erste Schicht eines CNN, die das Eingangsbild vor allen anderen Schichten empfängt, N = 1. Der Personenvektor CNN 1010 umfasst erste bis vierte Schichten 1012a-d, während der Kopfvektor CNN erste bis dritte Schichten 1020a-c umfasst. Die Schichten 1012a-d,1020a-c können beispielsweise Faltungsschichten, Poolschichten, Aktivierungsschichten oder andere Arten von geeigneten Schichten umfassen. Ein CNN umfasst mindestens eine Faltungsschicht, in der ein Faltungsvorgang bei der Dateneingabe in diese Schicht durchgeführt wird. CNN-Schichten können auch eine oder mehrere von beispielsweise Pooling- oder Sub-Sampling-Schichten, vollständig verbundenen Schichten, die für die Bildklassifizierung verwendet werden, und Schichten umfassen, die Funktionen wie die Softmax-Funktion und Nichtlinearitätsoperationen (z.B. ReLU) anwenden. Das GoogLeNet CNN besteht beispielsweise aus 22 Schichten, die Parameter verwenden, die mit dem Training variiert werden können (z.B. Faltungs- und vollständig verbundene Schichten), und 27 Schichten, wenn auch diejenigen Schichten, die keine Parameter verwenden, die mit dem Training variiert werden können (z.B. Pooling-Layer).
-
In mindestens den dargestellten exemplarischen Ausführungsformen umfasst eine „Schicht“ eines CNN jeden Berechnungsblock, der eine einzige Art von Rechenoperation durchführt, die von diesem CNN ausgeführt wird. So kann beispielsweise jede der Schichten 1012a-d,1020a-c beispielsweise einen einzelnen Faltungsblock umfassen, der eine einzige Art von Faltungsoperation mit den empfangenen Daten durchführt, einen einzelnen Pooling-Block, der eine einzige Art von Pooling mit den in sie eingegebenen Daten durchführt, oder eine andere Operation, die mit den Eingabedaten durchgeführt werden soll, wie beispielsweise eine Softmax- oder Gleichrichtung (ReLU) Operation. In mindestens einigen verschiedenen Ausführungsformen (nicht dargestellt), in denen ein CNN mehrere parallele Rechenblöcke umfasst (d.h. diese Rechenblöcke erhalten gleichzeitig die gleichen Daten zur Verarbeitung), können diese Blöcke parallel eine einzige Schicht umfassen. Zusätzlich oder alternativ kann in mindestens einigen verschiedenen Ausführungsformen, in denen mehrere Rechenblöcke in Reihe geschaltet sind, eine kontinuierliche Teilmenge dieser Blöcke aus einer einzigen Schicht bestehen. So kann beispielsweise ein kontinuierlicher zwei- oder mehrstufiger Faltungsblock in Serie als eine einzige Schicht behandelt werden; analog dazu ein Faltungsblock unmittelbar gefolgt von einem Pooling-Block, der einen maximalen Pooling-Vorgang mit Daten durchführt, die dieser Faltungsblock ausgibt, kann als eine einzige Schicht behandelt werden.
-
In mindestens den dargestellten exemplarischen Ausführungsformen werden die Daten, die in die CNNs 1010,1020 eingegeben werden, als eine mehrdimensionale Anordnung mit einem Rang von vier gespeichert. Jede Instanz dieser Datenstruktur stellt einen Stapel oder eine Sammlung von Bildern dar und weist die Parameter [n, k, h, w] auf, wobei n die Anzahl der durch die Datenstruktur dargestellten Bilder ist, k die Anzahl der Kanäle für jedes der Bilder ist, h die Höhe in Pixeln von jedem der Kanäle ist und w die Breite in Pixeln von jedem der Kanäle ist. Jede der Schichten der CNNs akzeptiert eine Instanz dieser Datenstruktur als Eingabe und gibt eine Instanz dieser Datenstruktur aus. In mindestens einigen verschiedenen Ausführungsformen können die Daten in einer anderen geeigneten Art von Datenstruktur gespeichert werden, wie beispielsweise einer mehrdimensionalen Anordnung mit unterschiedlichem Rang. Das vierdimensionale Array kann ebenfalls mit Nicht-Bilddaten verwendet werden, wie beispielsweise Ausführungsformen, in denen die CNNs trainiert werden, um Aufgaben mit Nicht-Bilddaten auszuführen.
-
Das Training von CNNs für eine bestimmte Aufgabe wie die Objektklassifizierung umfasst die Durchführung vieler Iterationen mit Trainingsbildern, wobei jede Iteration als „Epoche“ bezeichnet wird, um die Parameter jeder der Schichten iterativ zu bestimmen und zu verfeinern, so dass eine ausreichende und vorzugsweise optimale CNN-Leistung resultiert. Jede Epoche umfasst die Durchführung eines Prozesses mit Vorwärtsdurchlauf, Verlustfunktion, Rückwärtsdurchlauf und Parameteraktualisierung. Das Training umfasst die Wiederholung einer Reihe von Epochen für jeden Satz von Trainingsbildern (allgemein als Batch bezeichnet).
-
In bestimmten exemplarischen Ausführungsformen können Schichten zwischen verschiedenen CNNs geteilt werden. 11A stellt beispielsweise einen zweiten Kopfvektor CNN 1120 dar, der vier Schichten 1012a,b und 1122a,b umfasst. Die ersten beiden Schichten 1012a,b des zweiten Kopfvektors CNN 1120 sind die ersten beiden Schichten 1012a,b des Personenvektors CNN 1010, während die dritten und vierten Schichten 1122a,b des zweiten Kopfvektors CNN 1120 spezifisch für den zweiten Kopfvektor CNN 1120 sind. Um zum zweiten Kopfvektor CNN 1120 zu gelangen, werden die Parameter der ersten beiden Schichten 1012a,b des Personenvektors CNN 1010 eingefroren; die ersten beiden Schichten 1012a,b werden mit den dritten und vierten Schichten 1122a,b in untrainierter Form kombiniert, um den zweiten Kopfvektor CNN 1120 vor dem Training zu erzeugen; und der zweite Kopfvektor CNN 1120 wird dann trainiert, um die Parameter der dritten und vierten Schichten 1122a,b zu verfeinern. Nach dem Training kann ein Kopfchip 404 in den zweiten Kopfvektor CNN 1120 eingegeben werden, um einen Kopfvektor zu erzeugen.
-
Unter Bezugnahme auf 11B ist eine exemplarische Ausführungsform dargestellt, in der der Personenvektor CNN 1010 und der zweite Kopfvektor CNN 1120 beide implementiert sind und ihre ersten beiden Schichten 1012a,b teilen. Folglich werden die ersten beiden Schichten 1012a,b nicht dupliziert und Rechenressourcen, wie beispielsweise Speicher, auf dem Server 406 gespeichert, im Gegensatz zu einer Ausführungsform, bei der die CNNs 1010,1120 separat implementiert sind. Ein Chip 404 wird nur einmal von den ersten beiden Schichten 1012a,b verarbeitet; die Ausgabe der zweiten Schicht 1012b wird vom Personenvektor CNN 1010 (wenn der Chip 404 ein Personenchip 404 ist) auf seinen dritten und vierten Schichten 1012c,d und vom zweiten Kopfvektor CNN 1120 (wenn der Chip ein Kopfchip 404 ist) auf seinen dritten und vierten Schichten 1122a,b verwendet. Folglich kann die Ausführungsform von 11B verwendet werden, um einen Personenvektor (wenn der Personenchip 404 in den Personenvektor CNN 1010 eingegeben und von diesem verarbeitet wird) und einen Kopfvektor (wenn der Kopfchip 404 in den zweiten Kopfvektor CNN 1120 eingegeben und von diesem verarbeitet wird) zu erzeugen. Auf diese Weise kann das Videoerfassungs- und Wiedergabesystem 100 auch verwendet werden, um nach einer Person zu suchen, die auf einem Kopfbild der Person basiert, das als Kopfchip 404, wie beispielsweise ein Passfoto, verwendet werden kann.
-
In mindestens einigen exemplarischen Ausführungsformen erhalten die CNNs 1010,1120 aus 11B als Eingabe eine Charge von Chips 404 in der oben beschriebenen vierdimensionalen Array-Datenstruktur. So können beispielsweise die CNNs 1010,1120 eine Charge von 100 Bildern zur Verarbeitung durch die ersten beiden Schichten 1012a,b empfangen, wobei in diesem Fall n = 100 ist, von denen 50 Personenchips 404 und 50 Kopfchips 404 sind. Die ersten beiden Schichten 1012a,b verarbeiten den gesamten Stapel von Bildern und geben zwei der vierdimensionalen Felder von n = 50 aus; eines der Ausgangsfelder umfasst die Ergebnisse der Verarbeitung der 50-Personen-Chips 404, während das andere der Ausgangsfelder die Ergebnisse der Verarbeitung der 50-Kopf-Chips 404 umfasst. Die Anordnung, die die Daten für die 50-Personen-Chips 404 umfasst, wird zur weiteren Verarbeitung an die dritten und vierten Schichten 1012c,d des Personenvektors CNN 1010 gesendet, während die Anordnung, die die Daten für die 50 Personen-Chips 404 umfasst, an die dritten und vierten Schichten 1122a,b des Kopfvektors CNN 1120 zur weiteren Verarbeitung gesendet wird.
-
In mindestens einigen weiteren exemplarischen Ausführungsformen kann die Charge der Chips 404, die in die ersten beiden Schichten 1012a,b der CNNs 1010,1120 von 11B eingegeben werden, nur einen einzigen Chiptyp 404 umfassen. So kann beispielsweise die vierdimensionale Anordnung nur Kopfspäne 404 umfassen. In diesem Beispiel verarbeiten die ersten beiden Schichten 1012a,b die gesamte Charge der Kopfspäne 404 und die Ausgabe der zweiten Schicht 1012b wird nur an die dritte Schicht 1122a des zweiten Kopfvektors CNN 1120 zur weiteren Verarbeitung gesendet. Rechnerische Ressourcen werden daher nicht dadurch verschwendet, dass der Personenvektor CNN 1010 Prozesskopf-Chips 404 verwendet wird.
-
Die exemplarische Ausführungsform von 11B ist ein Beispiel dafür, dass der Prozess 408 nur zwei Aufgaben erfüllt: die Ausgabe eines Personenvektors und die Ausgabe eines Kopfvektors. Unter Bezugnahme auf 12 werden der Ausführungsform von 11B zusätzliche Schichten 1210a und 1220a hinzugefügt, so dass die Ausführungsform von 12 konfiguriert ist, um nicht nur Personen- und Kopfvektoren, sondern auch Fahrzeug- und Gepäckvektoren zu erzeugen.
-
In 12 sind der Personenvektor CNN 1010 und der zweite Kopfvektor CNN 1120 so vorhanden, wie sie in 11B sind. Die Ausführungsform von 12 umfasst auch einen Fahrzeugvektor CNN 1210, der die ersten drei Schichten 1012a-c des Personenvektors CNN 1010 teilt und die Ausgabe der dritten Schicht 1012c einer vierten Schicht 1222 zuführt, die spezifisch für den Fahrzeugvektor CNN 1210 ist. Um die vierte Schicht 1222 des Fahrzeugvektors CNN 1210 zu trainieren, werden die Parameter der ersten drei Schichten 1012a-c des Personenvektors CNN 1010 eingefroren; diese ersten drei Schichten 1012a-c werden mit der vierten Schicht 1222, die für den Fahrzeugvektor CNN 1210 spezifisch ist, in untrainierter Form kombiniert, um den Fahrzeugvektor CNN 1210 vor dem Training zu erzeugen; und der Fahrzeugvektor CNN 1210 wird dann trainiert, um die Parameter der vierten Schicht 1222 zu verbessern. Nach dem Training gibt der Fahrzeugvektor CNN 1222 einen Fahrzeugvektor als Reaktion auf die Eingabe eines Chips eines Fahrzeugs aus, wie in 12 dargestellt.
-
Ebenfalls in 12 dargestellt ist ein Gepäckvektor CNN 1220, der die ersten drei Schichten 1012a,b und 1122 des zweiten Kopfvektors CNN 1120 teilt und die Ausgabe der dritten Schicht 1122a einer vierten Schicht 1224 zuführt, die spezifisch für den Gepäckvektor CNN 1220 ist. Um die vierte Schicht 1224 des Gepäckvektors CNN 1220 zu trainieren, werden die Parameter der ersten drei Schichten 1012a, b und 1122 des zweiten Kopfvektors CNN 1010 eingefroren; diese ersten drei Schichten 1012a, b und 1122 werden mit der vierten Schicht 1224, die für den Gepäckvektor CNN 1220 spezifisch ist, in untrainierter Form kombiniert, um den Gepäckvektor CNN 1220 vor dem Training zu erzeugen; und der Gepäckvektor CNN 1220 wird dann trainiert, um die Parameter der vierten Schicht 1224 zu verfeinern. Nach dem Training gibt der Gepäckvektor CNN 1220 einen Gepäckvektor als Reaktion auf die Eingabe eines Gepäckstücks aus, wie in 12 dargestellt.
-
Während 12 zwei Schichten 1012a,b zwischen allen vier CNNs 1010,1120,1210,1210,1220, drei Schichten 1012a-czwischen dem Fahrzeugvektor und dem Personenvektor CNNs 1210,1010 und drei Schichten 1012a,b und 1122a zwischen dem zweiten Kopfvektor und dem Gepäckvektor CNNs 1120,1220 zeigt, kann in verschiedenen Ausführungsformen (nicht dargestellt) jede geeignete Anzahl von Schichten zwischen einer beliebigen geeigneten Anzahl von CNNs geteilt werden. So können sich beispielsweise mehrere CNNs eine oder mehrere Schichten mit einem oder mehreren anderen CNNs teilen, wobei die gemeinsamen Schichten an unterschiedlichen Positionen innerhalb der verschiedenen CNNs arbeiten. Die CNNs 1010,1120,1210,1210,1220 von 12 können einen oder mehrere Stapel von Bilddaten analog wie in 11B beschrieben verarbeiten. So kann beispielsweise in mindestens einer exemplarischen Ausführungsform ein Stapel von Bildern, die als vierdimensionales Array gespeichert sind, in die erste Schicht 1012a eingegeben werden. In diesem Beispiel kann n gleich 200 sein, aufgeteilt auf 50 Personenchips 404, 50 Gesichtschips 404, 50 Fahrzeugchips 404 und 50 Gepäckchips 404. Die ersten beiden Schichten 1012a,b verarbeiten alle 200 Chips, und die zweite Schicht 1012b gibt zwei vierdimensionale Arrays aus, die jeweils n = 100 sind: eine erste Array zum Senden an die dritte Schicht 1012c des Fahrzeugvektors CNN 1210 und des Personenvektors CNN 1010, die verarbeitete Daten für die 50 Fahrzeugchips 404 und die 50 Personenchips 404 umfassen; und eine zweite Array zum Senden an die dritte Schicht 1122a des zweiten Kopfvektors CNN 1120 und des Gepäckvektors CNN 1220, der verarbeitete Daten für die 50 Kopfchips 404 und 50 Gepäckchips 404 umfasst. Die dritte Schicht 1012c des Fahrzeug- und Personenvektors CNNs 1210,1010 verarbeitet die von der zweiten Schicht 1012b empfangene Anordnung und gibt zwei vierdimensionale Anordnungen mit jeweils n = 50 aus: eine erste Anordnung, die nur die Fahrzeugchip 404-Daten zum Senden an die vierte Schicht 1222 des Fahrzeugvektors CNN 1210 umfasst, und eine zweite Anordnung, die nur die Personenchip 404-Daten zum Senden an die vierte Schicht 1012 des Personenvektors CNN 1010 umfasst. Die dritte Schicht 1122ades zweiten Kopf- und Gepäckvektors CNNs 1120,1220 verarbeitet die von der zweiten Schicht 1012b empfangene Anordnung und gibt analog zwei vierdimensionale Anordnungen mit jeweils n = 50 aus: eine erste Anordnung, die nur die Kopfchip 404-Daten zum Senden an die vierte Schicht 1122b des zweiten Kopfvektors CNN 1120 umfasst, und eine zweite Anordnung, die nur die Gepäckchip 404-Daten zum Senden an die vierte Schicht 1224 des Gepäckvektors CNN 1220 umfasst. Die vierten Schichten 1222, 1012d, 1122b, 1224 der CNNs 1210,1010 ,1120,1220 empfangen folglich Daten, die spezifisch für die Art der Vektoren sind, für die sie ausgebildet sind, um sie auszugeben, und verarbeiten und geben diese Vektoren aus.
-
Unter Bezugnahme auf 13 ist nun ein Flussdiagramm 1300 einer exemplarischen Ausführungsform eines Verfahrens zum Bestimmen der Anzahl der Schichten eines ersten CNN dargestellt, die mit einem zweiten CNN geteilt werden sollen. Zunächst wird das erste CNN (CNN A) für Aufgabe 1 trainiert, was beispielsweise das Erzeugen eines Personenvektors sein kann; und das zweite CNN (CNN B) wird für Aufgabe 2 trainiert, was beispielsweise das Erzeugen eines Kopfvektors (Block 1310) sein kann. Ein Index, N, zur Darstellung einer bestimmten Schicht der CNNs A und B, wird dann auf 1 (Block 1315) initialisiert. Die erste Schicht (N= 1) von CNN B wird dann durch die erste Schicht (N = 1) von CNN A (Block 1320) ersetzt. CNN B mit seiner ersten Schicht, die durch die erste Schicht von CNN A ersetzt ist, wird dann für Aufgabe 2 (Block 1330) trainiert, ohne die Parameter der ersten Schicht von CNN A zu ändern, die einen Teil von CNN B umfasst. Die Genauigkeit von CNN B mit der ersten Schicht von CNN A, die im Rahmen des Trainings bestimmt wird, wird mit der Genauigkeit von CNN B ohne Schichten von CNN A (Block 1340) verglichen. Wenn die Genauigkeit von CNN B mit der ersten Schicht von CNN A höher ist als ohne sie, wird N um eins erhöht (Block 1350), und das Verfahren kehrt zu Block 1320 zurück, um iterativ zu bestimmen, ob das Teilen einer anderen Schicht (Block 1320) die Genauigkeit durch Umschulung (Block 1330) und erneute Prüfung (Block 1340) weiter erhöht. Wenn die Genauigkeit nicht höher ist, mit einigen oder zusätzlichen Layer-Sharing, endet das Verfahren bei Block 1360. Im Rahmen der exemplarischen Ausführungsform von 4 kann Aufgabe 1 das Erzeugen eines Personenvektors und Aufgabe 2 das Erzeugen eines Fahrzeugvektors sein.
-
Die exemplarische Ausführungsform von 13 ist ein Beispiel für ein allgemeineres exemplarisches Verfahren, das das Training eines initialen ersten CNN (wie CNN A) mit ersten in Reihe geschalteten CNN-Schichten und das Training eines ersten zweiten CNN (wie CNN B) mit zweiten in Reihe geschalteten CNN-Schichten umfasst. Wie in 13 umfasst das „Training“ das Bestimmen der Genauigkeit eines CNN. Diese allgemeinere Beispielmethode umfasst auch das Erstellen eines modifizierten zweiten CNN durch Ersetzen der ersten N Schichten des initialen zweiten CNN durch die ersten M Schichten des initialen ersten CNN, wobei N und M positive ganze Zahlen sind. Anschließend wird das modifizierte zweite CNN trainiert und im Rahmen dieses Trainings wird seine Genauigkeit bewertet und kann mit der Genauigkeit des initialen zweiten CNN verglichen werden. Wenn die Genauigkeit des zweiten CNN mit mehr Schichten des initialen ersten CNN steigt als mit weniger Schichten, können zusätzliche Schichten aus dem ersten CNN Schichten im modifizierten zweiten CNN ersetzen, und die Prüfung kann iterativ in einer Weise erfolgen, die derjenigen entspricht, die in Bezug auf 13 beschrieben wird, um zu bestimmen, wie viele Schichten aus dem ersten ersten CNN im zweiten CNN verwendet werden können, ohne die Genauigkeit zu beeinträchtigen.
-
Während in 13 N für jede Testiteration um 1 erhöht wird, können im Allgemeinen für jede Iteration eine Schicht des modifizierten zweiten CNN durch eine andere b-Schicht des initialen ersten CNN ersetzt werden, wobei a und b jeweils positive ganze Zahlen sind und in der exemplarischen Ausführungsform von 13 beide gleich 1 sind. Zusätzlich kann in mindestens einigen exemplarischen Ausführungsformen N für jede Testiteration verringert statt erhöht werden. So kann beispielsweise in einer exemplarischen Ausführungsform, in der das modifizierte zweite CNN durch Ersetzen seiner ersten N-Schichten durch M-Schichten des initialen ersten CNN erzeugt wird, bei einer nachfolgenden Iteration die Schicht M zu Schicht M-a des modifizierten zweiten CNN durch die Schicht N zu Schicht N-b des initialen zweiten CNN ersetzt werden, wobei a und b jeweils eine ganze Zahl von mindestens Null sind und in mindestens einer exemplarischen Ausführungsform jedes von a und b gleich 0 ist.
-
In den vorstehenden exemplarischen Ausführungsformen werden die Schichten des ersten CNN trainiert und, einmal im zweiten CNN verwendet, eingefroren, d.h. die Parameter der Schichten des ersten CNN bleiben während des Trainings des zweiten CNN unverändert. In mindestens einigen verschiedenen exemplarischen Ausführungsformen können jedoch die Parameter des ersten CNN, die im modifizierten zweiten CNN verwendet werden, geändert werden dürfen. Dies ist ein Beispiel für ein „End-to-End“-Training.
-
In einigen Beispielausführungen, die ein End-to-End-Training implementieren, können die ersten und zweiten CNNs gleichzeitig trainiert werden. Zusätzlich zum Erstellen eines modifizierten zweiten CNN wie vorstehend beschrieben, kann ein modifizierter erster CNN analog erstellt und gleichzeitig mit dem modifizierten zweiten CNN trainiert werden. So kann beispielsweise in mindestens einigen exemplarischen Ausführungsformen ein modifiziertes erstes CNN erzeugt werden, indem die ersten X-Schichten des initialen ersten CNN durch die ersten Y-Schichten des initialen zweiten CNN ersetzt werden, wobei X und Y beide positive ganze Zahlen sind. Das modifizierte erste CNN kann dann iterativ analog zum modifizierten zweiten CNN trainiert werden.
-
In mindestens einigen exemplarischen Ausführungsformen, M= N, was dazu führt, dass die gleiche Anzahl von Schichten aus dem initialen zweiten CNN entfernt wird, wie sie vom initialen ersten CNN verwendet wird. Ähnlich verhält es sich in zumindest einigen exemplarischen Ausführungsformen, X = Y, was dazu führt, dass die gleiche Anzahl von Schichten aus dem initialen ersten CNN entfernt wird, wie sie aus dem initialen zweiten CNN verwendet wird.
-
Unter Bezugnahme auf 14 ist ein CNN 1400 dargestellt, das die ersten bis achten Schichten 1410a-h umfasst. Die ersten bis achten Schichten 1410a-h sind in Reihe geschaltet, und die CNN 1400 gibt die zweiten, vierten, sechsten und achten Schichten 1410b,d,f,h ersten bis vierten Personenvektoren aus, wobei die Personenvektoren, die aus tieferen Schichten des CNN 1400 ausgegeben werden, von mehr Verarbeitung profitieren und daher genauer sind als die Personenvektoren, die aus früheren Schichten des CNN 1400 ausgegeben werden. Während des Trainings des CNN 1400 kann die Genauigkeit jedes der ersten bis vierten Personenvektoren beurteilt und mit der erforderlichen Genauigkeit verglichen werden, wenn das CNN 1400 eingesetzt wird. Wenn die zusätzliche Genauigkeit, die sich aus zusätzlichen Schichten ergibt, zur Laufzeit als unnötig erachtet wird, können die für diese zusätzliche Genauigkeit erforderlichen Schichten vor dem Einsatz aus dem CNN 1400 ausgewählt werden. Wird beispielsweise während des Trainings festgestellt, dass der Vektor der zweiten Person, der aus der vierten Schicht 1410d ausgegeben wird, für den Einsatz ausreichend genau ist, kann die vierte bis achte Schicht 1410e-h vor dem Einsatz des CNN 1400 ausgewählt werden. Dies trägt dazu bei, Rechenressourcen zu sparen, die beim Einsatz des CNN 1400 begrenzt sein können.
-
Layer können zwischen allen geeigneten CNN-Typen geteilt werden. So können beispielsweise Schichten zwischen CNNs geteilt werden, die als CNN-Detektor ausgebildet sind, der den Standort eines interessierenden Objekts in einem Bild findet. Beispiele für CNN-Detektoren sind ein „Single-Shot-Detektor“ und ein „Man sieht nur einmal“ Detektor, wie in Liu, Wei, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu und Alexander C. Berg, „SSD: Single Shot MultiBox Detector" in der European Conference on Computer Vision, S. 21-37, und Springer, Cham, 2016, und Redmon, Joseph, Santosh Divvala, Ross Girshick, und Ali Farhadi, „You Only Look Once: Unified, Real-time Object Detection" in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, S. 779-788. 2016.
-
Es wird geschätzt, dass die zugrundeliegende Methodik, Chips aus Objekten zu extrahieren, eine Merkmalsvektordarstellung aus ihnen zu berechnen und darüber hinaus, diesen Merkmalsvektor als Grundlage für den Vergleich mit Merkmalsvektoren aus anderen Objekten zu verwenden, von der Klasse des betrachteten Objekts abweicht. Ein Musterobjekt kann eine Tasche, einen Rucksack oder einen Koffer beinhalten. Ein Erscheinungsbild-Suchsystem zum Auffinden von Fahrzeugen, Tieren und unbelebten Objekten kann daher unter Verwendung der hierin beschriebenen Merkmale und/oder Funktionen implementiert werden, ohne vom Wesen und den Funktionsprinzipien der beschriebenen Ausführungsformen abzuweichen.
-
Während die vorstehende Beschreibung Beispiele für die Ausführungsformen enthält, ist zu beachten, dass einige Merkmale und/oder Funktionen der beschriebenen Ausführungsformen veränderbar sind, ohne vom Wesen und den Funktionsprinzipien der beschriebenen Ausführungsformen abzuweichen. Dementsprechend ist das oben Beschriebene zur uneingeschränkten Veranschaulichung bestimmt und es wird von Fachleuten verstanden, dass andere Varianten und Änderungen vorgenommen werden können, ohne vom Umfang der Erfindung abzuweichen, wie er in den beigefügten Ansprüchen definiert ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 62430307 [0001]
- US 8934709 [0107]
-
Zitierte Nicht-Patentliteratur
-
- Liu, Wei, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu und Alexander C. Berg, „SSD: Single Shot MultiBox Detector“ in der European Conference on Computer Vision, S. 21-37, und Springer, Cham, 2016 [0174]
- Redmon, Joseph, Santosh Divvala, Ross Girshick, und Ali Farhadi, „You Only Look Once: Unified, Real-time Object Detection“ in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, S. 779-788. 2016 [0174]