-
HINTERGRUND
-
Bei interaktiver Video-Segmentierung wird eine Anwendereingabe empfangen, die über Anwender-Klicks auf einem Bild ein Vordergrundobjekt oder interessierendes Objekt (z. B. positive Klicks) und einen Hintergrund (z. B. negative Klicks) angibt. Die Anwendereingabe wird dann genutzt, um Segmentierung auf Pixelebene des interessierenden Objekts durchgehend durch den Video-Clip automatisch zu rendern. Eine solche interaktive Video-Segmentierung kann für Rotoskopie (z. B. den Prozess zum Übertragen eines Bilds in eine andere Videosequenz) oder andere Anwendungen verwendet werden. Insbesondere sind die resultierenden Daten der semantischen Segmentierung in einer Vielzahl von Kontexten wie z. B. für visuelle Effekte nützlich. Beispielsweise kann automatische Video-Segmentierung arbeitsintensive und teure Rotoskopietechniken, die in Medien, Film und den zugehörigen Industrien verwendet werden, vorteilhaft ersetzen.
-
Aktuelle semantische Techniken enthalten sowohl die Verwendung handgefertigter Merkmale und Abstandsmetriken als auch die Verwendung von neuronalen Faltungsnetzen, um ein Standbild beispielsweise in Vordergrund- und Hintergrundbereiche zu segmentieren. Es gibt jedoch ein fortwährendes Interesse an einer verbesserten engmaschigen semantischen Segmentierung. Es ist im Hinblick auf diese und andere Überlegungen, dass die vorliegenden Verbesserungen benötigt wurden. Solche Verbesserungen können maßgeblich werden, wenn sich der Wunsch, engmaschige semantische Segmentierung in Video anzuwenden, weiter verbreitet.
-
Figurenliste
-
Das hier beschriebene Material ist als Beispiel und nicht zur Einschränkung in den begleitenden Figuren dargestellt. Zur Vereinfachung und Verdeutlichung der Darstellung sind in den Figuren dargestellte Elemente nicht notwendigerweise maßstabsgerecht gezeichnet. Beispielsweise können die Abmessungen einiger Elemente relativ zu anderen Elementen zur Verdeutlichung übertrieben sein. Ferner sind dort, wo es als geeignet erachtet wurde, Bezugszeichen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben. In den Figuren:
- stellt 1 die Erzeugung einer beispielhaften Eingabe für ein neuronales Faltungsnetz durch ein Beispielsystems dar;
- stellt 2 ein beispielhaftes Volumen von Merkmalen eines Faltungsnetzes für ein eingegebenes Bild aus Merkmalsschichten eines neuronalen Objektklassifizierungsfaltungsnetzes dar, wie es auf das Eingabebild angewandt wird;
- stellt 3 eine beispielhafte Komprimierung eines Merkmalsvolumens zum Erzeugen von Merkmalsrahmen für eine CNN-Eingabe dar;
- stellt 4 die Erzeugung beispielhafter Segmentierungen und Auswahl einer endgültigen Segmentierung durch ein Beispielsystem dar;
- ist 5 ein Ablaufdiagramm, das einen Beispielprozess zum Erzeugen einer Segmentierungsmaske aus einem eingegebenen Video und Anwender-Objekt- und HintergrundAuswahl dar.
- ist 6 ein Ablaufdiagramm, das einen Beispielprozess zum Trainieren eines neuronalen Segmentierungsfaltungsnetzes darstellt;
- stellt 7 beispielhafte Eingabe-Videorahmen zur Segmentierung und entsprechenden endgültigen Segmentierungen dar;
- ist 8 ein Ablaufdiagramm, das einen Beispielprozess zum Bereitstellen von Segmentierung in einem Video darstellt;
- ist 9 ein erläuterndes Diagramm eines Beispielsystems zum Bereitstellen von Segmentierung in einem Video;
- ist 10 ein erläuterndes Diagramm eines Beispielsystems; und
- stellt 11 eine Beispielvorrichtung dar, die insgesamt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Eine oder mehrere Ausführungsformen oder Implementierungen sind jetzt mit Bezug auf die beigefügten Figuren beschrieben. Obwohl spezifische Konfigurationen und Anordnungen diskutiert sind, ist zu verstehen, dass das nur zu anschaulichen Zwecken so vorgenommen ist. Fachleute der relevanten Technik werden erkennen, dass andere Konfigurationen und Anordnungen eingesetzt werden können, ohne von dem Geist und Schutzbereich der Beschreibung abzuweichen. Es wird für Fachleute der relevanten Technik offensichtlich sein, dass hier beschriebene Techniken und/oder Anordnungen auch in einer Vielzahl anderer Systeme und Anwendungen, die nicht das sind, was hier beschrieben ist, eingesetzt werden können.
-
Obwohl die folgende Beschreibung verschiedene Implementierungen darlegt, die in Architekturen wie beispielsweise Einchipsystem- (SoC-) Architekturen offenbart sein können, sind Implementierungen der Techniken und/oder Anordnungen, die hier beschrieben sind, nicht auf spezielle Architekturen und/oder Berechnungssysteme beschränkt und können durch irgendein/e Architektur und Berechnungssystem zu ähnlichen Zwecken implementiert sein. Zum Beispiel können verschiedenen Architekturen, die beispielsweise mehrere Chips oder Baugruppen mit integrierter Schaltung (IC) und/oder verschiedene Berechnungsvorrichtungen und/oder elektronische Unterhaltungsgeräte (CE-Geräte) wie z. B. Set-Top-Boxes, Smartphones usw. einsetzen, die Techniken und/oder Anordnungen, die hier beschrieben sind, implementieren. Ferner kann, obwohl die folgende Beschreibung zahlreiche spezifische Einzelheiten wie z. B. Logikimplementierungen, Typen und wechselseitige Beziehungen von Systemkomponenten, Wahlmöglichkeiten für Logik-Partitionierung/Integration usw. darlegen kann, der beanspruchte Gegenstand ohne solche spezifischen Einzelheiten praktiziert werden. In anderen Fällen kann einiges Material wie beispielsweise Steuerstrukturen und vollständige Software-Befehlssequenzen nicht im Einzelnen gezeigt sein, um das hier offenbarte Material nicht zu verdecken.
-
Das hier offenbarte Material kann in Hardware, Firmware, Software oder irgendeiner Kombination daraus implementiert sein. Das hier offenbarte Material kann auch als Befehle, die auf einem maschinenlesbaren Medium gespeichert sind, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können, implementiert sein. Ein maschinenlesbares Medium kann irgendein Medium und/oder Mechanismus zum Speichern oder Senden von Informationen in einer durch eine Maschine (z. B. eine Berechnungsvorrichtung) lesbaren Form enthalten.
-
Beispielsweise kann ein maschinenlesbares Medium Festwertspeicher (ROM); Direktzugriffsspeicher (RAM); Magnetplattenspeichermedien; optische Speichermedien; Flash-Speichervorrichtungen; elektrische, optische, akustische oder andere Formen verbreiteter Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) und andere enthalten.
-
Bezugnahmen in der Spezifikation auf „eine Implementierung“, „eine Beispielimplementierung“ usw. geben an, dass die beschriebene Implementierung ein/e spezielle/s Merkmal, Struktur oder Eigenschaft enthalten kann, doch nicht jede Ausführungsform notwendigerweise das/die spezielle Merkmal, Struktur oder Eigenschaft enthalten muss. Außerdem beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Implementierung. Ferner ist, wenn ein/e spezielle/s Merkmal, Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, übermittelt, dass es in dem Wissensbereich eines Fachmanns ist, ein/e solche/s Merkmal, Struktur oder Eigenschaft in Verbindung mit anderen Implementierungen zu bewirken, seien sie hier ausdrücklich beschrieben oder nicht.
-
Verfahren, Vorrichtungen, Einrichtungen, Berechnungsplattformen und Artikel sind hier mit Bezug auf engmaschige semantische Segmentierung in Video unter Verwendung von tiefem Lernen beschrieben.
-
Wie vorstehend beschrieben kann es vorteilhaft sein, jeden Videorahmen einer Videosequenz in beispielsweise Vordergrund- und Hintergrundbereiche semantisch zu segmentieren. Beispielsweise kann ein Anwender auf einen ersten Videorahmen einer Sequenz von Videorahmen klicken, um Orte in dem Rahmen, die ein interessierendes Objekt enthalten (z. B. positive Klicks), und Orte, die das interessierende Objekt nicht enthalten, die als Hintergrundbereiche gekennzeichnet sein können (z. B. negative Klicks), anzugeben. Unter Verwendung solcher durch einen Anwender bereitgestellten Informationen ist es wünschenswert, jeden Videorahmen in einen Bereich, der das interessierende Objekt (oder mehrere interessierende Objekte) aufweist, und einen weiteren Bereich, der den Hintergrund aufweist, engmaschig zu segmentieren. Genaue Daten der engmaschigen Segmentierung sind in einer Vielzahl von Kontexten für visuelle Effekte wünschenswert. Eine solche engmaschige Segmentierung kann irgendwelche pixelweisen Informationen (oder Informationen über engmaschige Bereiche wie z. B. 2x2-Pixel-Bereiche) enthalten, die angeben, ob das Pixel in dem interessierenden Objekt ist oder nicht. Solche Daten können binär sein oder können eine „Likelihood“ oder Wahrscheinlichkeit (z. B. von 0 bis 1 einschließlich) angeben, dass das Pixel in dem interessierenden Objekt ist. Solche Wahrscheinlichkeitsdaten können verwendet werden, um eine Binärmaske beispielsweise unter Verwendung eines Schwellenwerts von 0,5 zu erzeugen.
-
Wie hier diskutiert ist, wird ein vortrainiertes neuronales Segmentierungsfaltungsnetz (Segmentierungs-CNN) verwendet, um mehrere Kandidatensegmentierungen für einen aktuellen Videorahmen basierend auf einer Eingabe für das neuronale Faltungsnetz, die eine Anzahl von Rahmen enthält, zu erzeugen. Wie er hier verwendet ist, gibt der Begriff Rahmen in dem Kontext einer CNN-Eingabe eine 2D-Datenstruktur an, die einen Merkmalswert für jedes Pixel des Rahmens aufweist. Solche Merkmalswerte enthalten für einen Videorahmen beispielsweise Rotwerte, Grünwerte und Blauwerte (z. B. einen Eingaberahmen für jeden der RGB-Farbwerte), ein Kennzeichen eines positiven Anwender-Klicks oder projizierten positiven Anwender-Klicks (z. B. einen Wert von 1 an Orten eines positiven Anwender-Klicks und Werte von 0 sonst), Werte, die einen Abstand von dem Pixel zu einem positiven oder negativen Anwender-Klick angeben, Werte, die Bewegung angeben (z. B. Geschwindigkeitsbewegungsvektoren pro Pixel), Merkmalswerte, die aus Schichten eines Objektklassifizierungs-CNN komprimiert sind, und so weiter. Solche Datenstrukturen sind hier weiter diskutiert.
-
In einigen Ausführungsformen enthält die CNN-Eingabe wenigstens einen aktuellen Videorahmen, einen zeitlich vorhergehenden Videorahmen, einen Anwendereingaberahmen, der ein oder mehrere Kennzeichen eines interessierenden Objekts in dem aktuellen Videorahmen enthält, einen Bewegungsrahmen, der Bewegungskennzeichen enthält, die eine Bewegung von dem vorhergehenden Videorahmen zu dem aktuellen Videorahmen angeben, und mehrere Merkmalsrahmen, von denen jeder Merkmale enthält, die aus Schichten eines Objektklassifizierungs-CNN, wie es auf den aktuellen Videorahmen angewandt wird, komprimiert sind. Eine solche CNN-Eingabe kann als ein CNN-Eingabevolumen, CNN-Eingaberahmen, CNN-Eingabemerkmalskarten oder dergleichen charakterisiert sein. Das Segmentierungs-CNN kann irgendeine Anzahl von CNN-Schichten zum Erzeugen mehrerer Kandidatensegmentierungen des aktuellen Videorahmens enthalten. Beispielsweise kann jede Kandidatensegmentierung einen pixelweisen Wert enthalten, der eine Wahrscheinlichkeit dafür angibt, dass das Pixel Teil des interessierenden Objekts ist. Unter Verwendung der Kandidatensegmentierungen kann eine endgültige Segmentierung dann unter Verwendung irgendeiner geeigneten Technik oder Techniken ausgewählt werden. In einer Ausführungsform wird ein Auswahl-CNN, das zum Auswählen einer endgültigen Segmentierung vortrainiert ist, auf eine CNN-Eingabe, die die Kandidatensegmentierungen, den aktuellen Videorahmen und den Anwendereingaberahmen enthält, angewandt. Wie er hier verwendet ist, gibt der Begriff CNN ein Netz an, das wenigstens eine Faltungsschicht enthält, die ein oder mehrere Filter mit Eingabevolumenmerkmalskarten faltet, um Ausgabemerkmalskarten zu erzeugen.
-
Die hier diskutierten Techniken stellen engmaschige Segmentierung in Video mit verbesserter zeitlicher Kohärenz bereit. Darüber hinaus stellen die diskutierten Techniken eine vollständig automatisierte Segmentierung des Videos bereit, nachdem die Anwendereingabe für einen ersten Rahmen in einer Sequenz bereitgestellt ist, durch Simulieren nachfolgender Anwendereingabe unter Verwendung optischer Flusstechniken (z. B. Verwendung von durch optischen Fluss aktivierte Klick-Verfolgung). Dadurch sind praktische, klassen-agnostische, interaktive auf tiefem Lernen basierende Techniken zur Objektsegmentierung in Videodaten mit minimaler Anwenderintervention bereitgestellt. Insbesondere verbessern die diskutierten Techniken die zeitlich Kohärenz der Segmentierung zwischen Videorahmen basierend wenigstens auf der Anwendung des Segmentierungs-CNN auf einen vorhergehenden Videorahmen und einen Bewegungsrahmen, stellen eine anwendungsgetriebene Tensorzerlegungskomprimierung für ein Merkmal aus einem tiefen CNN-Objektklassifizierungsnetz bereit und stellen das Trainieren des Segmentierungs-CNN mit einer Grenzverlustfunktion bereit, um glatte Segmentierungskonturen von hoher Qualität zu verstärken. In einigen Ausführungsformen können die diskutierten Techniken angewandt werden, um eine auf künstlicher Intelligenz basierende Ende-zu-Ende-Rotoskopietechnik bereitzustellen, die auf Anwendungen mit fester Ursprungskamera anwendbar sind, die minimale Anwendereingaben erfordert, um genau segmentiertes Video von Vordergrundobjekten zu rendern.
-
1 stellt die Erzeugung einer beispielhaften Eingabe 121 für ein neuronales Faltungsnetz durch ein Beispielsystem 100, das in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist, dar. Insbesondere kann die Eingabe 121 für das neuronale Faltungsnetz (CNN) die Eingabe für ein Segmentierungs-CNN sein, wie hier weiter diskutiert ist, um mehrere Kandidatensegmentierungen eines aktuellen Videorahmens 111 zu erlangen. Wie er hier verwendet ist, gibt der Begriff Segmentierungs-CNN ein CNN an, das basierend auf einer CNN-Eingabe mehrere Kandidatensegmentierungen erzeugt, so dass jede der mehreren Kandidatensegmentierungen eine Wahrscheinlichkeit dafür angibt, dass ein Pixel davon in einem interessierenden Objekt ist. Die Wahrscheinlichkeit kann binär sein (z. B. 1 für das interessierende Objekt oder 0 für außerhalb des interessierenden Objekts) oder skaliert auf einen speziellen Bereich sein (z. B. von 0 bis 1 einschließlich).
-
Wie in 1 gezeigt ist, enthält das System 100 ein Merkmalsextraktionsmodul 102 und ein Merkmalskomprimierungsmodul 103. Das System 100 kann einen Prozessor, Speicher usw. enthalten, die über irgendeine Vorrichtung mit geeignetem Formfaktor implementiert sind, wie hier diskutiert ist, um CNN-Eingabe 121 zu erzeugen. Beispielsweise kann das System 100 als ein Personalcomputer, ein Laptop-Computer, ein Tablet, ein Phablet, ein Smartphone, eine Digitalkamera, eine Spielekonsole, eine am Körper tragbare Vorrichtung, eine Anzeigevorrichtung, eine Gesamtvorrichtung, eine Zwei-in-Eins-Vorrichtung oder dergleichen implementiert sein. Beispielsweise kann das System 100 CNN-Eingabeerzeugung, Kandidatensegmentierungserzeugung und endgültige Segmentierungsauswahl wie hier diskutiert ausführen. In einigen Ausführungsformen enthält das System 100 ferner eine oder mehrere Bildaufnahmevorrichtungen, um ein Eingabevideo 110 aufzunehmen, obwohl ein solches Eingabevideo von einer anderen Vorrichtung empfangen werden kann.
-
Wie nachstehend mit Bezug auf 4 diskutiert ist, wird ein Segmentierungs-CNN 401 (f) (z. B. ein Segmentierungsnetz) auf die CNN-Eingabe 121 angewandt. Wie mit Bezug auf 1 gezeigt ist, enthält die CNN-Eingabe 121 einen aktuellen Videorahmen 111 (Xt) des Eingabevideos 110, einen vorhergehenden Videorahmen 112 (Xt-1) des Eingabevideos 110, einen Bewegungsrahmen 113 (MVt) , einen vorhergehenden Segmentierungsrahmen 114 (Mt-1), einen Kennzeichenrahmen 115 eines interessierenden Objekts (oder positiven Kennzeichenrahmen) (Sp), einen Kennzeichenrahmen 117 für einen Hintergrund (oder negativen Kennzeichenrahmen) (Sn), einen Positivabstandstransformationsrahmen 116 (oder Kennzeichenrahmen für den Abstand zum interessierenden Objekt) (Tp), einen Negativabstandstransformationsrahmen 118 (oder Kennzeichenrahmen für den Abstand zum Hintergrund) (Tn) und mehrere Merkmalsrahmen 119 (Φt), die Merkmale enthalten, die aus Schichten eines neuronalen Objektklassifizierungsfaltungsnetzes, wie es auf den aktuellen Videorahmen angewandt wird, komprimiert sind. Jeder dieser Rahmen der CNN-Eingabe 121 ist hier nachstehend diskutiert.
-
Das System 100 empfängt ein Eingabevideo 110 und Anwender-Klick-Kennzeichen 120. Das Eingabevideo 110 kann irgendwelche geeigneten Videorahmen, Videobilder, Sequenzen von Videorahmen, eine Gruppe von Bildern, Gruppen von Bildern, Videodaten oder dergleichen in irgendeiner geeigneten Auflösung enthalten. Beispielsweise kann das Video Videografik-Array (VGA), hochauflösend (HD), Full-HD (z. B. 1080p), 2K-Auflösung-Video, 4K-Auflösung-Video, 8K-Auflösung-Video oder dergleichen sein, und das Video kann irgendeine Anzahl von Videorahmen, Sequenzen von Videorahmen, Bildern, Gruppen von Bildern oder dergleichen enthalten. In einigen Ausführungsformen wird das Eingabevideo 110 vor der CNN-Verarbeitung downgesampled. Hier diskutierte Techniken sind der Deutlichkeit der Präsentation halber mit Bezug auf Videorahmen diskutiert. Solche Rahmen können jedoch als Bilder, Videobilder, Sequenzen von Bildern, Videosequenzen usw. charakterisiert sein. In einigen Ausführungsformen weist das Eingabevideo drei Kanäle wie z. B. RGB-Kanäle auf, obwohl andere Formate sie z. B. YUV, YCbCR usw. verwendet werden können. Insbesondere kann wie hier verwendet, wenn er Teil einer CNN-Eingabe 121 ist, ein Videorahmen (aktuell oder vorhergehend) einen einzigen Rahmen der CNN-Eingabe 121 (z. B. einen Luma-Rahmen) oder mehrere Rahmen der CNN-Eingabe 121 (z. B. einen Rahmen für den R-Kanal, einen Rahmen für die G-Kanal und einen Rahmen für den B-Kanal) enthalten. Der vorhergehende Videorahmen 112 kann irgendein zeitlich früherer oder vorhergehender (in der Aufnahme- und Anzeigereihenfolge) in Bezug auf den aktuellen Videorahmen 111 sein, wie z. B. ein unmittelbar zeitlich früherer Rahmen, so dass keine dazwischen liegenden Rahmen zwischen dem vorhergehenden Videorahmen 112 und dem aktuellen Videorahmen 111 vorhanden sind.
-
Wie diskutiert empfängt das System 100 außerdem Anwender-Klick-Kennzeichen 120, die Orte innerhalb oder einschließlich eines interessierenden Objekts (z. B. innerhalb der Giraffe), die als positive Klicks charakterisiert sind, und Orte außerhalb des oder ausschließlich des interessierenden Objekts (z. B. außerhalb der Giraffe) angeben. Wie er hier verwendet ist, gibt der Begriff interessierendes Objekt irgendein Objekt innerhalb eines Bilds an, das ein Anwender von dem Rest (z. B. dem Hintergrund) des Bilds separieren möchte. Häufig ist ein interessierendes Objekt darin kontinuierlich, dass es eine einzige Grenze aufweist und ein ununterbrochenes Ganzes innerhalb der Grenze bildet. Das interessierende Objekt kann irgendein Objekt, eine Person, ein Tier usw. sein. Die Anwendereingabe kann unter Verwendung irgendeiner geeigneten Technik oder Techniken empfangen werden. In einigen Ausführungsformen können anstelle solcher Anwender-Klick-Kennzeichen 120 Orte innerhalb und außerhalb des interessierenden Objekts unter Verwendung eines Objekterkennungs-CNN oder anderer Maschinenlerntechniken erhalten werden. Darüber hinaus können wie diskutiert Anwender-Klick-Kennzeichen 120 nur für einen ersten Videorahmen eines Eingabevideos 110 empfangen werden. Für nachfolgende Rahmen des Eingabevideos 110 können positive Orte wie z. B. der positive Ort 122 (z. B. ein Ort eines positiven Kennzeichens, das einen Ort innerhalb des interessierenden Objekts angibt) innerhalb eines Kennzeichenrahmens 115 für ein interessierendes Objekt von den initialen Anwender-Klick-Orten projiziert werden. Beispielsweise kann für den Kennzeichenrahmen 115 des interessierenden Objekts der positive Ort 122 aus einem positiven Keimort in einem initialen Rahmens des interessierenden Objekts projiziert werden, so dass der positive Keimort durch den Anwender bereitgestellt war. In einer Ausführungsform enthält das Projizieren eines positiven (oder negativen) Orts das Verschieben des Orts gemäß einem Bewegungsvektor (der die Geschwindigkeit pro Pixel angibt) eines Bewegungsrahmens 113, der dem Ort entspricht (z. B. ein kollokierter Bewegungsvektor, ein Mittelwert von Bewegungsvektoren in einer Umgebung des Orts, usw.).
-
Ähnlich kann ein negativer Ort 124 (z. B. ein Ort eines negativen Kennzeichens, das einen Ort außerhalb des interessierenden Objekts angibt) innerhalb eines Kennzeichenrahmens 117 des Hintergrunds aus den initialen Anwender-Klick-Orten projiziert werden. Beispielsweise kann für den Kennzeichenrahmen 117 des Hintergrunds der negative Ort 124 von einem negativen Keimort in einem initialen Hintergrundrahmen projiziert werden, so dass der negative Keimort durch den Anwender bereitgestellt war. Obwohl in Bezug auf einen einzigen positiven Ort 122 und einen einzigen negativen Ort 124 dargestellt, kann irgendeine Anzahl positiver und negativer Ort verwendet werden.
-
Der Kennzeichenrahmen 115 des interessierenden Objekts kann irgendeine geeignete Datenstruktur enthalten, die Kennzeichen enthält, die Orte innerhalb eines interessierenden Objekts angeben, (z. B. ein oder mehrere Kennzeichen, die einem oder mehreren Orten entsprechen) wie z. B. einen ersten Wert (z. B. 1) für Pixelorte, die als einen Ort eines interessierenden Objekts identifiziert sind, und einen zweiten Wert (z. B. 0) für alle anderen Pixelorte. Ähnlich kann der Kennzeichenrahmen 117 des Hintergrunds irgendeine geeignete Datenstruktur enthalten, die Kennzeichen enthält, die Orte innerhalb des Hintergrunds und außerhalb des interessierenden Objekts angeben, wie z. B. einen ersten Wert (z. B. 1) für Pixelorte, die als der Hintergrund identifiziert sind, und einen zweiten Wert (z. B. 0) für alle anderen Pixelorte. Beispielsweise können der Kennzeichenrahmen 115 des interessierenden Objekts und der Kennzeichenrahmen 117 des Hintergrunds Kennzeichen eines interessierenden Objekts und eines Hintergrunds enthalten, so dass die Kennzeichen (z. B. unter Verwendung eines ersten Werts) Pixel angeben, die das interessierende Objekt bzw. den Hintergrund enthalten.
-
Der Bewegungsrahmen 113 kann irgendeine Datenstruktur enthalten, die die Bewegung von einem vorhergehenden Videorahmen 112 zu dem aktuellen Videorahmen 111 angibt. Beispielsweise enthält der Bewegungsrahmen 113 Kennzeichen, die die Bewegung von dem vorhergehenden Videorahmen 112 zu dem aktuellen Videorahmen angeben, wie z. B. pixelweise Geschwindigkeitsbewegungsvektoren (z. B. einen Bewegungsvektor für jedes Pixel davon) oder andere Kennzeichen der Bewegung. Darüber hinaus kann der Bewegungsrahmen 113 unter Verwendung irgendeiner geeigneten Technik oder Techniken wie z. B. engmaschiger optischer Flusstechniken erzeugt werden. In einer Ausführungsform enthält die CNN-Eingabe 121 den Bewegungsrahmen 113, so dass das Segmentierungs-CNN 401 engmaschige Merkmale des optischen Flusses empfängt, die zwischen dem vorhergehenden Videorahmen 112 und dem aktuellen Videorahmen 111 angewandt über den Bildraum bestimmt werden. Solche Merkmale des optischen Flusses stellen vorteilhafterweise verbesserte zeitliche Kohärenz in ausgegebenen Kandidatensegmentierungen 403, die durch das Segmentierungs-CNN 401 erzeugt werden, bereit.
-
Der Positivabstandstransformationsrahmen
116 und der Negativabstandstransformationsrahmen
118 können aus dem Kennzeichenrahmen
115 des interessierenden Objekts bzw. dem Kennzeichenrahmen
117 des Hintergrunds erzeugt werden. Der Positivabstandstransformationsrahmen
116 und der Negativabstandstransformationsrahmen
118 können irgendwelche geeigneten Datenstrukturen enthalten, die die Nähe zu Orten mit positivem und negativem Kennzeichen innerhalb des Kennzeichenrahmen
115 des interessierenden Objekts und des Kennzeichenrahmen
117 des Hintergrunds angeben. In einer Ausführungsform enthält der Positivabstandstransformationsrahmen
116 für jedes Pixel davon einen Wert, der einen kleinsten Abstand zu irgendeinem der Orte der positiven Kennzeichen in dem Kennzeichenrahmen
115 des interessierenden Objekts angibt. Ähnlich enthält in einer Ausführungsform der Negativabstandstransformationsrahmen
118 für jedes Pixel davon einen Wert, der einen kleinsten Abstand zu irgendeinem der Orte der negativen Kennzeichen in dem Kennzeichenrahmen
117 des Hintergrunds angibt. In einer Ausführungsform wird jeder Wert des Positivabstandstransformationsrahmens
116 und des Negativabstandstransformationsrahmens
118 bestimmt wie mit Bezug auf die Gleichungen (1) gezeigt ist:
wobei Tp der Positivabstandstransformationsrahmen
116 ist, Tn der Negativabstandstransformationsrahmen
118 ist, p irgendein Pixelort innerhalb des Positivabstandstransformationsrahmens
116 oder des Negativabstandstransformationsrahmens ist, q ein nächstgelegener positiver Kennzeichenort (z. B. der positive Ort
122 in dem Kennzeichenrahmen
115 des interessierenden Objekts) oder negative Kennzeichenort (z. B. der negative Ort
124 in dem Kennzeichenrahmen
115 des interessierenden Objekts) ist. In dem Beispiel der Gleichungen (1) werden die kleinsten Abstände pro Pixel als Euklidische Abstände bestimmt, es kann jedoch irgendein geeignetes Abstandsmaß verwendet werden.
-
Wie mit Bezug auf den Positivabstandstransformationsrahmen 116 gezeigt ist, erzeugt das Anwenden der Gleichungen (1) einen Bereich 123 um die kollokierte Position in Bezug auf den positiven Ort 122, so dass der Bereich 123 größere Werte aufweist, die sich konzentrisch von der kollokierten Position in Bezug auf den positiven Ort 122 weg bewegen. Obwohl mit Bezug auf kleine Werte an der kollokierten Position in Bezug auf den positiven Ort 122 und größere Werte, die sich davon weg bewegen, diskutiert, können alternativ größere Werte an der kollokierten Position in Bezug auf den positiven Ort 122 verwendet werden, wobei sich kleiner werdende Werte davon weg bewegen. Beispielsweise kann die Umkehrung der Gleichungen (1) verwendet werden, usw. Ähnlich erzeugt die Anwendung der Gleichungen (1) einen Bereich 125 um die kollokierte Position in Bezug auf den negativen Ort 124, so dass der Ort 125 wieder größere Werte aufweist, die sich konzentrisch von ihm weg bewegen, obwohl die Umkehrung auch verwendet werden kann. Wie zu erkennen ist, stellt das Anwenden mehrerer positiver Orte 122 (oder negativer Orte 124) zusätzliche Bereiche 123 (oder Bereiche 125) bereit, die überlappen können. Beispielsweise stellen der Positivabstandstransformationsrahmen 116 und der Negativabstandstransformationsrahmen 118 Wärmekarten oder Konturen bereit, die sich auf einen Abstand zu einem nächstgelegenen positiven oder negativen Ort beziehen, um ein CNN in Gebiete zu lenken, für die es wahrscheinlich ist, dass sie ein interessierendes Objekt oder ein Hintergrundbereich sind.
-
Darüber hinaus enthält die CNN-Eingabe 121 den vorhergehenden Segmentierungsrahmen 114, der eine ausgewählte Segmentierung ist, die dem vorhergehenden Videorahmen 112 entspricht. Insbesondere können für einen ersten Rahmen des Eingabevideos 110 ein Standbildsegmentierungs-CNN und ein Standbildauswahl-CNN oder ein Objekterkennungs-CNN verwendet werden, um einen initialen Segmentierungsrahmen zu erzeugen. Nachfolgende Segmentierungsrahmen werden durch das Segmentierungs-CNN 401 und eine Auswahl von einem aus mehreren Kandidatensegmentierungen 403 (wie z. B. ein Auswahl-CNN 402) erzeugt, wie hier weiter diskutiert ist. Der vorhergehende Segmentierungsrahmen 114 kann irgendeine geeignete Datenstrukturierung enthalten, die Segmentierung angibt, wie z. B. Werte pro Pixel, die für jedes Pixel die Wahrscheinlichkeit dafür angeben, dass das Pixel in einem interessierenden Objekt ist, wie z. B. einen Wert im Bereich von 0 bis 1 einschließlich.
-
Wie gezeigt werden Merkmalsrahmen 119 zur Aufnahme in die CNN-Eingabe 121 erzeugt, so dass die Merkmalsrahmen 119 jeweils Merkmale enthalten, die aus Schichten eines neuronalen Objektklassifizierungsfaltungsnetzes komprimiert sind, wie es auf den aktuellen Videorahmen angewandt ist. Wie er hier verwendet ist, gibt der Begriff Merkmal oder Merkmalswert einen Wert an, der Teil einer Merkmalskarte oder eines Merkmalsrahmens ist, so dass alle Merkmale in einer/einem Merkmalskarte oder -rahmen dem entsprechen, dass sie über die gleiche Verarbeitung wie z. B. Anwendung eines CNN, Komprimieren usw. erhalten werden. Insbesondere können die Merkmalsrahmen 119 viele (z. B. ungefähr 700) Merkmalsrahmen enthalten, wobei jeder Rahmen Merkmale pro Pixel mit der Auflösung des aktuellen Videorahmens 111 enthält, so dass Merkmalsrahmen 119 aus Merkmalsrahmen (z. B. etwa 1400) mit einer Komprimierungsrate wie z. B. 50 % komprimiert werden. Obwohl mit Bezug auf eine Komprimierungsrate von 50 % diskutiert, kann irgendeine Rate verwendet werden, wie z. B. die Reduktion von Merkmalsrahmen um 30 % bis 40 %, die Reduktion von Merkmalsrahmen um 40 % bis 60 % oder dergleichen. Wie nachstehend diskutiert werden Merkmalsrahmen 119 durch Anwenden eines Objektdetektions-CNN 101 auf den aktuellen Videorahmen 111, Abrufen für jedes Pixel des aktuellen Videorahmens 111 mehrerer Werte jeweils aus einer der Schichten des neuronalen Klassifizierungsfaltungsnetzes, um eine Hypersäule von Merkmalswerten für jedes Pixel zu erzeugen, und Komprimieren der Hypersäulen in Merkmalsrahmen 119 erzeugt. Zusammengenommen definieren die Hypersäule aus Merkmalswerten aus dem Objektdetektions-CNN 101 mehrere Merkmalskarten, die danach in weniger Merkmalskarten komprimiert werden. Bei anderer Betrachtung der Anwendung des Objektdetektions-CNN 101 können nach dem Anwenden mehrere Merkmalskarten aus dem Objektdetektions-CNN 101 abgerufen werden, so dass jede Merkmalskarte einer Schicht des Objektdetektions-CNN 101 entspricht, wobei jede Merkmalskarte einen Merkmalswert aufweist, der einem Pixel des aktuellen Videorahmens 111 entspricht.
-
Wie diskutiert wird das Objektdetektions-CNN 101 auf den aktuellen Videorahmen 111 angewandt, und das Merkmalsextraktionsmodul 102 extrahiert das Merkmalsvolumen 130 aus Schichten des Objektdetektions-CNN 101. Wie hier verwendet gibt der Begriff Objektdetektions-CNN irgendein CNN an, das verwendet wird, um Objektdetektion auf einem Eingabebild auszuführen. Obwohl mit Bezug auf das Objektdetektions-CNN 101 diskutiert, kann jedes vortrainierte CNN verwendet werden. In einer Ausführungsform ist das Objektdetektions-CNN 101 ein vortrainiertes CNN wie z. B. das VGG-19 CNN. In einer Ausführungsform ist das Merkmalsvolumen 130 Merkmalskarten, die aus Faltungsschichten 126 des Objektdetektions-CNN 101 extrahiert sind. Das heißt, Merkmalskarten aus Faltungsschichten 126 können kopiert und gestapelt werden, um das Merkmalsvolumen 130 zu bilden, das ein Volumen von pixelweisen Merkmalen enthält. Beispielsweise kann für jedes Pixel eine Säule von Merkmalen (eines aus jeder der extrahierten Merkmalskarten) als eine Hypersäule charakterisiert sein. Die Hypersäulen stellen zusammen genommen ein Volumen von pixelweisen Merkmalen für den aktuellen Videorahmen 111 bereit.
-
2 stellt ein Beispielvolumen von Faltungsnetzmerkmalen 201 für ein Eingabebild 202 aus Merkmalsschichten eines neuronalen Objektklassifizierungsfaltungsnetzes, wie es auf das Eingabebild 202 angewandt wird, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung dar. In 2 wird jede Merkmalskarte aus Faltungsnetzmerkmalen 201 wie z. B. Merkmalskarten 204, 206 aus dem Objektdetektions-CNN 101 nach der Anwendung des Objektdetektions-CNN 101 auf das Eingabebild 202 extrahiert. Beispielsweise ist das Volumen der Faltungsnetzmerkmale 201 ein Beispiel für ein Merkmalsvolumen 130. Wie mit Bezug auf das Pixel 211 des Eingabebilds 202 gezeigt ist, weist jede Merkmalskarte aus Faltungsnetzmerkmalen 201 wie z. B. die Merkmalskarten 204, 206 ein/en entsprechendes/n Merkmal oder Merkmalswert wie z. B. den Merkmalswert 213 der Merkmalskarte 204 und den Merkmalswert 212 der Merkmalskarte 206 und so weiter auf, so dass für das Pixel 211 eine Hypersäule 203 von Merkmalswerten 205 bereitgestellt wird. Die Hypersäulen, die die Hypersäule 203 enthalten, stellen eine Säule von Faltungsnetzmerkmalen 201 bereit, die komprimiert sind, um, mit Bezug auf 1, Merkmalsrahmen 119 über das Merkmalskomprimierungsmodul 103 erzeugen. Wie diskutiert kann die Hypersäule 203 eine große Anzahl von Elementen wie z. B. etwa 1400 Werte aufweisen.
-
Zurück zu 1 enthält das Merkmalsvolumen 130, wie mit Bezug auf das Volumen der Faltungsnetzmerkmale 201 diskutiert, pro Pixel-Hypersäule tiefe Merkmale, die aus dem Objektdetektions-CNN 101 erzeugt sind. Das Merkmalsvolumen 130 wird dann komprimiert, um Merkmalsrahmen 119 zu erzeugen. Die Merkmalsrahmen 119 können die gleiche Auflösung aufweisen wie der aktuelle Videorahmen 111 (z. B. horizontale und vertikale Dimensionen gleich dem aktuellen Videorahmen 111) und eine Tiefe, D, die ein Bruchteil der Anzahl von Elementen in jeder Pro-Pixel-Hypersäule des Merkmalsvolumens 130, wie z. B. 50 % der Anzahl der Elemente oder dergleichen.
-
Die Komprimierung des Merkmalsvolumens 130, um Merkmalsrahmen 119 (z. B. ein Merkmalsvolumen, das eine reduzierte Tiefe aufweist) zu erzeugen, kann unter Verwendung irgendeiner geeigneten Technik oder Techniken ausgeführt werden. Insbesondere können die Merkmalsrahmen 119 außerdem so charakterisiert sein, dass sie tiefe Pro-Pixel-Hypersäulen-Merkmale aufweisen, obwohl sie komprimierte Merkmale aus Schichten eines Objektklassifizierungs-CNN sind. In einigen Ausführungsformen werden die Merkmalsrahmen 119 über Komprimierung unter Verwendung von Tucker-Zerlegung des Merkmalsvolumens 130 erzeugt. Beispielsweise können tiefe Pro-Pixel-Hypersäulen-Merkmale (Merkmalsrahmen 119) aus komprimierten (über Tucker-Zerlegung) Merkmalen des Objektdetektions-CNN 101 (z. VGG-19) erzeugt werden.
-
3 stellt eine beispielhafte Komprimierung des Merkmalsvolumens 130 zum Erzeugen von Merkmalsrahmen 119 für CNN-Eingabe 121 ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung dar. Wie in 3 gezeigt ist, kann das Merkmalsvolumen 130 (X) (z. B. wie es aus dem Objektdetektions-CNN 101 extrahiert ist) durch Merkmalsrahmen 119 (G) und den Hauptkomponenten 303, 304, 305 (A, B, C) angenähert werden. Insbesondere können die Hauptkomponenten 303, 304, 305 verworfen werden, während die Merkmalsrahmen 119 als Teil der CNN-Eingabe 121 bereitgestellt werden.
-
Beispielsweise ist die Tucker-Zerlegung ein Beispiel für Singulärwertzerlegung höherer Ordnung (HOSVD), die angewandt werden kann, um das Merkmalsvolumen 130 in Merkmalsrahmen 119 zu komprimieren. Insbesondere wird die Tucker-Zerlegung mit dem Vortrainieren in Bezug auf das Segmentierungs-CNN 401 angewandt, um die Reduktion der Dimensionalität auszuführen, während die benötigten Einzelheiten zum Gebrauch durch das Merkmalsvolumen 130 erhalten bleiben. Solches Vortrainieren der Merkmalskomprimierung über Tucker-Zerlegung kann unter Verwendung irgendeiner geeigneten Technik oder Techniken ausgeführt werden. In einer Ausführungsform werden die Hauptkomponenten 303, 304, 305 während einer Trainingsphase zur Anwendung in einer Inferenzphase ausgewählt, obwohl irgendwelche geeigneten Parameter der Tucker-Zerlegung während des Vortrainierens modifiziert werden können.
-
Beispielsweise für einen 3-Tensor (z. B. einen 3D-Tensor, wie er hier bereitgestellt ist) kann die Tucker-Zerlegung als ein Problem zum Finden einer Zerlegung des Tensors X (z. B. des Merkmalsvolumens
130) formuliert sein, so dass X ∈ R
I×J×K ist (z. B. weist X reelle Zahlen mit einer Volumendimension von IxJxK auf) mit einem Kerntensor G (Merkmalsrahmen
119), so dass GE R
P×Q×R ist (z. B. weist G reelle Zahlen mit einer Volumendimension von PxQxR auf), und Hauptkomponenten A (z. B. die Hauptkomponenten
303), so dass A ∈ R
I×P ist (z. B. weist A reelle Zahlen mit einer Flächendimension IxP auf), B (z. B. Hauptkomponente
304), so dass B ∈ R
J×Q ist (z. B. weist B reelle Zahlen mit einer Flächendimension von JxQ auf) und C (z. B. Hauptkomponente
305), so dass C ∈ R
K×R ist (z. B. weist C reelle Zahlen mit einer Flächendimension von KxR auf) unter Verwendung von Gleichung (2) wie folgt. Insbesondere ist in diesem Kontext K etwa 1400 (die Anzahl oder extrahierte Merkmalskarten), R ist etwa 700 (z. B. unter Verwendung einer Komprimierung von 50 %) und I=P und J=Q, wobei IxJ die Auflösung des Eingabevideorahmens
111 (und anderer Rahmen der CNN-Eingabe
121) ist. In einigen Ausführungsform kann die Tucker-Zerlegung wie mit Bezug auf Fig. (2) gezeigt bestimmt sein:
wobei e ein Kreuzprodukt bezeichnet, G der Kerntensor (Merkmalsrahmen
119) ist und A, B, C Faktormatrizen oder Hauptkomponenten in der entsprechenden Tensormode sind, und wobei die „metricized“ Version von X̂ wie in den Gleichungen (3) gezeigt ausgedrückt sein kann:
wobei ⊗ ein Kronecker-Produkt angibt.
-
Allgemein wird Komprimierung erreicht, wenn P < I, Q < J und/oder R < K ist (z. B. wobei der Kerntensor, G, die komprimierte Version des ursprünglichen Tensors, X, ist). Wie diskutiert wird in dem Kontext des Komprimierens des Merkmalsvolumens 130 in Merkmalsrahmen 119 die Komprimierung nur in einer Dimension (z. B. der Tiefe oder Anzahl von Merkmalskarten) bereitgestellt.
-
4 stellt die Erzeugung von beispielhaften Segmentierungen 403 und Auswahl einer endgültigen Segmentierung 406 durch das Beispielsystem 100 ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung dar. Wie gezeigt kann die CNN-Eingabe 121, erzeugt wie vorstehend diskutiert, in das Segmentierungs-CNN 401 eingegeben werden, um mehrere Kandidatensegmentierungen 403 des aktuellen Videorahmens 111 zu erzeugen. Wie diskutiert gibt der Begriff Segmentierungs-CNN ein CNN an, das mehrere Kandidatensegmentierungen 403 (z. B. eine Menge von Segmentierungen) basierend auf einer CNN-Eingabe erzeugt, so dass jede der mehreren Kandidatensegmentierungen eine Wahrscheinlichkeit angibt, dass jedes Pixel davon in einem interessierenden Objekt ist.
-
Das Segmentierungs-CNN 401 kann irgendeine CNN-Architektur enthalten, die irgendeine Anzahl von Faltungsschichten aufweist, von denen jede Faltungskernels in irgendeiner Größe, Anzahl und Dilatation aufweist. Darüber hinaus können einigen der Faltungsschichten rektifizierte lineare Einheiten folgen, und nach einer letzten Faltungsschicht davon kann das Segmentierungs-CNN 401 eine Aktivierungsschicht oder Aktivierungsfunktionsschicht aufweisen, um pixelweise Wahrscheinlichkeiten dafür, dass jedes Pixel in dem interessierenden Objekt ist, bereitzustellen. Beispielsweise kann die Ausgabe des Segmentierungs-CNN 401 irgendeine Anzahl (z. B. etwa sechs) Kandidatensegmentierungen 403 enthalten, die jeweils pixelweise Wahrscheinlichkeiten dafür enthalten, ob das Pixel in dem interessierenden Objekt enthalten ist, wie vorstehend diskutiert. Insbesondere können die Kandidatensegmentierungen 403 vorteilhafterweise Wahrscheinlichkeiten über einen speziellen Bereich (z. B. 0 bis 1 einschließlich) zur Verwendung durch das Auswahl-CNN enthalten, wie nachstehend diskutiert. In einer Ausführungsform sind die Kandidatensegmentierungen 403 ferner nach der „Likelikhood“ der Genauigkeit für jede der Kandidatensegmentierungen 403 eingereiht, so dass beispielsweise eine wahrscheinlichste Segmentierung 404 in der Auflistung als erste bereitgestellt ist, eine zweitwahrscheinlichste Segmentierung als zweite in der Auflistung bereitgestellt ist, und so weiter bis zur am wenigsten wahrscheinlichen Segmentierung 405. Eine solche Rangfolge oder Ordnung kann in der Anwendung des Auswahl-CNN 402 beibehalten werden.
-
In einer Ausführungsform weist das Segmentierungs-CNN
401 eine CNN-Architektur auf, wie durch die nachstehende Tabelle 1 skizziert ist, so dass das Segmentierungs-CNN
401 9 Schichten aufweist, gefolgt von einer Aktivierungsfunktionsschicht, wie vorstehend diskutiert. Wie gezeigt kann eine erste Faltungsschicht
75 1x1-Faltungskernels mit der Dilatation 1 anwenden, die zweite bis achte Faltungsschicht können 75 3x3-Faltungskernels mit ansteigenden Dilatationen von 1, 4, 8, 16, 32, 64, und 128 anwenden, und eine neunte Faltungsschicht kann 75 1x1-Faltungskernels mit der Dilatation 1 anwenden.
Tabelle 1: Beispiel einer Segmentierungsnetzarchitektur
Schicht | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Faltung | 1x1 | 3x3 | 3x3 | 3x3 | 3x3 | 3x3 | 3x3 | 3x3 | 1x1 |
Dilatation | 1 | 1 | 4 | 8 | 16 | 32 | 64 | 128 | 1 |
Tiefe | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 |
-
Das Segmentierungs-CNN 401 implementiert CNN-Parameter, die wie hier nachstehend diskutiert vortrainiert wurden. Insbesondere kann das Segmentierungs-CNN 401 mit dem Auswahl-CNN 402 trainiert werden, oder sie können separat trainiert werden.
-
Wie in 4 gezeigt ist, sind in einigen Ausführungsformen Kandidatensegmentierungen 403 zusammen mit dem Videorahmen 111 (Xt), dem Kennzeichenrahmen 115 des interessierenden Objekts (Sp), dem Kennzeichenrahmen 117 des Hintergrunds (Sn), dem Positivabstandstransformationsrahmen 116 (Tp) und dem Negativabstandstransformationsrahmen 118 (Tn) als CNN-Eingabe 411 für das Auswahl-CNN 402 zur Auswahl der ausgewählten Segmentierung 406 bereitgestellt. In einigen Ausführungsformen können einer oder mehrere aus dem vorhergehenden Videorahmen 112 (Xt-1), dem Bewegungsrahmen 113 (MVt) und dem vorhergehenden Segmentierungsrahmen 114 (Mt-1) ebenfalls als Teil der CNN-Eingabe 411 bereitgestellt werden. Das Auswahl-CNN 402 kann irgendeine geeignete Architektur aufweisen, um die Auswahl der ausgewählten Segmentierung 406 bereitzustellen. In einer Ausführungsform weist das Auswahl-CNN 402 eine ähnliche Architektur in Bezug auf das Segmentierungs-CNN 401 auf, wie es mit Bezug auf Tabelle 1 diskutiert ist. Obwohl mit Bezug auf die Implementierung des Auswahl-CNN 402 dargestellt kann irgendeine Auswahltechnik verwendet werden, um die ausgewählte Segmentierung 406 zu bestimmen. Darüber hinaus kann dann ein Schwellenwert (z. B. 0,5) auf die endgültige Segmentierung 406 angewandt werden, um eine Binärmaske mit Werten von 0 für Pixel, die als außerhalb des interessierenden Objekts betrachtet werden, und Werten von 1 für Pixel, die als in dem interessierenden Objekt enthalten betrachtet werden, bereitzustellen.
-
5 ist ein Ablaufdiagramm, das einen Beispielprozess 500 zum Erzeugen einer Segmentierungsmaske aus dem Eingabevideo und Anwenderobjekt- und Hintergrundauswahl ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung darstellt. Der Prozess 500 kann eine oder mehrere Operationen 501-509 enthalten, wie in 5 dargestellt ist. Der Prozess 500 kann durch irgendein/e Vorrichtung oder System, die hier zum Erzeugen einer Segmentierungsmaske diskutiert sind, ausgeführt werden. Der Prozess 500 oder Abschnitte davon können für irgendeine Anzahl aktueller Videorahmen, Videosequenzen usw. wiederholt werden. Die resultierende Segmentierungsmaske kann ferner in irgendeiner Anwendung visueller Effekte wie z. B. Rotoskopieoperationen verwendet werden.
-
Der Prozess 500 beginnt bei Operation 501, wo ein aktueller Videorahmen und ein zeitlich vorhergehender (in der Reihenfolge der Aufnahme und der Präsentation) Videorahmen erhalten werden. Der aktuelle Videorahmen und der zeitlich vorhergehende Videorahmen können jeweils einen einzigen Luma-Kanal oder mehrere (z. B. drei) Ebenen oder Rahmen wie z. B. einen Luma-Rahmen und zwei Chroma-Rahmen (z. B. YUV, YCbCr) oder drei Chroma-Rahmen (z. B. RGB) enthalten. Insbesondere kann die mit Bezug auf Operation 507 diskutierte CNN-Eingabe drei Rahmen oder Merkmalskarten für jeden aus dem aktuellen Videorahmen und dem zeitlich vorhergehenden Videorahmen enthalten.
-
Die Verarbeitung fährt mit Operation 502 fort, wo positive und negative Kennzeichen, die für Orte innerhalb eines interessierenden Objekts repräsentativ sind, empfangen oder projiziert werden. Beispielsweise können für einen ersten Videorahmen einer Videosequenz die positiven und negativen Kennzeichen durch einen Anwender bereitgestellt werden, während für nachfolgende Videorahmen der Videosequenz die positiven und negativen Kennzeichen unter Verwendung optischer Flusstechniken projiziert werden können. Darüber hinaus können bei Operation 502 ein Rahmen des interessierenden Objekts oder Rahmen positiver Orte und ein Hintergrundrahmen oder Rahmen negativer Orte, die den positiven bzw. negativen Kennzeichen entsprechen, erzeugt werden, so dass der Rahmen positiver Orte Orte der positiven Kennzeichen angibt (über einen Wert wie z. B. eins) und der Rahmen negativer Orte Orte der negativen Kennzeichen angibt (über einen Wert wie z. B. eins), wobei andere Werte der Rahmenwerte keiner Angabe entsprechen (z. B. unter Verwendung eines Werts von null).
-
Die Verarbeitung fährt mit Operation 503 fort, wo Abstandstransformationsrahmen, von denen jeweils einer dem Rahmen positiver Orte und dem Rahmen negativer Orte entspricht, erzeugt werden. Beispielsweise können Positiv- und Negativabstandstransformationsrahmen erzeugt werden, wie mit Bezug auf die Gleichungen (1) diskutiert ist, so dass der Positivabstandstransformationsrahmen für jedes Pixel davon einen Wert enthält, der einen kleinsten Abstand zu irgendeinem der Orte der positiven Kennzeichen angibt, und der Negativabstandstransformationsrahmen für jedes Pixel davon einen Wert enthält, der einen kleinsten Abstand zu irgendeinem der Orte der negativen Kennzeichen angibt.
-
Die Verarbeitung führt mit Operation 504 fort, wo ein Bewegungsrahmen unter Verwendung irgendwelcher geeigneten Bewegungsverfolgungstechniken wie z. B. Techniken für engmaschigen optischen Fluss erzeugt wird. In anderen Ausführungsformen können Bewegungsschätzungstechniken wie z. B. Blockabgleichstechniken verwendet werden. Wie diskutiert enthält der Bewegungsrahmen Bewegungskennzeichen, die die Bewegung von einem vorhergehenden Videorahmen zu dem aktuellen Videorahmen angeben, wie z. B. Geschwindigkeitsbewegungsvektoren pro Pixel (z. B. einen Bewegungsvektor für jedes Pixel des Bewegungsrahmens) .
-
Die Verarbeitung fährt mit Operation 505 fort, wo ein Klassifizierungs-CNN auf den aktuellen Videorahmen angewandt wird und pixelweise Hypersäulen abgerufen werden. Das Klassifizierungs-CNN kann irgendein geeignetes CNN sein, wie z. B. das vortrainierte VGG-19 CNN. Darüber hinaus können die pixelweisen Hypersäulen Merkmalswerte aus irgendwelchen Schichten (z. B. verdeckten Schichten) des vortrainierten CNN enthalten. Jede Hypersäule enthält eine Anzahl von Merkmalen für jedes Pixel (z. B. etwa 1400 Merkmale oder Werte), die sich über Merkmalskarten erstrecken, so dass jedes Pixel einen Merkmalswert in jeder Merkmalskarte aufweist, wie mit Bezug auf 2 dargestellt ist. Die abgerufenen Hypersäulen und Merkmalskarten können als ein Volumen mit zwei Dimensionen, die den Dimensionen jeder Merkmalskarte entsprechen, und einer dritten Dimension (z. B. Tiefe), die der Dimension jeder Hypersäule (und der Anzahl von Merkmalskarten) entspricht, betrachtet werden.
-
Die Verarbeitung fährt mit Operation 506 fort, wo das Hypersäulenvolumen, das bei Operation 505 abgerufen wurde, komprimiert wird, um Merkmalsrahmen aus komprimierten Merkmalen zu erzeugen. Beispielsweise reduziert eine solche Komprimierung die Dimensionalität der Tiefe des Hypersäulenvolumens (z. B. die Anzahl von Merkmalskarten), während sie die zwei Dimensionen, die den Dimensionen jeder Merkmalskarte entsprechen, beibehält. Die Komprimierung kann unter Verwendung irgendeiner geeigneten Technik oder Techniken wie z. B. Tucker-Zerlegung ausgeführt werden. In einer Ausführungsform enthält das Komprimieren der Hypersäulen das Anwenden von Tucker-Zerlegung auf ein Merkmalsvolumen, das die Hypersäulen enthält (z. B. das abgerufene Hypersäulenvolumen), um einen Kerntensor zu bestimmen, der die komprimierten Merkmalsrahmen.
-
Die Verarbeitung fährt mit Operation 507 fort, wo ein Segmentierungs-CNN auf die CNN-Eingabe, die eine Kombination aus dem aktuellen Videorahmen, dem zeitlich vorhergehenden Videorahmen, dem positiven Kennzeichenrahmen, den negativen Kennzeichenrahmen, Abstandstransformationsrahmen, dem Bewegungsrahmen und den Merkmalsrahmen von Merkmalen, die aus den Schichten des Klassifizierungs-CNN, wie es auf den aktuellen Videorahmen angewandt ist, komprimiert werden, enthält, angewandt wird. Das Segmentierungs-CNN stellt Kandidatensegmentierungen des aktuellen Videorahmens wie hier diskutiert bereit und ist, wie ferner nachstehend mit Bezug auf 6 diskutiert ist, vortrainiert. In einigen Ausführungsformen ist das Segmentierungs-CNN vortrainiert unter Verwendung einer Verlustfunktion, die einen Grenzverlustterm enthält, der eine Differenz zwischen „Ground-Truth“-Werten für „Ground-Truth“-Grenzpunkte, die einem interessierenden Trainingsobjekt entsprechen, und resultierenden Werten für die Grenzpunkte, die der Anwendung des neuronalen Segmentierungsfaltungsnetzes während des Trainings entsprechen, enthält.
-
Die Verarbeitung führt mit Operation 508 fort, wo ein Auswahl-CNN auf ein weiteres CNN-Eingabevolumen, das beispielsweise einen aktuellen Videorahmen, einen Anwendereingaberahmen und die mehreren Kandidatensegmentierungen enthält, angewandt wird. Das Auswahl-CNN kann irgendeine geeignete Architektur aufweisen, wie z. B. eine Architektur ähnlich der des Segmentierungs-CNN. Die Kandidatensegmentierungen und die ausgewählte endgültige Segmentierung können pixelweise Wahrscheinlichkeiten dafür enthalten, dass jedes Pixel in dem interessierenden Objekt enthalten ist, wie z. B. einen Wert von null bis eins einschließlich.
-
Die Verarbeitung fährt mit Operation 509 fort, wo die endgültige Segmentierung unter Verwendung irgendeines geeigneten Schwellenwerts wie z. B. 0,5 durch Schwellenwert eingegrenzt wird, um eine binäre Segmentierungsmaske zu erzeugen, wobei erste Kennzeichen oder Werte (z. B. Werte von eins) Pixel angeben, die als innerhalb des interessierenden Objekts betrachtet werden. Beispielsweise können Werte der endgültigen Segmentierung unterhalb von 0,5 als Hintergrund betrachtet werden und es kann ihnen ein zweites/zweiter Kennzeichen Indikator oder Wert (z. B. ein Wert von null) zugewiesen werden, während Werte der endgültigen Segmentierung größer als oder gleich 0,5 als Teil des interessierenden Objekts betrachtet werden können und ihnen ein erstes/erster Kennzeichen oder Wert zugewiesen werden kann. Die endgültige Segmentierung und/oder die binäre Segmentierungsmaske können in irgendeinem geeigneten Kontext wie z. B. visuellen Effekten, Rotoskopie usw. verwendet werden. Insbesondere kann die binäre Segmentierungsmaske verwendet werden, um Pixel des interessierenden Objekts zu erhalten (z. B. durch Überlagern in Bezug auf den aktuellen Videorahmen), um das interessierende Objekt zu extrahieren. Das extrahierte interessierende Objekt kann dann auf einem anderen Hintergrund platziert, manipuliert usw. werden.
-
6 ist ein Ablaufdiagramm, das einen Beispielprozess 600 zum Trainieren eines neuronalen Segmentierungsfaltungsnetzes ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung darstellt. Der Prozess 600 kann eine oder mehrere Operationen 601-607 enthalten, wie in 6 dargestellt ist. Der Prozess 500 kann durch irgendein/e Vorrichtung oder System, die/das hier diskutiert ist, ausgeführt werden, um irgendein hier diskutiertes Segmentierungs-CNN und/oder Auswahl-CNN zu trainieren. Der Prozess 600 oder Abschnitte davon können für irgendein Training, Trainingsmengen usw. wiederholt werden. Die Parametergewichte, die durch den Prozess 600 erzeugt werden, können im Speicher gespeichert und über einen Prozessor implementiert sein, beispielsweise um Segmentierungen und Segmentierungsmasken für Videorahmen wie hier diskutiert zu erzeugen.
-
Der Prozess 600 beginnt bei Operation 601, wo Trainingsrahmen erhalten werden und „Ground-Truth“-Daten für die Trainingsrahmen erzeugt werden. Die Trainingsrahmen können irgendeine Anzahl von Trainingsmengen von Videosequenzen enthalten, die die hier diskutierten Eigenschaften aufweisen. Beispielsweise ist es wünschenswert, dass die Trainingsrahmen die gleichen oder ähnliche Eigenschaften in Bezug auf die erwarteten Rahmen, die während der Inferenz erhalten werden, aufweisen. In einigen Ausführungsformen enthalten die „Ground-Truth“-Daten eine Angabe für jedes Pixel jedes der Trainingsrahmen darüber, ob das Pixel Teil eines interessierenden Objekts oder Teil eines Hintergrunds ist. Solche „Ground-Truth“-Daten können binär ein, beispielsweise mit einem Wert von eins für Pixel, die Teil des interessierenden Objekts sind, und einem Wert von null für andere Pixel (z. B. Hintergrundpixel).
-
Die Verarbeitung fährt mit Operation 602 fort, wo eine Architektur des Segmentierungs-CNN definiert wird. Die Segmentierungs-CNN-Architektur kann irgendwelche Eigenschaften wie z. B. diejenigen, die hier mit Bezug auf das Segmentierungs-CNN 401 diskutiert sind, enthalten. Darüber hinaus kann eine Architektur einer Auswahl-CNN-Architektur ebenfalls bei Operation 602 ausgeführt werden. Insbesondere können ein Segmentierungs-CNN und ein Auswahl-CNN zusammen trainiert werden, oder sie können in der folgenden Diskussion separat trainiert werden.
-
Die Verarbeitung fährt mit Operation 603 fort, wo das aktuelle Segmentierungs-CNN auf wenigstens einige der Trainingsrahmen angewandt wird. Beispielsweise kann das Trainieren des Segmentierungs-CNN ein iterativer Prozess sein, so dass in jeder Trainingsepoche Parameter des Segmentierungs-CNN, die Faltungskernelfiltergewichte, Aktivierungsfunktionsgewichte und so weiter enthalten, basierend auf einer bei Operation 604 diskutierten Verlustfunktion aktualisiert werden. Das aktuelle Segmentierungs-CNN wird dann aktualisiert und so weiter bis zur Konvergenz. Bei der ersten Iteration von Operation 603 kann das Segmentierungs-CNN mit Parametern und Gewichten unter Verwendung irgendeiner geeigneten Technik oder Techniken wie z. B. zufälliger Anwendung von Gewichten innerhalb spezieller Grenzen, Einstellen von Gewichten als mittlere Gewichte usw. initialisiert werden.
-
Die Verarbeitung fährt mit Operation 604 fort, wo basierend auf den Ergebnissen aus der Anwendung des aktuellen Segmentierungs-CNN bei Operation 603 basierend auf einer Verlustfunktion ein Verlust bestimmt wird. Wie in 6 gezeigt ist summiert in einigen Ausführungsformen die auf den Verlust angewandte Verlustfunktion einen Jaccard-Verlust, einen Verlust des interaktiven Inhalts, einen Verlust der Rangfolgendiversität und einen Grenzverlust, wie nachstehend weiter diskutiert ist. In anderen Ausführungsformen können ein oder mehrere der gerade beschriebenen Verluste verworfen werden und/oder zusätzliche Verluste könnten verwendet werden. Insbesondere enthält die bei Operation 604 angewandte Verlustfunktion einen Grenzverlust, um die Grenzpunkte in den Kandidatensegmentierungen, die durch das Segmentierungs-CNN erzeugt werden, zu bestärken, so dass sie mit den „Ground-Truth“-Grenzpunkten übereinstimmen.
-
Wie diskutiert enthält die Verlustfunktion in einigen Ausführungsformen eine Summe aus einem Jaccard-Verlust, einem Verlust interaktiven Inhalts, einen Verlust der Rangfolgendiversität und einen Grenzverlust. In einigen Ausführungsformen wird die Verlustfunktion basierend auf Gleichung (4) wie folgt angewandt:
wobei der erste Term nach dem Gleichheitszeichen der Jaccard-Verlust ist, der zweite Term der Verlust des interaktiven Inhalts ist, der dritte Term der Verlust der Rangfolgendiversität ist und der vierte Term der Grenzverlust ist. Die mit Bezug auf Gleichung (4) dargestellte Verlustfunktion kann als eine Gesamtverlustfunktion charakterisiert sein.
-
Wie diskutiert gibt der Term l(Y
i,ƒ
m(X
i; θ
ƒ)) den Jaccard-Verlust (oder lockeren Jaccard-Verlust) an, wobei 1 den Verlust angibt, Y
i den „Ground-Truth“-Rahmen angibt, f
mm Kandidatensegmentierungen ƒ angibt, X
i der aktuelle Eingaberahmen ist und Q
ƒ die aktuellen Parameter des Segmentierungs-CNN repräsentiert. In einigen Ausführungsformen ist der lockere Jaccard-Verlust wie folgt in Gleichung (5) definiert:
wobei Y (p) den Wert der „Ground-Truth“-Segmentierung am Pixelort (oder Punkt) p in dem „Ground-Truth“-Rahmen repräsentiert und f(p) die Segmentierungs-CNN-Ausgabe an dem Pixelort (oder Punkt) p repräsentiert. Beispielsweise ist die lockere Jaccard ähnlich eines Durchschnitts über der Vereinigungsmetrik, der weniger Verlust bereitstellt, wenn die segmentierten interessierenden Gebiete eine bessere Überlappung aufweisen.
-
Der Term
gibt den Verlust des interaktiven Inhalts an, der als eine Einschränkung in Bezug auf eingegebene Kennzeichen (z. B. eingegebene Klick-Orte) und den entsprechenden Abstandstransformationsrahmen definiert ist, wie hier diskutiert. In einigen Ausführungsformen ist der Verlust des interaktiven Inhalts wie folgt in Gleichung (6) definiert:
wobei * das Hadamard (oder elementweise Produkt) angibt. Insbesondere bestraft der Verlust des interaktiven Inhalts ungenaue Ergebnisse in Bezug auf die diskutierten Anwendereingabeorte.
-
Der Term
gibt den Verlust der Rangfolgendiversität an und dient zum Stärken des Segmentierungs-CNN, visuell diverse Segmentierungen zu produzieren und eine intrinsische Rangfolge auf die Segmentierung anzuwenden. Eine solche Bedingung ist aufgrund der semantischen Segmentierungsproblemen innewohnenden Multi-Modalität vorteilhaft. Darüber hinaus kann die Bedingung direkt dem Segmentierungs-CNN auferlegt werden durch Wählen einer skalaren Menge {Am}, um eine beliebige Rangfolge, die durch das Segmentierungs-CNN selbst aufgelöst werden muss, zu fördern.
-
Schließlich gibt der Term l∂-
PHL(Y
i,f
m(X
i;θ
f)) eine Grenzverlustfuntkion an, so dass Verluste an Grenzpixeln bestraft werden und das Segmentierungs-CNN so gestärkt wird, dass es Grenzpunkte mit der „Ground-Truth“ übereinstimmen lässt. Beispielsweise für Grenzpixel (wie sie durch die „Ground-Truth“-Daten definiert sind) ein Verlust, wie er basierend auf der Differenz zwischen dem „Ground-Truth“-Wert für das Grenzpixel (z. B. einem Wert von eins) und dem Segmentierungswert für das Grenzpixel (z. B. eine Wahrscheinlichkeit im Bereich von null bis eins einschließlich) bestimmt ist. Wie hier verwendet gibt der Begriff Grenzpixel ein Pixel innerhalb eines interessierenden Objekts an, so dass wenigstens ein benachbartes Pixel zu dem Grenzpixel außerhalb des interessierenden Objekts ist (und häufig wenigstens ein anderes benachbartes Pixel innerhalb des interessierenden Objekts ist). Beispielsweise wird ein Segmentierungs-CNN vortrainiert unter Verwendung einer Verlustfunktion, die einen Grenzverlustterm enthält, der eine Differenz zwischen „Ground-Truth“-Werten für „Ground-Truth“-Grenzpunkte, die einem interessierenden Trainingsobjekt entsprechen, und resultierenden Werten für die Grenzpunkte, die der Anwendung des neuronalen Segmentierungsfaltungsnetzes während des Trainings entsprechen, enthält. In einigen Ausführungsformen enthält der Grenzverlustterm einen Pseudo-Huber-Verlust-Term, der ein Quadrat eines Bruchs der Differenz über einen Steilheitsparameter enthält, wobei der Steilheitsparameter zum Bestrafen von Grenzsegmentierungsfehlern in dem neuronalen Segmentierungsfaltungsnetz dient. In einigen Ausführungsformen enthält der Grenzverlustterm einen Pseudo-Huber-Verlust wie er durch Gleichung (7) definiert ist:
wobei l
∂-PHL der Pseudo-Huber-Verlust ist, Y die „Ground-Truth“-Segmentierung repräsentiert, Y(∂
Y(p)) den Wert der „Ground-Truth“-Segmentierung an einem Ort des Grenzpixels (∂
Y ) (oder Punkt) p in dem „Ground-Truth“-Rahmen repräsentiert, f(∂
Y(p)) die Segmentierungs-CNN-Ausgabe an dem entsprechenden Grenzpixelort repräsentiert und δ der Steilheitsparameter ist. Beispielsweise ist die lockere Jaccard ähnlich einem Durchschnitt über der Vereinigungsmetrik, der weniger Verlust bereitstellt, wenn die segmentierten interessierenden Gebiete eine bessere Überlappung aufweisen. Wie gezeigt enthält der Pseudo-Huber-Verlust Differenzen zwischen „Ground-Truth“-Werten für „Ground-Truth“-Grenzpunkte, die einem interessierenden Trainingsobjekt ( Y(∂
Y(p)) ) entsprechen, und resultierende Werte für die Grenzpunkte, die der Anwendung des neuronalen Segmentierungsfaltungsnetzes während des Trainings ( ƒ (∂
Y(p)) )entsprechen. Darüber hinaus enthält der Grenzverlustterm ein Quadrat eines Bruchs der Differenz über einen Steilheitsparameter (((Y(∂
Y(p)) - ƒ (∂
Y(p)))/δ)
2), wobei der Steilheitsparameter zum Bestrafen von Grenzsegmentierungsfehlern in dem neuronalen Segmentierungsfaltungsnetz dient. Der Steilheitsparameter kann irgendein Wert sein und kann unter Verwendung heuristischer Techniken bestimmt werden.
-
Wie diskutiert kann der Gesamtverlust basierend auf dem Summieren der diskutierten Verlust-Terme bestimmt werden.
-
Die Verarbeitung fährt mit Operation 605 fort, wo der Verlust durch das Segmentierungs-CNN propagiert wird. Der Verlust kann unter Verwendung irgendeiner geeigneten Technik oder Techniken wie z. B. Rückpropagierungs-Techniken durch das Segmentierungs-CNN propagiert werden. Insbesondere können die Gewichte und die Parameter des Segmentierungs-CNN basierend auf dem Verlust angepasst werden, um ein jetzt aktuelles Segmentierungs-CNN zu erzeugen.
-
Die Verarbeitung fährt mit der Entscheidungsoperation 606 fort, wo eine Bestimmung dazu vorgenommen wird, ob Konvergenz des Segmentierungs-CNN erreicht worden ist. Die Konvergenzentscheidung kann unter Verwendung irgendeiner geeigneten Technik oder Techniken vorgenommen werden, wie z. B. dass ein Gesamtverlust des Segmentierungs-CNN kleiner ist als ein vorbestimmter Schwellenwert, dass eine maximale Anzahl von Trainingsepochen ausgeführt wird, usw. Falls die Konvergenz nicht erfüllt ist, fährt die Verarbeitung mit den Operationen 603-606 fort, bis die Konvergenz erreicht ist.
-
Nachdem die Konvergenz erreicht worden ist, fährt die Verarbeitung mit Operation 607 fort, wo die Gewichte und Parameter des Segmentierungs-CNN in dem Speicher zur Anwendung über ein System wie z. B. das System 100 oder irgendein anderes System der hier diskutierten Vorrichtung gespeichert werden.
-
7 stellt beispielhafte Eingabevideorahmen 701, 711 zur Segmentierung und jeweilige entsprechende endgültige Segmentierungen 702, 712 ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung dar. Insbesondere können die endgültigen Segmentierungen 702, 712 unter Verwendung der hier diskutierten Techniken erzeugt werden. In den Beispielen von 7 stellen die endgültigen Segmentierungen 702, 712 Binärmasken dar, wobei weiß für ein interessierendes Objekt repräsentativ ist und schwarz für einen Hintergrund repräsentativ ist, wie hier durchgehend verwendet. Wie gezeigt repräsentieren die endgültigen Segmentierungen 702, 712 wirklichkeitsgetreu die interessierenden Objekte in dem Eingabevideorahmen 701, 711. Darüber hinaus ergeben die endgültigen Segmentierungen 702, 712 Segmentierungsergebnisse mit hoher Wiedergabetreue mit glatten und genauen Grenzkonturen und zeitlicher Kohärenz von Rahmen zu Rahmen durchgehend durch das Video (sowohl hinsichtlich der Wiedergabetreue als auch reduziertem Zittern). Die Segmentierungen 702, 712 stellen ferner Segmentierungsergebnisse mit hoher Wiedergabetreue bei bereit
-
Die diskutierten Techniken stellen verbesserte semantische Segmentierung in Video bereit, was optional die Verwendung von 2K-Inferenz (für verbesserte Auflösung), geringe Anwendereingabesegmentierung (die z. B. nur positive und negative Klicks auf einem ersten Rahmen einer Videosequenz erfordert) mit Automatisierung basierend auf der Projektion der initialen Anwendereingabe, eine anwendungsgetriebene Tensor-Zerlegung wie sie auf Merkmale angewandt wird, die aus einem Klassifizierungs-CNN extrahiert werden, für reduzierte Speichernutzung und Berechnungskomplexität, Implementierung einer Grenzverlustfunktion, um Segmentierungen mit Grenzkonturen hoher Qualität zu rendern, und verbesserte zeitliche Kohärenz über die Verwendung von Bewegungsdaten wie z. B. optischen Flussdaten enthält.
-
8 ist ein Ablaufdiagramm, das einen Beispielprozess 800 zum Bereitstellen von Segmentierung in einem Video ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung darstellt. Der Prozess 800 kann eine oder mehrere Operationen 801-803 enthalten, wie in 8 dargestellt ist. Der Prozess 800 kann wenigstens einen Teil eines Video-Segmentierungsprozesses bilden. Wie er hier verwendet ist, gibt der Begriff Video-Segmentierung das Segmentieren eines oder mehrerer Videorahmen des Videos an, so dass jedes Pixel (oder kleine Pixelbereiche) der Videorahmen Wahrscheinlichkeiten dafür enthalten, ob das Pixel innerhalb eines speziellen Bereichs (z. B. des Bereichs eines interessierenden Objekts, Primärbereichs usw.) des Videorahmens ist. Als nicht einschränkendes Beispiel kann der Prozess 800 wenigstens einen Teil eines Video-Segmentierungsprozesses bilden, der durch das System 100 wie hier diskutiert während einer Implementierungs- oder Inferenz-Phase ausgeführt wird. Darüber hinaus wird der Prozess 800 hier mit Bezug auf das System 900 von 9 beschrieben.
-
9 ist erläuterndes Diagramm eines Beispielsystems 900 zum Bereitstellen von Segmentierung in einem Video ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Wie in 9 gezeigt ist, kann das System 900 eine oder mehrere zentrale Verarbeitungseinheiten (CPU) 901 (d. h. zentrale Prozessor(en)), eine Grafikverarbeitungseinheit 902 (d. h. einen Grafikprozessor) und Speichervorrichtungen 903 enthalten. Wie ebenfalls gezeigt ist, kann die Grafikverarbeitungseinheit 902 das Klassifizierungs-CNN 101, das Merkmalsextraktionsmodul 102, das Merkmalskomprimierungsmodul 103, das Segmentierungs-CNN 401 und das Auswahl-CNN 402 enthalten oder implementieren. Solche Module oder Komponenten können implementiert sein, um die hier diskutierten Operationen auszuführen. In dem Beispiel von System 900 können die Speichervorrichtungen 903 Videorahmendaten, Bewegungsdaten, Segmentierungsdaten, Merkmalsrahmendaten, Anwendereingabedaten, Rahmendaten für das Kennzeichen des interessierenden Objekts oder das Kennzeichen des Hintergrunds, Positiv- oder Negativabstandstransformationsrahmen, Merkmalskartendaten, CNN-Parameter oder Gewichte oder irgendwelche anderen Daten oder Datenstrukturen, die hier diskutiert sind, speichern.
-
Wie gezeigt sind in einigen Beispielen das Klassifizierungs-CNN 101, das Merkmalsextraktionsmodul 102, das Merkmalskomprimierungsmodul 103, das Segmentierungs-CNN 401 und das Auswahl-CNN 402 über die Grafikverarbeitungseinheit 902 implementiert. In anderen Beispielen sind eines oder mehrere aus dem oder Abschnitte des Klassifizierungs-CNN 101, des Merkmalsextraktionsmoduls 102, des Merkmalskomprimierungsmoduls 103, des Segmentierungs-CNN 401 und es Auswahl-CNN 402 über zentrale Verarbeitungseinheiten 901 oder eine Bildverarbeitungseinheit (nicht gezeigt) des Systems 900 implementiert. In noch weiteren Beispielen können ein oder mehrere aus dem oder Abschnitte des Klassifizierungs-CNN 101, des Merkmalsextraktionsmoduls 102, des Merkmalskomprimierungsmoduls 103, des Segmentierungs-CNN 401 und des Auswahl-CNN 402 über eine Bildaufnahmeverarbeitungs-Pipeline, eine Grafik-Pipeline oder dergleichen implementiert sein.
-
Die Grafikverarbeitungseinheit 902 kann irgendeine/n Anzahl und Typ von Grafikverarbeitungseinheiten enthalten, die die hier diskutierten Operationen bereitstellen können.
-
Solche Operationen können über Software oder Hardware oder eine Kombination daraus implementiert sein. Beispielsweise kann die Grafikverarbeitungseinheit 902 eine Schaltungsanordnung enthalten, die dediziert ist, Videodaten, CNN-Daten usw., die aus Speichervorrichtungen 903 erhalten werden, zu manipulieren. Die zentrale Verarbeitungseinheit 901 kann irgendeine/n Anzahl und Typ von Verarbeitungseinheiten oder Modulen enthalten, die Steuerung und andere Funktonen hoher Ebene für das System 900 bereitstellen können und/oder irgendwelche Operationen wie hier diskutiert bereitstellen. Die Speichereinrichtungen 903 können irgendein Typ von Speicher sein, wie z. B. flüchtiger Speicher (z. B. statischer Direktzugriffsspeicher (SRAM), dynamischer Direktzugriffsspeicher (DRAM) usw.) oder nichtflüchtiger Speicher (z. B. Flash-Speicher usw.) und so weiter. In einem nicht einschränkenden Beispiel können Speichereinrichtungen 903 auch durch einen Cache-Speicher implementiert sein. In einer Ausführungsform sind ein oder mehrere aus dem oder Abschnitte des Klassifizierungs-CNN 101, des Merkmalsextraktionsmoduls 102, des Merkmalskomprimierungsmoduls 103, des Segmentierungs-CNN 401 und des Auswahl-CNN 402 über eine Ausführungseinheit (EU) der Grafikverarbeitungseinheit 902 implementiert. Die EU kann beispielsweise programmierbare Logik oder Schaltungsanordnung wie z. B. einen Logikkern oder -kerne enthalten, die ein weites Feld programmierbarer Logikfunktionen bereitstellen können. In einer Ausführungsform sind ein oder mehrere aus dem oder Abschnitte des Klassifizierungs-CNN 101, des Merkmalsextraktionsmoduls 102, des Merkmalskomprimierungsmoduls 103, des Segmentierungs-CNN 401 und des Auswahl-CNN 402 über dedizierte Hardware wie z. B. eine Schaltungsanordnung mit fester Funktion oder dergleichen implementiert. Eine Schaltungsanordnung mit fester Funktion kann dedizierte Logik oder Schaltungsanordnung enthalten und kann eine Menge von Eintrittspunkten mit fester Funktion enthalten, die auf die dedizierte Logik für eine/n festen Zweck oder Funktion abbilden können. In einigen Ausführungsformen sind ein oder mehrere aus dem oder Abschnitte des Klassifizierungs-CNN 101, des Merkmalsextraktionsmoduls 102, des Merkmalskomprimierungsmoduls 103, des Segmentierungs-CNN 401 und des Auswahl-CNN 402 über eine anwendungsspezifische integrierte Schaltung (ASIC) implementiert. Die ASIC kann eine integrierte Schaltungsanordnung enthalten, die spezifisch angepasst ist, um die hier diskutierten Operationen auszuführen.
-
Zurück zur Diskussion von 8 beginnt der Prozess 800 bei Operation 801, wo eine Eingabe für ein neuronales Faltungsnetz erzeugt wird. In einigen Ausführungsformen enthält die Eingabe für das neuronale Faltungsnetz einen aktuellen Videorahmen, einen zeitlich vorhergehenden Videorahmen, einen Kennzeichenrahmen des interessierenden Objekts, der ein oder mehrere Kennzeichen eines interessierenden Objekts in dem aktuellen Videorahmen enthält, einen Bewegungsrahmen, der Bewegungskennzeichen enthält, die eine Bewegung von dem vorhergehenden Videorahmen zu dem aktuellen Videorahmen angeben, und mehrere Merkmalsrahmen, von denen jeder Merkmale enthält, die aus Schichten eines neuronalen Objektklassifizierungsfaltungsnetzes, wie es auf den aktuellen Videorahmen angewandt wird, komprimiert sind. In anderen Ausführungsformen enthält die Eingabe für das neuronale Faltungsnetz ferner einen vorhergehenden Segmentierungsrahmen, der dem vorhergehenden Videorahmen entspricht. In einer Ausführungsform enthält der aktuelle Videorahmen pro Pixel R-, G- oder B-Werte. In einer Ausführungsform enthält die CNN-Eingabe einen Rahmen, der jeweils pro Pixel R-, G- und B-Werte enthält. Ähnlich kann der vorhergehende Videorahmen einen Rahmen enthalten, der jeweils pro Pixel R-, G- und B-Werte enthält. In einer Ausführungsform enthält der Bewegungsrahmen Geschwindigkeitsbewegungsrahmen pro Pixel. In einer Ausführungsform enthält jeder der Merkmalsrahmen komprimierte Merkmalswerte pro Pixel.
-
In einigen Ausführungsformen enthält der Prozess 800 ferner das Anwenden des neuronalen Klassifizierungsfaltungsnetzes auf den aktuellen Videorahmen, Abrufen für jedes Pixel des aktuellen Videorahmens von mehreren Merkmalswerten jeweils aus einer der Schichten des neuronalen Klassifizierungsfaltungsnetzes, um eine Hypersäule von Merkmalswerten für jedes Pixel zu erzeugen, und Komprimieren der Hypersäulen, um die mehreren Merkmalsrahmen zu bestimmen. In einer Ausführungsform umfasst das Komprimieren der Hypersäulen das Anwenden einer Tucker-Zerlegung auf ein Merkmalsvolumen, das die Hypersäulen enthält, um einen Kerntensor zu bestimmen, der die mehreren komprimierten Merkmalsrahmen umfasst. In einigen Ausführungsformen ist eine Anzahl der komprimierten Merkmalsrahmen nicht größer als die Hälfte einer Anzahl von Merkmalswerten in jeder Hypersäule.
-
In einigen Ausführungsformen enthält der Prozess 800 ferner das Empfangen eines oder mehrere Anwender-Klick-Kennzeichen, die einem oder mehreren ersten Orten in dem zeitlich vorhergehenden Videorahmen entsprechen, und Projizieren jedes aus dem einen oder den mehreren ersten Orten auf einen oder mehrere zweite Orte in dem aktuellen Videorahmen unter Verwendung des Bewegungsrahmens, um das eine oder die mehreren Kennzeichen des interessierenden Objekts in dem aktuellen Videorahmen zu bestimmen. In einigen Ausführungsformen geben der eine oder die mehreren Kennzeichen des Kennzeichenrahmens des interessierenden Objekts Orte positiver Kennzeichen an, die das interessierende Objekt angeben. In einigen Ausführungsformen enthält die Eingabe für das neuronale Faltungsnetz ferner einen oder mehrere aus einem Kennzeichenrahmen des Hintergrunds, der negative Kennzeichen enthält, die Orte eines Hintergrunds außerhalb des interessierenden Objekts angeben, einem Positivabstandstransformationsrahmen, der für jedes Pixel davon einen Wert enthält, der einen kleinsten Abstand zu irgendeinem der Orte der positiven Kennzeichen angibt, und einem Negativabstandstransformationsrahmen, der für jedes Pixel davon einen Wert enthält, der einen kleinsten Abstand zu irgendeinem der Orte der negativen Kennzeichen angibt.
-
Die Verarbeitung fährt mit Operation 802 fort, wo ein neuronales Segmentierungsfaltungsnetz auf die Eingabe für das neuronale Faltungsnetz angewandt wird, um mehrere Kandidatensegmentierungen des aktuellen Videorahmens zu erzeugen. In einer Ausführungsform enthält jede der Kandidatensegmentierungen Wahrscheinlichkeitswerte pro Pixel, die eine Wahrscheinlichkeit dafür angeben, dass jedes Pixel ein Element des interessierenden Objekts ist. Das neuronale Segmentierungsfaltungsnetz kann irgendwelche hier diskutierte Eigenschaften enthalten. In einer Ausführungsform ist das neuronale Segmentierungsfaltungsnetz vortrainiert unter Verwendung einer Verlustfunktion, die einen Grenzverlustterm enthält, wobei der Grenzverlustterm Differenzen zwischen „Ground-Truth“-Werten für „Ground-Truth“-Grenzpunkte, die einem interessierenden Trainingsobjekt entsprechen, und resultierenden Werten für die Grenzpunkte, die der Anwendung des neuronalen Segmentierungsfaltungsnetzes während des Trainings entsprechen, enthält. In einer Ausführungsform enthält der Grenzverlustterm einen Pseudo-Huber-Verlust-Term, der ein Quadrat eines Bruchs der Differenz über einen Steilheitsparameter enthält, wobei der Steilheitsparameter zum Bestrafen von Grenzsegmentierungsfehlern in dem neuronalen Segmentierungsfaltungsnetz dient.
-
Die Verarbeitung fährt mit Operation 803 fort, wo eine der Kandidatensegmentierungen als die endgültige Segmentierung, die dem aktuellen Videorahmen entspricht, ausgewählt wird.
-
Die endgültige Segmentierung kann unter Verwendung irgendeiner geeigneten Technik oder Techniken ausgewählt werden. In einer Ausführungsform enthält das Auswählen der endgültigen Segmentierung aus den Kandidatensegmentierungen das Anwenden eines neuronalen Auswahlfaltungsnetzes auf eine Eingabe für ein zweites neuronales Faltungsnetz, die den aktuellen Videorahmen, den Anwendereingaberahmen und die mehreren Kandidatensegmentierungen enthält. Die endgültige Segmentierung (die z. B. die Wahrscheinlichkeitswerte pro Pixel enthält, die eine Wahrscheinlichkeit dafür angeben, dass jedes Pixel ein Element des interessierenden Objekts ist) kann optional durch Schwellenwerten eingegrenzt sein, um eine binäre Segmentierungsmaske zu erzeugen.
-
Der Prozess 800 kann die Erzeugung von Kandidatensegmentierungen und Auswahl einer endgültigen Segmentierung aus den Kandidatensegmentierungen für einen aktuellen Videorahmen bereitstellen. Der Prozess 800 kann beliebig oft wiederholt werden, entweder nacheinander oder parallel für irgendeine Anzahl von Videorahmen, Videosequenzen usw.
-
Verschiedene Komponenten der hier beschriebenen Systeme können in Software, Firmware und/oder Hardware und/oder irgendeiner Kombination daraus implementiert sein. Beispielsweise können verschiedene Komponenten von Vorrichtungen oder Systemen, die hier diskutiert sind, wenigstens teilweise durch Hardware eines Berechnungs-Einchipsystems (SoC) bereitgestellt sein, wie es in einem Berechnungssystem wie beispielsweise einem Computer, einem Laptop-Computer, einem Tablet oder einem Smartphone zu finden ist. Beispielsweise können solche Komponenten oder Module über einen Mehrkern-SoC-Prozessor implementiert sein. Fachleute können erkennen, dass Systeme, die hier beschrieben sind, zusätzliche Komponenten enthalten können, die in den entsprechenden Figuren nicht abgebildet worden sind.
-
Obwohl die Implementierung der hier diskutierten Beispielprozesse das Durchführen aller gezeigten Operationen in der dargestellten Reihenfolge enthalten können, ist die vorliegende Offenbarung in dieser Hinsicht nicht eingeschränkt, und in verschiedenen Beispielen kann die Implementierung der Beispielprozesse hier nur eine Teilmenge der gezeigten Operationen, Operationen, die in einer anderen Reihenfolge als dargestellt ausgeführt werden, oder zusätzliche Operationen enthalten.
-
Zusätzlich kann/können irgendeine oder mehrere der hier diskutierten Operationen in Reaktion auf Befehle, die durch ein oder mehrere Computerprogrammprodukte bereitgestellt sind, durchgeführt werden. Solche Programmprodukte können Signalüberträgermedien enthalten, die Befehle bereitstellen, die dann, wenn sie beispielsweise durch einen Prozessor ausgeführt werden, die hier beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in irgendeiner Form aus einem oder mehreren maschinenlesbaren Medien bereitgestellt sein. Somit kann beispielsweise ein Prozessor, der eine/n oder mehrere Grafikverarbeitungseinheit(en) oder Prozessorkern(e) enthält, ein oder mehrere der hier beschriebenen Blöcke der Beispielprozesse in Reaktion auf Programmcode und/oder Befehle oder Befehlssätze, die dem Prozessor durch ein oder mehrere maschinenlesbare Medien übermittelt werden, durchführen. Im Allgemeinen kann ein maschinenlesbares Medium Software in der Form von Programmcode und/oder Befehlen und/oder Befehlssätzen übermitteln, die irgendeine der hier beschriebenen Vorrichtungen und/oder Systeme veranlassen können, wenigstens Abschnitte der hier diskutierten Operationen, Module oder Komponenten zu implementieren.
-
Wie er in irgendeiner hier beschriebenen Implementierung verwendet ist, bezieht sich der Begriff „Modul“ auf irgendeine Kombination aus Software-Logik, Firmware-Logik, Hardware-Logik und/oder Schaltungsanordnung, die konfiguriert ist, die hier beschriebene Funktionalität bereitzustellen. Die Software kann als ein Software-Paket, Code und/oder Befehlssatz oder Befehle ausgeführt sein, und „Hardware“, wie sie in irgendeiner hier beschriebenen Implementierung verwendet ist, kann beispielsweise, einzeln oder in irgendeiner Kombination, festverdrahtete Schaltungsanordnung, programmierbare Schaltungsanordnung, Zustandsautomaten-Schaltungsanordnung, Schaltungsanordnung mit fester Funktion, Ausführungseinheitschaltungsanordnung und/oder Firmware, die Befehle, die durch eine programmierbare Schaltungsanordnung ausgeführt werden, speichert, enthalten. Die Module können, gemeinsam oder individuell, als Schaltungsanordnung verwirklicht sein, die einen Teil eines größeren Systems bildet, beispielsweise eine integrierte Schaltung (IC), ein Einchipsystem (SoC) und so weiter.
-
10 ist erläuterndes Diagramm eines Beispielsystems 1000, das in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist. In verschiedenen Implementierungen kann das System 1000 ein Berechnungssystem sein, obwohl das System 1000 nicht auf diesen Kontext beschränkt ist. Beispielsweise kann das System 1000 in einen Personalcomputer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Phablet, ein Touchpad, einen tragbaren Computer, einen Hand-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination Mobiltelefon/PDA, ein Fernsehgerät, eine intelligente Vorrichtung (z. B. ein Smartphone, ein Smart-Tablet oder ein intelligentes Fernsehgerät), eine mobile Internetvorrichtung (MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung, ein Peripheriegerät, eine Spielekonsole, eine am Körper tragbare Vorrichtung, eine Anzeigevorrichtung, eine Gesamtvorrichtung, eine Zwei-in-Eins-Vorrichtung und so weiter integriert sein.
-
In verschiedenen Implementierungen enthält das System 1000 eine Plattform 1002, die mit einer Anzeigevorrichtung 1020 gekoppelt ist. Die Plattform 1002 kann Inhalt von einer Inhaltsvorrichtung wie z. B. Inhaltsdienstvorrichtung(en) 1030 oder Inhaltszustellvorrichtung(en) 1040 oder anderen ähnliche Inhaltsquellen wie z. B. einer Kamera oder einem Kameramodul oder dergleichen empfangen. Eine Navigationssteuereinheit 1050, die ein oder mehrere Navigationsmerkmale enthält, kann verwendet werden, um beispielsweise mit der Plattform 1002 und/oder der Anzeigevorrichtung 1020 zusammenzuwirken. Jede dieser Komponenten ist nachstehend genauer beschrieben.
-
In verschiedenen Implementierungen kann die Plattform 1002 irgendeine Kombination aus einem Chipsatz 1005, einem Prozessor 1010, einem Speicher 1012, einer Antenne 1013, einer Speichereinrichtung 1014, einem Grafikteilsystem 1015, Anwendungen 1016 und/oder einer Funkeinrichtung 1018 enthalten. Der Chipsatz 1005 kann wechselseitige Kommunikation zwischen dem Prozessor 1010, dem Speicher 1012, der Speichereinrichtung 1014, dem Grafikteilsystem 1015, den Anwendungen 1016 und/oder der Funkeinrichtung 1018 bereitstellen. Beispielsweise kann der Chipsatz 1005 einen Speicheradapter (nicht abgebildet) enthalten, der zum Bereitstellen wechselseitiger Kommunikation mit der Speichereinrichtung 1014 fähig ist.
-
Der Prozessor 1010 kann als Prozessoren mit „Complex Instruction Set Computer“ (CISC) oder „Reduced Instruction Set Computer“ (RISC), mit dem x86-Befehlssatz kompatible Prozessoren, Mehrkern oder irgendein anderer Mikroprozessor oder zentrale Verarbeitungseinheit (CPU) implementiert sein. In verschiedenen Implementierungen kann der Prozessor 1010 Zweikern-Prozessor(en), Zweikern-Mobilprozessor(en) und so weiter sein.
-
Der Speicher 1012 kann als eine flüchtige Speicher-Vorrichtung wie z. B., ohne jedoch darauf beschränkt zu sein, ein Direktzugriffsspeicher (RAM), ein dynamischer Direktzugriffsspeicher (DRAM) oder ein statischer RAM (SRAM) implementiert sein.
-
Die Speichervorrichtung 1014 kann als eine nichtflüchtige Speicher-Vorrichtung implementiert sein, wie z. B., ohne jedoch darauf beschränkt zu sein, ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Speicher-Vorrichtung, eine angeschlossene Speicher-Vorrichtung, ein Flash-Speicher, ein batteriegestützter SDRAM (synchroner DRAM) und/oder eine über ein Netz zugängliche Speicher-Vorrichtung. In verschiedenen Implementierungen kann die Speichervorrichtung 1014 eine Technologie enthalten zum Erhöhen der erweiterten Speicherschutzleistung für wertvolle digitale Medien, beispielsweise wenn mehrere Festplattenlaufwerke enthalten sind.
-
Das Grafikteilsystem 1015 kann Verarbeitung von Bildern wie z. B. Standbildern, Grafik oder Video zur Anzeige ausführen. Das Grafikteilsystem 1015 kann beispielsweise eine Grafikverarbeitungseinheit (GPU), eine visuelle Verarbeitungseinheit (VPU) oder eine Bildverarbeitungseinheit sein. In einigen Beispielen kann das Grafikteilsystem 1015 das Rendern abgetasteter Bilder wie hier diskutiert ausführen. Eine analoge oder digitale Schnittstelle kann verwendet sein, um das Grafikteilsystem 1015 und die Anzeigevorrichtung 1020 kommunikationstechnisch zu koppeln. Beispielsweise kann die Schnittstelle irgendeine aus einer hochauflösenden Multimedia-Schnittstelle, DisplayPort, drahtlosem HDMI und/oder drahtlosen HD-konformen Techniken sein. Das Grafikteilsystem 1015 kann in den Prozessor 1010 oder den Chipsatz 1005 integriert sein. In einigen Implementierungen kann das Grafikteilsystem 1015 eine eigenständige Vorrichtung sein, die mit dem Chipsatz 1005 kommunikationstechnisch gekoppelt ist.
-
Die hier beschriebenen Bildverarbeitungstechniken können in verschiedenen Hardware-Architekturen implementiert sein. Beispielsweise kann die Bildverarbeitungsfunktionalität in einem Chipsatz integriert sein. Alternativ können ein diskreter Grafik- und/oder Bildprozessor und/oder eine anwendungsspezifische integrierte Schaltung verwendet sein. Als noch eine weitere Implementierung kann die Bildverarbeitung durch einen Allzweckprozessor, der einen Mehrkernprozessor enthält, bereitgestellt sein. In weiteren Ausführungsformen können die Funktionen in einer Unterhaltungselektronikvorrichtung implementiert sein.
-
Die Funkeinrichtung 1018 kann eine oder mehrere Funkeinrichtungen enthalten, die zum Senden und Empfangen von Signalen unter Verwendung verschiedener geeigneter Drahtloskommunikationstechniken fähig sind. Solche Techniken können Kommunikation über ein oder mehrere Drahtlosnetze beinhalten. Beispielhafte Drahtlosnetze enthalten (ohne jedoch darauf beschränkt zu sein) drahtlose lokale Netze (WLANs), drahtlose persönliche Netze (WPANs), drahtlose Regionalnetze (WMANs), Mobilfunknetze und Satellitennetze. Bei der Kommunikation über solche Netze kann die Funkeinrichtung 1018 in Übereinstimmung mit einem oder mehreren anwendbaren Standards in irgendeiner Version arbeiten.
-
In verschiedenen Implementierungen kann die Anzeigevorrichtung 1020 irgendeine/n Flachtafel-Monitor oder -Anzeigevorrichtung enthalten. Die Anzeigevorrichtung 1020 kann beispielsweise einen Computer-Anzeigebildschirm, eine Anzeigevorrichtung mit berührungssensitivem Bildschirm, einen Video-Monitor, eine fernsehgerätähnliche Vorrichtung und/oder ein Fernsehgerät enthalten. Die Anzeigevorrichtung 1020 kann digital und/oder analog sein. In verschiedenen Implementierungen kann die Anzeigevorrichtung 1020 eine holografische Anzeigevorrichtung sein. Außerdem kann die Anzeigevorrichtung 1020 eine transparente Oberfläche sein, die eine sichtbare Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bilder und/oder Objekten übermitteln. Beispielsweise können solche Projektionen eine visuelle Überlagerung für eine Anwendung für mobile erweiterte Realität (MAR) sein. Unter der Steuerung einer oder mehrerer Software-Anwendungen 1016 kann die Plattform 1002 eine Anwenderschnittstelle 1022 auf der Anzeigevorrichtung 1020 anzeigen.
-
In verschiedenen Implementierungen können Inhaltsdienstvorrichtung(en) 1030 durch irgendeinen nationalen, internationalen und/oder unabhängigen Dienst gehostet und somit für die Plattform 1002 beispielsweise über das Internet zugänglich sein. Inhaltsdienstvorrichtung(en) 1030 können mit der Plattform 1002 und/oder der Anzeigevorrichtung 1020 gekoppelt sein. Die Plattform 1002 und/oder die Inhaltsdienstvorrichtung(en) 1030 können mit einem Netz 1060 gekoppelt sein, um Medieninformationen zu und von dem Netz 1060 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Inhaltszustellvorrichtung(en) 1040 können ebenfalls mit der Plattform 1002 und/oder der Anzeigevorrichtung 1020 gekoppelt sein.
-
In verschiedenen Implementierungen können Inhaltsdienstvorrichtung(en) 1030 eine Kabelfernseh-Box, einen Personalcomputer, ein Netz, ein Telefon, über das Internet aktivierte Vorrichtungen oder Geräte, die zum Zustellen digitaler Informationen und/oder Inhalt fähig sind, und irgendeine andere ähnliche Vorrichtung, die zum unidirektionalen oder bidirektionalen Kommunizieren von Inhalt zwischen Inhaltsanbietern und der Plattform 1002 und/oder der Anzeigevorrichtung 1020 über ein Netz 1060 oder direkt fähig sind, enthalten. Es ist zu verstehen, dass der Inhalt unidirektional und/oder bidirektional zu und von irgendeiner der Komponenten im System 1000 und einem Inhaltsanbieter über das Netz 1060 kommuniziert werden kann. Beispiele für Inhalt können irgendwelche Medieninformationen enthalten, die beispielsweise Video, Musik, medizinische und Spiele-Informationen und so weiter enthalten.
-
Inhaltsdienstvorrichtung(en) 1030 können Inhalt empfangen wie z. B. Kabelfernsehprogramme, die Medieninformationen, digitale Informationen und/oder anderen Inhalt enthalten. Beispiele für Inhaltsanbieter können irgendwelche Inhaltsanbieter für Kabel- oder Satellitenfernsehen oder -radio oder Internet sein. Die bereitgestellten Beispiele sind nicht dafür vorgesehen, die Implementierungen in Übereinstimmung mit der vorliegenden Offenbarung in irgendeiner Weise einzuschränken.
-
In verschiedenen Implementierungen kann die Plattform 1002 Steuersignale von der Navigationssteuereinheit 1050, die eine oder mehrere Navigationsmerkmale aufweist, empfangen. Die Navigationsmerkmale der Navigationssteuereinheit 1050 können verwendet werden, um beispielsweise mit der Anwenderschnittstelle 1022 zusammenzuwirken. In verschiedenen Ausführungsformen kann die Navigationssteuereinheit 1050 eine Zeigevorrichtung sein, die eine Computer-Hardware-Komponente (insbesondere eine Vorrichtung für eine menschliche Schnittstelle) sein kann, die es einem Anwender ermöglicht, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme wie z. B. grafische Anwenderschnittstellen (GUI) und Fernsehgeräte und Monitore ermöglichen dem Anwender, den Computer oder das Fernsehgerät unter Verwendung physikalischer Gesten zu steuern und Daten einzugeben.
-
Bewegungen der Navigationsmerkmale der Navigationssteuereinheit 1050 können auf einer Anzeigevorrichtung (z. B. der Anzeigevorrichtung 1020) durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer visueller Kennzeichen, die auf der Anzeigevorrichtung angezeigt werden, repliziert werden. Beispielsweise können unter der Steuerung von Software-Anwendungen 1016 die Navigationsmerkmale, die sich auf der Navigationssteuereinheit 1050 befinden, auf virtuelle Navigationsmerkmale, die beispielsweise auf der Anwenderschnittstelle 1022 angezeigt werden, abgebildet werden. In verschiedenen Ausführungsformen kann die Navigationssteuereinheit 1050 keine separate Komponente sein, sondern kann in die Plattform 1002 und/oder die Anzeigevorrichtung 1020 integriert sein. Die vorliegende Offenbarung ist jedoch nicht auf die Elemente oder den Kontext, die hier gezeigt oder beschrieben sind, beschränkt.
-
In verschiedenen Implementierungen können Treiber (nicht gezeigt) Technologie enthalten, um Anwendern zu ermöglichen, die Plattform 1002 sofort an- und abzuschalten, wie beispielsweise ein Fernsehgerät mit der Berührung einer Taste nach dem initialen Hochlaufen, wenn aktiviert. Programmlogik kann ermöglichen, dass die Plattform 1002 Inhalt zu Medienadaptern oder anderen Inhaltsdienstvorrichtung(en) 1030 oder Inhaltszustellvorrichtung(en) 1040 streamt, selbst wenn die Plattform auf „Aus“ geschaltet ist. Zusätzlich kann der Chipsatz 1005 Hardware- und/oder Software-Unterstützung beispielsweise für Audio mit 5.1-Surround-Klang und/oder Audio mit hochauflösendem 10.1-Surround-Klang enthalten. Treiber können einen Grafiktreiber für integrierte Grafikplattformen enthalten. In verschiedenen Ausführungsformen kann der Grafiktreiber eine „Peripheral Component Interconnect“- (PCI-) Express-Grafikkarte umfassen.
-
In verschiedenen Implementierungen können irgendeine oder mehrere der im System 1000 gezeigten Komponenten integriert sein. Beispielsweise können die Plattform 1002 und die Inhaltsdienstvorrichtung(en) 1030 integriert sein, oder die Plattform 1002 und die Inhaltszustellvorrichtung(en) 1040 können integriert sein, oder die Plattform 1002, die Inhaltsdienstvorrichtung(en) 1030 und die Inhaltszustellvorrichtung(en) 1040 können beispielsweise integriert sein. In verschiedenen Ausführungsformen können die Plattform 1002 und die Anzeigevorrichtung 1020 eine integrierte Einheit sein. Die Anzeigevorrichtung 1020 und die Inhaltsdienstvorrichtung(en) 1030 können integriert sein, oder die Anzeigevorrichtung 1020 und die Inhaltszustellvorrichtung(en) 1040 können beispielsweise integriert sein. Diese Beispiele sind nicht dafür vorgesehen, die vorliegende Offenbarung einzuschränken.
-
In verschiedenen Ausführungsformen kann das System 1000 als ein drahtloses System, ein drahtgebundenes System oder eine Kombination aus beidem implementiert sein. Wenn es als ein drahtloses System 1000 implementiert ist, kann das System 1000 Komponenten und Schnittstellen enthalten, die zum Kommunizieren über drahtlose gemeinsam verwendete Medien geeignet sind, wie z. B. eine oder mehrere Antennen, Sender, Empfänger Sender/Empfänger, Verstärker, Filter, Steuerlogik und so weiter. Ein Beispiel für drahtlose gemeinsam verwendete Medien kann Abschnitte eines Drahtlosspektrums wie z. B. des HF-Spektrums und so weiter enthalten. Wenn es als ein drahtgebundenes System implementiert ist, kann das System 1000 Komponenten und Schnittstellen enthalten, die zum Kommunizieren über drahtgebundene Kommunikationsmedien geeignet sind, wie z. B. Eingabe/Ausgabe- (I/O-) Adapter, physikalische Verbindungselemente zum Verbinden des I/O-Adapters mit einem entsprechenden drahtgebundenen Kommunikationsmedium, eine Netzschnittstellenkarte (NIC), eine Plattensteuereinheit, eine Videosteuereinheit, eine Audiosteuereinheit und dergleichen. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, ein Kabel, Metallleitungen, eine Leiterplatte (PCB), eine Rückwandplatine, ein Switch-Fabric, Halbleitermaterial, Zweidrahtleitung, Koaxialkabel, Lichtwellenleiter und so weiter enthalten.
-
Die Plattform 1002 kann einen oder mehrere logische oder physikalische Kanäle aufbauen, um Informationen zu kommunizieren. Die Informationen können Medieninformationen und Steuerinformationen enthalten. Medieninformationen können sich auf irgendwelche Daten beziehen, die für einen Anwender bestimmten Inhalt repräsentieren. Beispiele für Inhalt können beispielsweise Daten aus einem Gespräch, Videokonferenz, Video-Streaming, Nachricht der elektronischen Post („E-Mail“), Voicemail-Nachricht, alphanumerische Symbole, Grafik, Bild, Video, Text und so weiter enthalten. Daten aus einem Gespräch können beispielsweise Sprachinformationen, Sprechpausen, Hintergrundgeräusche, Beruhigungsgeräusche, Töne und so weiter enthalten. Steuerinformationen können sich auf irgendwelche Daten beziehen, die Befehle, Anweisungen oder Steuerwörter, die für ein automatisches System bestimmt sind, beziehen. Beispielsweise können Steuerinformationen verwendet werden, um Medieninformationen durch ein System zu lenken oder um einen Knoten anzuweisen, die Medieninformationen auf eine vorbestimmte Weise zu verarbeiten. Die Ausführungsformen sind jedoch nicht auf die Elemente oder den Kontext, die in 10 gezeigt und beschrieben sind, beschränkt.
-
Wie vorstehend beschrieben kann das System 1000 in variierenden physikalischen Stilen oder Formfaktoren verwirklicht sein. 11 stellt eine Beispielvorrichtung 1100 mit kleinem Formfaktor dar, die in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist. In einigen Beispielen kann das System 1000 über die Vorrichtung 1100 implementiert sein. In anderen Beispielen können andere Systeme, Komponenten oder Module, die hier diskutiert sind, oder Abschnitte davon über die Vorrichtung 1100 implementiert sein. In verschiedenen Ausführungsformen kann die Vorrichtung 1100 beispielsweise als eine mobile Berechnungsvorrichtung, die Drahtlosfähigkeiten aufweist, implementiert sein. Eine mobile Berechnungsvorrichtung kann sich auf irgendeine Vorrichtung beziehen, die ein Verarbeitungssystem und eine mobile Stromquelle oder -versorgung wie beispielsweise eine oder mehrere Batterien aufweist.
-
Beispiele für eine mobile Berechnungsvorrichtung können einen Personalcomputer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Hand-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus Mobiltelefon/PDA, ein Fernsehgerät, eine intelligente Vorrichtung (z. B. ein Smartphone, ein Smart-Tablet oder ein intelligentes Fernsehgerät), eine mobile Internet-Vorrichtung (MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung, Kameras (z. B. Kompaktkameras, Super-Zoom-Kameras, Digitale Spiegelreflex- (DSLR-) Kameras) und so weiter enthalten.
-
Beispiele für eine mobile Berechnungsvorrichtung können außerdem Computer enthalten, die dafür ausgelegt sind, um in ein Kraftfahrzeug oder einen Roboter implementiert zu sein, von einer Person am Körper getragen zu werden, wie z. B. Handgelenk-Computer, Finger-Computer, Ring-Computer, Brillen-Computer, Gürtelclip-Computer, Armband-Computer, Schuh-Computer, Kleidungs-Computer und andere am Körper tragbare Computer. In verschiedenen Ausführungsformen kann beispielsweise eine mobile Berechnungsvorrichtung als ein Smartphone implementiert sein, das sowohl zum Ausführen von Computer-Anwendungen als auch zur Sprachkommunikation und/oder Datenkommunikation fähig ist. Obwohl einige Ausführungsformen mit einer mobilen Berechnungsvorrichtung beschrieben sein können, die als Beispiel als ein Smartphone implementiert ist, ist zu verstehen, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Berechnungsvorrichtungen implementiert sein können. Die Ausführungsformen sind in diesem Kontext nicht eingeschränkt.
-
Wie in 11 gezeigt ist, kann die Vorrichtung 1100 ein Gehäuse mit einer Vorderseite 1101 und einer Rückseite 1102 enthalten. Die Vorrichtung 1100 enthält eine Anzeigevorrichtung 1104, eine Eingabe/Ausgabe- (I/O-) Vorrichtung 1106, eine Farbkamera 1121, eine Farbkamera 1122 und eine integrierte Antenne 1108. Beispielsweise können die Farbkamera 1121 und die Farbkamera 1122 Bilddaten eingeben (z. B. linke und rechte Bilder), wie hier diskutiert. Die Vorrichtung 1100 kann außerdem Navigationsmerkmale 1112 enthalten. Die I/O-Vorrichtung 1106 kann irgendeine geeignete I/O-Vorrichtung zum Eingeben von Informationen in eine mobile Berechnungsvorrichtung enthalten. Beispiele für die I/O-Vorrichtung 1106 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Schaltflächen, Schalter, Mikrofone, Lautsprecher, Spracherkennungsvorrichtung und Software und so weiter enthalten. Informationen können auch mit Hilfe des Mikrofons (nicht gezeigt) in die Vorrichtung 1100 eingegeben werden oder können durch eine Spracherkennungsvorrichtung digitalisiert werden. Wie gezeigt kann die Vorrichtung 1100 die Farbkameras 1121, 1122 und einen Blitz 1110, der in die Rückseite 1102 (oder an anderer Stelle) der Vorrichtung 1100 integriert ist, enthalten. In anderen Beispielen können die Farbkameras 1121, 1122 und der Blitz 1110 in die Vorderseite 1101 der Vorrichtung 1100 integriert sein, oder sowohl vorderseitige als auch rückseitige Gruppen von Kameras können vorgesehen sein. Die Farbkameras 1121, 1122 und Ein Blitz 1110 können Komponenten eines Kameramoduls sein, um Farbbilddaten zu erzeugen, die in ein Bild oder ein Streaming-Video verarbeitet werden können, das zu der Anzeigevorrichtung 1104 ausgegeben wird und/oder entfernt von der Vorrichtung 1100 beispielsweise über die Antenne 1108 kommuniziert wird.
-
Verschiedene Ausführungsformen können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination aus beidem implementiert sein. Beispiele für Hardware-Elemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), im Feld programmierbares Gatter-Array (FPGA), Logik-Gatter, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter enthalten. Beispiele für Software können Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Software-Schnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Berechnungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus enthalten. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann in Übereinstimmung mit irgendeiner Anzahl von Faktoren variieren, wie z. B. der gewünschten Rechengeschwindigkeit, Leistungspegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingabedatenraten, Ausgabedatenraten, Speicherbetriebsmittel, Datenbusgeschwindigkeiten und anderen Design- oder Leistungseinschränkungen.
-
Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, die verschiedene Logik innerhalb des Prozessors repräsentieren, die dann, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, Logik zum Ausführen der hier beschriebenen Techniken zu produzieren. Solche Repräsentation, bekannt als IP-Kerne, können auf einem greifbaren maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Produktionsanlagen geliefert werden, um in die Produktionsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
-
In einer oder mehreren ersten Ausführungsformen umfasst ein Verfahren zum Bereitstellen von Segmentierung in einem Video das Erzeugen einer Eingabe für ein neuronales Faltungsnetz, die einen aktuellen Videorahmen, einen zeitlich vorhergehenden Videorahmen, ein einen Kennzeichenrahmen des interessierenden Objekts, der ein oder mehrere Kennzeichen eines interessierenden Objekts in dem aktuellen Videorahmen umfasst, einen Bewegungsrahmen, der Bewegungskennzeichen umfasst, die die Bewegung von dem vorhergehenden Videorahmen zu dem aktuellen Videorahmen angeben, und mehrere Merkmalsrahmen, die jeweils Merkmale umfassen, die aus Merkmalsschichten eines neuronalen Objektklassifizierungsfaltungsnetzes komprimiert sind, wie es auf den aktuellen Videorahmen angewandt wird, Anwenden eines neuronalen Segmentierungsfaltungsnetz auf die Eingabe für das neuronale Faltungsnetz, um mehrere Kandidatensegmentierungen des aktuellen Videorahmens zu erzeugen, und Auswählen einer der Kandidatensegmentierungen als eine endgültige Segmentierung, die dem aktuellen Videorahmen entspricht.
-
In einer oder zweiten Ausführungsformen zusätzlich zu der ersten Ausführungsform umfasst der Prozess ferner das Anwenden des neuronalen Klassifizierungsfaltungsnetzes auf den aktuellen Videorahmen, Abrufen für jedes Pixel des aktuellen Videorahmens von mehreren Merkmalswerten jeweils aus einer der Schichten des neuronalen Klassifizierungsfaltungsnetzes, um eine Hypersäule von Merkmalswerten für jedes Pixel zu erzeugen, und Komprimieren der Hypersäulen, um die mehreren Merkmalsrahmen zu bestimmen.
-
In einer oder mehreren dritten Ausführungsformen zusätzlich zu der ersten oder zweiten Ausführungsform umfasst das Komprimieren der Hypersäulen das Anwenden der Tucker-Zerlegung auf ein Merkmalsvolumen, das die Hypersäulen umfasst, um einen Kern-Tensor zu bestimmen, der die mehreren komprimierten Merkmalsrahmen umfasst.
-
In einer oder mehreren vierten Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis dritten Ausführungsform ist eine Anzahl der komprimierten Merkmalsrahmen nicht größer als die Hälfte einer Anzahl von Merkmalswerten in jeder Hypersäule.
-
In einer oder mehreren fünften Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis vierten Ausführungsform enthält das Verfahren ferner das Empfangen eines oder mehrere Anwender-Klick-Kennzeichen, die einem oder mehreren ersten Orten in dem zeitlich vorhergehenden Videorahmen entsprechen, und Projizieren jedes aus dem einen oder den mehreren ersten Orten auf einen oder mehrere zweite Orte in dem aktuellen Videorahmen unter Verwendung des Bewegungsrahmens, um das eine oder die mehreren Kennzeichen des interessierenden Objekts in dem aktuellen Videorahmen zu bestimmen.
-
In einer oder mehreren sechsten Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis fünften Ausführungsform geben das eine oder die mehreren Kennzeichen des Kennzeichenrahmens des interessierenden Objekts die Orte von positiven Kennzeichen an, die das interessierende Objekt angeben, wobei die Eingabe für das neuronale Faltungsnetz ferner einen Kennzeichenrahmen des Hintergrunds, der negative Kennzeichen umfasst, die Orte eines Hintergrunds außerhalb des interessierenden Objekts angeben, einen Positivabstandstransformationsrahmen, der für jedes Pixel davon einen Wert umfasst, der einen kleinsten Abstand zu irgendeinem der Orte der positiven Kennzeichen angibt, und einen Negativabstandstransformationsrahmen, der für jedes Pixel davon einen Wert umfasst, der einen kleinsten Abstand zu irgendeinem der Orte der negativen Kennzeichen angibt, umfasst.
-
In einer oder mehreren siebten Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis sechsten Ausführungsform umfasst die Eingabe für das neuronale Faltungsnetz ferner einen vorhergehenden Segmentierungsrahmen, der dem vorhergehenden Videorahmen entspricht.
-
In einer oder mehreren achten Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis siebten Ausführungsform wird das neuronale Segmentierungsfaltungsnetz vortrainiert unter Verwendung einer Verlustfunktion, die einen Grenzverlustterm umfasst, wobei der Grenzverlustterm Differenzen zwischen „Ground-Truth“-Werten für „Ground-Truth“-Grenzpunkte, die einem interessierenden Trainingsobjekt entsprechen, und resultierenden Werten für die Grenzpunkte, die der Anwendung des neuronalen Segmentierungsfaltungsnetzes während des Trainings entsprechen, umfasst.
-
In einer oder mehreren neunten Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis achten Ausführungsform umfasst der Grenzverlustterm einen Pseudo-Huber-Verlust-Term, der ein Quadrat eines Bruchs der Differenz über einen Steilheitsparameter umfasst, wobei der Steilheitsparameter zum Bestrafen von Grenzsegmentierungsfehlern in dem neuronalen Segmentierungsfaltungsnetz dient.
-
In einer oder mehreren zehnten Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis neunten Ausführungsform umfasst das Auswählen der endgültigen Segmentierung aus den Kandidatensegmentierungen das Anwenden eines neuronalen Auswahlfaltungsnetzes auf eine Eingabe für ein zweites neuronales Faltungsnetz, die den aktuellen Videorahmen, den Anwendereingaberahmen und die mehreren Kandidatensegmentierungen umfasst.
-
In einer oder mehreren elften Ausführungsformen zusätzlich zu irgendeiner aus der ersten bis mehr Ausführungsform umfasst der aktuelle Videorahmen pro Pixel R-, G- oder B-Werte, der vorhergehende Videorahmen umfasst pro Pixel R-, G- oder B-Werte, der Bewegungsrahmen umfasst pro Pixel Geschwindigkeitsbewegungsvektoren, jeder der Merkmalsrahmen umfasst pro Pixel komprimierte Merkmalswerte und jede der Kandidatensegmentierungen umfasst pro Pixel Wahrscheinlichkeitswerte dafür, dass jedes Pixel ein Element des interessierenden Objekts ist.
-
In einer oder mehreren zwölften Ausführungsformen enthält eine Vorrichtung oder ein System einen Speicher und einen Prozessor zum Ausführen eines Verfahrens nach einer oder mehreren der vorstehenden Ausführungsformen.
-
In einer oder mehreren dreizehnten Ausführungsformen enthält wenigstens ein maschinenlesbares Medium mehrere Befehle, die in Reaktion darauf, dass sie auf einer Berechnungsvorrichtung ausgeführt werden, die Berechnungsvorrichtung veranlassen, ein Verfahren nach einer der vorstehenden Ausführungsformen auszuführen.
-
In einer oder mehreren vierzehnten Ausführungsformen enthält eine Einrichtung Mittel zum Ausführen eines Verfahrens nach einer der vorstehenden Ausführungsformen.
-
Obwohl spezielle Merkmale, die hier dargelegt sind, mit Bezug auf verschiedene Implementierungen beschrieben worden sind, ist diese Beschreibung nicht dafür gedacht, in einem einschränkenden Sinn gedeutet zu werden. Somit sind sowohl verschiedene Modifikationen der hier beschriebenen Implementierungen als auch andere Implementierungen, die für Fachleute der Technik, zu der die vorliegende Offenbarung gehört, offenkundig sind, als in dem Geist und Schutzbereich der vorliegenden Offenbarung liegend erachtet.
-
Es ist zu erkennen, dass die Ausführungsformen nicht auf die so beschriebenen Ausführungsformen beschränkt sind, sondern mit Modifikation und Veränderung praktiziert werden können, ohne von dem Schutzbereich der beigefügten Ansprüche abzuweichen. Beispielsweise können die vorstehenden Ausführungsformen eine spezifische Kombination von Merkmalen enthalten. Die vorstehenden Ausführungsformen sind jedoch in dieser Hinsicht nicht eingeschränkt, und in verschiedenen Implementierungen können die vorliegenden Ausführungsformen das Durchführen nur einer Teilmenge solcher Merkmale, das Durchführen solcher Merkmale in einer anderen Reihenfolge, das Durchführen einer unterschiedlichen Kombination solcher Merkmale und/oder das Durchführen zusätzlicher Merkmale als der ausdrücklich aufgelisteten Merkmale enthalten. Der Schutzbereich der Ausführungsformen deshalb sollte mit Bezug auf die beigefügten Ansprüche bestimmt werden, zusammen mit dem vollständigen Umfang von Äquivalenten, für die solche Ansprüche berechtigt sind.