Deep Feature Interpolation for Image Content Changes
Deep Feature Interpolation (DFI) ist eine Technik, mit der einem Bild ein bestimmtes Attribut zugewiesen wird (z. B. "Lächeln", "Ältere", "Bart"). Als Methode zur Angabe eines bestimmten Attributs ist eine Methode bekannt, die ein generatives kontradiktorisches Netzwerk (GAN) verwendet, z. B. "Autoencoding über Pixel hinaus unter Verwendung einer erlernten Ähnlichkeitsmetrik". DFI verfolgt jedoch einen anderen Ansatz als GAN. Das Papier finden Sie unter https://arxiv.org//abs/1611.05507.
Wie aus "Ein neuronaler Algorithmus des künstlerischen Stils" bekannt ist, aus der Feature-Map (Zwischenschichtausgabe), die durch Eingabe eines Bildes in CNN erhalten wurde. , Sie können das Image wiederherstellen. Es gibt eine Erklärung in Algorithmus zum Konvertieren des Stils, daher denke ich, dass das Lesen dieses Blogs Ihr Verständnis vertiefen wird. In DFI wird "Feature Map eines Bildes mit einem bestimmten Attribut" durch Hinzufügen eines Attributvektors zu "Feature Map aus einem Bild erhalten" erhalten. Anschließend wird das "Bild mit bestimmten Attributen" aus der erhaltenen Feature-Map wiederhergestellt.
Gehen Sie wie folgt vor, um das Bild zu konvertieren.
Hier ist ein Diagramm des in diesem Artikel verwendeten Algorithmus. Die Schrittnummer steht im Papier und unterscheidet sich von diesem Artikel.
Ich habe es mit Chainer implementiert. https://github.com/dsanno/chainer-dfi
Verwenden wir DFI, um dem Gesichtsbild ein Lächelnattribut zu verleihen.
In diesem Artikel wurde die Feature-Map anhand von Bildern aus dem LFW-Datensatz (Labeled Faces in the Wild) berechnet. LFW enthält mehr als 13.000 Gesichtsbilder und Vektoren, die die Attribute von Gesichtsbildern wie "Männlich" und "Lächeln" quantifizieren. In dem Papier wurde als ähnliches Bild, das als Quell- / Zielsatz verwendet werden soll, ein Bild mit vielen gemeinsamen Attributen mit dem Originalbild ausgewählt. Versuchen Sie, das in LFW enthaltene Bild auf die gleiche Weise zum Lächeln zu bringen. Das Ergebnis ist wie folgt.
Das Originalbild | Lächeln | Lächeln+Öffne deinen Mund |
---|---|---|
Die Parameter usw. sind wie folgt.
Ich habe versucht, das in Pakutaso verteilte Bild zu konvertieren.
Ich werde den Ausdruck machen, der mich ein wenig nervös lächeln lässt. Der Gewichtungsparameter $ \ alpha $ wurde im Bereich von 0,1 bis 0,5 geändert. Wenn das Gewicht zu groß ist, nimmt auch die Bildverzerrung zu.
Gewicht 0.1 | Gewicht 0.2 | Gewicht 0.3 |
---|---|---|
Gewicht 0.4 | Gewicht 0.5 | |
Ich habe oben gezeigt, dass Sie ein Gesichtsbild zum Lächeln bringen können, aber fügt diese Methode dem Bild wirklich Attribute hinzu? Ich denke nicht. Das verwendete CNN dient der Bilderkennung und die Feature Map enthält keine Informationen zu bestimmten Attributen. Daher kann unter Verwendung der Feature-Map-Differenz zwischen der Quelle und dem Zielsatz die "durchschnittliche Bilddifferenz zwischen der Quelle und dem Ziel" erzeugt werden. Wenn das Attribut "Lächeln" lautet, bedeutet dies, dass ein Lächelnbild erzeugt wird, indem dem Originalbild "Bildunterschied zwischen einem nicht lachenden Gesicht und einem Lächeln" hinzugefügt wird.
Da wir nur Bildunterschiede hinzufügen, muss die Anordnung der Gesichtsteile zwischen dem Originalbild und dem Quell- / Zielbild ausgerichtet werden. Wenn das Originalbild und das Quell- / Zielbild nicht dieselbe Gesichtsposition haben, erscheinen die Lippen möglicherweise an einer seltsamen Position. Der verwendete Gesichtsbilddatensatz enthält keine Informationen zur Platzierung von Teilen oder Gesichtsausrichtungsattribute, aber die Position und Größe des Gesichts im Bild sind ausgerichtet, sodass ich denke, dass es im Allgemeinen funktioniert. Um eine natürlichere Bildkonvertierung durchzuführen, ist es meines Erachtens erforderlich, das Quell- / Zielbild unter Berücksichtigung der Anordnung der Gesichtsteile auszuwählen.
Das Papier vergleicht auch die erzeugten Bilder mit GAN-basierten Methoden. Die tatsächlich erzeugten Bilder finden Sie auf dem Papier. Hier werden wir die Eigenschaften der Methoden vergleichen.
DFI | GAN-Basis | |
---|---|---|
Benötigen Sie ein geschultes Modell? | notwendig | Nicht notwendig |
Vorlernen | Nicht notwendig | Müssen Sie das Bilderzeugungsmodell trainieren |
Eine Bilderzeugungszeit(Bei Verwendung der GPU) | Dutzende Sekunden | Es dauert weniger als eine Sekunde |
Bild für die Bilderzeugung erforderlich | Beim Generieren von Bildern sind Dutzende bis Hunderte ähnlicher Bilder erforderlich | Keiner |
Ich werde über den Unterschied zwischen der Beschreibung des Papiers und der diesmal verwendeten Implementierung schreiben. Wenn Sie nicht an den Details der Implementierung interessiert sind, können Sie diese überspringen.
In dem Artikel heißt es: "Wir verwenden die Faltungsschichten des normalisierten VGG-19-Netzwerks, das auf ILSVRC2012 vorab trainiert wurde." Sie können sehen, dass die Feature-Map normalisiert ist. Die Normalisierung der Feature-Map wird in "Grundlegendes zu tiefen Bilddarstellungen durch Invertieren" beschrieben, bedeutet jedoch, die Feature-Map durch die L2-Norm zu teilen. Eine Normalisierung wurde aus den folgenden Gründen nicht durchgeführt.
In diesem Artikel werden conv3_1, conv4_1 und conv5_1 unter den Zwischenschichten der VGG-19-Schichten als Feature-Maps verwendet. Dieser Punkt gilt auch für diese Implementierung. Darüber hinaus heißt es in der Arbeit: "Der Vektor $ \ phi (x) $ besteht aus verketteten Aktivierungen der Es heißt convnet, wenn es auf Bild x "angewendet wird, und Sie können sehen, dass mehrere Feature-Maps kombiniert werden. Es funktionierte jedoch ohne Kombination von Feature Maps, sodass es in dieser Implementierung nicht kombiniert wurde.
Attributvektor im Papier
Recommended Posts