[PYTHON] Konvertieren Sie Gesichtsbilder mit PULSE in eine hohe Bildqualität, damit Sie die Poren und die Textur sehen können

1. Zuallererst

スクリーンショット 2020-07-14 14.08.30.png Wollten Sie schon immer ein Bild mit niedriger Auflösung in ein Bild mit hoher Auflösung konvertieren?

Im Juni 2020 kündigte die Duke University eine Methode namens ** PULSE ** an, mit der die hochauflösende Konvertierung, die zuvor maximal 8-mal war, auf 64-mal erhöht wurde. Dies ermöglicht es, ein mosaikartiges Gesichtsbild, das Augen und Mund nicht klar zeigt, in eine hohe Bildqualität umzuwandeln, mit der Sie die Poren und die Textur sehen können. ** **.

Dieses Mal werde ich das Ergebnis des Versuchs des auf Github veröffentlichten Quellcodes vorstellen. Der Code wurde von Google Colab erstellt und auf Github veröffentlicht. Wenn Sie ihn also selbst ausprobieren möchten, klicken Sie auf diesen ** "Link" **. Klicken Sie auf /Pulse_test.ipynb) und klicken Sie oben auf dem angezeigten Blatt auf die Schaltfläche ** "Colab on Web" **, um es zu verschieben.

2. Algorithmus

transformation.gif Der Algorithmus verwendet ein ** trainiertes GAN-Modell **, um ein ** "Bild zu erzeugen, das von einem Bild mit hoher Auflösung in ein Bild mit niedriger Auflösung" ** konvertiert wurde, und den Unterschied zwischen diesem und dem ** Bild mit "niedriger Auflösung" **. Als ** Verlust ** wollen wir ein hochauflösendes Bild, das den ** Verlust ** minimiert.

Was besorgniserregend ist, ist, dass die für das Training verwendeten Bilder, da das trainierte GAN-Modell verwendet wird, gut in hochauflösende Bilder konvertiert werden können, aber die nicht für das Training verwendeten Bilder auch gut funktionieren.

Dieses Mal möchte ich absichtlich ein Bild mit niedriger Auflösung (32 x 32 Pixel) aus verschiedenen Gesichtsbildern erstellen und sehen, wie genau dies in eine hohe Auflösung (1024 x 1024 Pixel) konvertiert werden kann. Die Anzahl der Optimierungen (Schritte) beträgt 1000.

3. Trainiertes Gesichtsbild (FFHQ-Datensatz)

Das trainierte GAN-Modell, das in ** PULSE ** verwendet wird, ist StyleGAN. Daher wird der FFHQ-Datensatz für das Training verwendet, und dieses Gesichtsbild sollte zumindest funktionieren. Nehmen wir nun drei Bilder aus dem FFHQ-Datensatz.

スクリーンショット 2020-07-14 15.21.21.png

Niedrige Auflösung ist ein Bild mit niedriger Auflösung (32 x 32), Hohe Auflösung ist ein konvertiertes Bild mit hoher Auflösung (1024 x 1024) und Real ist das Originalbild, das mit niedriger Auflösung erstellt wurde. Daher kann die Genauigkeit der hochauflösenden Konvertierung dadurch bestimmt werden, wie nahe ** die hohe Auflösung an Real liegt. ** Natürlich kann das trainierte Bild problemlos in eine hohe Auflösung konvertiert werden.

4. Ungelerntes Gesichtsbild (Ausländer)

Was ist dann mit verlernten Gesichtsbildern (Ausländern)? Versuchen wir es mit den Gesichtsbildern von drei Ausländern, die durch die Websuche erhalten wurden.

スクリーンショット 2020-07-14 15.21.34.png Hmmm, Ausländer scheinen auch mit Gesichtsbildern, die sie nicht zum Lernen verwendet haben, gut zu funktionieren.

5. Ungelerntes Gesichtsbild (Japanisch)

Was ist dann mit verlernten Gesichtsbildern (Japanisch)? Versuchen wir es mit den Gesichtsbildern von drei Japanern, die durch die Websuche erhalten wurden. Es scheint, dass der FFHQ-Datensatz nicht viele Japaner enthielt. Was passiert also?

スクリーンショット 2020-07-14 15.21.48.png

Es ist besser als du denkst. Ich denke, dass High Resolution ein wenig andere Augen und mehr Falten im Gesicht hat als Real, aber es ist in Ordnung. Das Erhöhen der Anzahl von Optimierungen (Schritten) scheint sich etwas weiter zu verbessern.

6. Testen Sie unter der Annahme einer realen Situation

Bisher haben wir übrigens Tests durchgeführt, um ein qualitativ hochwertiges Bild absichtlich auf 32 x 32 Pixel zu reduzieren und in ein qualitativ hochwertiges Bild umzuwandeln. In einer realen Szene möchten wir jedoch von Anfang an ein Bild mit geringer Qualität erstellen. Ich möchte es in eine hohe Bildqualität konvertieren. Lassen Sie uns diesen Test hier machen.

Der erste Kapitän des ehemaligen Kapitäns von Nogizaka46, Reika Sakurai, [Wekipedia](https://ja.wikipedia.org/wiki/Reika Sakurai) hat dieses Bild am Anfang. reika.jpg Die Bildgröße beträgt 190 x 253 Pixel, und wenn es sich nur um den Gesichtsteil handelt, beträgt sie etwa 90 x 90 Pixel. Schneiden wir nun das Gesichtsbild aus diesem Bild aus und konvertieren es in hohe Qualität. Ich werde versuchen, die Anzahl der Schritte (Schritte) mit 6000 zu optimieren.

reika_S_6000.png

Oh! Findest du das nicht ziemlich gut?

7. Zusammenfassung

Ich war überrascht, dass es möglich war, eine hohe Bildqualität über die Erwartungen hinaus zu konvertieren. Wenn Sie darüber nachdenken, hat ein 32x32-Pixel-Bild die gleiche Informationsmenge wie ein 1024-dimensionaler Vektor, sodass es viel Potenzial gibt, ein qualitativ hochwertiges Bild hervorzuheben.

Trotzdem dachte ich an Dukes großen Spaß. Interessant ist die Methode PULSE, die sich völlig von der herkömmlichen Methode unterscheidet.

Recommended Posts

Konvertieren Sie Gesichtsbilder mit PULSE in eine hohe Bildqualität, damit Sie die Poren und die Textur sehen können
Umgang mit dem Fehler "Fehler beim Laden des Moduls" canberra-gtk-module ", der beim Ausführen von OpenCV auftritt
Umgang mit Fehlern bei der Installation von Whitenoise und der Bereitstellung auf Heroku
Umgang mit Fehlern bei der Installation von Python und Pip mit Choco
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Konvertieren Sie Gesichtsbilder mit PULSE in eine hohe Bildqualität, damit Sie die Poren und die Textur sehen können
Mit Python und xonsh gut gemacht, so dass Sie die EC2-Instanz sehen können, indem Sie einfach die Shell betreten
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
Konvertieren Sie PDF in Image mit ImageMagick