-
Technisches Gebiet
-
Die vorliegende Offenbarung betrifft allgemein die Entfernung von Objekten aus Digitalbildern. Insbesondere, jedoch nicht im Sinne einer Beschränkung, betrifft die vorliegende Offenbarung das Entfernen von Objekten aus Bildern unter Nutzung einer Objektbegrenzungsdetektion in Verbindung mit contentbewusstem Füllen.
-
Hintergrund
-
Während der Bearbeitung eines Bildes, so beispielsweise eines Fotos, möchte ein Grafikgestalter gegebenenfalls ein Zielobjekt entfernen. Beispielsweise möchte der Gestalter gegebenenfalls ein Spielzeug, das in der Mitte des Fotos eines Gartens vorhanden ist, oder ein Werbeschild aus dem Foto eines Hauses entfernen.
-
Bestehende Objektentfernungssoftwarewerkzeuge weisen jedoch Mängel auf. Einige Lösungen können beispielsweise nur ein Objekt, das vor einem einfachen Hintergrund auftritt, entfernen, da derartige Lösungen einfach den unerwünschten Bereich entfernen und das sich ergebende Loch automatisch unter Nutzung von Entnahmen aus anderen Teilen des Bildes füllen.
-
Weitere Lösungen verbessern diese Vorgehensweise durch gründlicheres Analysieren des Bereiches um das Loch herum, um eine geeignete Füllung für den fehlenden Content zu bestimmen. Derartige Lösungen scheitern jedoch beim Bestimmen der Begrenzungen eines Objektes, das von dem Zielobjekt verdunkelt bzw. verdeckt wird, was zu einer inakkuraten Contentfüllung führt. Derartige Lösungen können beispielsweise ein Blatt, das von einem Ball verdunkelt bzw. verdeckt wird, aufgrund ihrer Unfähigkeit, die Begrenzungen des Blattes zu analysieren und fehlende Teile der Begrenzung neuzuerstellen, nicht akkurat neuerstellen. Im Ergebnis füllen derartige Lösungen den fehlenden Teil des Blattes auf derartige Weise, dass das Blatt unecht aussieht.
-
Entsprechend werden Lösungen zur verlässlichen und akkuraten Objektentfernung und -füllung benötigt.
-
Zusammenfassung
-
Offenbart werden Systeme und Verfahren zum Entfernen von Objekten aus Bildern. Ein exemplarisches Verfahren greift auf ein Bild zu, das einen Satz von Objekten beinhaltet. Das Verfahren identifiziert eine vervollständigte bzw. vollständige Begrenzung für jedes Objekt des Satzes von Objekten durch Bereitstellen des Objektes für ein trainiertes Modell. Das Verfahren empfängt eine Auswahl eines Zielobjektes, das unter den Objekten entfernt werden soll. Das Verfahren bestimmt des Weiteren einen Satz von Masken. Jede Maske entspricht einem Objekt des Satzes von Objekten und stellt einen Bereich des Bildes dar, der durch einen Schnitt der Begrenzung des Objektes und der Begrenzung des Zielobjektes definiert ist. Das Verfahren aktualisiert jede Maske durch separates Durchführen eines Contentfüllens an dem entsprechenden Bereich. Das Verfahren erstellt ein Ausgabebild durch Zusammenführen einer jeden der aktualisierten Masken mit Abschnitten des Bildes.
-
Diese illustrativen Ausführungsformen sind nicht aufgeführt, um die Offenbarung zu beschränken oder zu definieren, sondern um Beispiele zur Förderung ihres Verständnisses bereitzustellen. Zusätzliche Ausführungsformen werden in der Detailbeschreibung erläutert, und die weitere Beschreibung erfolgt dort.
-
Figurenliste
-
Merkmale, Ausführungsformen und Vorteile der vorliegenden Offenbarung erschließen sich besser beim Studium der nachfolgenden Detailbeschreibung in Zusammenschau mit der begleitenden Zeichnung.
- 1 ist ein Diagramm zur Darstellung eines Beispiels für Anwendungskomponenten, die zum Entfernen von Objekten aus Bildern benutzt werden, entsprechend einer Ausführungsform der vorliegenden Offenbarung.
- 2 zeigt ein Beispiel für eine Systemimplementierung zum Entfernen von Objekten aus Bildern entsprechend einer Ausführungsform der vorliegenden Offenbarung.
- 3 zeigt ein Beispiel für einen Prozess zum Entfernen von Objekten aus Bildern entsprechend einer Ausführungsform der vorliegenden Offenbarung.
- 4 zeigt Beispiele für Zwischenergebnisse und Endergebnisse einer Objektentfernungsumgebung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
- 5 zeigt ein Beispiel für einen Prozess des Trainierens eines konditionalen, generativen, adversativen Netzwerkes zum Detektieren von Begrenzungen von Objekten entsprechend einer Ausführungsform der vorliegenden Offenbarung.
- 6 zeigt Beispiele für Trainingsdaten, die in 5 benutzt werden, entsprechend einer Ausführungsform der vorliegenden Offenbarung.
- 7 zeigt ein Beispiel für ein Rechensystem zum Entfernen von Objekten aus Bildern entsprechend einer Ausführungsform der vorliegenden Offenbarung.
-
Detailbeschreibung
-
Wie vorstehend erläutert worden ist, weisen bestehende Lösungen zum Entfernen von Objekten Mängel auf, die das unrealistische Contentfüllen entfernter Objekte beinhalten. Im Gegensatz hierzu erleichtern die hier beschriebenen Ausführungsformen eine akkuratere Objektentfernung durch Nutzen des Deep-Learning, um Begrenzungen von Objekten, die in einem Eingabebild vorhanden sind, zu detektieren, Ausfindigmachen von Schnitten zwischen jenen Objekten und Anwenden eines Contentfüllens an jedem Schnitt. In Folge dessen bieten die offenbarten Lösungen ein ästhetisch gefälligeres Ergebnis, da die Begrenzungen zugrunde liegender Objekte neuerstellt und die entfernten Objekte geeignet gefüllt werden.
-
Das folgende nichtbeschränkende Beispiel wird zu Erläuterungszwecken vorgestellt. Eine Bildverarbeitungsanwendung, die auf einer Rechenvorrichtung ausgeführt wird, greift auf ein fotografisches Bild zu. Das Bild stellt einen Gartentisch auf einem Rasen und eine Weinflasche auf dem Tisch dar. Ein oberer Bereich der Weinflasche verdunkelt bzw. verdeckt den Rasen, während ein unterer Bereich der Weinflasche den Tisch verdunkelt bzw. verdeckt. Die Anwendung empfängt von einem Grafikgestalter eine Eingabe dahingehend, die Weinflasche aus dem Bild zu entfernen.
-
Die Bildverarbeitungsanwendung identifiziert die Objekte innerhalb des Bildes, insbesondere den Tisch, den Rasen und die Weinflasche. Die Bildverarbeitungsanwendung identifiziert sodann die Begrenzungen oder Umrisse der detektierten Objekte. In einigen Fällen wird das Deep Learning, also beispielsweise konditionale, generative, adversative Netzwerke (englisch: conditional generative adversarial networks) benutzt. Wiederum bei dem Beispiel bestimmt die Anwendung einen ersten Bereich oder eine solche Maske entsprechend einem Schnitt oder einer Überlappung zwischen der Flasche und dem Rasen und einen zweiten Bereich oder eine solche Maske entsprechend einer Überlappung der Flasche und des Tisches.
-
Ist jeder Bereich detektiert, so füllt die Bildverarbeitungsanwendung die Masken mit einer contentbewussten Füllung beispielsweise auf Grundlage des Contents des Objektes, auf dem die Form basiert, aus oder vervollständigt diese. Das contentbewusste Füllen impliziert ein Neuerstellen von geeignetem Content auf Grundlage bestehenden Contents eines Objektes, um den Leerraum einer Maske zu füllen. Um beispielsweise den Bereich des Rasens, der vorher vom oberen Teil der Weinflasche verdeckt worden ist, auszufüllen, nutzt das die Bildverarbeitungsanwendung Content aus dem restlichen Rasen, um die Maske intelligent zu vervollständigen. Die Anwendung füllt die erste Maske ohne Rücksicht auf die zweite Maske und umgekehrt. Sobald die beiden Masken gefüllt sind, kombiniert die Anwendung die Bereiche in dem Ausgabebild, das wie das Original, jedoch ohne die Weinflasche, ist.
-
Die offenbarten Lösungen stellen technische Verbesserungen auf dem Gebiet der Bildobjektentfernung bereit. Gewisse Ausführungsformen nutzen beispielsweise verbesserte Verfahren des Generierens von Trainingsdaten für konditionale, generative, adversative Netzwerke und nutzen die trainierten Netzwerke sodann dafür, Begrenzungen verdunkelter bzw. verdeckter Objekte, für die keine vollständige Begrenzung verfügbar ist, zu identifizieren. Insbesondere generiert eine Bildverarbeitungsanwendung einen Satz von robusten Trainingsdaten, der Bilder, die Objekte darstellen, bei denen Begrenzungen bekannt sind, und modifizierte Bilder, bei denen Begrenzungen künstlich verdunkelt bzw. verdeckt worden sind, beinhaltet. Das konditionale, generative, adversative Netzwerk wird sodann bezüglich dieses Datensatzes trainiert. Unter Nutzung des Netzwerkes können gewisse Ausführungsformen fehlende Begrenzungen von Objekten vervollständigen. Indem des Weiteren ein contentbewusstes Füllen in Bereichen aus verschiedenen überlappenden Objekten separat angewendet wird, stellen Ausführungsformen eine realistischere Objektentfernung als bisherige Lösungen bereit.
-
Zusätzlich stellen die offenbarten Lösungen technische Verbesserungen gegenüber Lösungen bereit, die Segmentierungsetiketten (beispielsweise bezüglich des Typs von Objekten, die in dem Bild vorhanden sind) vorhersagen, jedoch daran scheitern, die Begrenzung eines jeden Objektes in dem Bild vorherzusagen und jeden Schnitt zwischen Objekten und dem Zielobjekt zu bestimmen. Im Gegensatz hierzu sagen offenbarte Lösungen ein Segmentierungsetikett einer fehlenden Fläche vorher und generieren dadurch Information über einen vorhergesagten Objektort und Formdetails des Zielobjektes. Offenbarte Lösungen können eine Segmentierungsmaske mit dem Eingabebild kombinieren, um eine vollständige Vorhersage zu machen. Indem ein Segmentierungsprozess auf diese Weise geführt wird, kombinieren offenbarte Lösungen die Stärke von generativen Deep-Modellen mit Segmentierungsinformation, was zu realistischeren Vorhersagen insbesondere für Begrenzungen zwischen verschiedenen Objekten führt. Zusätzlich stellen offenbarte Lösungen im Vergleich zu bisherigen Lösungen, die nur eine einzige Vorhersage bei einem gegebenen Eingabebild machen können, interaktive und multimodale Vorhersagen bereit.
-
Im Sinne der Offenbarung bezeichnet „Bild“ eine elektronische Darstellung von Fotos, Bildern, Text, Nutzerschnittstellenelementen und dergleichen. Beispiele für Bilder beinhalten Dokumente von Adobe® Photoshop®, Dokumente von Adobe® Illustrator® oder Dokumente von Adobe® InDesign®. Ein Bild kann ein oder mehrere Objekte beinhalten.
-
Im Sinne der vorliegenden Offenbarung bezeichnet „Objekt“ eine diskrete Komponente eines Bildes. Exemplarische Objekte beinhalten Formen, Buchstaben, Textkästchen, Hintergrundobjekte und dergleichen mehr. Jedes Objekt weist eine Begrenzung auf.
-
Im Sinne des Vorliegenden bezeichnen „Begrenzung“ oder „Umriss“ eines Objektes eine äußere Einfassung (perimeter) um das Objekt herum. Eine Begrenzung um eine Orange herum kann beispielsweise ein Kreis oder nahezu ein Kreis sein. Begrenzungen komplexerer Objekte können auch nichtlinear sein, was beispielsweise bei einem Blatt oder einem Tier der Fall ist.
-
Im Sinne des Vorliegenden bezeichnen „Bereich“ oder „Maske“ eine Datenstruktur, die gewisse Pixel eines Bildes für eine bestimmte Nutzung identifiziert oder bezeichnet. Eine Maske kann beispielsweise Pixel in einem zu füllenden Loch identifizieren.
-
Von den Figuren ist 1 ein Diagramm zur Darstellung eines Beispiels für Anwendungskomponenten, die zum Entfernen von Objekten aus Bildern benutzt werden, entsprechend einer Ausführungsform der vorliegenden Offenbarung. 1 zeigt eine Bildverarbeitungsumgebung 100, die ein Eingabebild 110, ein Rechensystem 101 und ein Ausgabebild 140 beinhaltet. Das Rechensystem 110, von dem ein Beispiel anhand 6 detaillierter beschrieben wird, führt eine Bildverarbeitungsanwendung 102 aus und nutzt ein Modell maschinellen Lernens 105.
-
Das Eingabebild 110 beinhaltet ein erstes Objekt 112 (ein Quadrat) und ein zweites Objekt 113 (ein Oval). Wie ersichtlich ist, verdunkelt bzw. verdeckt das Objekt 113 das Objekt 112 in der unteren, rechten Ecke des Objektes 112 teilweise. Da das Eingabebild 110 ein digitalisiertes Foto oder ein gerendertes bzw. wiedergegebenes Bild, das Pixel enthält, sein kann, bestimmt die Bildverarbeitungsanwendung 102 die Objekte 112 oder 113 und ihre Begrenzungen. Die Bildverarbeitungsanwendung 102 empfängt sodann eine Bezeichnung des Objektes 113 als Zielobjekt. Die Bildverarbeitungsanwendung 102 bestimmt wiederum die Begrenzungen der Objekte 112 und 113, bestimmt einen Schnitt zwischen den Objekten 112 und 113 und wendet auf den Schnitt das Contentfüllen an. Wie ersichtlich ist, zeigt das Ausgabebild 140 ein Objekt 142, das dem Objekt 112 entspricht.
-
Für Eingabebilder mit mehr Objekten identifiziert die Bildverarbeitungsanwendung 102 mehr Masken und wendet das Contentfüllen separat auf die entsprechenden Objektschnitte an. Die Bildverarbeitungsanwendung 102 führt die Schnitte oder Masken sodann in dem Ausgabebild 140 zusammen. 2 zeigt ein zusätzliches Beispiel, das mehr Objekte beinhaltet.
-
In einigen Fällen kann die Bildverarbeitungsanwendung 102 das Modell maschinellen Lernens 105 nutzen, um eine oder mehrere Aufgaben auszuführen. Wie dargestellt ist, ist das Modell maschinellen Lernens 105 beispielsweise ein konditionales, generatives, adversatives Modell, das ein generatives Modell 106 und ein diskriminatives Modell 107 beinhaltet. Die Bildverarbeitungsanwendung 102 kann das generative Modell 106 und das diskriminative Modell 107 durch Nutzung von Trainingsdaten 108 generieren. Ein exemplarischer Trainingsprozess wird anhand 5 erläutert, wobei jedoch auch andere Prozesse benutzt werden können.
-
Andere Modelle maschinellen Lernens können indes ebenfalls in der Bildverarbeitungsumgebung 100 vorhanden sein. Andere Beispiele für geeignete Modelle, die bei dem Modell maschinellen Lernens 105 eingesetzt werden, sind prädiktive bzw. vorhersagebasierte Modelle, Klassifizierungsmodelle, generative Modelle und diskriminative Modelle. Des Weiteren können zusätzliche Modelle von der Bildverarbeitungsanwendung 102 beispielsweise zur Durchführung anderer Aufgaben benutzt werden. Einsetzen kann die Bildverarbeitungsanwendung 102 beispielsweise ein erstes Modell maschinellen Lernens zur Durchführung einer Objektdetektion und ein zweites Modell maschinellen Lernens zur Durchführung einer Objektbegrenzungsdetektion. Auf ähnliche Weise kann das maschinelle Lernen zur Durchführung des contentbewussten Füllens benutzt werden.
-
2 zeigt ein Beispiel für eine Systemimplementierung zur Entfernung von Objekten aus Bildern entsprechend einer Ausführungsform der vorliegenden Offenbarung. 2 zeigt eine Objektentfernungsumgebung 200, die ein Objektdetektionsmodul 250, ein Objektbegrenzungsmodul 252, ein Objektschnittmodul 253 und ein Contentfüllmodul 254 beinhaltet. Die Module sind zu exemplarischen Zwecken getrennt; die hier beschriebene Funktionalität kann über eine Anzahl von Modulen, die in der Bildverarbeitungsanwendung 102 beinhaltet sind, implementiert sein. Zusätzlich können ein oder mehrere Module die Fähigkeit maschinellen Lernens nutzen.
-
Die Objektentfernungsumgebung 200 zeigt zudem Eingaben und Ausgaben in verschiedenen Phasen. Insbesondere beinhaltet die Objektentfernungsumgebung 200 ein Eingabebild 211, eine Maske 260, eine Maske 261 und ein Ausgabebild 240. In einigen Fällen kann die Bildverarbeitungsanwendung 102 Zwischenschritte zur Fehlerbeseitigung (debugging) oder zu darstellerischen Zwecken ausgeben.
-
Das Objektdetektionsmodul 250 empfängt das Eingabebild 211, das ein Objekt 212, ein Objekt 213 und ein Objekt 214 beinhaltet. Das Objekt 213 wird als Zielobjekt oder als Objekt, das aus dem Eingabebild 211 entfernt werden soll, bezeichnet. Wie ersichtlich ist, schneidet das Objekt 213 das Objekt 212 und das Objekt 214. Das Objektbegrenzungsmodul 252 detektiert die Begrenzungen der Objekte 212 und 213. Zu exemplarischen Zwecken sind zwei Objekte gezeigt. Für den Fall, dass das Eingabebild 211 mehr als zwei Objekte beinhaltet, bestimmt das Objektbegrenzungsmodul 252 eine Begrenzung für jedes zusätzliche Objekt.
-
Das Objektschnittmodul 253 bestimmt, ob das Objekt 212 oder das Objekt 214 das Objekt 213 schneiden. Wie in dem Eingabebild 211 dargestellt ist, schneiden sowohl das Objekt 212 wie auch das Objekt 214 das Objekt 213. Das Objektschnittmodul 253 bestimmt den Schnitt von Objekten durch Analysieren von Vektoren, die die Objekte 212 bis 214 darstellen. Das Objektschnittmodul 253 gibt eine Maske 260, die den Schnitt zwischen dem Objekt 212 und dem Objekt 213 darstellt, und eine Maske 261, die den Schnitt zwischen (den Objekten) 214 und 213 darstellt, aus. Für den Fall, dass das Eingabebild 211 mehr als zwei Objekte, die das Zielobjekt schneiden, beinhaltet, können zusätzliche Schnitte bestimmt werden.
-
Das Contentfüllmodul 254 empfängt die Maske 261 und 262 und führt das Füllen der Flächen aus. Wie weiter erläutert wird, können verschiedene Füllverfahren, so beispielsweise das contentbewusste Füllen, benutzt werden. Wie ersichtlich ist, beinhaltet das Ausgabebild 240 das Objekt 242 entsprechend dem Objekt 212 und das Objekt 243 entsprechend dem Objekt 214. Die Objekte 242 und 243 sind gefüllt und sehen im Wesentlichen ähnlich aus, als ob die Objekte ohne das Objekt 213 davor gezeichnet worden wären.
-
3 zeigt ein Beispiel für einen Prozess 300 zum Entfernen von Objekten aus Bildern entsprechend einer Ausführungsform der vorliegenden Offenbarung. Die Bildverarbeitungsanwendung 102 kann einen Prozess 300 implementieren, wobei jedoch auch andere Softwareanwendungen und Rechensysteme den Prozess 300 implementieren können. Zu exemplarischen Zwecken wird 3 unter Bezugnahme auf 4 erläutert.
-
Bei Block 301 impliziert der Prozess 300 ein Zugreifen auf ein Bild, das Objekte beinhaltet. Die Bildverarbeitungsanwendung 102 greift auf ein Eingabebild zu. Die Bildverarbeitungsanwendung 102 kann ein Eingabebild von einer externen Vorrichtung oder aus einer Datei empfangen. Alternativ kann die Bildverarbeitungsanwendung 102 das Eingabebild in Reaktion auf nutzerseitige Zeichenbefehle erstellen.
-
4 zeigt Beispiele für Zwischenergebnisse und Endergebnisse einer Objektentfernungsumgebung entsprechend einer Ausführungsform der vorliegenden Offenbarung. 4 zeigt ein Eingabebild 401, Schnittbereiche 402-403, gefüllte Bilder 404-405 und ein Ausgabebild 406. Bei Block 301 greift die Bildverarbeitungsanwendung 102 auf das Eingabebild 401 zu.
-
Wie ersichtlich ist, stellt das Eingabebild 401 einen Swimmingpool 410, der sich auf Gras 411 befindet, mit einem hölzernen Objekt 412 dar, das einen Teil des Swimmingpools 410 und einen Teil des Grases 411 verdunkelt bzw. verdeckt. Die Bildverarbeitungsanwendung 102 nutzt das Objektdetektionsmodul 250, um den Swimmingpool 410 und das Gras 411 zu identifizieren. Es können verschiedene Verfahren zur Objektidentifikation benutzt werden. Das Modell maschinellen Lernens 105 kann beispielsweise ein trainiertes Klassifikationsmodell sein, das das Vorhandensein eines Bildes auf Grundlage eines Trainingssatzes von bekannten Bildern (beispielsweise Objekte, Pflanzen, Tiere, Gesichter, Autos und dergleichen) detektieren kann. Zusätzliche Verfahren zur Objektidentifizierung beinhalten das Template Matching, die Lineardiskriminantenanalyse (Linear Discriminant Analysis LDA) und Support Vector Machines (SVMs).
-
Bei Block 302 impliziert der Prozess 300 das Identifizieren einer vervollständigten bzw. vollständigen Begrenzung für jedes Objekt. In einigen Fällen kann die Bildverarbeitungsanwendung 102 ein trainiertes, konditionales, generatives, adversatives Netzwerk zum Detektieren der Begrenzungen von Objekten nutzen. Insbesondere stellt die Bildverarbeitungsanwendung 102 jedes Objekt für das Modell bereit, und das Modell wiederum stellt eine Ausgabe bereit, die die vervollständigte bzw. vollständige Begrenzung des Objektes darstellt.
-
Einige Objektbegrenzungen können vervollständigt werden (sodass sie nicht von einem anderen Objekt verdunkelt bzw. verdeckt sind). Andere Begrenzungen, so beispielsweise die Begrenzungen von Objekten, die von dem Zielobjekt verdeckt bzw. verdunkelt werden, können unvollständig sein. Die Bildverarbeitungsanwendung 102 detektiert diese Begrenzungen.
-
Beschrieben wurden generative, adversative Netzwerke erstmalig in „Generative Adversarial Networks“ von lan J. Goodfellow et al., veröffentlicht bei Departement d'informatique et de recherche operationelle, Universite de Montreal, 2014. Generative, adversative Netzwerke nutzen einen Generator zum Generieren neuer Instanzen bzw. Versionen von Daten und einen Diskriminator zur Bewertung dessen, ob diese Instanzen bzw. Versionen zu dem Trainingsdatensatz gehören oder nicht.
-
Diskriminative Modelle versuchen, Eingabedaten zu klassifizieren. Ein diskriminatives Modell kann beispielsweise dafür trainiert werden, vorherzusagen, ob eine E-Mail-Nachricht Spam oder kein Spam ist oder ob ein Bild einen Hund oder keinen Hund darstellt. Insbesondere bilden diskriminative Modelle Merkmale (die in der Eingabe detektiert werden) auf Etiketten ab.
-
Im Gegensatz hierzu versuchen generative Modelle zu bestimmen, wie eine bestimmte Vorhersage erreicht wird. Ein generatives Modell versucht beispielsweise zu verstehen, warum das Bild eines Hundes als Hund klassifiziert wird. Anstelle der Vorhersage eines Etiketts bei gegebener Eingabe versuchen generative Modelle, Merkmale vorherzusagen, die mit einem bestimmten Etikett (beispielsweise dem Hund) in Beziehung stehen.
-
Unter Nutzung des trainierten Modells können Begrenzungen komplizierter Formen neuerstellt werden. Während beispielsweise die Begrenzung einer regelmäßigen Form in einigen Fällen relativ einfach (beispielsweise durch lineare Vervollständigung) neuzuerstellen ist, sind Begrenzungen anderer Objekte schwieriger neuzuerstellen. Die Begrenzung eines Blattes ist beispielsweise unvollständig, da die Begrenzung von dem Zielobjekt, das entfernt werden soll, verdunkelt bzw. verdeckt wird. Unter Nutzung eines trainierten, konditionalen, generativen, adversativen Netzwerks erstellt die Bildverarbeitungsanwendung 102 die Begrenzung des Blattes neu, was kompliziert und nichtlinear sein kann. Ein exemplarischer Prozess zum Trainieren eines konditionalen, adversativen Netzwerkes wird anhand 5 beschrieben.
-
Wiederum bei dem Beispiel identifiziert die Bildverarbeitungsanwendung 102 eine Begrenzung für den Schwimmingpool 410 und das Gras 411.
-
Bei Block 303 impliziert der Prozess 300 ein Empfangen einer Auswahl eines Objektes als Zielobjekt zu Entfernung als Bild. Die Bildverarbeitungsanwendung 102 kann die Auswahl des Zielobjektes von einer Nutzerschnittstelle oder einer anderen Eingabe empfangen. Auf Grundlage der Identifikation eines Objektes als Zielobjekt macht die Bildverarbeitungsanwendung 102 bei Block 304 weiter, um Schnitte zwischen Begrenzungen anderer Objekte mit dem Zielobjekt zu identifizieren. Wiederum bei dem Beispiel empfängt die Bildverarbeitungsanwendung 102 eine Identifikation dahingehend, dass das hölzerne Objekt 412 das zu entfernende Zielobjekt ist.
-
Bei Block 304 impliziert der Prozess 300 ein Bestimmen eines Satzes von Masken. Jede Maske kann einem Objekt entsprechen und einen Bereich des Bildes darstellen, der durch einen Schnitt der Begrenzung des Objektes und der Begrenzung des Zielobjektes definiert ist. Wiederum bei dem Beispiel identifiziert die Bildverarbeitungsanwendung 102 die Maske 420 (in Bild 402 gezeigt) und 421 (in Bild 403 gezeigt). Insbesondere stellt die Maske 420, die dem Swimmingpool 410 entspricht, einen Schnittbereich zwischen dem Swimmingpool 410 und dem hölzernen Objekt 412 dar. Die Maske 421, die dem Gras 411 entspricht, stellt einen Schnittbereich zwischen dem Gras 411 und dem hölzernen Objekt 412 dar.
-
Bei Block 305 impliziert der Prozess ein Aktualisieren des Satzes von Masken durch separates Durchführen eines Contentfüllens an dem entsprechenden Bereich. Es können verschiedene Verfahren zum Füllen benutzt werden. Bei einem Beispiel nutzt die Bildverarbeitungsanwendung 102 das contentbewusste Füllen zum Füllen des entsprechenden Bereiches oder Loches, der/das durch jede Maske identifiziert wird. Es sind verschiedene Typen von contentbewusstem Füllen möglich.
-
Im Allgemeinen strebt ein Algorithmus des contentbewussten Füllens danach, das Loch (den von der Maske dargestellten Teil) dadurch annähernd bzw. approximativ zu rekonstruieren, dass er kleine, quadratische Patches von Pixeln aus dem vorhandenen Rest des Objektes (beispielsweise einem Entnahmebereich) umordnet und zusammenstückelt. Insbesondere identifiziert das contentbewusste Füllen einen annähernden passenden Patch aus dem Entnahmebereich für die Maske. Es werden Kandidatenpatches aus dem Objekt ausgewählt, getestet und auf iterative Weise verfeinert. Eine sich ergebende Rekonstruktion kann die Fläche, die von der Maske dargestellt wird, auf eine Weise füllen, dass sie wie der durch die Maske dargestellte Abschnitt aussieht, also beispielsweise so, als wäre der Schnitt zwischen dem bestimmten Objekt und dem Zielobjekt nie verdunkelt bzw. verdeckt gewesen.
-
In einigen Fällen kann das contentbewusste Füllen objektbegrenzungsbewusst sein. Die Vorgehensweise des contentbewussten Füllens kann beispielsweise eine Fläche innerhalb der Begrenzungen der zu füllenden Form analysieren und Flächen außerhalb der Begrenzungen vernachlässigen, was in einigen Fällen bessere Ergebnisse liefert.
-
In einigen Fällen kann ein patchbasierter Synthetisierer benutzt werden, um das Contentfüllen durchzuführen. Empfangen werden bei einem Beispiel eine erste Nutzereingabe, die das zu füllende Loch in dem Originalbild spezifiziert, und eine zweite Nutzereingabe, die einen Entnahmebereich eines Originalbildes, aus dem Pixel entnommen werden können, beinhaltet, wobei der Entnahmebereich das Loch ausschließt. Benutzt werden eine Randbedingungsmaske zur Speicherung des Entnahmebereiches und ein patchbasierter Synthetisierer, der dafür konfiguriert ist, das Zielbild aus Patches zu synthetisieren, die aus dem Entnahmebereich, der durch die Randbedingungsmaske spezifiziert ist, entnommen worden sind.
-
Durchführen kann der patchbasierte Synthetisierer beispielsweise eine Patchsynthese unter Nutzung eines randomisierten Algorithmus des Generierens und Bewertens von Kandidatenpatches und Identifizierens von angenäherten Nächster-Nachbar-Treffern zwischen Bildpatches. Um ein gegebenes Zielbild (beispielsweise ein Loch) unter Nutzung von Bildpatches, die aus einem Quellbild transformiert werden, zu konstruieren, kann eine Datenstruktur, die Nächster-Nachbar-Feld (Next Neighbor Field NNF) genannt wird, benutzt werden, um Abbildungen zwischen Patches in den Quell- und Zielbildern zu verwalten. Das NNF beinhaltet eine Transformation für jedes Pixel in dem Zielbild. Die Transformationen können Ähnlichkeitstransformationen beinhalten. Für ein gegebenes Pixel identifiziert die Transformation in dem NNF für jenes Pixel einen entsprechenden Quellpatch, der auf Ähnlichkeit zu einem Zielpatch, der dem Pixel zugeordnet ist, getestet werden kann. Das Ziel des patchbasierten Synthetisierers besteht im Identifizieren eines Quellpatches (beispielsweise aus einem verwendbaren Entnahmebereich), der am besten zu jedem Zielpatch (das heißt zum nächsten Nachbarn) passt. Das NNF-Feld kann unter Nutzung verschiedener Phasen des Syntheseprozesses aktualisiert werden, um den Nächster-Nachbar-Quellpatch für jeden Zielpatch zu verfolgen.
-
Der patchbasierte Synthetisierer kann einen iterativen Prozess des Initialisierens, Suchens, Votierens und Hochskalierens bzw. Hochstufens (upsclaing) für jede Skala bzw. Stufe einer Mehrskalen- bzw. Mehrstufenlösung implizieren. Beispielsweise weist für jedes Zielpixel aus einem Zielbild (beispielsweise bei einem Loch) eine Initialisierungskomponente eine zufällig generierte Transformation als Initialisierung zu. Diese Transformationen können Ähnlichkeitstransformationen beinhalten. Ähnlichkeitstransformationsparameter können nutzerseitig ausgewählt, vorbestimmt oder auch eine Kombination aus beidem oder anderes sein. Im Allgemeinen sind die zufällig generierten Transformationen über die anwendbaren Ähnlichkeitstransformationsparameter (beispielsweise Translation, Skala bzw. Stufe, Drehung und/oder Spiegelung bezüglich Suchdomänen) beschränkt. Eine Patchverwendbarkeitskomponente bestimmt bisweilen die Verwendbarkeit eines jeden Kandidatenpatches. Für Kandidatenquellpatches, die den Patchverwendbarkeitstest nicht bestehen, weist eine Initialisierungskomponente eine neue zufällig generierte Transformation zu, um den durchgefallenen Kandidatenpatch zu ersetzen, und es wird der Patchverwendbarkeitstest wiederholt. Wird ein Patchverwendbarkeitstest eine vorbestimmte Anzahl von Malen (beispielsweise 256 Mal) nicht bestanden, so kann ein Kandidatenpatch generiert werden, indem der verwendbare Entnahmebereich (beispielsweise durch Weiten des Loches) verkleinert wird, die entsprechende Suchdomäne beschränkt wird oder indem eine zufällig generierte, einfache Translation anstelle einer vollen Ähnlichkeitstransformation benutzt wird. Diese alternative Technik zum Generieren eines verwendbaren Kandidatenpatches kann per se benutzt werden.
-
Im Allgemeinen führt der patchbasierte Synthetisierer eine Suche durch, um Kandidatenpatches zu identifizieren, die das NNF verbessern. Eine Patchverwendbarkeitskomponente bestimmt die Verwendbarkeit eines jeden Kandidatenpatches. Fällt ein Kandidatenquellpatch beim Patchverwendbarkeitstest durch, so wird der Kandidatenpatch nicht benutzt, um das NNF zu verbessern. Kandidatenpatches, die die Patchverwendbarkeit bestehen, werden bewertet, um zu bestimmen, ob ein gegebener Kandidatenpatch ein besserer Treffer für einen bestimmten Zielpatch als ein vorhandener nächster Nachbar in dem NNF ist (beispielsweise ob ein Kandidatenpatch einen Patchabstand verkleinert). Mit anderen Worten, das NNF ist das Minimum des NNF und des vorherigen NNF.
-
Bei einigen Ausführungsformen können eine Verbreitungssuchkomponente und eine Zufallssuchkomponente Kandidatenpatches auf eine Weise identifizieren, die eine deterministische Füllsynthese erleichtert. Bei herkömmlichen Techniken kann ein bezeichnetes Loch in mehrere Untereinteilungen zur parallelen Verarbeitung durch verschiedene Threads aufgeteilt werden. Bei einem Beispiel kann ein Loch in drei Untereinteilungen aufgeteilt werden, wobei jeder von drei Threads eine entsprechende Untereinteilung parallel verarbeitet. Bei herkömmlichen Techniken verarbeitet ein bestimmter Thread jedes Pixel in einer zugeteilten Untereinteilung in der Entnahmelinienreihenfolge. Für ein gegebenes Pixel verbreitet eine Verbreitungssuchkomponente beispielsweise Lösungen für benachbarte Pixel und wählt die beste Lösung aus. Die Zufallssuchkomponente identifiziert Lösungen für zufällig identifizierte Pixel und wählt die beste Lösung aus, und der zugewiesene Thread bewegt sich zum nächsten Pixel in der Entnahmelinienreihenfolge weiter. Da einige Threads jedoch das Generieren einer Füllung für eine zugewiesene Untereinteilung gegebenenfalls schneller als andere Threads beenden, werden Füllungen für eine Untereinteilung oftmals unter Nutzung von Patches generiert, die aus einer unvollständigen Füllung für eine benachbarte Untereinteilung entnommen sind.
-
Bei einigen Ausführungsformen kann ein bezeichnetes Loch in mehr Untereinteilungen als Threads aufgeteilt werden, und es können mehrere Threads zugeteilt werden, um nur nicht angrenzende (non-bordering) Untereinteilungen parallel zu verarbeiten. Bei einem einfachen Prozess wird davon ausgegangen, dass ein Loch in sechs Blöcke 0 bis 5 aufgeteilt wird. Für geradzahlige Iterationen eines patchbasierten Synthetisierers können drei Threads abwechselnde Blöcke (beispielsweise 0, 2, 4) in der Entnahmelinienreihenfolge verarbeiten. Während ungeradzahliger Iterationen können die Threads abwechselnde Blöcke in der umgekehrten Entnahmelinienreihenfolge verarbeiten (beispielsweise 1, 3, 5). Da benachbarte Untereinteilungen vollständige Füllungen bis zu dem Zeitpunkt aufweisen, zu dem ein beliebiger Thread die Verarbeitung einer bestimmten Untereinteilung beendet, ist der Zeitpunkt, zu dem jeder Thread die Verarbeitung seiner zugeteilten Untereinteilung beendet, nicht von Belang. Als solches kann das Zuteilen mehrerer Threads zur parallelen Verarbeitung von nicht angrenzenden (non-bordering) Untereinteilungen deterministische Ergebnisse erzeugen.
-
Bei anderen Ausführungsformen kann eine Wellenfronttechnik angewendet werden, um Kandidatenpatches zu identifizieren, was eine deterministische Füllsynthese erleichtert. Allgemein ist die Wellenfrontverarbeitung eine Technik zum Verarbeiten eines mehrdimensionalen Gitters, bei dem eine bestimmte Einheit in dem Gitter von anderen Einheiten in dem Gitter abhängt. Beginnend in einer Ecke schreitet die Verarbeitung in einer Diagonalbewegung (sweep), die einer Wellenfront ähnelt, über das Gitter fort. Im Zusammenhang mit einer patchbasierten Synthese kann eine Suche unter Nutzung einer Wellenfront anstatt in einer Entnahmelinienreihenfolge implementiert werden (die Verbreitungssuchkomponente kann beispielsweise Lösungen für ein benachbartes Pixel darüber und für ein benachbartes Pixel links davon verbreiten). Ein Zufallszahlengenerator, der von der Zufallssuchkomponente auf zufällig identifizierte Pixel angewendet wird, kann zudem modifiziert sein. Zufallszahlengeneratoren sind üblicherweise dafür gestaltet, eine bekannte Sequenz von gleichförmigen Zahlen bei gegebener Saat (seed) zu generieren. Für eine Wellenfrontverarbeitung werden zur Erzeugung einer deterministischen Patchsynthese x, y, die Iteration des patchbasierten Synthetisierers und die Iteration der Zufallssuche als Eingaben zum Generieren einer gleichförmigen Zahl angenommen. Auf diese Weise erzeugt für einen gegebenen Pixelwert (x, y) eine gegebene Sequenz von Aufrufen an dem Zufallszahlengenerator dieselben Ergebnisse. Auf diese Weise kann ein deterministischer Satz von Kandidatenpatches identifiziert werden, was eine deterministische Füllsynthese erleichtert. Weitere Abwandlungen erschließen sich einem Durchschnittsfachmann auf dem Gebiet.
-
Allgemein führt der patchbasierte Synthetisierer ein Votieren durch, um ein vorgeschlagenes Zielbild zu generieren. Allgemein wird das Patchvotieren durchgeführt, um die Pixelfarben eines jeden schneidenden Nachbarpatches zu akkumulieren bzw. anzusammeln, und es werden die Farbvotierungen gewichtet gemittelt. Das vorgeschlagene Zielbild kann an eine Nutzerschnittstelle zur Präsentation als Vorschau weitergeleitet werden. Wie vorstehend erläutert worden ist, wird das vorgeschlagene Zielbild während jeder nachfolgenden Iteration aktualisiert, und das aktualisierte Zielbild kann an das Front-End für jede Iteration weitergeleitet werden. Das Ergebnis ist eine allmähliche Aktualisierung, also eine Live-Vorschau. Diese allmählichen Aktualisierungen können für einen Nutzer eine schnelle Echtzeitrückmeldung und eine frühere Gelegenheit dafür bereitstellen, gewünschte Änderungen vorzunehmen, um zu einer gewünschten Füllung zu gelangen.
-
Der patchbasierte Synthetisierer führt ein Hochskalieren bzw. Hochstufen (beispielsweise mittels einer Hochskalierungs- bzw. Hochstufungskomponente zum Hochskalieren bzw. Hochstufen des aktuellen NNF zur Nutzung als Basislinie während einer nachfolgenden Iteration auf der nächsten Skala bzw. Stufe) durch. Da dieses Hochskalieren bzw. Hochstufen nichtverwendbare Patches erzeugen kann, bestimmt eine Patchverwendbarkeitskomponente vorteilhafterweise die Verwendbarkeit von Kandidatenpatches, die dem hochskalierten bzw. hochgestuften NNF entsprechen. Kandidatenpatches, die die Patchverwendbarkeit bestehen, werden während einer nachfolgenden Iteration des patchbasierten Synthetisierers bewertet, um zu bestimmen, ob ein gegebener Kandidatenpatch ein besserer Treffer für einen bestimmten Zielpatch im Vergleich zu einem entsprechenden Kandidatenpatch, der aus einem zufällig initialisierten NNF generiert ist, ist.
-
Allgemein wird der Ablauf durch den patchbasierten Synthetisierer für nachfolgende Pyramidenskalen bzw. -stufen wiederholt, bis eine Lösung mit voller Auflösung generiert ist und zur Präsentation gegenüber einem Nutzer an das Front-End weitergeleitet wird. Bei einigen Ausführungsformen kann ein patchbasierter Synthetisierer pausieren (break), wenn irgendeine Komponente einen (beispielsweise durch den Nutzer) aktualisierten Entnahmebereich und/oder eine anwendbare Translation, Skala bzw. Stufe, Drehung und/oder Spiegelung mit Blick auf die Suchdomäne detektiert. Bei diesem Szenario kann der patchbasierte Synthetisierer getätigte Berechnungen neuverwenden, um die Geschwindigkeit zu verbessern und unnötige Neuberechnungen zu vermeiden, wie vorstehend detaillierter beschrieben worden ist, und kann mit der Verarbeitung des aktualisierten Entnahmebereiches und/oder der Suchdomäne automatisch beginnen. Zusätzlich und/oder alternativ kann der patchbasierte Synthetisierer ein vorgeschlagenes Zielbild zur Präsentation als Vorschau weiterleiten und mit seinem Prozess pausieren (break), um eine Nutzereingabe vor dem vervollständigen der Füllung zu erleichtern, wie vorstehend detaillierter beschrieben worden ist. Eine Nutzerangabe dahingehend, mit der Verarbeitung weiterzumachen, kann bewirken, dass der patchbasierte Synthetisierer die verbleibenden Auflösungen, wie vorstehend detaillierter beschrieben worden ist, berechnet.
-
In einigen Fällen bzw. einer Anzahl von Fällen beinhaltet/beinhalten das Loch / die Löcher, das/die durch das contentbewusste Füllen gefüllt worden ist/sind, jedoch unrichtigen Bildcontent, was ein nicht gefälliges und unnatürliches Ergebnis erzeugt. Durch Beschränken der Kandidatenpatches auf zweidimensionale Translationen kann beispielsweise die mögliche Qualität des rekonstruierten Zielbildes beschränkt werden. CAF-Techniken sind jedoch per se rechentechnisch aufwändig, und das bloße Erweitern der Suchdomänenergebnisse führt zu einem nicht hinnehmbaren Anstieg der Rechenzeit.
-
In einigen Fällen kann entsprechend eine Nutzereingabe angefordert werden. Das interaktive System beinhaltet eine Nutzerschnittstelle, die ermöglicht, dass ein Nutzer ein Loch und einen Entnahmebereich zur Nutzung beim Füllen des Loches spezifiziert. Der Entnahmebereich, der allgemein das Loch ausschließt, kann in einer Randbedingungsmaske (constraint mask) gespeichert sein. Ein Pinselwerkzeug kann eine Nutzereingabe der Hinzufügung zu dem Entnahmebereich oder der Herausnahme hieraus erleichtern. Beim Detektieren der Vervollständigung der Nutzereingabe kann das interaktive System die sich ergebende Randbedingungsmaske automatisch an eine Back-End-Engine zum contentbewussten Füllen weiterleiten, um das contentbewusste Füllen unter Nutzung der spezifizierten Randbedingungsmaske zu synthetisieren.
-
Einige Ausführungsformen können verbesserte Patchverwendbarkeitstests für Anwendungen mit patchbasierter Synthese nutzen. Die Einführung von Patchdrehungen und einer Skalierung bzw. Stufung vergrößert die Komplexität der Bestimmung dessen, ob ein Kandidatenpatch ein verwendbarer Patch ist, der in den Entnahmebereich fällt. Um die Verwendbarkeit eines gegebenen Patches, der mehrere Pixel umfasst, zu testen, können einer oder mehrere aus einer Reihe von vereinfachten Tests durchgeführt werden, um zu bestimmen, ob jedes Pixel des Patches ins Innere des Entnahmebereiches (beispielsweise gemäß Bezeichnung durch eine Randbedingungsmaske) fällt. Es kann ein Lochweitungstest auf Patchverwendbarkeit durchgeführt werden, indem das Loch in der Randbedingungsmaske geweitet wird, um eine verkleinerte Randbedingungsmaske zu generieren, und indem eine Prüfung durchgeführt wird, um zu bestimmen, ob ein repräsentatives Pixel in dem Patch ins Innere des Bereiches, der von der verkleinerten Randbedingungsmaske bezeichnet wird, fällt. Ein Patch, der diesen Test besteht, ist verwendbar. Es kann ein Nichtweitungstest auf Patchverwendbarkeit durchgeführt werden, indem geprüft wird, ob ein repräsentatives Pixel eines Patches ins Innere des Loches (beispielsweise ins Äußere des Entnahmebereiches, der von der Randbedingungsmaske bezeichnet wird) fällt. Ein Patch, der dieses Kriterium erfüllt, ist nichtverwendbar. Es kann ein umfassender Pixeltest auf Patchverwendbarkeit durchgeführt werden, indem geprüft wird, ob jedes Pixel in dem Patch ins Innere des Entnahmebereiches, der von der Randbedingungsmaske bezeichnet wird, fällt. Aufgrund der vergleichsweise größeren rechentechnischen Anforderungen dieses umfassenden Pixeltests werden bisweilen nur diejenigen Pixel, deren Verwendbarkeit unter Nutzung eines der beiden anderen Tests nicht bestimmt werden kann, mittels des umfassenden Pixeltests getestet. Ein Patch, dessen Pixel den umfassenden Test bestehen, ist verwendbar. Einer oder mehrere der Patchverwendbarkeitstests können in das interaktive System zum automatischen Synthetisieren einer contentbewussten Füllung integriert sein.
-
Das Testen der Verwendbarkeit eines Patches kann beispielsweise die Nutzung von Ähnlichkeitstransformationen beinhalten. Eine Ähnlichkeitstransformation ist eine formwahrende Transformation, die eines oder mehrere von einer Translation, einer Drehung, einer Skalierung bzw. Stufung oder einer Reflexion (das heißt einer Spiegelung) beinhalten kann. Insbesondere impliziert ein exemplarisches Verfahren ein Generieren eines ähnlichkeitstransformierten Kandidatenpatches zum Rekonstruieren eines Zielbildes, ein Verwendbarkeitsprüfen des Kandidatenpatches als verwendbaren Patch, der ins Innere eines Entnahmebereiches des Quellbildes fällt, auf Grundlage einer Bewertung eines repräsentativen Patches des ähnlichkeitstransformierten Kandidatenpatches und ein automatisches Rekonstruieren des Zielbildes unter Nutzung des verwendbarkeitsgeprüften Kandidatenpatches. In einigen Fällen beinhaltet der Kandidatenpatch Pixel aus einem Quellbild. In einigen Fällen beinhaltet die Verwendbarkeitsprüfung des Kandidatenpatches das Ausführen eines ersten Patchverwendbarkeitstests, der ein Weiten eines Loches in dem Entnahmebereich beinhaltet, um einen verkleinerten Entnahmebereich zu generieren, und eine Verwendbarkeitsprüfung des Kandidatenpatches auf Grundlage der Durchführung einer Prüfung, um zu bestimmen, dass das repräsentative Pixel ins Innere des verkleinerten Entnahmebereiches fällt. In einigen Fällen umfasst das Weiten des Entnahmebereiches ein Hinzufügen eines Weitungsstreifens mit einer Breite auf Grundlage der Breite des Kandidatenpatches, und dies mit zulässigen Patchdrehungen, einem maximal zulässigen Skalierungs- bzw. Stufungsfaktor und einer Superabtast- bzw. entnahmerate.
-
Wiederum bei dem Beispiel hat, wie in Bildern 404-405 ersichtlich ist, die Bildverarbeitungsanwendung 102 das Füllen der Bereiche 430 und 431 durchgeführt. Insbesondere zeigt der Bereich 430 eine Füllung des vorher verdeckten bzw. verdunkelten Teils des Swimmingpools 410, während der Bereich 431 eine Füllung des vorher verdunkelten bzw. verdunkelten Teils des Grases 411 zeigt.
-
Bei Block 306 impliziert der Prozess 300 ein Erstellen eines Ausgabebildes durch Zusammenführen (merging) einer jeden der aktualisierten Masken mit Abschnitten des Bildes. Die Abschnitte des Bildes sind Bereiche des Bildes, die nicht von einer der Masken dargestellt werden. Die Bildverarbeitungsanwendung 102 erstellt ein Ausgabebild durch Kombinieren der gefüllten Bilder. Wie weiter bei dem Beispiel dargestellt ist, führt, wie in dem Ausgabebild 406 ersichtlich ist, die Bildverarbeitungsanwendung 102 die Bilder 404 und 405 einschließlich der Bereiche 430 und 431 derart zusammen, dass das Ausgabebild 406 das Entferntsein des Zielobjektes, nämlich des hölzernen Objektes 412, darstellt.
-
Wie erläutert worden ist, können Ausführungsformen konditionale, generative, adversative Netzwerke nutzen, um eine Objektbegrenzungsdetektion durchzuführen, wie sie beispielsweise bei Block 302 des Prozesses 300 durchgeführt wird. 5 zeigt ein Beispiel für einen Prozess zum Trainieren eines derartigen Netzwerkes.
-
5 zeigt ein Beispiel für einen Prozess zum Trainieren eines konditionalen, adversativen Netzwerkes zum Detektieren von Begrenzungen von Objekten entsprechend einer Ausführungsform der vorliegenden Offenbarung. Das Modell maschinellen Lernens 105 kann ein konditionales, generatives, adversatives Netzwerk sein, das das generative Modell 106 und das diskriminative Modell 107 beinhaltet. Das Trainieren eines generativen, adversativen Netzwerkes impliziert ein gleichzeitiges Optimieren des generativen Modells 106, das eine Datenverteilung erfasst, und des diskriminativen Modells 107, das die Wahrscheinlichkeit dafür schätzt, dass eine Entnahme aus den Trainingsdaten und nicht von dem generativen Netzwerk stammt.
-
Bei Block 501 impliziert der Prozess 500 ein Bestimmen einer Begrenzung für ein Objekt innerhalb eines Bildes. 5 wird unter Bezugnahme auf 6 zu exemplarischen Zwecken erläutert, da 6 ein exemplarisches Trainingsbild zeigt. Andere Trainingsbilder sind jedoch möglich.
-
6 zeigt Beispiele für Trainingsdaten, die in 5 benutzt werden, entsprechend einer Ausführungsform der vorliegenden Offenbarung. 6 zeigt ein Bild 601, eine Maske 602 und ein Bild 603. Die Bildverarbeitungsanwendung 102 empfängt das Bild 601 und bestimmt die Begrenzung für die Objekte in dem Bild. Insbesondere bestimmt die Bildverarbeitungsanwendung 102 die Begrenzung für das dargestellte Blatt, die dargestellte Eidechse und dergleichen. Die Maske 602 stellt die bestimmten Begrenzungen dar.
-
Bei Block 502 impliziert der Prozess 500 ein Erstellen eines Satzes von Trainingsbildern durch Anwenden einer anderen bzw. verschiedenen zufällig generierten Maske auf die Begrenzung eines jeden Bildes derart, dass die Maske letztendlich bzw. wenigstens einen Teil der Begrenzung bedeckt. Die Bildverarbeitungsanwendung 102 bestimmt zufällig eine Maske, die einen Teil des Blattes schwärzt, wie durch den Punkt 610 innerhalb des Bildes 603 dargestellt ist. Auf diese Weise zwingt die Bildverarbeitungsanwendung 102 das konditionale, generative, adversative Netzwerk dazu, die nunmehr fehlenden Begrenzungen des Blattes vorherzusagen. Blöcke 501-502 werden bis zu dem Zeitpunkt wiederholt, zu dem ein ausreichend großer Trainingsdatensatz erstellt ist. Es können verschiedene Typen von Bildern benutzt werden, um den Trainingsdatensatz zu vertiefen oder zu verbreitern. Mehrere Bilder von Blättern mit fehlenden Begrenzungen können beispielsweise zur Vertiefung des Trainingssatzes benutzt werden.
-
Bei Block 503 impliziert der Prozess 500 ein Bereitstellen eines Streams von Bildern, der den Satz von Trainingsbildern und ein Falschbild aus der Generierung durch ein generatives Modell beinhaltet, für das diskriminative Modell. In einigen Fällen erstellt die Bildverarbeitungsanwendung 102 einen Stream von Bildern, der die generierten Trainingsbilder und ein oder mehrere Falschbilder aus der Generierung durch das generative Modell, beinhaltet. Während des Trainierens wird das generative Modell 106 gegen das dagegen arbeitende diskriminative Modell 107 gestellt. Das generative Modell 106 kann man sich analog zu einer Gruppe von Geldfälschern vorstellen, die versuchen, Falschgeld herzustellen und in Umlauf zu bringen, ohne entdeckt zu werden, während das diskriminative Modell analog zur Polizei ist, die versucht, das Falschgeld aufzuspüren. Der Wettbewerb in diesem Spiel bringt beide Gruppen dazu, ihre Verfahren zu verbessern, bis die Fälschungen von echten Objekten nicht mehr unterscheidbar sind.
-
Bei Block 504 impliziert der Prozess 500 ein Aktualisieren eines oder mehrerer Parameter des generativen Modells oder des diskriminativen Modells derart, dass eine Verlustfunktion minimiert wird. Sowohl das generative Modell 106 wie auch das diskriminative Modell 107 können einen oder mehr mehrere trainierbare Parameter oder solche Gewichtungen aufweisen. Generative, adversative Netzwerke werden durch Aktualisieren eines oder mehrerer dieser Parameter trainiert. Die Bildverarbeitungsanwendung 102 kann beispielsweise gleichzeitig eine diskriminative Verteilung derart aktualisieren, dass sie zwischen Entnahmen aus der Datengenerierungsverteilung und denjenigen aus einer generativen Verteilung unterscheiden kann.
-
Insbesondere empfängt die Bildverarbeitungsanwendung 102 von dem diskriminativen Modell für jedes Bild in dem Stream eine Identifikation einer Begrenzung in dem Bild. Die Bildverarbeitungsanwendung 102 berechnet wiederum die Verlustfunktion auf Grundlage einer Differenz bzw. eines Unterschiedes zwischen der Begrenzung und der Referenzbegrenzung und aktualisiert entsprechend Parameter der Modelle. Das diskriminative Modell kann identifizieren, dass das Falschbild nicht echt ist, und aktualisiert entsprechend nicht Parameter auf Grundlage des Falschbildes. Die Bildverarbeitungsanwendung 102 kann das trainierte Modell maschinellen Lernens 105 nutzen, um Begrenzungen von Objekten in Verbindung mit dem Prozess 300 vorherzusagen.
-
7 zeigt ein Beispiel für ein Rechensystem zum Entfernen von Objekten aus Bildern entsprechend einer Ausführungsform der vorliegenden Offenbarung. Die Rechenvorrichtung 700 ist ein Beispiel für ein Rechensystem 101 und kann eine Bildverarbeitungsanwendung 102 implementieren. Ein beliebiges geeignetes Rechensystem kann zur Durchführung der hier beschriebenen Vorgänge benutzt werden. Das dargestellte Beispiel für eine Rechenvorrichtung 700 beinhaltet einen Prozessor 702, der kommunikationstechnisch mit einer oder mehreren Speichervorrichtungen 704 gekoppelt ist. Der Prozessor 702 führt computerausführbaren Programmcode 703, der in einer Speichervorrichtung 704 gespeichert ist, aus, greift auf Daten, die in der Speichervorrichtung 704 gespeichert sind, zu oder beides. Beispiele für den Prozessor 702 beinhalten einen Mikroprozessor, eine anwendungsspezifische integrierte Schaltung („ASIC“), ein feldprogrammierbares Gate Array („FPGA“) oder eine beliebige andere geeignete Verarbeitungsvorrichtung. Der Prozessor 702 kann eine beliebige Anzahl von Verarbeitungsvorrichtungen oder Kernen beinhalten, darunter auch eine einzige Verarbeitungsvorrichtung. Die Funktionalität der Rechenvorrichtung kann in Hardware, Software, Firmware oder einer Kombination hieraus implementiert sein.
-
Die Speichervorrichtung 704 beinhaltet ein beliebiges geeignetes nichttemporäres computerlesbares Medium zum Speichern von Daten, Programmcode oder beidem. Ein computerlesbares Medium kann eine beliebige elektronische, optische, magnetische oder eine andere Speichervorrichtung beinhalten, die für den Prozessor computerlesbare Anweisungen oder anderen Programmcode bereitstellen kann. Nichtbeschränkende Beispiele für ein computerlesbares Medium beinhalten einen Flashspeicher, einen ROM, einen RAM, eine ASIC oder ein beliebiges anderes Medium, von dem eine Verarbeitungsvorrichtung Anweisungen lesen kann. Die Anweisungen können prozessorspezifische Anweisungen beinhalten, die von einem Compiler oder einem Interpreter aus Code generiert werden, der in einer beliebigen geeigneten Computerprogrammiersprache geschrieben ist, darunter beispielsweise C, C++, C#, Visual Basic, Java oder Scripting Language.
-
Die Rechenvorrichtung 700 kann zudem eine Anzahl von externen oder internen Vorrichtungen, so beispielsweise Eingabe- oder Ausgabevorrichtungen beinhalten. Die Rechenvorrichtung 700 ist beispielsweise mit einer oder mehreren Eingabe-/Ausgabe-Schnittstellen 708 („I/O“) gezeigt. Eine I/O-Schnittstelle 708 kann eine Eingabe von Eingabevorrichtungen empfangen oder eine Ausgabe für Ausgabevorrichtungen bereitstellen. Ein oder mehrere Busse 707 sind ebenfalls in der Rechenvorrichtung 700 beinhaltet. Der Bus 707 koppelt eine oder mehrere Komponenten einer jeweiligen der Rechenvorrichtung 700 kommunikationstechnisch.
-
Die Rechenvorrichtung 700 führt den Programmcode 730 aus, der den Prozessor 702 dafür konfiguriert, einen oder mehrere der hier beschriebenen Vorgänge durchzuführen. Der Programmcode 730 veranlasst den Prozessor, die in 2 oder 3 beschriebenen Vorgänge durchzuführen.
-
Die Rechenvorrichtung 700 beinhaltet zudem eine Netzwerkschnittstellenvorrichtung 710. Die Netzwerkschnittstellenvorrichtung 710 beinhaltet eine beliebige Vorrichtung oder Gruppe von Vorrichtungen, die zum Einrichten einer verdrahteten oder drahtlosen Datenverbindung mit einem oder mehreren Datennetzwerken geeignet sind. Die Netzwerkschnittstellenvorrichtung 710 kann eine drahtlose Vorrichtung sein und eine Antenne 714 aufweisen. Die Rechenvorrichtung 700 kann mit einer oder mehreren anderen Rechenvorrichtungen, die die Rechenvorrichtung oder eine andere Funktionalität implementieren, über ein Datennetzwerk unter Nutzung der Netzwerkschnittstellenvorrichtung 710 kommunizieren.
-
Die Rechenvorrichtung 700 kann zudem eine Anzeigevorrichtung 712 beinhalten. Die Anzeigevorrichtung 712 kann ein LCD, ein LED, ein Touchscreen oder eine andere Vorrichtung sein, die dafür betreibbar ist, Information über die Rechenvorrichtung 700 anzuzeigen. Die Information kann beispielsweise einen Betriebsstatus der Rechenvorrichtung, einen Netzwerkstatus und dergleichen mehr beinhalten.
-
Allgemeine Betrachtungen
-
Es sind hier zahlreiche spezifische Details angegeben, um ein eingehendes Verständnis des beanspruchten Erfindungsgegenstandes zu ermöglichen. Einem Fachmann auf dem Gebiet erschließt sich jedoch, dass der beanspruchte Erfindungsgegenstand auch ohne diese spezifischen Details praktisch umgesetzt werden kann. In anderen Fällen sind Verfahren, Einrichtungen oder Systeme, die einem Durchschnittsfachmann bekannt sein dürften, nicht detailliert beschrieben, um den beanspruchten Erfindungsgegenstand nicht unklar zu machen.
-
Wenn nicht anders angegeben, ist davon auszugehen, dass in der vorliegenden Beschreibung Erläuterungen unter Nutzung von Begriffen wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ und „Identifizieren“ oder dergleichen Handlungen oder Prozesse einer Rechenvorrichtung, so beispielsweise eines oder mehrerer Computer oder einer ähnlichen elektronischen Rechenvorrichtung oder solcher Vorrichtungen, bezeichnen, die Daten manipulieren oder transformieren, die als physische bzw. physikalische, elektronische oder magnetische Quantitäten innerhalb von Speichern, Registern oder anderen Informationsspeichervorrichtungen, Übertragungsvorrichtungen oder Anzeigevorrichtungen der Rechenplattform, dargestellt werden.
-
Das hier beschriebene System oder die hier beschriebenen Systeme sind nicht auf eine bestimmte Hardwarearchitektur oder Konfiguration beschränkt. Eine Rechenvorrichtung kann eine beliebige geeignete Anordnung von Komponenten beinhalten, die ein Ergebnis bereitstellen, das von einer oder mehreren Eingaben abhängt. Geeignete Rechenvorrichtungen beinhalten mikroprozessorbasierte Mehrzweckcomputersysteme, die auf gespeicherte Software zugreifen, die das Rechensystem ausgehend von einer Allzweckrecheneinrichtung zu einer spezialisierten Recheneinrichtung programmiert oder konfiguriert, die eine oder mehrere Ausführungsformen des vorliegenden Erfindungsgegenstandes implementiert. Es können eine beliebige geeignete Programmierung, ein solches Scripting oder ein anderer Typ von Sprache oder auch Kombinationen von Sprachen benutzt werden, um die hier enthaltenen Lehren in Software zu implementieren, die beim Programmieren oder Konfigurieren einer Rechenvorrichtung benutzt werden soll.
-
Beispiele für die hier offenbarten Verfahren können während des Betriebes derartiger Rechenvorrichtungen durchgeführt werden. Die Reihenfolge der Blöcke, die bei den vorstehenden Beispielen dargestellt sind, kann abgewandelt werden; so können Blöcke beispielsweise umgeordnet, kombiniert und/oder in Teilblöcke aufgeteilt werden. Bestimmte Blöcke oder Prozesse können auch parallel durchgeführt werden.
-
Die Nutzung von „ausgelegt für“ oder „konfiguriert für“ ist hier sprachlich offen und einschließend gemeint, sodass Vorrichtungen nicht ausgeschlossen sind, die dafür ausgelegt oder konfiguriert sind, zusätzliche Aufgaben oder Schritte durchzuführen. Zudem ist die Nutzung von „auf Grundlage von“ dahingehend offen und einschließend gemeint, dass ein Prozess, ein Schritt, eine Berechnung oder eine andere Handlung „auf Grundlage“ einer oder mehrerer angegebener Bedingungen oder Werte in der Praxis auch auf zusätzlichen Bedingungen oder Werten über die angegebenen hinaus beruhen kann. Die hier angegebenen Überschriften, Auflistungen und Nummerierungen dienen lediglich der leichteren Erläuterung und sind nicht beschränkend gemeint.
-
Obwohl der vorliegende Erfindungsgegenstand detailliert anhand spezifischer Ausführungsformen beschrieben worden ist, sollte einsichtig sein, dass ein Fachmann auf dem einschlägigen Gebiet beim Erwerb von Verständnis für das Vorbeschriebene ohne Weiteres Änderungen an, Abwandlungen von und Äquivalente zu derartigen Ausführungsformen konzipieren kann. Entsprechend sollte einsichtig sein, dass die vorliegende Offenbarung lediglich zu exemplarischen Zwecken und nicht zur Beschränkung vorgestellt worden ist und die Einbeziehung derartiger Modifikationen an, Abwandlungen von und/oder Hinzufügungen zu dem vorliegenden Erfindungsgegenstand nicht ausschließt, was sich einem Durchschnittsfachmann auf dem Gebiet ohne Weiteres erschließt.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- lan J. Goodfellow et al., veröffentlicht bei Departement d'informatique et de recherche operationelle, Universite de Montreal, 2014 [0035]