[PYTHON] Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.

Einführung

TensorFlow bietet eine Reihe von Funktionen zum Ändern der Größe.

Als ich nachgeschlagen habe, gibt es in TensorFlow sechs Funktionen zum Ändern der Größe.

Wenn ich das Dokument lese, ist die Erklärung geschrieben, aber sie kommt nicht sehr gut heraus.

Also möchte ich es ausprobieren und visuell verstehen, wie es funktioniert.

Zusammenfassend enthielt tf.image.resize_images die folgenden vier Funktionen:

Also werde ich nur die folgenden zwei versuchen.

Ich werde Lena mit einer Größe von 256x256 und eine Katze mit einer Größe von 256x170 verwenden. スクリーンショット 2016-09-06 11.17.15.png

Probieren wir sie einzeln aus.

tf.image.resize_images(images, new_height, new_width, method=0, align_corners=False) resize_images ist eine Funktion, mit der Bilder mit der angegebenen Methode auf new_height x new_width geändert werden.

Als Eingabebild kann ein 4D-Tensor [Stapel, Höhe, Breite, Kanäle] oder ein 3D-Tensor [Höhe, Breite, Kanäle] angegeben werden. Wenn in 4D angegeben, ist eine Stapelkonvertierung von Bildern möglich.

Als Rückgabewert wird ein 4D-Tensor [Batch, neue_Höhe, neue_Breite, Kanäle] oder ein 3D-Tensor [neue_Höhe, neue_Breite, Kanäle] zurückgegeben. Dies ändert sich je nach Eingangstensor.

Versuchen Sie zuerst zu reduzieren

Versuchen Sie, das Bild mit den folgenden Einstellungen auf 128 x 128 zu reduzieren.

tf.image.resize_images(image, 128, 128)

Das Ergebnis ist wie folgt. スクリーンショット 2016-09-06 11.21.07.png

Lena konnte problemlos schrumpfen, aber die Katze ist verzerrt. Auf diese Weise ** Wenn das ursprüngliche Seitenverhältnis nicht mit new_width und new_height übereinstimmt, wird das Bild in der Größe verzerrt. ** Um dies zu vermeiden, verwenden Sie resize_image_with_crop_or_pad. Ich werde es später versuchen.

Versuchen Sie, die Methode zu ändern

Die Funktion resize_images kann vier Methoden annehmen:

Die Ergebnisse eines einzelnen Versuchs sind wie folgt: スクリーンショット 2016-09-06 12.08.59.png

Es ist zu erkennen, dass sich der Grad der Unschärfe beim Vergrößern geringfügig vom Originalbild unterscheidet. Es scheint, dass jeder seine eigenen Verwendungen hat.

align_corners Unten sehen Sie ein Bild, wenn align_corners False and True ist: スクリーンショット 2016-09-06 13.20.00.png

Um ehrlich zu sein, verstehe ich den Unterschied nicht wirklich, aber es scheint, dass True die Eingabe auf (new_height -1) / (height -1) und False auf new_height / height skaliert. Wenn Sie den Wert auf True setzen, scheinen die Positionen aller vier Ecken des Ein- und Ausgangs genau ausgerichtet zu sein. Ich bin mir nicht sicher, was ich dafür tun soll.

tf.image.resize_image_with_crop_or_pad(image, target_height, target_width) Die Funktion resize_image_with_crop_or_pad ist eine Funktion, die das Bild auf die angegebene Größe (Zielhöhe x Zielbreite) zuschneidet und / oder auffüllt.

Ändern Sie die Größe des Bilds auf target_width und target_height, indem Sie die Bildmitte zuschneiden oder das schwarze Bild auffüllen.

Wenn die Breite oder Höhe größer als die angegebene Zielbreite bzw. Zielhöhe ist, beschneiden Sie die Bildmitte. Im Folgenden wird die Größe eines 256 x 170-Katzenbilds geändert, indem 128 x 128 für target_height und target_width angegeben werden. Sie können sehen, dass die Bildmitte zugeschnitten ist. スクリーンショット 2016-09-06 13.53.39.png

