TensorFlow での画像のサイズ変更

Anika Tabassum Era 2023年6月21日
  1. TensorFlow で単一の画像のサイズを変更する
  2. TensorFlow で一連の画像のサイズを変更する
TensorFlow での画像のサイズ変更

画像は、OpenCV、Pillow、TensorFlow などのライブラリを介して操作できます。TensorFlow は、継続的な更新と GPU との互換性の向上により、より集中しています。

TensorFlow バージョン 1x とバージョン 2x には、複数の画像操作を実行するための異なるクラスとメソッドがあります。 一部のメソッドは、バージョン 2x で構文が更新されました。

次のセクションでは、2つの例を示します。 1つのイメージでバージョン 2x が処理されます。

次の例には、一連の画像を含む TensorFlow バージョン 1x が含まれます。 その部分に入りましょう。

TensorFlow で単一の画像のサイズを変更する

この場合、Google Colab を環境として使用しました。 これは、Google Colab が TensorFlow バージョン 1x をサポートせず、バージョン 2x のみをインポートすることを指定するためです。

最初に、ドライブがマウントされたため、イメージのインポートが有効になりました。

画像パスを取得した後、それを TensorFlow 画像として読み込みました。 resize 操作は、複数の画像フォーマットでは発生しません。 代わりに、対応するピクセル値を持つ配列に変換する必要があります。

次のフェーズでは、画像の特定の高さと幅を宣言し、それらの値を TensorFlow の resize() メソッドに渡します。 後で、配列を再び画像に変換し、サイズ変更によって画像の品質が変化したかどうかを視覚化するためにプロットします。

コードスニペット:

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)

出力:

TensorFlow 1 で単一の画像のサイズを変更する

TensorFlow 2 で単一の画像のサイズを変更する

TensorFlow で一連の画像のサイズを変更する

この例では、Jupyter Notebook を使用します。 必要な依存関係とメソッドは、TensorFlow バージョン 1x で利用できます。

これらのメソッドはバージョン 2x で常に更新されていますが、スムーズな操作のために以前のメソッドを使用することをお勧めします。

必要なパッケージをインストールしてインポートしました。 この場合、TensorFlow のバージョンは 1.15.8 です。

この場合、画像は文字列としてフェッチされ、後で tf.train.string_input_producer() に渡され、ファイルのキューを取得します。

ファイル リーダーを初期化した後、名前と対応するコンテンツを受け取ります。 コンテンツは後で jpeg 形式にデコードされます。

通常、TensorFlow は入力のデフォルトとして離散コサイン変換を使用します。 次に、画像をフロートに型キャストし、最後にサイズを変更します。

コードスニペット:

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)

出力:

TensorFlow での一連の画像のサイズ変更

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook