-
Hintergrund
-
Auf dem Gebiet der Rechentechnologien entwickeln sich Contenterstellungssysteme ständig weiter und verbessern Digitalbilder auf vielerlei Arten, die in der Vergangenheit weitgehend Berufsfotografen vorbehalten waren. Angesichts dieser Weiterentwicklung können Contenterstellungssysteme professionelle und qualitativ hochwertige Digitalbilder aus Digitalbildern generieren, die von Vorrichtungsnutzern mit wenig oder gar keiner Erfahrung oder Kenntnis der Regeln beim Komponieren optisch ansprechender Bilder, so beispielsweise der Drittelregel, aufgenommen werden. Bei einem Beispiel können Contenterstellungssysteme ein Digitalbild analysieren, auf Grundlage der Analyse Nachbearbeitungsvorgänge, so beispielsweise Beschneiden bzw. Freistellen, Zoomen, Filtern und dergleichen mehr, auswählen und an dem Digitalbild durchführen. In einigen Fällen setzen Contenterstellungssysteme das Patchabgleichen ein, um derartige Bildbearbeitungsvorgänge auszuführen. Allgemein impliziert das Patchabgleichen das Kopieren von Werten aus einer Gruppe von Pixeln in einem Bild auf die von einem Vorgang betroffenen Pixel des Bildes. Man betrachte ein Beispiel, bei dem das Patchabgleichen in Verbindung mit dem Füllen eines Loches eines Bildes eingesetzt wird. Zum Füllen des Loches kann das Patchabgleichen eingesetzt werden, um Werte von Pixeln, die dem restlichen Bildinhalt entsprechen, auf diejenigen Pixel, die dem Loch entsprechen, zu kopieren.
-
Herkömmliche Patchabgleichstechniken versuchen, einen nächstgelegenen Patch (beispielsweise eine Gruppe von Pixeln) mit Pixelwerten ausfindig zu machen, die mit den Pixeln, die von einem Bildbearbeitungsvorgang bearbeitet werden, annähernd abgeglichen sind. Bei einigen Szenarien kann das bloße Abgleichen des nächstgelegenen Patches zu bearbeiteten Bildern führen, die semantisch nicht konsistent sind. Man betrachte ein Beispiel, bei dem ein Digitalbild des Gesichtes einer Person ein Loch aufweist, das an einem der Augen der Person befindlich ist. Gefüllt wird dieses Loch bei Verwendung herkömmlicher das Patchabgleichen implizierender Techniken des Lochfüllens auf Grundlage von Patches von Pixeln, die in der Nähe des Loches befindlich sind, also beispielsweise von Pixeln, die den Brauen, der Augenhöhle, den Wangen, der Nase und dergleichen mehr der Person entsprechen. Das bloße Kopieren von Werten dieser Pixel auf die Lochpixel am Auge der Person gibt jedoch das Auge an genau dem Ort nicht wieder. Entsprechend sind herkömmliche Patchabgleichstechniken zur Implementierung verschiedener Bildbearbeitungsvorgänge gegebenenfalls ungeeignet.
-
Zusammenfassung
-
Zur Lösung dieser Probleme wird das Vorhersagen von Patchverschiebungsabbildungen unter Verwendung eines Neuronalnetzwerkes in einer Digitalmedienumgebung eingesetzt. Zunächst wird ein Digitalbild empfangen, bezüglich dessen ein Bildbearbeitungsvorgang durchgeführt werden soll. Das Digitalbild wird als Eingabe für einen Patchabgleicher bereitgestellt, der derart ausgebildet ist, dass er ein Framework aufweist, das ein Offsetvorhersage-Neuronalnetzwerk beinhaltet. Aus dem Digitalbild generiert das Offsetvorhersage-Neuronalnetzwerk auf Grundlage des Bildbearbeitungsvorganges, für den das Offsetvorhersage-Neuronalnetzwerk trainiert ist, eine Offsetvorhersage, die als Verschiebungsabbildung ausgebildet ist. Diese Verschiebungsabbildung ist aus Offsetvektoren gebildet, die eine Verschiebung von Bildpixeln des eingegebenen Digitalbildes an verschiedene bzw. andere Orte zum Durchführen des Bildbearbeitungsvorganges darstellen. Die Offsetvorhersage dient zudem als Grundlage für das Kopieren von Pixelwerten des Digitalbildes auf die von dem Vorgang betroffenen Bildpixel. Dies impliziert das Bestimmen von Offsetvektoren, die den von dem Bildbearbeitungsvorgang betroffenen Bildpixeln entsprechen. Des Weiteren werden die Pixelwerte der Bildpixel, die von den bestimmten Offsetvektoren dargestellt werden, auf die betroffenen Bildpixel abgebildet. Entsprechend dieser Abbildung werden die Pixelwerte der betroffenen Bildpixel eingestellt, was für die Durchführung des Bildbearbeitungsvorganges effektiv ist.
-
Die vorliegende Zusammenfassung bietet in vereinfachter Form eine Auswahl von Konzepten, die nachstehend in der Detailbeschreibung weiter beschrieben werden. Als solches soll die vorliegende Zusammenfassung wesentliche Merkmale des beanspruchten Erfindungsgegenstandes weder identifizieren, noch soll sie als Hilfe beim Bestimmen des Umfangs des beanspruchten Erfindungsgegenstandes verwendet werden.
-
Figurenliste
-
Die Patent- oder Anmeldungsakte enthält wenigstens eine in Farbe ausgeführte Zeichnungsfigur. Kopien der Veröffentlichung des Patentes oder der Patentanmeldung mit der farbigen Zeichnungsfigur / den farbigen Zeichnungsfiguren werden vom Amt auf Antrag und nach Zahlung der einschlägigen Gebühr zur Verfügung gestellt.
-
Die Detailbeschreibung erfolgt anhand der begleitenden Figuren.
- 1 ist eine Darstellung einer Umgebung bei einer exemplarischen Implementierung, die für den Einsatz der hier beschriebenen Techniken betrieben werden kann.
- 2 zeigt eine exemplarische Implementierung einer Farbcodierungsreferenz, die zur Visualisierung von Verschiebungsabbildungen zum Abbilden von Pixeln eines Eingabebildes auf die von einem Bildbearbeitungsvorgang betroffenen Pixel auf Grundlage vorhergesagter Pixeloffsets verwendet wird.
- 3 zeigt ein Beispiel für lochhaltige Digitalbilder und entsprechende gefüllte Digitalbilder, die unter Verwendung vorhergesagter Pixeloffsets generiert werden, die eine Abbildung zwischen restlichen Pixeln der lochhaltigen Digitalbilder und Pixeln der Löcher angeben.
- 4 zeigt eine exemplarische Implementierung, bei der ein Patchabgleichssystem ein Ausgabedigitalbild unter Verwendung vorhergesagter Pixeloffsets generiert, die eine Abbildung von Pixeln eines Eingabedigitalbildes auf Pixel angeben, die von einem Vorgang, der in Bezug auf das Eingabedigitalbild durchgeführt wird, betroffen sind.
- 5 zeigt eine exemplarische Implementierung eines Patchabgleichsnetzwerkframeworks, das unter Verwendung des Deep Learning trainiert ist und das Offsetvorhersagen generiert, die als Verschiebungsabbildungen ausgebildet sind.
- 6 zeigt eine Prozedur bei einer exemplarischen Implementierung, bei der ein Bildbearbeitungsvorgang an einem Digitalbild ausgeführt wird, indem Pixel des Digitalbildes auf die von dem Vorgang betroffenen Pixel entsprechend einer Offsetvorhersage, die als Verschiebungsabbildung ausgebildet ist, abgebildet werden.
- 7 zeigt eine Prozedur bei einer exemplarischen Implementierung, bei der ein Netzwerkframework ausgebildet ist, um Bildbearbeitungsvorgänge unter Verwendung eines Patchabgleichens auszuführen, das auf Offsetvorhersagen beruht, die als von dem Framework generierte Verschiebungsabbildungen ausgebildet sind.
- 8 zeigt ein exemplarisches System, das verschiedene Komponenten einer exemplarischen Vorrichtung beinhaltet, die als beliebiger Typ von Rechenvorrichtung, die anhand von 1 bis 7 beschrieben und/oder genutzt worden ist, implementiert sein kann, um Ausführungsformen der hier beschriebenen Techniken zu implementieren.
-
Detailbeschreibung
-
Übersicht
-
Das Bildpatchabgleichen wird in Verbindung mit verschiedenen Bildbearbeitungsvorgängen, so beispielsweise dem Bildneueinrichten (image retargeting) und dem Bildlochfüllen, verwendet. Allgemein impliziert das Patchabgleichen ein Kopieren von Werten aus einer Gruppe von Pixeln in einem Bild auf die von einem Vorgang betroffenen Pixel des Bildes. Herkömmliche Patchabgleichstechniken scheitern jedoch bei einigen Szenarien. Dies rührt daher, dass herkömmliche Patchabgleichstechniken auf wenig abstrakten (low-level) Pixelwerten anstatt auf semantischen Konzepten, die mittels Deep Learning gelernt werden können, beruhen. Üblicherweise versuchen derartige herkömmliche Patchabgleichstechniken, einen nächstgelegenen Patch (beispielsweise eine Gruppe von Pixeln) ausfindig zu machen, die Pixelwerte aufweisen, die mit einem Patch, der einem Bildbearbeitungsvorgang unterzogen wird, annähernd abgeglichen sind. Bei einigen Szenarien führt dieses bloße Abgleichen der nächstgelegenen Patches jedoch zu bearbeiteten Bildern, die semantisch nicht konsistent sind, was beispielsweise bei einem Szenario der Fall ist, das den Versuch impliziert, ein Loch zu füllen, das in der Nähe des Auges einer dargestellten Person befindlich ist. Entsprechend sind herkömmliche Patchabgleichstechniken zur Implementierung verschiedener Bildbearbeitungsvorgänge gegebenenfalls ungeeignet.
-
Um diese Probleme zu lösen, wird das Vorhersagen von Patchverschiebungsabbildungen unter Verwendung eines Neuronalnetzwerkes in einer Digitalmedienumgebung eingesetzt. Zunächst wird ein Digitalbild empfangen, bezüglich dessen ein Bildbearbeitungsvorgang durchgeführt werden soll. Exemplarische Bildbearbeitungsvorgänge, die unter Verwendung der beschriebenen Techniken implementiert sein können, beinhalten das Lochfüllen, das Bildneueinrichten (beispielsweise das Beschneiden bzw. Freistellen, Zoomen, Skalieren, Rückgängigmachen des Beschneidens bzw. Freistellens), das Vorhersagen des optischen Überganges zwischen zwei verschiedenen Bildern (beispielsweise Videoframes), das Vorhersagen eines zukünftigen Frames für Videoframes und dergleichen mehr. Dieses Bild kann bei Szenarien empfangen werden, bei denen der Nutzer die Durchführung des Vorganges, so beispielsweise das Neueinrichten eines Bildes, unter Verwendung einer Bildbearbeitungsanwendung, auswählt. Alternativ oder zusätzlich kann das Bild bei Szenarien empfangen werden, bei denen ein Rechenvorrichtungsmodul das Durchführen des Vorganges, also beispielsweise das Neueinrichten eines Bildes zur Objekterkennung, auswählt. In jedem Fall können Digitalbilder für ein Patchabgleichssystem bereitgestellt werden, das zum Ausführen von vielerlei Vorgängen verwendet wird, ohne vom Wesen oder Umfang der beschriebenen Techniken abzugehen.
-
Allgemein sind derartige Patchabgleichssysteme dafür konfiguriert, Digitalbilder auszugeben, die mittels eines Bearbeitungsvorganges, der ein Patchabgleichen impliziert, bearbeitet werden. Zu diesem Zweck kopiert das Patchabgleichssystem Pixelwerte von Gruppen von Pixeln eines Digitalbildes auf die von dem Vorgang betroffenen Pixel des Digitalbildes. Im Gegensatz zu herkömmlichen Techniken verwenden die beschriebenen Techniken jedoch das Maschinenlernen, wodurch das Patchabgleichen semantische Konzepte eines Bildes, so beispielsweise Gesichtsmerkmale, beibehält. Bei einer oder mehreren Implementierungen ist das Patchabgleichssystem dafür konfiguriert, ein Netzwerkframework aufzuweisen, das ein Offsetvorhersage-Neuronalnetzwerk beinhaltet, das für das Erkennen semantischer Konzepte durch Übermittlung an verschiedene Sätze von Trainingsbildern trainiert wird. Darüber hinaus wird das Offsetvorhersage-Neuronalnetzwerk für einen spezifischen Bildbearbeitungsvorgang trainiert, um Änderungen zu lernen, die an Bildern infolge der Bildbearbeitungsvorgänge auftreten, so beispielsweise Änderungen, die an Bildern infolge eines Lochfüllens auftreten, gegenüber Änderungen, die an Bildern infolge eines Beschneidens bzw. Freistellens auftreten. Um verschiedene Bildbearbeitungsvorgänge zu implementieren, können verschieden trainierte Offsetvorhersage-Neuronalnetzwerke eingesetzt werden.
-
Entsprechend den beschriebenen Techniken wird das Offsetvorhersage-Neuronalnetzwerk dafür trainiert, Offsetvorhersagen aus dem Digitalbild zu generieren, bezüglich dessen der Bildbearbeitungsvorgang durchgeführt wird. Diese Offsetvorhersagen sind Digitalcontent, der als Verschiebungsabbildungen (displacement maps) ausgebildet ist, die Offsetvektoren, so beispielsweise einen Vektor für jedes Pixel des Digitalbildes, beinhalten. Die Offsetvektoren stellen eine Verschiebung von Bildpixeln des eingegebenen Digitalbildes an verschiedene bzw. andere Orte zum Durchführen des Bildbearbeitungsvorganges dar. Diese Verschiebung kann unter Verwendung farbcodierter Visualisierungen visualisiert werden, die die Offsetvektoren unter Verwendung von Farben, die durch eine Farbcodierungsreferenz definiert werden, darstellt. Allgemein entspricht der Ort einer Farbe in der Farbcodierungsreferenz einem Vektor, der ein Bildpixel darstellt, das allgemein am selben Ort in dem Digitalbild befindlich ist. Eine Farbe in der oberen rechten Ecke der Farbcodierungsreferenz entspricht beispielsweise einem Vektor, der ein Bildpixel in der oberen rechten Ecke des Digitalbildes darstellt.
-
In jedem Fall dient die Offsetvorhersage als Grundlage für das Kopieren von Pixelwerten des Digitalbildes auf die von dem Vorgang betroffenen Bildpixel. Dies impliziert ein Bestimmen der Offsetpixel, die den von dem Bildbearbeitungsvorgang betroffenen Bildpixeln entsprechen. Bei dem Beispiel mit dem Lochfüllen impliziert dies ein Bestimmen derjenigen Offsetvektoren, die den Bildpixeln, die das Loch bilden, entsprechen. Hierbei werden die Pixelwerte der Bildpixel, die von den bestimmten Offsetvektoren dargestellt werden, auf die betroffenen Bildpixel abgebildet. Bei einer oder mehreren Implementierungen impliziert dies ein Anwenden der bestimmten Offsetvektoren auf das Digitalbild, um diejenigen Bildpixel, die die Vektoren darstellen, zu identifizieren. Auf Grundlage hiervon werden Pixelwerte auf die betroffenen Bildpixel abgebildet. Entsprechend dieser Abbildung werden die Pixelwerte der betroffenen Bildpixel eingestellt, was bei der Durchführung des Bildbearbeitungsvorganges effektiv ist.
-
Durch Einsatz eines Neuronalnetzwerkes, das auf Grundlage von Sätzen von Bildern trainiert ist, vermeidet das Patchabgleichssystem das Ausgeben von bearbeiteten Bildern mit Content, der semantisch inkonsistent ist. Das Patchabgleichssystem gibt die bearbeiteten Bilder zudem ohne Nachbearbeitungsvorgänge aus. Hierbei treten bei den Patchabgleichssystemen, die entsprechend den beschriebenen Techniken konfiguriert sind, keine Belastungen dahingehend auf, Nachbearbeitungsvorgänge durchführen zu müssen.
-
Begriffsbeschreibungen
-
Im Sinne des Vorliegenden bezeichnet der Begriff „Patchabgleichen“ eine oder mehrere Techniken zum Kopieren von Werten aus einer Gruppe von Pixeln in einem Bild auf andere Pixel jenes Bildes, beispielsweise auf Pixel des Bildes, die einem Bildbearbeitungsvorgang unterzogen werden. Unterschiede bei diesen Techniken beinhalten beispielsweise Unterschiede in der Art des Auswählens von Pixeln, aus denen die Werte kopiert werden.
-
Im Sinne des Vorliegenden bezeichnet der Begriff „Patch“ (Flicken) eine Gruppe von Pixeln eines Bildes oder eine Gruppe von Patchpixeln, die um ein Bildpixel zentriert sind und die auf Grundlage nächstgelegener Bildpixel beispielsweise mittels Interpolation generiert werden.
-
Im Sinne des Vorliegenden bezeichnet der Begriff „Bildpixel“ Pixel eines Digitalbildes. Auf ähnliche Weise bezeichnet der Begriff „Offsetvektoren“ Vektoren einer Offsetvorhersage, die als Verschiebungsabbildung ausgebildet ist. Bei einer oder mehreren Implementierungen beinhaltet die Verschiebungsabbildung Vektoren, die jedem Bildpixel des gerade bearbeiteten Digitalbildes entsprechen und die zudem den Ort eines abgebildeten Bildpixels angeben.
-
In der nachfolgenden Diskussion bezeichnet der Begriff „Loch“ eine Gruppe von zusammenhängenden Pixeln eines Digitalbildes mit Werten, die die Abwesenheit von dargestelltem Content angeben. Bei einem Beispiel können diese Pixel Nullwerte oder andere Werte, die keinen Content angeben, aufweisen. Bei einer oder mehreren Implementierungen können diese Pixel Werte aufweisen, die bewirken, dass die Pixel als weiß oder schwarz angezeigt werden. In der Praxis können die Pixel einfach weißen oder schwarzen Pixelwerten zugeordnet sein. In jedem Fall erscheinen diese Löcher inkonsistent zum restlichen Bildinhalt, der in den lochhaltigen Digitalbildern dargestellt ist. Löcher können auf Grundlage von vielerlei Vorgängen, wie hier erläutert wird, in Digitalbilder eingebracht werden.
-
Der Begriff „Nachbearbeitung“ bezeichnet Vorgänge, die in Bezug auf Digitalbilder durchgeführt werden, um den dargestellten Content jener Bilder zu modifizieren. Bei einem Beispiel beinhalten Nachbearbeitungsvorgänge das Zoomen, Beschneiden bzw. Freistellen, Skalieren, Mischen bzw. Blending, das Filtern, das selektive Farbändern und dergleichen mehr. Die Nachbearbeitung kann eine Vielzahl weiterer Bildmodifikationsvorgänge einschließen, ohne vom Wesen oder Umfang der beschriebenen Techniken abzugehen.
-
In der nachfolgenden Diskussion wird zunächst eine exemplarische Umgebung beschrieben, in der die hier beschriebenen Techniken zum Einsatz kommen können. Details und Prozeduren zu der exemplarischen Implementierung, die in der exemplarischen Umgebung wie auch in anderen Umgebungen durchgeführt werden können, werden sodann beschrieben. Als Folge dessen ist das Leistungsvermögen der exemplarischen Prozeduren nicht auf die exemplarische Umgebung beschränkt, und es ist die exemplarische Umgebung nicht auf das Leistungsvermögen der exemplarischen Prozeduren beschränkt.
-
Exemplarische Umgebung
-
1 ist eine Darstellung einer Umgebung 100 bei einer exemplarischen Implementierung, die bei der Vorhersage von Patchverschiebungsabbildungen unter Verwendung eines Neuronalnetzwerkes, wie hier beschrieben ist, betrieben werden kann. Die dargestellte Umgebung 100 beinhaltet einen Dienstanbietersystem 102, eine Clientvorrichtung 104 und ein Patchabgleichergenerierungssystem 106, die miteinander über ein Netzwerk 108 kommunikationstechnisch gekoppelt sind.
-
Rechenvorrichtungen, die dafür verwendbar sind, das Dienstanbietersystem 102, die Clientvorrichtung 104 und das Patchabgleichergenerierungssystem 106 zu implementieren, können auf vielerlei Arten konfiguriert sein. Eine Rechenvorrichtung kann beispielsweise als Desktopcomputer, Laptopcomputer, Mobilvorrichtung (beispielsweise als manuelle Konfiguration wie bei einem Tablet oder Mobiltelefon) und dergleichen mehr konfiguriert sein. Die Rechenvorrichtung kann daher von einer Vollressourcenvorrichtung mit wesentlichen Speicher- und Prozessorressourcen (beispielsweise PCs, Spielekonsolen) bis zu einer Niedrigressourcenvorrichtung mit begrenzten Speicher- und/oder Verarbeitungsressourcen (beispielsweise Mobilvorrichtungen) reichen. Zusätzlich kann eine Rechenvorrichtung mehrere verschiedene Vorrichtungen darstellen, so beispielsweise mehrere Server, die von einem Unternehmen genutzt werden, um Vorgänge „über die Cloud“, wie nachstehend anhand 8 noch beschrieben wird, durchzuführen.
-
Das Dienstanbietersystem 102 ist derart dargestellt, dass es ein Dienstverwaltermodul 110 beinhaltet, das eine Funktionalität zur Bereitstellung von Diensten, auf die über das Netzwerk 108 zugegriffen werden kann, für die Nutzer von Clientvorrichtungen aufweist. Das Dienstverwaltermodul 110 kann beispielsweise Content oder eine Funktionalität, auf die über das Netzwerk 108 seitens einer Anwendung 112 der Clientvorrichtung 104 zugegriffen werden kann, übermitteln. Die Anwendung 112 kann als netzwerkfähige Anwendung, als Browser, als native Anwendung und dergleichen mehr, die Daten von dem Dienstanbietersystem 102 über das Netzwerk 108 bezieht, konfiguriert sein. Die Daten können von der Anwendung 112 dafür verwendet werden, einen Nutzer der Clientvorrichtung 104 in die Lage zu versetzen, mit dem Dienstanbietersystem 102 zu kommunizieren, und zwar beispielsweise zum Empfangen von Anwendungsaktualisierungen und Merkmalen, wenn das Dienstanbietersystem 102 eine Funktionalität zum Verwalten von Contentbearbeitungsanwendungen bereitstellt.
-
Im Kontext der beschriebenen Techniken beinhaltet die Anwendung 112 eine Funktionalität zum Bearbeiten von Digitalcontent, so beispielsweise von Digitalbildern 114. Beim dargestellten Beispiel beinhaltet die Anwendung 112 einen Patchabgleicher 116, der wenigstens teilweise in der Hardware der Clientvorrichtung 104 implementiert ist, um teilweise Patches für wenigstens einen Bildbearbeitungsvorgang abzugleichen. Ein exemplarischer Bildbearbeitungsvorgang, der das Patchabgleichen impliziert, ist das Füllen von Löchern lochhaltiger Digitalbilder. Allgemein bezeichnet ein „Loch“ einen Bereich von zusammenhängenden Pixeln eines Digitalbildes mit Werten, die die Abwesenheit von dargestelltem Content angeben. In diesen Bereichen kann der dargestellte Content entfernt sein, weshalb die entsprechenden Pixel Nullwerte, Leerwerte, Werte für weiße Pixel, Werte für schwarze Pixel und dergleichen mehr aufweisen. Es kann ein Loch in dem Digitalbild 114 als Folge dessen vorhanden sein, dass ein Nutzer der Clientvorrichtung 104 mit der Anwendung 112 interagiert, um ein Objekt aus einem Digitalbild zu entfernen, um einen Abschnitt des Bildes zu löschen, um einen Abschnitt aus dem Bild herauszuschneiden und dergleichen mehr. Alternativ oder zusätzlich kann die Anwendung 112 Löcher in die Digitalbilder einbringen, und zwar beispielsweise durch automatisches Entfernen von Abschnitten eines Bildes beispielsweise auf Grundlage einer Nutzerauswahl zum Entfernen von bestimmtem Content (beispielsweise von Anstößigem, markengeschütztem Content, Flecken und dergleichen mehr), einer Nutzerauswahl eines Autokorrekturmerkmals und dergleichen mehr. Der Patchabgleicher 116 ist zudem dafür konfiguriert, Patches der Digitalbilder 114 abzugleichen, um Bilder neueinzurichten (beispielsweise Beschneiden bzw. Freistellen, Zoomen, Skalieren), den optischen Übergang zwischen zwei verschiedenen Bildern (beispielsweise Videoframes) vorherzusagen, ein zukünftiges Frame eines Videos vorherzusagen und dergleichen mehr.
-
In Bezug auf das Lochfüllen ist gezeigt, wie die Clientvorrichtung 104 an der Anzeigevorrichtung 118 ein lochhaltiges Bild 120 mit einem Loch 122 anzeigt. Der Patchabgleicher 116 ist dafür konfiguriert, das Loch 122 des lochhaltigen Bildes 120 zu füllen, um ein gefülltes Digitalbild 124 herzustellen. Anstelle des Loches 122 beinhaltet das gefüllte Digitalbild 124 abgebildeten Content 126. Allgemein umfasst der abgebildete Content 126 Pixel mit Werten, die von Pixeln des lochhaltigen Bildes 120 entsprechend dem dargestellten Bildinhalt, also den Nichtlochpixeln des lochhaltigen Bildes 120, abgebildet werden. Bei einer oder mehreren Implementierungen generiert der Patchabgleicher 116 einen vorhergesagten Offset von Pixeln aus dem lochhaltigen Bild 120 zu den Pixeln des Loches 122. Dieser vorhergesagte Offset ist als Verschiebungsabbildung ausgebildet, die Vektoren beinhaltet, die eine Verschiebung von Bildpixeln des lochhaltigen Bildes 120 der Eingabe für den Patchabgleicher 116 an verschiedene bzw. andere Orte zur Füllung des Loches 122 darstellen. Der vorhergesagte Offset kann unter Verwendung einer Visualisierung des vorhergesagten Offsets visualisiert werden, die entsprechend einer Farbcodierungsreferenz 128 farbcodiert ist, die eine einzige Farbe eines Farbmodells (beispielsweise des RGB-Farbmodells (Rot-Grün-Blau RGB)) den Pixeln eines Bildes, das bearbeitet werden soll, beispielsweise eines lochhaltigen Bildes, zuordnet. Bei einem Beispiel werden Pixeln, die annähernd oben rechts in dem lochhaltigen Bild 120 befindlich sind, Farben oben rechts in der Farbcodierungsreferenz 128 zugeordnet. Gibt die Visualisierung eine Farbe oben rechts in der Farbcodierungsreferenz 128 für ein Lochpixel an, so entspricht dies einem Vektor, der angibt, dass ein Pixelwert des Pixels oben rechts in dem lochhaltigen Bild auf das Lochpixel abgebildet wird.
-
Der Patchabgleicher 116 bestimmt die Pixelwerte durch Vorhersagen und Abbilden im Wesentlichen in Echtzeit, um den abgebildeten Content 128 zu generieren, weshalb der abgebildete Content 126 ohne Nachbearbeitung zum restlichen Content des lochhaltigen Bildes 120 konsistent ist. Der Patchabgleicher 116 kann das Patchabgleichen zudem einsetzen, um mehrere Löcher eines lochhaltigen Bildes zu füllen und um Löcher für Bilder mit einer Vielzahl von Auflösungen zu füllen. Mit anderen Worten, der Patchabgleicher 116 kann unter Verwendung eines vollständig faltungstechnischen End-to-End-Neuronalnetzwerkes implementiert sein, das ein lochhaltiges Bild (mit einem oder mehreren Löchern) als Eingabe nimmt und einen vorhergesagten Pixeloffset ausgibt, der als Verschiebungsabbildung ausgebildet ist, um ein gefülltes Digitalbild (in dem jedes der Löcher gefüllt ist) herzustellen. Im Kontext anderer Bildbearbeitungsvorgänge, die das Patchabgleichen einsetzen, kann der Patchabgleicher 116 unter Verwendung eines vollständig faltungstechnischen End-to-End-Neuronalnetzwerkes implementiert sein, das das gerade bearbeitete Bild (beispielsweise ein Bild, das neueingerichtet wird) als Eingabe nimmt und einen vorhergesagten Pixeloffset ausgibt, der als Verschiebungsabbildung ausgebildet ist, um das bearbeitete Bild (in dem der Bildinhalt entsprechend dem Vorgang neuausgerichtet ist) herzustellen. Zusätzlich oder alternativ kann das Neuronalnetzwerk als Feed-Forward-Neuronalnetzwerk konfiguriert sein.
-
Um die Clientvorrichtung 104 mit der Anwendung 112, die den Patchabgleicher 116 aufweist, zu versehen, kann das Dienstanbietersystem 102 das Patchabgleichergenerierungssystem 106 einsetzen. Obwohl die Funktionalität des Patchabgleichergenerierungssystems 106 derart dargestellt ist, dass sie von dem Dienstanbietersystem 102 getrennt ist, kann diese Funktionalität auch als Teil des Dienstanbietersystems 102 integriert sein, zwischen verschiedenen Entitäten verteilt sein und dergleichen mehr. Zusätzlich oder alternativ kann die Funktionalität des Patchabgleichergenerierungssystems 106 gänzlich oder in Teilen auch als Teil der Clientvorrichtung 104 integriert sein. Das Patchabgleichergenerierungssystem 106 beinhaltet ein Trainingsverwaltermodul 130, das wenigstens teilweise in der Hardware einer Rechenvorrichtung implementiert ist, um unter anderem Deep Learning zum Generieren der Patchabgleicher 132, die in dem Speicher 134 dargestellt sind, einzusetzen. Der Patchabgleicher 116 kann beispielsweise einem der Patchabgleicher 132 entsprechen, die unter Verwendung einer Funktionalität des Trainingsverwaltermoduls 130 generiert werden.
-
Zum Generieren der Patchabgleicher 132 wird das Trainingsverwaltermodul 130 dafür konfiguriert, ein Offsetvorhersage-Netzwerk 136 zu trainieren. Allgemein stellt das Offsetvorhersage-Netzwerk 136 eine Funktionalität zum Generieren einer Vorhersage dar, die eine Verschiebungsabbildung aus einem Eingabebild, beispielsweise dem lochhaltigen Bild 120, generiert. Allgemein verwenden diese Verschiebungsabbildungen Vektoren zur Darstellung einer Abbildung von Pixeln in dem Eingabebild auf einen Bildort, um Patches in Verbindung mit dem Ausführen eines Bildbearbeitungsvorganges, so beispielsweise dem Lochfüllen, dem Bildneueinrichten, dem Vorhersagen eines optischen Überganges und dergleichen mehr, abzugleichen. Des Weiteren werden die vorhergesagten Offsets zur Visualisierung auf Grundlage einer Farbcodierungsreferenz, so beispielsweise der Farbcodierungsreferenz 128, codiert.
-
Zur Versetzung der Offsetvektoren der generierten Vorhersagen generiert das Trainingsverwaltermodul 130 ein Offsetanwendungsmodul 138. Das Trainingsverwaltermodul 130 kombiniert das Offsetanwendungsmodul 138 mit dem Offsetvorhersage-Netzwerk 136 zur Bildung der Patchabgleicher 132. Allgemein stellt das Offsetanwendungsmodul 138 eine Funktionalität zum Abbilden von Pixeln eines Eingabebildes auf betroffene Pixelorte und so zur Herstellung eines Ausgabebildes dar. Dieses Abbilden beruht auf einer Offsetvorhersage, die als Verschiebungsabbildung, die von dem Offsetvorhersage-Netzwerk 136 generiert wird, ausgebildet ist. Mit anderen Worten, die Verschiebungsabbildung dient als Eingabe für das Offsetanwendungsmodul 138. Das Offsetanwendungsmodul 138 verarbeitet einen Vektor der Verschiebungsabbildung und bestimmt ein Pixel des Eingabebildes, das der Vektor darstellt. Auf Grundlage hiervon bildet das Offsetanwendungsmodul 138 einen Pixelwert des Eingabebildpixels, der von dem Vektor dargestellt wird, auf ein Pixel eines Ausgabebildes, das dem Vektor entspricht, ab. Das Offsetanwendungsmodul 138 passt die Pixelwerte des Ausgabebildes sodann entsprechend der Abbildung an. Auf diese Weise sind die Patchabgleicher 132 dazu in der Lage, ein Bild, das bearbeitet werden soll, als Eingabe zu empfangen und ein Bild, bezüglich dessen die Vorgänge ausgeführt worden sind, als Ausgabe bereitzustellen.
-
Mit Blick auf die Netzwerkarchitektur ist das Trainingsverwaltermodul 130 dazu in der Lage, das Offsetvorhersage-Netzwerk 136 dafür zu trainieren, Offsets für das Patchabgleichen in Verbindung mit verschiedenen Vorgängen, so beispielsweise dem Lochfüllen, dem Bildneueinrichten, dem Vorhersagen eines optischen Überganges und dergleichen mehr, vorherzusagen. Das Offsetvorhersage-Netzwerk 136 lernt sodann, die Offsetvorhersagen für verschiedene Vorgänge zu generieren, und zwar auf Grundlage der Daten, die während des Trainings durch das Trainingsverwaltermodul 130 an das Netzwerk übermittelt werden. Ein Vorteil der Offsetvorhersage besteht darin, dass ermöglicht wird, dass das Offsetvorhersage-Netzwerk 136 generiert wird, um Patches für verschiedene Vorgänge abzugleichen. Das beschriebene Framework, das das Offsetvorhersage-Netzwerk 136 und das Offsetanwendungsmodul 138 kombiniert, ist daher effizienter als herkömmliche Systeme, da das beschriebene Framework bei verschiedenen Vorgängen anwendbar ist, wobei das bloße Ändern der Trainingsdaten bei der Konfigurierung des Offsetvorhersage-Netzwerkes 136 bei der Verwendung in Verbindung mit verschiedenen Bildbearbeitungsvorgängen effektiv sein kann. Zusätzlich führen die Patchabgleicher 132 diese Bildbearbeitungsvorgänge ohne Nutzung von Nachbearbeitungstechniken, so beispielsweise einer Farbanpassung, aus. Die Patchabgleicher, die entsprechend den beschriebenen Techniken konfiguriert sind, stellen daher im Betrieb keine weitere Belastung für Rechenvorrichtungsressourcen beim Ausführen von Nachbearbeitungstechniken dar.
-
Nach erfolgter Betrachtung einer exemplarischen Umgebung folgt nunmehr die Erläuterung einiger exemplarischer Details zu den Techniken der Vorhersage von Patchabgleichsabbildungen unter Verwendung eines Neuronalnetzwerkes in einer Digitalmedienumgebung entsprechend einer oder mehreren Implementierungen.
-
Vorhersagen von Patchverschiebungsabbildungen unter Verwendung eines Neuronalnetzwerkes
-
2 zeigt ein Beispiel 200 einer Farbcodierungsreferenz, die zum Visualisieren von Verschiebungsabbildungen zum Abbilden von Pixeln eines Eingabebildes auf diejenigen Pixel, die von einem Bildbearbeitungsvorgang betroffen sind, auf Grundlage von vorhergesagten Pixeloffsets verwendet werden. Insbesondere beinhaltet das dargestellte Beispiel die Farbcodierungsreferenz 128 von 1, dies jedoch detaillierter.
-
Allgemein umfasst die Farbcodierungsreferenz 128 mehrere Pixel. Ein Pixel der Farbcodierungsreferenz 128 wird einer eindeutigen Farbe im Vergleich zu jedem anderen Pixel der Farbcodierungsreferenz 128 zugeordnet. Die Pixel der Farbcodierungsreferenz 128 stellen zudem Pixel eines Digitalbildes, das in den Patchabgleicher 116 eingegeben wird, dar. Die Pixel der Farbcodierungsreferenz 128 können sodann unter Verwendung von Datenstrukturen derart implementiert werden, dass jedes Pixel der Farbcodierungsreferenz 128 einer dieser Datenstrukturen entspricht. Bei einer oder mehreren Implementierungen beinhaltet das Farbcodierungsreferenzpixeldatenschema Information, die die Farbe des jeweiligen Farbcodierungsreferenzpixels (beispielsweise RGB-Werte, einen hexadezimalen Wert, CMYK-Werte und dergleichen mehr) angibt, sowie Information, die diejenigen Pixel des Eingabebildes angibt, die von dem Farbcodierungsreferenzpixel dargestellt werden (beispielsweise einen Vektor, der das dargestellte Pixel angibt, und dergleichen mehr).
-
Bei einer oder mehreren Implementierungen entspricht die Information, die dem Pixel des Eingabebildes entspricht, einem Vektor. Bei einem Beispiel kann ein entsprechender Offsetvektor einer Verschiebungsabbildung eine Verschiebung eines Farbcodierungsreferenzpixels aus dem Zentrum der Farbcodierungsreferenz 128 angeben. Allgemein wird dieser Vektor im Zusammenhang mit dem Eingabebild verwendet, um das dargestellte Eingabebildpixel ausfindig zu machen, und zwar beispielsweise durch Bestimmen dessen, welches Pixel des Eingabebildes um den Betrag, der von dem Vektor angegeben wird, weg von dem Pixel, dem der Vektor entspricht, verschoben wird. Dieser Vektor kann zudem verwendet werden, um den Betrag anzugeben, um den ein Farbcodierungsreferenzpixel aus dem Zentrum der Farbcodierungsreferenz 128 verschoben wird, um die Farbe zur Visualisierung der Offsetvorhersage ausfindig zu machen.
-
Wie vorstehend angegeben, können die Farben der Farbcodierungsreferenzpixel unter Verwendung verschiedener Formate beschrieben werden, so beispielsweise RGB, hexadezimal, CMYK und dergleichen mehr. Allgemein ist die Farbcodierungsreferenz 128 dafür konfiguriert, gleichmäßig verteilte Pixel zu beinhalten, die einem Bereich von Farben entsprechen, der von der Farbcodierungsreferenz 128 angegeben wird. Man betrachte ein Beispiel, bei dem die Farbcodierungsreferenz 128 RGB-gefärbt ist. Bei diesem Beispiel können Pixel der Farbcodierungsreferenz 128 derart verteilt sein, dass sie das RGB-Farbmodell gleichmäßig darstellen. In jedem Fall sind die Visualisierungen, die die vorhergesagten Pixeloffsets angeben, auf Farben der Farbcodierungsreferenz 128 beschränkt.
-
Man betrachte hierbei das Farbcodierungsreferenzpixel 202 („CC-Referenzpixel 202“) des dargestellten Beispiels 200. In der Farbcodierungsreferenz 128 ist das CC-Referenzpixel 202 durch einen Kreis angegeben, der der Klarheit halber ein Einzelpixel der Farbcodierungsreferenz 128 darstellt. Eine Datenstruktur, die zur Implementierung des CC-Referenzpixels 202 verwendet werden kann, ist zudem dargestellt. Bei dem dargestellten Beispiel beinhaltet das CC-Referenzpixel 202 einen Farbwert 204 und eine Eingabebildreferenz 206. Gleichwohl können die Pixel der Farbcodierungsreferenz 128 auch auf andere Weise konfiguriert sein, ohne vom Wesen oder Umfang der hier beschriebenen Techniken abzugehen.
-
Mit Blick auf das dargestellte Beispiel 200 beschreibt der Farbwert 204 eine Farbe des CC-Referenzpixels 202 in der Farbcodierungsreferenz 128. Beim dargestellten Beispiel ist das CC-Referenzpixel 202 derart dargestellt, dass es grüne Farbe aufweist. Entsprechend beschreibt der Farbwert 204 diese grüne Farbe des CC-Referenzpixels 202. Das Offsetanwendungsmodul 138 bildet Vektoren der vorhergesagten Offsets, die unter Verwendung derselben grünen Farbe visualisiert werden, auf das CC-Referenzpixel 202 und nicht auf andere Pixel der Farbcodierungsreferenz 128 ab. Das Offsetanwendungsmodul 138 verwendet den Vektor zudem zum Bestimmen dessen, welches Pixel des Eingabebildes durch den Vektor dargestellt wird, und zwar derart, dass ein Pixelwert (beispielsweise ein oder mehrere Farbwerte) des dargestellten Pixels auf ein Pixel des Ausgabebildes, das dem Vektor entspricht, abgebildet werden kann.
-
Man betrachte in diesem Kontext die Eingabebildreferenz 206, die ein Pixel eines Eingabebildes, das das CC-Referenzpixel 202 darstellt, angibt. In dieser Darstellung 200 ist das CC-Referenzpixel 202 oben rechts in der Farbcodierungsreferenz 128 befindlich. Auf Grundlage hiervon gibt die Eingabebildreferenz 206 ein Pixel oben rechts in dem Eingabebild an. Wie vorstehend erwähnt worden ist, wird das Pixel des Eingabebildes durch einen Vektor beschrieben, und zwar beispielsweise durch einen Vektor, der auch zur Beschreibung der Verschiebung des CC-Referenzpixels 202 weg von dem CC-Zentralpixel 208 verwendet werden kann.
-
In jedem Fall identifiziert das Offsetanwendungsmodul 138 ein Pixel des Eingabebildes, das von dem Offsetvektor beschrieben wird. Dies kann auch in der Visualisierung einer Offsetvorhersage durch das CC-Referenzpixel 202 dargestellt werden. Augenscheinlich ist das Offsetanwendungsmodul 138 dazu in der Lage, Pixel des Eingabebildes zu identifizieren, die durch Pixel der Farbcodierungsreferenz 128 visualisiert werden, die wiederum Farben aufweisen, die nicht das Grün des CC-Referenzpixels 202 sind. Das Offsetanwendungsmodul 138 verwendet diese Information zur Abbildung von Werten der dargestellten Pixel des Eingabebildes auf Ausgabebildpixel, die von einem Vorgang, so beispielsweise dem Lochfüllen, betroffen sind. Man betrachte in diesem Kontext 3.
-
3 zeigt ein Beispiel 300 für lochhaltige Digitalbilder und entsprechende gefüllte Digitalbilder, die unter Verwendung vorhergesagter Pixeloffsets generiert werden, die eine Abbildung zwischen restlichen Pixeln der lochhaltigen Digitalbilder und Pixeln der Löcher angeben.
-
Insbesondere beinhaltet das dargestellte Beispiel 300 lochhaltige Musterbilder 302, 304, 306, 308, 310, 312, 314, 316 mit Löchern 318, 320, 322, 324, 326, 328, 330, 332. Das dargestellte Beispiel 300 beinhaltet zudem Visualisierungen 334, 336, 338, 340, 342, 344, 346, 348, die Offsetvorhersagen angeben, die als Verschiebungsabbildungen ausgebildet sind, sowie gefüllte Musterbilder 350, 352, 354, 356, 358, 360, 362, 364. Entsprechend den beschriebenen Techniken ist der Patchabgleicher 116, der als Kombination des Offsetvorhersage-Netzwerks 136 und des Offsetanwendungsmoduls 138 ausgebildet ist, dafür konfiguriert, diese gefüllten Bilder aus den lochhaltigen Bildern zu generieren.
-
Ist beispielsweise das lochhaltige Bildmuster 302 gegeben, so setzt der Patchabgleicher 116 das Offsetvorhersage-Netzwerk 136 ein, um eine Offsetvorhersage zu generieren, die mit der Visualisierung 334 visualisiert wird. Der Patchabgleicher 116 stellt sodann das lochhaltige Musterbild 302 und die Offsetvorhersage als Eingabe für das Offsetanwendungsmodul 138 bereit. Mit dieser Eingabe arbeitet das Offsetanwendungsmodul 138, wie vorstehend und nachstehend beschrieben, um das gefüllte Musterbild 350 auszugeben, das lochfüllenden Content 366 anstelle des Loches 318 beinhaltet. Bei diesem Beispiel ist die Visualisierung 334 mit einem Kasten 368 bezeichnet, der den Pixeln des Loches 318 und den Pixeln des lochfüllenden Contents 366 entspricht. Zusätzlich entsprechen gefüllte Pixel 370 des lochfüllenden Contents 366 farbcodierten Offsetpixeln 372 der Visualisierung 334. Das Offsetanwendungsmodul 138 verwendet die durch die Visualisierung 334 visualisierten Vektoren zum Abbilden von Pixeln des lochhaltigen Musterbildes 302 auf die Pixel des Loches 318 und stellt so den lochfüllenden Content 366 her.
-
Zum Abbilden dieser Pixel bestimmt das Offsetanwendungsmodul 138 Vektoren, die durch die farbcodierten Offsetpixel 372 angegeben sind. Das Offsetanwendungsmodul 138 ist zudem dafür konfiguriert, Pixel der Farbcodierungsreferenz 128, die durch den Offsetvektor angegeben werden, zu identifizieren, um beispielsweise die Visualisierung 334 zu generieren. Bei dem dargestellten Beispiel 300 stellen Abgleichsfarbpixel 334 die Pixel der Farbcodierungsreferenz 128 dar, die mit Vektoren, die durch die farbcodierten Offsetpixel 372 angegeben sind, abgeglichen sind. Die Abgleichsfarbpixel 374 geben zudem Pixel des lochhaltigen Musterbildes 302 an. Die Abgleichsfarbpixel 374 sind nahe an der rechten Seite und genau über der vertikalen Mitte der Farbcodierungsreferenz 128 befindlich. Dieser Ort der Abgleichsfarbpixel 374 kann durch die Offsetvektoren, wie vorstehend beschrieben worden ist, beschrieben werden. In jedem Fall stellen die Abgleichsfarbpixel 374 Eingabebildpixel 376 nahe an der rechten Seite und genau über der vertikalen Mitte des lochhaltigen Musterbildes 302 dar. Das Offsetanwendungsmodul 138 kann die Eingabebildpixel 376 auf Grundlage der durch den Offsetvektor angegebenen Verschiebung identifizieren. Unter dieser Voraussetzung verwendet das Offsetanwendungsmodul 138 die Werte der Eingabebildpixel 376 zum Einstellen von Werten der gefüllten Pixel 370. Mit anderen Worten, die Pixelwerte der Eingabebildpixel 376 werden auf die gefüllten Pixel 370 abgebildet.
-
Die anderen gefüllten Bilder des dargestellten Beispiels 300 sind, obwohl nicht mit Bezugszeichen bezeichnet, ebenfalls mit jeweiligem lochfüllendem Content dargestellt. Der lochfüllende Content dieser Bilder wird von dem Patchabgleicher 116 auf dieselbe Weise, wie vorstehend beschrieben worden ist, generiert. Betrachtet werde nunmehr ein exemplarisches System entsprechend einer oder mehreren Implementierungen.
-
4 zeigt eine exemplarische Implementierung 400, bei der ein Patchabgleichssystem ein Ausgabedigitalbild unter Verwendung vorhergesagter Pixeloffsets generiert, die eine Abbildung zwischen Pixeln eines Eingabedigitalbildes und Pixeln, die von einem Vorgang betroffen sind, der in Bezug auf das Eingabedigitalbild durchgeführt wird, angeben. Bei dem dargestellten Beispiel ist der Patchabgleicher 116 von 1 detaillierter dargestellt und dient als wenigstens ein Teil des Patchabgleichssystems. Der Patchabgleicher 116 ist zudem derart dargestellt, dass er das Offsetvorhersage-Netzwerk 136 und das Offsetanwendungsmodul 138 beinhaltet. Wie vorstehend angegeben worden ist, bildet das Trainingsverwaltermodul 130 den Patchabgleicher 116 als Kombination aus beiden.
-
Bei dem Beispiel 200 ist der Patchabgleicher 116 derart gezeigt, dass er ein Eingabedigitalbild 402 bezieht. Das Eingabedigitalbild 402 entspricht einem Bild, bezüglich dessen ein Bildbearbeitungsvorgang, der ein Patchabgleichen impliziert, durchgeführt wird. Bei einem Beispiel kann ein Nutzer der Clientvorrichtung 104 eine Option über die Anwendung 112 auswählen, um einen Vorgang, der das Patchabgleichen impliziert, in Bezug auf das Eingabedigitalbild 402 durchzuführen, so beispielsweise das Füllen eines Loches des Eingabedigitalbildes 402, das Neuausrichten (beispielsweise Beschneiden bzw. Freistellen, Zoomen, Skalieren) des Eingabedigitalbildes 402, das Vorhersagen eines optischen Überganges zwischen dem Eingabedigitalbild 402 und einem anderen Digitalbild (beispielsweise dort, wo das Eingabedigitalbild 402 und das andere Digitalbild Frames eines Videos entsprechen), das Vorhersagen eines zukünftigen Frames eines Videos aus dem Eingabedigitalbild 402 und dergleichen mehr.
-
Allgemein betreffen diese Vorgänge Pixel des Eingabedigitalbildes 402. Bei einem Beispiel des Lochfüllens sind beispielsweise diejenigen Pixel, die einem Loch des Eingabedigitalbildes 402 entsprechen, von dem Vorgang betroffen. Es werden also beispielsweise denjenigen Pixeln, die dem Loch entsprechen, Werte zum Füllen des Loches mit Content zugewiesen. In diesem Kontext ist der Patchabgleicher 116 zudem derart dargestellt, dass er ein Vorgangsmaskenmodul 404 aufweist, das eine Funktionalität zum Generieren der Bearbeitungsvorgangsmaske 406 darstellt. Die Bearbeitungsvorgangsmaske 406 ist dafür konfiguriert, diejenigen Pixel in dem Eingabedigitalbild 402 anzugeben, die von dem Vorgang betroffen sind, der in Bezug auf das Eingabedigitalbild 402 durchgeführt wird.
-
Um dies anzugeben, kann die Bearbeitungsvorgangsmaske 406 zudem einen Wert für jedes Pixel des Eingabedigitalbildes 402 beinhalten, der angibt, ob das Pixel von dem Vorgang betroffen ist oder nicht. Beinhalten kann die Bearbeitungsvorgangsmaske 406 beispielsweise den Wert „1“ für Pixel des Eingabedigitalbildes 402, die von dem Vorgang nicht betroffen sind, und den Wert „0“ für Pixel des Eingabedigitalbildes 402, die von dem Vorgang betroffen sind, also beispielsweise Pixel, die einem zu füllenden Loch des Eingabedigitalbildes 402 entsprechen. Beinhalten kann die Bearbeitungsvorgangsmaske 406 alternativ den Wert „0“ für Pixel des Eingabedigitalbildes 402, die von dem Vorgang nicht betroffen sind, und den Wert „1“ für Pixel des Eingabedigitalbildes 402, die von dem Vorgang betroffen sind. Die Bearbeitungsvorgangsmaske 406 kann die betroffenen Pixel des Eingabedigitalbildes 402 auf verschiedene Arten angeben, ohne vom Wesen oder Umfang der hier beschriebenen Techniken abzugehen.
-
In jedem Fall empfängt das Offsetvorhersage-Netzwerk 136 das Eingabedigitalbild 402 und die Bearbeitungsvorgangsmaske 406 als Eingabe. Das Offsetvorhersage-Netzwerk 136 generiert eine Offsetvorhersage 408 als Verschiebungsabbildung aus dem Eingabedigitalbild 402 und der Bearbeitungsvorgangsmaske 406. Die Offsetvorhersage 408 beinhaltet eine Offsetvorhersage 410 des betroffenen Pixels. Die Offsetvorhersage 410 des betroffenen Pixels entspricht den Pixeln des Eingabedigitalbildes 402, die von dem Vorgang betroffen sind. Insbesondere entspricht die Offsetvorhersage 410 des betroffenen Pixels eines bestimmten Pixels einer Abbildung eines Quellenpixels des Eingabedigitalbildes 402 auf das bestimmte Pixel. Man betrachte ein Beispiel, bei dem der durchgeführte Vorgang ein Vorgang des Lochfüllens ist. Bei diesem Beispiel beinhaltet die Offsetvorhersage 410 des betroffenen Pixels für Pixel eines bestimmten Loches Offsetvektoren, die Pixel des Eingabedigitalbildes 402 angeben. Diese Abbildung wird dafür verwendet, Werte der Pixel des bestimmten Loches, die leeren und/oder entfernten Content angeben, derart zu modifizieren, dass sie anstatt dessen abgebildete Patches aus dem Eingabedigitalbild 402 angeben. Insbesondere generiert das Offsetvorhersage-Netzwerk 136 die vorhergesagten Offsets auf Grundlage der dargestellten Contenteigenschaften, die während des Trainings gelernt werden, und teilweise auf Grundlage von Pixelwerten der Pixel des Eingabedigitalbildes 402, die von dem Vorgang nicht betroffen sind.
-
Das Offsetanwendungsmodul 138 empfängt die Offsetvorhersage 408 mit der Offsetvorhersage 410 des betroffenen Pixels. Das Offsetanwendungsmodul 138 gleicht Patches des Eingabedigitalbildes 402 mit den betroffenen Pixeln ab, um die Werte jener Pixel auf Grundlage der Offsetvektoren, die in der Offsetvorhersage 408 beinhaltet sind, zu modifizieren. Das Offsetanwendungsmodul 138 kann diese Patches abgleichen, wie detailliert anhand 2 und 3 beschrieben worden ist. Das Offsetanwendungsmodul 138 stellt das Ausgabedigitalbild 412 her, indem Werte von Pixeln des Eingabedigitalbildes 402 auf diejenigen Pixel abgebildet werden, die von dem Bildbearbeitungsvorgang betroffen sind, sowie entsprechend der Offsetvorhersage 408 und insbesondere entsprechend der Offsetvorhersage 410 des betroffenen Pixels. Gerade durch das Generieren der Offsetvorhersage 408 für einen gegebenen Vorgang und das Abbilden von Werten auf Pixel, die von dem Vorgang betroffen sind, entsprechend dem Offset kann der Patchabgleicher 116 das Ausgabedigitalbild 412 ohne Nachbearbeitung, also beispielsweise Mischen bzw. Blending, Farbanpassung und dergleichen mehr, ausgeben.
-
Um Eigenschaften dieser verschiedenen Vorgänge zu lernen und daher Offsetvorhersagen als Verschiebungsabbildungen zu generieren, kann das Trainingsverwaltermodul 130 das Offsetvorhersage-Netzwerk 136 dadurch trainieren, dass vorgangsspezifische Trainingsbilder an es übermittelt werden. Das Framework des Offsetvorhersage-Netzwerkes 136 unterstützt diesen vorgangsspezifischen Typ von Training. Das vorgangsspezifische Training, das von dem Framework unterstützt wird, ermöglicht zudem, dass Offsetvorhersage-Netzwerke die Offsetvorhersagen generieren, um verschiedene Bildbearbeitungsvorgänge auszuführen. Zur weiteren Erläuterung des Netzwerkes entsprechend einer oder mehreren Implementierungen betrachte man nun 5.
-
5 zeigt ein Beispiel 500 für eine Implementierung eines Patchabgleichsnetzwerkframeworks, das unter Verwendung des Deep Learning trainiert ist und das Offsetvorhersagen, die als Verschiebungsabbildungen ausgebildet sind, generiert. Entsprechend den beschriebenen Techniken stellt das dargestellte Beispiel 500 ein vollständig faltungstechnisches Netzwerkframework dar.
-
Das dargestellte Beispiel 500 beinhaltet ein lochhaltiges Eingabedigitalbild 502, das als Eingabe für das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 dient. Bei einer oder mehreren Implementierungen ist das Offsetvorhersage-Netzwerk 136 als vollständig faltungstechnisches Offsetvorhersage-Neuronalnetzwerk 504 konfiguriert und entspricht diesem daher. Des Weiteren kann das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 als Feed-Forward-Neuronalnetzwerk konfiguriert sein. Bei einer oder mehreren Implementierungen beinhaltet das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 Zwischenstreckungsfaltungsschichten (intermediate dilated convolution layers). Das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 beinhaltet beispielsweise vier derartige Streckungsfaltungsschichten. Das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 weist zudem Kanäle auf, deren Anzahl in Abhängigkeit vom Trainingsdatensatz variiert, also beispielsweise davon abhängig ist, ob der Datensatz Bilder, die zum Trainieren des Netzwerkes für Vorgänge des Lochfüllens ausgewählt sind, Bilder, die zum Trainieren des Netzwerkes für Vorgänge des Bildneueinrichtens ausgewählt sind, und dergleichen mehr umfasst. Trotz dieser Variation kann das Trainingsverwaltermodul 130 dafür konfiguriert sein, diese Kanalnummern in Sätzen auszuwählen, also beispielsweise in Sätzen von {32, 64, 128, 256}. Zusätzlich konfiguriert das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 mit vollständig verbundenen Schichten an einem Ende bei Konfigurationen mit Diskriminatornetzwerk.
-
Des Weiteren stellt das dargestellte Beispiel 500 Visualisierungen der Offsetvorhersage 506 und der Offsetvorhersage 508 des betroffenen Pixels dar. Die Offsetvorhersage 508 des betroffenen Pixels umfasst einen Abschnitt der Offsetvorhersage 506, der betroffenen Pixeln 510 (beispielsweise dem Loch) des lochhaltigen Eingabedigitalbildes 502 entspricht. Die Visualisierung der Offsetvorhersage 508 des betroffenen Pixels ist entsprechend den beschriebenen Techniken (beispielsweise entsprechend der Farbcodierungsreferenz 128) farbcodiert und gibt die Verschiebungsabbildung an, die von dem vollständig faltungstechnischen Offsetvorhersage-Neuronalnetzwerk 504 ausgegeben wird. Insbesondere wird die Offsetvorhersage 508 des betroffenen Pixels von einer Ausgabeschicht des vollständig faltungstechnischen Offsetvorhersage-Neuronalnetzwerkes 504 ausgegeben.
-
Im Vergleich hierzu entspricht das gefüllte Digitalbild 512 der Ausgabe des Offsetanwendungsmoduls 138 und daher der Ausgabe des Netzwerkframeworks. Entsprechend ist das dargestellte Netzwerkframework ein End-to-End-Deep-Neuronalnetzwerk, das Bilder, die gerade bearbeitet werden, als Eingabe nimmt und Bilder ausgibt, an denen der Vorgang ausgeführt worden ist. Insbesondere wird der Bildbearbeitungsvorgang ausgeführt, indem die vorhergesagten Offsets an Pixeln, die von dem Vorgang betroffen sind, ausgeführt werden. Das auf diese Weise erfolgende Konfigurieren des Frameworks ermöglicht, dass das Framework dafür eingesetzt werden kann, Bildbearbeitungsvorgänge auszuführen, um bearbeitete Digitalbilder herzustellen, die randkonsistenter, semantisch vernünftiger und optisch ansprechender sind, als dies bei herkömmlichen Techniken der Fall ist. Diese Konfigurierung stellt Bilder zudem effizienter als herkömmliche Techniken, also beispielsweise weniger zeit- und ressourcenintensiv, her. Bei einer oder mehreren Implementierungen generiert und trainiert das Trainingsverwaltermodul 130 das Framework des dargestellten Beispiels 500 folgendermaßen.
-
Entsprechend den beschriebenen Techniken generiert das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 auf Grundlage eines differenzierbaren Patchabgleichskerns (patch matching kernel). Hierbei stellt das dargestellte Netzwerkframework 500 eine stabilere Konvergenz als herkömmliche Techniken auf Grundlage eines generativen adversativen Netzwerkes (generative adversarial network) bereit. Daher wird das dargestellte Netzwerkframework ohne Einsatz von generativen adversativen Trainingstechniken trainiert. Während des Trainings konfiguriert das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 dafür, Offsetvorhersagen entsprechend einer patchbasierten Zielfunktion (objective function) zu generieren. Als Teil hiervon baut das Trainingsverwaltermodul 130 eine patchbasierte Trainingsdatenstruktur für jedes der Trainingsbilder auf.
-
In der nachfolgenden Diskussion ist die Höhe eines Trainingsbildes mit dem Term H bezeichnet, während die Breite des Trainingsbildes mit dem Term W bezeichnet wird. Bei einer oder mehreren Implementierungen werden Pixelfarben der Trainingsbilder unter Verwendung des RGB-Farbmodells (Rot-Grün-Blau RGB) dargestellt und weisen daher Werte für drei Kanäle auf. Zusätzlich kann das Trainingsverwaltermodul
130 für jedes Pixel eines Trainingsbildes einen exakten Patch bestimmen, der an dem Pixel zentriert ist. Bei einer oder mehreren Implementierungen weist der bestimmte exakte Patch die Dimensionen von 7 mal 7 auf. Bei diesem Beispiel kann das Trainingsverwaltermodul
130 daher eine patchbasierte Trainingsdatenstruktur für ein Bild mit den folgenden Dimensionen aufbauen:
-
Bei einer oder mehreren Implementierungen entfernt das Trainingsverwaltermodul 130 willkürlich Ground-Truth-Patches aus Trainingsbildern, um Löcher in den Trainingsbildern herzustellen, und zwar beispielsweise dann, wenn das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 für das Lochfüllen trainiert. Das Trainingsverwaltermodul 130 ist dafür konfiguriert, die Trainingsbilder auf andere Weise in Abhängigkeit von einem Vorgang zu modifizieren, für den das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 trainiert wird. Mit Blick auf das Beispiel des Lochfüllens stellt das Trainingsverwaltermodul 130 indes lochhaltige Trainingsbilder für das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 bereit. Während des Trainings stellt das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 Offsetvorhersagen her, die als Verschiebungsabbildungen für diese lochhaltigen Trainingsbilder ausgebildet sind, wobei das Offsetanwendungsmodul 138 gefüllte Digitalbilder entsprechend den Offsetvorhersagen herstellt.
-
Das Trainingsverwaltermodul 130 ist dafür konfiguriert, diese gefüllten Bilder, die von dem Framework ausgegeben werden, mit den ursprünglichen Trainingsbildern, also beispielsweise den Bildern, aus denen die Ground-Truth-Patches, entfernt sind, zu vergleichen. Zusätzlich ist das Trainingsverwaltermodul 130 dafür konfiguriert, den generierten Content auf Grundlage des Abbildens von Pixeln auf die Löcher entsprechend den Offsetvorhersagen zum Füllen der Löcher mit den Ground-Truth-Patches, die zur Herstellung der Löcher entfernt worden sind, zu vergleichen. Bei einer oder mehreren Implementierungen vergleicht das Trainingsverwaltermodul 130 die Ground-Truth-Patches mit dem lochfüllenden Content (oder dem Content der betroffenen Pixel für andere Vorgänge) auf Grundlage eines I1-Verlustes. Bei einem Beispiel kann dieser Verlust einem I1-Abstand entsprechen, der sich auf Grundlage von H × W × 7 × 7 Patches der ursprünglichen Trainingsbilder und H × W × 7 × 7 Patches, die aus den Ausgabebildern, die sich aus den Offsetvorhersagen ergeben, extrahiert werden, ergibt. Das Trainingsverwaltermodul 130 stellt eine Rückmeldung für das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 mittels Rückverfolgung (back propagation) auf Grundlage des berechneten I1-Abstandes bereit. Die Verwendung der Zielfunktion, die die H × W × 7 × 7 Patches impliziert, ist zudem beim Verbessern der Schärfe der Bilder, die von dem vollständig faltungstechnischen Offsetvorhersage-Neuronalnetzwerk 504 ausgegeben werden, effektiv. Mit anderen Worten, die Verwendung der H × W × 7 × 7 Patches ist beim Herstellen von Bildern effektiv, die weniger verschwommen sind, als dies bei Techniken der Fall ist, die H × W Patches verwenden.
-
Des Weiteren ist das Trainingsverwaltermodul 130 dafür konfiguriert, einen Rückverfolgungsalgorithmus (back-propagation algorithm) einzusetzen, um das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 zu trainieren. Für den Einsatz derartiger Rückverfolgungsalgorithmen verwendet das Trainingsverwaltermodul 130 eine differenzierbare Technik zum Abtasten (sample) von Pixeln der Offsetvorhersagen, die während des Trainings generiert werden. Bei einer oder mehreren Implementierungen tastet das Trainingsverwaltermodul 130 diese Pixel unter Verwendung von Float-Werten der Offsets, die von dem vollständig faltungstechnischen Offsetvorhersage-Neuronalnetzwerk 504 ausgegeben werden, und einer bilinearen Interpolation ab.
-
Allgemein trainiert das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 dafür, Offsetvorhersagen zu generieren, die bei Anwendung auf die Eingabebilder zu Ausgabebildern mit randkonsistentem, semantisch vernünftigem und optisch ansprechendem Content führen. Durch den Trainingsprozess verbessert das Trainingsverwaltermodul 130 die ausgegebenen Offsetvorhersagen, sodass die Ausgabebilder nach dem Training einen Content aufweisen, der randkonsistenter, semantisch vernünftiger und optisch ansprechender ist, als dies bei Bildern der Fall ist, die zu Beginn des Trainings ausgegeben werden. Um dies zu bewerkstelligen, nutzt das Trainingsverwaltermodul 130 einen Operator, um die Offsetvorhersagen auf die ursprünglichen Trainingsbilder, beispielsweise vor Einbringung von Löchern, anzuwenden. Bei einer oder mehreren Implementierungen setzt das Trainingsverwaltermodul 130 einen Abtastkern (sampling kernel) als derartigen Operator ein.
-
Bei der Diskussion eines exemplarischen Abtastkerns bezeichnet der Term o
i,j einen Offset eines Bildpixels, das an der x-Koordinate i und der y-Koordinate j befindlich ist. Bei einer oder mehreren Implementierungen berechnet das Trainingsverwaltermodul
130 den Offset o
i,j für das Pixel, das bei (i, j) befindlich ist, durch Interpretieren einer bilinearen Interpolation nahegelegener Pixel. Bei der vorliegenden Diskussion bezeichnet der Term I einen Boden (floor) des Offsets o, wobei l = floor(o) gilt. Des Weiteren ist der Term u gleichwertig zu „Offsetboden I plus 1, sodass u = l + 1 gilt. Der Term „diff“ bezeichnet die Differenz zwischen dem Offset o und dem Offsetboden I, wobei diff = o - l gilt. Der Term „neg_dift“ bezeichnet die Differenz zwischen „1 und der Offset-und-Boden-Differenz „diff“, sodass neg_diff = 1,0 - diff gilt. Hierbei setzt das Trainingsverwaltermodul
130 bei einer oder mehreren Implementierungen den nachfolgenden Abtastkern ein.
-
Hierbei bezeichnet der Term S(o) das Pixelabtasten des Offsets o. Durch Verwendung dieses Abtastkerns setzt das Trainingsverwaltermodul 130 ein differenzierbares Abtasten der Pixel der Offsetvorhersagen, die während des Trainings generiert werden, ein. Gerade durch dieses differenzierbare Abtasten der Offsetvorhersage trainiert das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 vollständig im End-to-End-Sinne.
-
Nach erfolgter Diskussion exemplarischer Details zu den Techniken des Vorhersagens von Patchverschiebungsabbildungen unter Verwendung eines Neuronalnetzwerkes werden nunmehr einige exemplarische Prozeduren zur Darstellung zusätzlicher Aspekte der Techniken betrachtet.
-
Exemplarische Prozeduren
-
Der vorliegende Abschnitt beschreibt exemplarische Prozeduren zum Vorhersagen von Patchverschiebungsabbildungen unter Verwendung eines Neuronalnetzwerkes in einer Digitalmedienumgebung bei einer oder mehreren Implementierungen. Aspekte der Prozeduren können in Hardware, Firmware oder Software oder auch in einer Kombination hieraus implementiert sein. Die Prozeduren sind als Satz von Blöcken gezeigt, die Vorgänge spezifizieren, die von einer oder mehreren Vorrichtungen durchgeführt werden und die nicht notwendigerweise auf diejenigen Reihenfolgen beschränkt sind, die zum Durchführen der Vorgänge durch die jeweiligen Blöcke gezeigt sind. Bei wenigstens einigen Implementierungen werden die Prozeduren von einer geeignet konfigurierten Vorrichtung, so beispielsweise der Clientvorrichtung 104 von 1, durchgeführt, die sich eines Patchabgleichers 116 oder eines Patchabgleichergenerierungssystems 106, das das Trainingsverwaltermodul 130 verwendet, bedient.
-
6 zeigt eine exemplarische Prozedur 600, bei der ein Bildbearbeitungsvorgang an einem Digitalbild ausgeführt wird, indem Pixel des Digitalbildes auf diejenigen Pixel, die von dem Vorgang betroffen sind, entsprechend einer Offsetvorhersage, die als Verschiebungsabbildung ausgebildet ist, abgebildet werden.
-
Es wird ein Digitalbild empfangen, bezüglich dessen ein Bildbearbeitungsvorgang durchgeführt werden soll (Block 602). Bei einem Beispiel bezieht der Patchabgleicher 116 das lochhaltige Musterbild 302 mit dem Loch 318. Bei diesem Beispiel bezieht der Patchabgleicher 116 das lochhaltige Musterbild 302, um ein Lochfüllen als Bildbearbeitungsvorgang durchzuführen. Obwohl die Prozedur 600 anhand des Beispiels „Lochfüllen“ erläutert wird, sollte einsichtig sein, dass der Bildbearbeitungsvorgang verschiedenen Vorgängen entsprechen kann, ohne vom Wesen oder Umfang der hier beschriebenen Techniken abzugehen, so beispielsweise dem Bildneueinrichten (beispielsweise Beschneiden bzw. Freistellen, Zoomen, Skalieren), dem Vorhersagen eines optischen Überganges zwischen Videobildern, dem Vorhersagen zukünftiger Frames eines Videos aus dem empfangenen Digitalbild und dergleichen mehr.
-
Das Digitalbild wird an ein Patchabgleichsframework übermittelt, das ein Offsetvorhersage-Neuronalnetzwerk und ein Offsetanwendungsmodul kombiniert (Block 604). Bei einem Beispiel übermittelt der Patchabgleicher 116 das lochhaltige Musterbild 302 an ein Patchabgleichsframework, das das Offsetvorhersage-Netzwerk 136 und das Offsetanwendungsmodul 138 kombiniert. Das Offsetvorhersage-Netzwerk 136 und das Offsetanwendungsmodul 138 können von dem Trainingsverwaltermodul 130 kombiniert werden.
-
Eine Offsetvorhersage, die als Verschiebungsabbildung ausgebildet ist, wird von dem Offsetvorhersage-Neuronalnetzwerk des Patchabgleichsframeworks generiert (Block 606). Entsprechend den hier erläuterten Prinzipien umfasst die Verschiebungsabbildung Offsetvektoren, die eine Verschiebung von Bildpixeln des eingegebenen Digitalbildes an verschiedene bzw. andere Orte zur Durchführung des Bildbearbeitungsvorganges umfasst. Bei einem Beispiel generiert das Offsetvorhersage-Netzwerk 136 die Offsetvorhersage, die durch die Visualisierung 334 angegeben ist. Die Offsetvektoren der von der Visualisierung 334 angegebenen Offsetvorhersage stellen Pixel des lochhaltigen Musterbildes 302 dar. Die Vektoren, die von den farbcodierten Offsetpixeln 332 angegeben werden, stellen beispielsweise Eingabebildpixel 376 dar. Die Pixel des lochhaltigen Bildmusters 302, die die Farben der Visualisierung darstellen, sind durch die Farbcodierungsreferenz 128 definiert.
-
Die Offsetvektoren der Offsetvorhersage, die den von dem Bildbearbeitungsvorgang betroffenen Bildpixeln entsprechen, werden bestimmt (Block 608). Bei einem Beispiel bestimmt das Offsetanwendungsmodul 138, dass die durch den Kasten 368 der Visualisierung 334 angegebenen Vektoren den Pixeln des Loches 318 entsprechen. Diese Offsetvektoren beinhalten diejenigen Vektoren, die durch die farbcodierten Offsetpixel 372 der Visualisierung 334 angegeben werden. Bei diesem Beispiel sind die Pixel des Loches 318 diejenigen Bildpixel, die von dem Bildbearbeitungsvorgang, also beispielsweise dem Vorgang des Lochfüllens, betroffen sind.
-
Pixelwerte der Bildpixel, die durch die Vektoren dargestellt werden, werden von dem Offsetanwendungsmodul auf die betroffenen Bildpixel abgebildet (Block 610). Bei einem Beispiel identifiziert das Offsetanwendungsmodul 138 die Eingabebildpixel 376 durch Verweisen auf die Vektoren, die in der Visualisierung 334 durch die farbcodierten Offsetpixel 372 angegeben sind. Auf Grundlage hiervon bildet das Offsetanwendungsmodul 138 Pixelwerte der Eingabebildpixel 376 auf die gefüllten Pixel 370 ab.
-
Die Pixelwerte der betroffenen Bildpixel werden von dem Offsetanwendungsmodul auf die abgebildeten Pixelwerte eingestellt (Block 612). Bei einem Beispiel stellt das Offsetanwendungsmodul 138 Werte der Pixel des Loches 318 auf die bei Block 610 abgebildeten Pixelwerte ein. Ein bearbeitetes Digitalbild, an dem der Bildbearbeitungsvorgang durchgeführt worden ist, wird als Ausgabe von dem Patchabgleichsframework empfangen (Block 614). Entsprechend den hier erläuterten Prinzipien wird der Bildbearbeitungsvorgang in Bezug auf das Digitalbild durchgeführt, um das bearbeitete Digitalbild zu generieren, indem die Pixelwerte der betroffenen Pixel auf die abgebildeten Pixelwerte eingestellt werden. Bei einem Beispiel empfängt die Anwendung 112 das gefüllte Musterbild 350 als Ausgabe von dem Patchabgleicher 116. Das vorerwähnte Lochfüllen ist in Bezug auf das lochhaltige Musterbild 302 durchgeführt worden, um das gefüllte Musterbild 350 herzustellen, indem die Werte der betroffenen Pixel bei Block 612 eingestellt werden. Das gefüllte Musterbild 350 wird von dem Patchabgleicher 116 ohne Nachbearbeitung des gefüllten Musterbildes 350 aus der Ausgabe durch das Patchabgleichsframework empfangen. Auf diese Weise kann das Patchabgleichsframework als vollständig faltungstechnisches End-to-End-Framework gedeutet werden. Das Patchabgleichsframework kann zudem derart implementiert sein, dass das jeweilige Neuronalnetzwerk ein Feed-Forward-Neuronalnetzwerk ist.
-
7 stellt eine exemplarische Prozedur 700 dar, bei der ein Netzwerkframework gebildet ist, um Bildbearbeitungsvorgänge unter Verwendung eines Patchabgleichens auszuführen, das auf Offsetvorhersagen beruht, die als von dem Framework generierte Verschiebungsabbildungen ausgebildet sind.
-
Ein Offsetvorhersage-Neuronalnetzwerk wird mit einem Offsetanwendungsmodul kombiniert, um ein Patchabgleichsframework zu bilden (Block 702). Bei einem Beispiel kombiniert das Trainingsverwaltermodul 130 das vollständig faltungstechnische Offsetvorhersage-Neuronalnetzwerk 504 mit dem Offsetanwendungsmodul 138, um das Patchabgleichsframework des dargestellten Beispiels 500 zu bilden.
-
Es werden Trainingsbilder auf Grundlage eines bestimmten Bildbearbeitungsvorganges, für den das Patchabgleichsframework eingesetzt werden soll, modifiziert (Block 704). Bei einem Beispiel entfernt das Trainingsverwaltermodul 130 zum Trainieren des Frameworks für das Lochfüllen Bereiche aus jedem Bild eines oder mehrerer Sätze von Trainingsbildern. Das Trainingsverwaltermodul 130 entfernt beispielsweise Bereiche aus Trainingsbildern (nicht gezeigt), um die Löcher 318, 320, 322, 324, 326, 328, 330, 332 einzubringen und so die lochhaltigen Musterbilder 302, 304, 306, 308, 310, 312, 314, 316 herzustellen. Bei diesem Beispiel sind die lochhaltigen Musterbilder von den ursprünglichen Versionen ohne Löcher ausgehend modifiziert worden. Es sollte einsichtig sein, dass das Trainingsverwaltermodul 130 die Trainingsbilder auf Grundlage des bestimmten Bildbearbeitungsvorganges, für den das Patchabgleichsframework eingesetzt werden soll, modifiziert. Das Trainingsverwaltermodul 130 modifiziert die Trainingsbilder bei Szenarien, bei denen das Patchabgleichsframework zum Implementieren von Beschneidungs- bzw. Freistellvorgängen eingesetzt wird, auf andere Weise. Das Trainingsverwaltermodul 130 ist dafür konfiguriert, Trainingsbilder auf verschiedene Weisen zu modifizieren, um das Patchabgleichsframework für das Ausführen verschiedener Bildbearbeitungsvorgänge zu trainieren, ohne vom Wesen oder Umfang der beschriebenen Techniken abzugehen.
-
Die modifizierten Trainingsbilder werden an das Patchabgleichsframework übermittelt (Block 706). Entsprechend den hier erläuterten Prinzipien stellt das Patchabgleichsframework die übermittelten Bilder als Eingabe für das Offsetvorhersage-Neuronalnetzwerk bereit. Bei einem Beispiel übermittelt das Trainingsverwaltermodul 130 die bei Block 704 modifizierten Trainingsbilder an das Patchabgleichsframework des dargestellten Beispiels 500. Hierdurch initiiert das Trainingsverwaltermodul 130 das Training dieses Frameworks. Während des Trainings lernt das Framework das Generieren von Offsetvorhersagen, die als Verschiebungsabbildungen ausgebildet sind, um den bestimmten Bildbearbeitungsvorgang in Bezug auf die modifizierten Trainingsbilder auszuführen. Dieses Lernen beruht teilweise auf dem Bestimmen exakter Patches, die an den Pixeln der Trainingsbilder zentriert sind, und zudem auf dem Lernen von Gewichtungen einer Zielfunktion.
-
Das Patchabgleichsframework bezieht als Verschiebungsabbildungen ausgebildete Offsetvorhersagen als Ausgabe des Offsetvorhersage-Neuronalnetzwerkes (Block 708). Bei einem Beispiel bezieht das Trainingsverwaltermodul 130 Offsetvorhersagen, die als Verschiebungsabbildungen ausgebildet sind, die von dem vollständig faltungstechnischen Offsetvorhersage-Neuronalnetzwerk 504 generiert werden. Die Offsetvorhersagen und die modifizierten Trainingsbilder werden von dem Patchabgleichsframework für das Offsetanwendungsmodul bereitgestellt (Block 710). Bei einem Beispiel stellt das Trainingsverwaltermodul 130 die bei Block 704 hergestellten modifizierten Trainingsbilder und die bei Block 708 bezogenen Offsetvorhersagen für das Offsetanwendungsmodul 138 bereit.
-
Bilder, an denen der Vorgang durchgeführt worden ist, werden als Ausgabe des Offsetanwendungsmoduls bezogen (Block 712). Entsprechend den hier erläuterten Prinzipien wird der Vorgang ausgeführt, indem Pixel der eingegebenen modifizierten Trainingsbilder auf Pixel, die von dem Vorgang betroffen sind, entsprechend Offsetvorhersagen abgebildet werden. Bei einem Beispiel bezieht das Trainingsverwaltermodul 130 Bilder aus der Ausgabe von dem Offsetanwendungsmodul 138. Der bestimmte Bildbearbeitungsvorgang ist an diesen Bildern durchgeführt worden, indem das Offsetanwendungsmodul 138 Pixel der modifizierten Trainingsbilder, die bei Block 706 an das Patchabgleichsframework übermittelt werden, auf die von dem Vorgang betroffenen Pixel abbildet. Das Offsetanwendungsmodul 138 führt diese Abbildung auf Grundlage der bei Block 710 bereitgestellten Offsetvorhersagen aus.
-
Parameter des Patchabgleichsframeworks werden auf Grundlage eines Vergleiches der Trainingsbilder mit den bearbeiteten Bildern, die von dem Patchabgleichsframework ausgegeben werden, angepasst (Block 714). Entsprechend den hier erläuterten Prinzipien werden die Parameter zudem auf Grundlage eines Vergleiches von Werten der betroffenen Pixel vor der Modifikation bei Block 704 mit abgebildeten Werten der betroffenen Pixel angepasst. Bei einem Beispiel vergleicht das Trainingsverwaltermodul 130 die Bilder, die von dem Framework ausgegeben werden und die bearbeitet worden sind, mit den Trainingsbildern. Das Trainingsverwaltermodul 130 vergleicht zudem Werte der Trainingsbildpixel entsprechend betroffenen Pixeln vor der Modifikation bei Block 704 und der Pixel, die auf diese Pixel abgebildet werden, siehe Block 712. Bei einer oder mehreren Implementierungen nimmt das Trainingsverwaltermodul 130 diese Vergleiche vor, indem Verluste unter Verwendung eines I1 -Abstandes auf Grundlage von H × W × 7 × 7 Patches der ursprünglichen Trainingsbilder und H × W × 7 × 7 Patches, die aus den Bildern extrahiert werden, berechnet werden, siehe Block 712. Als Teil der Berechnung des Abstandes setzt das Trainingsverwaltermodul 130 einen Abtastkern, wie vorstehend beschrieben, ein, um differenzierbare Abtastungen der Offsetvorhersagepixel vorzunehmen. Auf Grundlage der berechneten Abstände passt das Trainingsverwaltermodul 130 Parameter des Frameworks, so beispielsweise Parameter von Streckungsfaltungsschichten, an. Auf diese Weise lernt das Framework das Generieren von Offsetvorhersagen, was bei Anwendung zu Ausgabebildern führt, in denen von einem Bildbearbeitungsvorgang betroffene Pixel Content aufweisen, der im Vergleich zu anderem Content des Bildes randkonsistent, semantisch vernünftig und optisch ansprechend ist.
-
Nach erfolgter Beschreibung exemplarischer Prozeduren entsprechend einer oder mehreren Implementierungen werden nunmehr ein exemplarisches System und eine exemplarische Vorrichtung betrachtet, die zur Implementierung der verschiedenen hier beschriebenen Techniken eingesetzt werden können.
-
Exemplarisches System und exemplarische Vorrichtung
-
8 zeigt bei 800 allgemein ein exemplarisches System, das eine exemplarische Rechenvorrichtung 802 beinhaltet, die ein oder mehrere Rechensysteme und/oder eine oder mehrere solche Vorrichtungen darstellt, die die hier beschriebenen verschiedenen Techniken implementieren können. Dies ist durch Einbeziehung des Patchabgleichers 116 und des Trainingsverwaltermoduls 130 dargestellt. Die Rechenvorrichtung 802 kann beispielsweise ein Server eines Dienstanbieters, eine Vorrichtung, die einem Client zugeordnet ist (beispielsweise eine Clientvorrichtung), ein On-Chip-System und/oder eine beliebige andere geeignete Rechenvorrichtung oder ein solches Rechensystem sein.
-
Die exemplarische Rechenvorrichtung 802 beinhaltet, wie dargestellt ist, ein Verarbeitungssystem 804, ein oder mehrere computerlesbare Medien 806 und eine oder mehrere I/O-Schnittstellen 808, die kommunikationstechnisch miteinander gekoppelt sind. Obwohl dies nicht gezeigt ist, kann die Rechenvorrichtung 802 des Weiteren einen Systembus oder ein anderes Daten- und Befehlsübertragungssystem beinhalten, das die verschiedenen Komponenten miteinander koppelt. Ein Systembus kann eine beliebige Busstruktur oder eine Kombination aus verschiedenen Busstrukturen beinhalten, so beispielsweise einen Speicherbus oder einen Speichercontroller, einen Peripheriebus, einen universellen seriellen Bus und/oder einen Prozessor- oder Lokalbus, der eine Vielzahl von Busarchitekturen einsetzt. Eine Vielzahl von weiteren Beispielen, so beispielsweise Steuer- bzw. Regel- und Datenleitungen, ist ebenfalls einbezogen.
-
Das Verarbeitungssystem 804 stellt eine Funktionalität zur Durchführung einer oder mehrerer Operationen bzw. Vorgänge unter Verwendung von Hardware dar. Entsprechend ist das Verarbeitungssystem 804 derart dargestellt, dass es Hardwareelemente 810 beinhaltet, die als Prozessoren, funktionelle Blöcke und dergleichen mehr konfiguriert sein können. Dies kann eine Implementierung in Hardware als anwendungsspezifische integrierte Schaltung oder als andere Logikvorrichtung, die unter Verwendung eines oder mehrerer Halbleiter gebildet ist, beinhalten. Die Hardwareelemente 810 sind nicht durch die Materialien, aus denen sie gebildet sind, oder durch die Bearbeitungsmechanismen, die zum Einsatz kommen, beschränkt. Die Prozessoren können beispielsweise aus einem Halbleiter / Halbleitern und/oder Transistoren (beispielsweise elektronischen integrierten Schaltungen (ICs)) bestehen. In diesem Kontext können prozessorseitig ausführbare Anweisungen elektronisch ausführbare Anweisungen sein.
-
Die computerlesbaren Speichermedien 806 sind derart dargestellt, dass sie eine Ablage / einen Speicher 812 beinhalten. Die Ablage / der Speicher 812 bietet eine Ablage-/Speicherkapazität, die einem oder mehreren computerlesbaren Medien zugeordnet ist. Die Ablage-/Speicherkomponente 812 kann flüchtige Medien (so beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM)) und/oder nichtflüchtige Medien (so beispielsweise einen Nur-Lese-Speicher (ROM), einen Flash-Speicher, optische Platten, magnetische Platten und dergleichen mehr) beinhalten. Die Ablage-/Speicherkomponente 812 kann feste Medien (beispielsweise RAM, ROM, ein Festplattenlaufwerk und dergleichen mehr) wie auch entfernbare Medien (beispielsweise einen Flash-Speicher, ein entfernbares Festplattenlaufwerk, eine optische Platte und dergleichen mehr) beinhalten. Die computerlesbaren Medien 806 können auf vielerlei Arten, wie nachstehend noch beschrieben wird, konfiguriert sein.
-
Eine Eingabe-/Ausgabe-Schnittstelle / Eingabe-/Ausgabe-Schnittstellen 808 bieten eine Funktionalität, die ermöglicht, dass ein Nutzer Befehle und Information in die Rechenvorrichtung 802 eingibt, und die zudem ermöglicht, dass dem Nutzer und/oder anderen Komponenten oder Vorrichtungen Information unter Verwendung verschiedener Eingabe-/Ausgabevorrichtungen präsentiert wird. Beispiele für Eingabevorrichtungen beinhalten eine Tastatur, eine Cursorsteuer- bzw. Regelvorrichtung (beispielsweise eine Maus), ein Mikrofon, einen Scanner, eine Berührungsfunktionalität (beispielsweise kapazitive oder andere Sensoren, die dafür konfiguriert sind, eine physische Berührung zu detektieren), eine Kamera (die beispielsweise sichtbare oder unsichtbare Wellenlängen, so beispielsweise Infrarotfrequenzen, dafür einsetzen kann, Bewegungen als Gesten zu erkennen, die keine Berührung implizieren), und dergleichen mehr. Beispiele für Ausgabevorrichtungen beinhalten eine Anzeigevorrichtung (beispielsweise einen Monitor oder Projektor), Lautsprecher, einen Drucker, eine Netzwerkkarte, eine berührungsreaktive Vorrichtung und dergleichen mehr. Daher kann die Rechenvorrichtung 802 auf vielerlei Arten, wie nachstehend noch beschrieben wird, konfiguriert sein, um die Nutzerinteraktion zu unterstützen.
-
Es sind hier verschiedene Techniken im allgemeinen Kontext von Software, Hardwareelementen oder Programmmodulen beschrieben worden. Allgemein beinhalten derartige Module Routinen, Programme, Objekte, Elemente, Komponenten, Datenstrukturen und dergleichen mehr, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Begriffe „Modul“, „Funktionalität“ und „Komponente“ bezeichnen im Sinne des Vorliegenden allgemein Software, Firmware, Hardware oder eine Kombination hieraus. Die Merkmale der hier beschriebenen Techniken sind plattformunabhängig, was bedeutet, dass die Techniken auf einer Vielzahl von handelsüblichen Rechenplattformen mit einer Vielzahl von Prozessoren implementiert sein können.
-
Eine Implementierung der beschriebenen Module und Techniken kann auf einer bestimmten Form von computerlesbaren Medien gespeichert sein oder über diese übertragen werden. Die computerlesbaren Medien können eine Vielzahl von Medien beinhalten, auf die von der Rechenvorrichtung 802 zugegriffen werden kann. Beispiels- und nicht beschränkungshalber können computerlesbare Medien „computerlesbare Speichermedien“ und „computerlesbare Signalmedien“ beinhalten.
-
„Computerlesbare Speichermedien“ können Medien und/oder Vorrichtungen bezeichnen, die eine dauerhafte und/oder nichttemporäre Speicherung von Information im Gegensatz zur bloßen Signalübertragung, zu Trägerwellen oder zu Signalen per se ermöglichen. Computerlesbare Speichermedien bezeichnen daher nicht signaltragende Medien. Computerlesbare Speichermedien beinhalten Hardware, so beispielsweise flüchtige und nichtflüchtige, entfernbare und nichtentfernbare Medien und/oder Speichervorrichtungen, die bei einem Verfahren oder einer Technologie implementiert sind, die zur Speicherung von Information geeignet ist, so beispielsweise als computerlesbare Anweisungen, Datenstrukturen, Programmmodule, Logikelemente/Schaltungen oder andere Daten. Beinhalten können Beispiele für computerlesbare Speichermedien unter anderem RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, DVD oder einen anderen optischen Speicher, Festplatten, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder eine andere Speichervorrichtung, physische Medien oder Objekte, die dafür geeignet sind, dass gewünschte Information gespeichert wird, und auf die ein Computer zugreifen kann.
-
„Computerlesbare Signalmedien“ können signaltragende Medien bezeichnen, die dafür konfiguriert sind, Anweisungen an die Hardware der Rechenvorrichtung 802 beispielsweise über ein Netzwerk zu übermitteln. Signalmedien können typischerweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal verkörpern, so beispielsweise Trägerwellen, Datensignale oder andere Transportmechanismen. Signalmedien beinhalten zudem beliebige Informationsverteilungsmedien. Der Begriff „moduliertes Datensignal“ bezeichnet ein Signal, bei dem eine oder mehrere Eigenschaften derart eingestellt oder geändert sind, dass Information in dem Signal codiert ist. Beispiels- und nicht beschränkungshalber beinhalten Kommunikationsmedien drahtgebundene Medien, so beispielsweise ein drahtgebundenes Netzwerk oder eine Direktdrahtverbindung, und drahtlose Medien, so beispielsweise akustische, hochfrequenzbasierte, infrarote und andere drahtlose Medien.
-
Wie vorstehend beschrieben worden ist, stellen die Hardwareelemente 810 und die computerlesbaren Medien 806 Module, eine programmierbare Vorrichtungslogik und/oder eine feste Vorrichtungslogik dar, die in Form von Hardware implementiert sind, die bei einigen Ausführungsformen dafür eingesetzt werden kann, wenigstens einige Aspekte der hier beschriebenen Techniken beispielsweise zur Ausführung einer oder mehrerer Anweisungen zu implementieren. Die Hardware kann Komponenten einer integrierten Schaltung oder eines On-Chip-Systems, eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine komplexe programmierbare Logikvorrichtung (CPLD) und andere Implementierungen in Silizium oder anderer Hardware beinhalten. In diesem Kontext kann Hardware als Verarbeitungsvorrichtung wirken, die Programmaufgaben wahrnimmt, die durch Anweisungen und/oder eine Logik definiert sind, die durch Hardware verkörpert ist, wie auch Hardware, die zur Speicherung von Anweisungen zur Ausführung verwendet werden, so beispielsweise durch die vorbeschriebenen computerlesbaren Speichermedien.
-
Kombinationen des Vorbeschriebenen können zudem zur Implementierung verschiedener der hier beschriebenen Techniken eingesetzt werden. Entsprechend können Software, Hardware oder ausführbare Module als eine oder mehrere Anweisungen und/oder Logik implementiert sein, die in irgendeiner Form von computerlesbaren Speichermedien und/oder durch ein oder mehrere Hardwareelemente 810 verkörpert ist. Die Rechenvorrichtung 802 kann dafür konfiguriert sein, bestimmte Anweisungen und/oder Funktionen entsprechend Software- und/oder Hardwaremodulen zu implementieren. Entsprechend kann eine als Software gegebene Implementierung eines Moduls, das von der Rechenvorrichtung 802 ausführbar ist, auch wenigstens teilweise in Hardware erfolgen, so beispielsweise unter Verwendung computerlesbarer Speichermedien und/oder Hardwareelemente 810 des Verarbeitungssystems 804. Die Anweisungen und/oder Funktionen können von einem oder mehreren Objekten (beispielsweise einer oder mehreren Rechenvorrichtungen 802 und/oder Verarbeitungssystemen 804) ausführbar/betreibbar sein, um die hier beschriebenen Techniken, Module und Beispiele zu implementieren.
-
Die hier beschriebenen Techniken können von verschiedenen Konfigurationen der Rechenvorrichtung 802 unterstützt werden und sind nicht auf die spezifischen Beispiele für die hier beschriebenen Techniken beschränkt. Die Funktionalität kann zudem gänzlich oder in Teilen unter Verwendung eines verteilten Systems implementiert sein, so beispielsweise über eine „Cloud“ 814 mittels einer Plattform 816, wie nachstehend noch beschrieben wird.
-
Die Cloud 814 beinhaltet eine Plattform 816 für Ressourcen 818 und/oder stellt diese dar. Die Plattform 816 abstrahiert die darunterliegende Funktionalität der Hardware- (beispielsweise Server) und Softwareressourcen der Cloud 814. Die Ressourcen 818 können Anwendungen und/oder Daten beinhalten, die eingesetzt werden können, während eine Computerverarbeitung auf Servern ausgeführt wird, die von der Rechenvorrichtung 802 getrennt sind. Die Ressourcen 818 können zudem Dienste beinhalten, die über das Internet und/oder über ein Teilnehmernetzwerk bereitgestellt werden, so beispielsweise ein zellenbasiertes oder ein Wi-Fi-Netzwerk.
-
Die Plattform 816 kann Ressourcen und Funktionen abstrahieren, um die Rechenvorrichtung 802 mit anderen Rechenvorrichtungen zu verbinden. Die Plattform 816 kann zudem dafür dienen, die Skalierung von Ressourcen zu abstrahieren, um einen entsprechenden Skalierungsgrad für bestehenden Bedarf an den Ressourcen 818, die über die Plattform 816 implementiert sind, bereitzustellen. Entsprechend kann bei einer Ausführungsform mit wechselseitig verbundenen Vorrichtungen eine Implementierung der hier beschriebenen Funktionalität über das System 800 verteilt sein. Die Funktionalität kann beispielsweise teilweise auch auf der Rechenvorrichtung 802 wie auch über die Plattform 816, die die Funktionalität der Cloud 814 abstrahiert, implementiert sein.
-
Schlussbemerkung
-
Obwohl die Erfindung in einer Sprache beschrieben worden ist, die für Strukturmerkmale und/oder methodische Vorgänge spezifisch ist, sollte einsichtig sein, dass die in den beigefügten Ansprüchen definierte Erfindung nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Vorgänge beschränkt ist. Vielmehr sind die spezifischen Merkmale und Vorgänge als exemplarische Formen der Implementierung der beanspruchten Erfindung offenbart.