Wenn die Breite oder Höhe kleiner als target_width oder target_height ist, binden Sie ein schwarzes Bild ein. Das Folgende ist ein Fall, in dem die Größe eines 256 x 170-Katzenbilds mit der Zielgröße und der Zielbreite geändert wird, die als 196 x 196 angegeben sind. Die Bildmitte wird beim Auf- und Abpolstern zugeschnitten. スクリーンショット 2016-09-06 13.57.54.png

Bonus

Durch Kombinieren von resize_image_with_crop_or_pad und resize_images können Sie das Bild nur mit Auffüllen ohne Zuschneiden verkleinern. test.jpg

Weise

  1. Ermitteln Sie die Größe des Bildes
  2. Geben Sie die Größe der langen Seite in target_height und target_width der Funktion resize_image_with_crop_or_pad an.
  3. Reduzieren Sie das aufgefüllte Bild mit resize_images

Referenz

TensorFlow/image

Recommended Posts

Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Ich habe das Verhalten von Argsort of Numpy nicht verstanden, deshalb werde ich es zusammenfassen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Der tree.plot_tree von scikit-learn war sehr einfach und bequem, daher habe ich versucht, zusammenzufassen, wie man es einfach benutzt.
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, die häufig verwendete Implementierungsmethode von pytest-mock zusammenzufassen
Ich habe versucht, die logische Denkweise über Objektorientierung zusammenzufassen.
Ich habe versucht, die Trapezform des Bildes zu korrigieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, die Einstellungen für verschiedene Datenbanken von Django (MySQL, PostgreSQL) zusammenzufassen.
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich wollte die Anzahl der Zeilen in mehreren Dateien wissen und versuchte, sie mit einem Befehl abzurufen
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, YouTube zu kratzen, aber ich kann die API verwenden, also tu es nicht.
[Rails] v1.0 kam auf Google-Cloud-Vision von Gem heraus, also habe ich versucht, es zu unterstützen
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
[Einführung] Ich habe versucht, es selbst zu implementieren, während ich erklärte, um die Dichotomie zu verstehen
Ich habe versucht, es einfach zu machen, die Einstellung des authentifizierten Proxys auf Jupyter zu ändern
Ich habe versucht, den Teil, in dem die Pflanze gezeigt wird, mithilfe von Deep Learning aus dem Foto der Veranda zu extrahieren, aber es hat nicht funktioniert, daher werde ich den Inhalt von Versuch und Irrtum zusammenfassen. Teil 2
Lesen Sie die offizielle Dokumentation erst, wenn ich die statischen Dateien von Django verstanden habe
Ich habe das Verhalten von Argsort of Numpy nicht verstanden, deshalb werde ich es zusammenfassen
Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Was ist Django? .. ..
Ich dachte "Was ist Linux?", Also habe ich es nachgeschlagen.
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
[Erste COTOHA-API] Ich habe versucht, die alte Geschichte zusammenzufassen
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich habe es in der Sprache Go geschrieben, um das SOLID-Prinzip zu verstehen
PyTorchs Buch war schwer zu verstehen, deshalb habe ich es ergänzt
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich habe versucht zusammenzufassen, wie das EPEL-Repository erneut verwendet wird
Ich untersuchte die Gesichtszüge von Yuki Kashiwagi, um TensorFlow zu verstehen [Teil 2]
Ich untersuchte die Gesichtszüge von Yuki Kashiwagi, um TensorFlow zu verstehen [Teil 1]
Ich möchte systemd grob verstehen
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 umgehen
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
DQN mit TensorFlow implementiert (ich wollte ...)
Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Ich habe versucht, es sorgfältig zu verstehen, während ich den Algorithmus Adaboost beim maschinellen Lernen implementiert habe (+ ich habe mein Verständnis der Array-Berechnung vertieft)
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, das SD-Boot-Image von LicheePi Nano zu erstellen
Ich habe mir die Metainformationen von BigQuery angesehen und versucht, sie zu verwenden
Ich habe versucht, die Befehle zusammenzufassen, die Anfängeringenieure heute verwenden
[Super-Grundlagen von Python] Ich habe die Grundlagen der Grundlagen gelernt und sie daher kurz zusammengefasst.
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern