[PYTHON] Erfahren Sie, wie Sie Bilder aus dem TensorFlow-Code aufblasen

Einführung

Auf jeden Fall ist die Anzahl der Bilder erforderlich, um Bilder mit Deep Learning genau zu klassifizieren. Es ist jedoch schwierig, eine große Anzahl von Bildern manuell vorzubereiten und zu kennzeichnen. Daher wird die Anzahl der Bilder durch Verarbeiten der markierten Bilder erhöht (aufgeblasen). スクリーンショット 2016-09-07 13.40.40.png

Dieses Mal möchte ich aus dem TensorFlow-Code lernen, wie man sich aufbläst.

Insbesondere werden wir aus dem Code von CIFAR-10 lernen. cifar10/cifar10_input.py

Im eigentlichen Code wurde das Bild aufgeblasen, indem mehrere Prozesse wie unten gezeigt kombiniert wurden.

# Image processing for training the network. Note the many random
# distortions applied to the image.

# Randomly crop a [height, width] section of the image.
distorted_image = tf.random_crop(reshaped_image, [height, width, 3])

# Randomly flip the image horizontally.
distorted_image = tf.image.random_flip_left_right(distorted_image)

# Because these operations are not commutative, consider randomizing
# the order their operation.
distorted_image = tf.image.random_brightness(distorted_image, max_delta=63)
distorted_image = tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8)

# Subtract off the mean and divide by the variance of the pixels.
float_image = tf.image.per_image_whitening(distorted_image)

Bei jedem Blick gab es fünf Dinge im CIFAR-10-Code:

Wir werden ** visuell ** verstehen, was jeder tut.

tf.random_crop(value, size, seed=None, name=None) Die Funktion random_crop ist eine Funktion zum zufälligen Zuschneiden eines Bildes mit einer bestimmten Größe. Das folgende Bild ist das Ergebnis des tatsächlichen Zuschneidens eines 256x170-Bildes mit einer Größe von 100x100:

スクリーンショット 2016-09-07 12.26.51.png

Die Trimmposition ändert sich abhängig vom Wert, der dem Saatgut gegeben wird. Wenn der Startwert gleich ist, wird das gleiche Bild generiert, unabhängig davon, wie oft es ausgeführt wird.

tf.image.random_flip_left_right(image, seed=None)

Die Funktion random_flip_left_right ist eine Funktion zum zufälligen horizontalen Spiegeln eines Bildes. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion random_flip_left_right: スクリーンショット 2016-09-07 13.21.57.png

Da die Inversion probabilistisch durchgeführt wird, darf sie abhängig vom Startwert nicht invertiert werden.

Eine andere Funktion, die random_flip_left_right ähnelt, ist random_flip_up_down. Während random_flip_left_right horizontal kippt, kippt random_flip_up_down vertikal. ..

tf.image.random_brightness(image, max_delta, seed=None)

Die Funktion random_brightness ist eine Funktion zum Anpassen der Helligkeit eines Bildes um einen Zufallsfaktor. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion random_brightness: スクリーンショット 2016-09-07 13.40.40.png

Der Helligkeitsgrad ändert sich abhängig von den Werten von max_delta und seed.

tf.image.random_contrast(image, lower, upper, seed=None)

Die Funktion random_contrast ist eine Funktion zum Anpassen des Kontrasts eines Bildes aufgrund eines Zufallsfaktors. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion random_contrast: スクリーンショット 2016-09-07 13.46.37.png

Sie können sehen, dass Kontrast1 den Kontrast verringert und Kontrast2 den Kontrast verbessert hat. Die unteren und oberen Festigkeitsgrenzen können mit den unteren und oberen eingestellt werden.

tf.image.per_image_whitening(image)

Die Funktion per_image_whitening ist eine Funktion zum Aufhellen eines Bildes, sodass der Durchschnitt 0 beträgt. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion per_image_whitening:

スクリーンショット 2016-09-07 13.50.52.png

Tatsächlich wird jeder Pixelwert mit (x --mean) / adjust_stddev berechnet. Mittelwert ist der Durchschnitt aller Pixelwerte im Bild, und adjustiertes_stddev ist definiert als angepasstes_stddev = max (stddev, 1,0 / sqrt (image.NumElements ())). Wobei stddev die Standardabweichung aller Pixelwerte im Bild ist.

Andere

Es gibt andere Funktionen, die zum Auffüllen verwendet werden können, obwohl sie im TensorFlow CIFAR-10-Beispiel nicht verwendet werden. Ich werde ungefähr 5 davon vorstellen. tf.image.transpose_image(image) Die Funktion transpose_image ist eine Funktion, die ein Bild transponiert. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion transpose_image: スクリーンショット 2016-09-08 9.08.54.png

Da es nur transponiert wird, ist das Ergebnis das gleiche, egal wie oft es ausgeführt wird. Wenn Sie das verschobene Bild weiter verschieben, kehrt es zum Originalbild zurück.

tf.image.rot90(image, k=1) Die rot90-Funktion dreht das Bild alle 90 Grad gegen den Uhrzeigersinn. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der rot90-Funktion: スクリーンショット 2016-09-08 9.12.28.png

Sie können angeben, wie oft gedreht werden soll, indem Sie den Wert von k ändern.

tf.image.random_hue(image, max_delta, seed=None) Die Funktion random_hue ist eine Funktion zum Anpassen des Farbtons eines RGB-Bildes aufgrund eines Zufallsfaktors. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion random_hue: スクリーンショット 2016-09-08 9.17.04.png

max_delta muss im Bereich von 0 bis 0,5 liegen.

tf.image.random_saturation(image, lower, upper, seed=None) Die Funktion random_saturation ist eine Funktion zum Anpassen der Sättigung eines RGB-Bildes. Das folgende Bild ist das Ergebnis der tatsächlichen Anwendung der Funktion random_saturation: スクリーンショット 2016-09-08 9.21.20.png

Erweiterung / Verkleinerung

Bitte beachten Sie die folgenden Informationen zur Vergrößerung / Verkleinerung:

Referenz

Recommended Posts

Erfahren Sie, wie Sie Bilder aus dem TensorFlow-Code aufblasen
TensorFlow Aus einer großen Anzahl von Bildern lernen ... (ungelöstes Problem) → 12/18 Gelöst
[How to!] Lerne und spiele Super Mario mit Tensorflow !!
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
Wie man SWIG von waf benutzt
So installieren Sie TensorFlow unter CentOS 7
Poste ein Bild von Python auf Tumblr
So starten Sie den Explorer über die WSL
So konvertieren Sie das Tensorflow-Modell in Lite
Programmierung aus Büchern gelernt 7. Mai
So greifen Sie über Python auf Wikipedia zu
So konvertieren Sie von .mgz nach .nii.gz
Migrieren Sie von VS Code zu PyCharm
So verarbeiten Sie Kamerabilder mit Teams und Zoom Volumen der Emotionsanalyse mit Tensorflow
So erstellen Sie einen Klon aus Github
Verbessertes Lernen, um von null bis tief zu lernen
So konvertieren Sie das Format einfach aus Markdown
Qiita (1) Wie schreibe ich einen Codenamen?
So aktualisieren Sie Google Sheets von Python
[TF] Verwendung von Tensorboard von Keras
Verwendung von Multi-Core aus der Sicht mehrerer Sprachen
Bedingter Zweig, um von Milk Boy zu lernen
Zugriff auf RDS von Lambda (Python)
So bedienen Sie Linux von der Konsole aus
Verwendung von Tensorflow unter Docker-Umgebung
Wie man relativ einfach Gesichtsbilder sammelt
So erstellen Sie ein Repository aus Medien
So greifen Sie von außen auf den Datenspeicher zu
So zeigen Sie Bilder in Djangos Admin an
So zeichnen Sie ein OpenCV-Bild mit Pygame
So führen Sie TensorFlow 1.0-Code in 2.0 aus
TensorFlow Tutorial Tutorial
Erfahren Sie, wie Sie Bilder aus dem TensorFlow-Code aufblasen
Vorbereiten der Verwendung von Tensorflow (Anaconda) mit Visual Studio Code
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
[Tensorflowjs_converter] So konvertieren Sie das Tensorflow-Modell in das Format Tensorflow.js
So codieren Sie eine Drohne mithilfe der Bilderkennung
So öffnen Sie einen Webbrowser über Python
Studie aus Python Hour7: Verwendung von Klassen
So erhalten Sie Ergebnisse von id in Celery
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So führen Sie CNN in 1 Systemnotation mit Tensorflow 2 aus
So generieren Sie ein Python-Objekt aus JSON
So rufen Sie die Cloud-API über GCP-Cloud-Funktionen auf
So bedienen Sie Linux von außen Vorgehensweise
Wie man gut mit Linux-Befehlen aus Python umgeht
So extrahieren Sie den Koeffizienten aus der Minutenformel
So messen Sie die Leitungsgeschwindigkeit vom Terminal aus
So zeigen Sie Bilder kontinuierlich mit matplotlib Memo an
Tensorufuro, Tensafuro Immerhin welches (wie man Tensorflow liest)
Ich möchte C ++ - Code aus Python-Code erstellen!
[TF] So erstellen Sie Tensorflow in einer Proxy-Umgebung
Wie man Kaldi mit JUST Corpus trainiert
So erzwingen Sie, dass TensorFlow 2.3.0 für CUDA11 + cuDNN8 erstellt wird
So klonen Sie ein Github-Remote-Repository von Atom
So erstellen Sie mit Python ein radiales Profil aus astronomischen Bildern (Chandra, XMM usw.)
Mit matplotlib erstellte Bilder werden von dvi nach pdf verschoben
So verarbeiten Sie Kamerabilder mit Teams und Zoom
[Python] So entfernen Sie doppelte Werte aus der Liste
So erstellen Sie einen Artikel über die Befehlszeile
Ich möchte Bilder von Katzen von Instagram erkennen
Verwendung von Keras ~ Von der einfachen Modellgenerierung bis zum CNN ~
So kratzen Sie Bilddaten von Flickr mit Python