Ändern Sie die Bildgröße in TensorFlow
- Ändern Sie die Größe eines einzelnen Bildes in TensorFlow
- Ändern Sie die Größe einer Reihe von Bildern in TensorFlow
Bilder können durch Bibliotheken wie OpenCV, Pillow, TensorFlow usw. manipuliert werden. TensorFlow ist aufgrund ständiger Updates und besserer Kompatibilität mit den GPUs fokussierter.
TensorFlow Version 1x und Version 2x verfügen über unterschiedliche Klassen und Methoden zum Ausführen mehrerer Bildoperationen. Einige Methoden wurden in Version 2x syntaktisch aktualisiert.
Im folgenden Abschnitt zeigen wir zwei Beispiele. Man würde mit Version 2x auf ein einzelnes Bild eingehen.
Das nächste Beispiel enthält TensorFlow Version 1x mit einer Reihe von Bildern. Lassen Sie uns in diesen Teil springen.
Ändern Sie die Größe eines einzelnen Bildes in TensorFlow
In diesem Fall haben wir Google Colab als unsere Umgebung verwendet. Hiermit wird angegeben, dass Google Colab TensorFlow Version 1x nicht unterstützt und nur Version 2x importiert.
Zunächst wurde das Laufwerk gemountet und damit der Import von Bildern ermöglicht.
Nachdem wir den Bildpfad genommen hatten, luden wir ihn als TensorFlow-Bild. Die Operation Größe ändern
wird nicht bei mehreren Bildformaten ausgeführt; Stattdessen müssen sie in ein Array mit entsprechenden Pixelwerten umgewandelt werden.
In der nächsten Phase deklarieren wir eine bestimmte Höhe und Breite für das Bild und übergeben diese Werte an die resize()
-Methode von TensorFlow. Später werden wir die Arrays erneut in ein Bild konvertieren und es plotten, um zu visualisieren, ob sich die Bildqualität bei der Größenänderung verändert hat.
Code-Auszug:
from google.colab import drive
drive.mount("/content/drive")
import tensorflow as tf
import matplotlib.pyplot as plt
image_path = "/content/drive/MyDrive/IMG/pizza.jpg"
img = tf.keras.utils.load_img(image_path)
plt.imshow(img)
print(img.size)
image_array = tf.keras.preprocessing.image.img_to_array(img)
new_img = tf.image.resize(image_array, (70, 70))
resized_img = tf.keras.preprocessing.image.array_to_img(new_img)
plt.imshow(resized_img)
Ausgang:
Ändern Sie die Größe einer Reihe von Bildern in TensorFlow
In diesem Beispiel verwenden wir das Jupyter Notebook. Die erforderlichen Abhängigkeiten und Methoden sind in TensorFlow Version 1x verfügbar.
Obwohl diese Methoden in Version 2x ständig aktualisiert werden, haben wir es für einen reibungslosen Betrieb vorgezogen, die vorherige Methode zu verwenden.
Wir haben die notwendigen Pakete installiert und importiert. Die TensorFlow-Version ist in diesem Fall 1.15.8
.
In diesem Fall werden die Bilder als Strings abgerufen und später an tf.train.string_input_producer()
übergeben. Wir erhalten eine Warteschlange von Dateien.
Nach der Initialisierung eines Filereaders erhalten wir die Namen und entsprechenden Inhalte. Die Inhalte werden später in das jpeg
-Format dekodiert.
Normalerweise verwendet TensorFlow die diskrete Kosinustransformation als Standard für seine Eingaben. Dann typisieren wir die Bilder so, dass sie schweben, und ändern schließlich ihre Größe.
Code-Auszug:
import matplotlib.pyplot as plt
import tensorflow as tf
import os
tf.__version__
image_path = "D:M"
categ = ["coffee"]
for c in categ:
path = os.path.join(image_path, c)
for img in os.listdir(path):
image = [os.path.join(path, img)]
queue = tf.train.string_input_producer(image)
reader = tf.WholeFileReader()
name, content = reader.read(queue)
images = tf.image.decode_jpeg(content, channels=3)
print(images.shape)
images = tf.cast(images, tf.float32)
resized_images = tf.image.resize_images(images, (224, 224))
print(resized_images.shape)
Ausgang: