画像データの処理(tf.image)

TensorFlowにおける画像データの前処理は、モデルの精度や汎化性能を高める上で非常に重要です。tf.imageモジュールは、画像データを効率的に処理・変換するための多くの関数を提供しており、tf.dataと組み合わせることでパイプラインの中で効果的に利用されます。

以下に、tf.imageを用いた主な処理内容を項目ごとに詳しく説明します。


1. 画像サイズの変更(リサイズ)

python
tf.image.resize(images, size)
  • 入力画像を指定したサイズ(例:[224, 224])に変更します。

  • 通常、モデルの入力サイズに合わせるために用います。

  • 補間方法(method)としては、bilinear(デフォルト)、nearestなどを指定可能です。


2. 切り抜き(クロップ)とパディング

  • 中央を切り抜く:

    python
    tf.image.central_crop(image, central_fraction)
    • 画像の中央から指定された割合だけ切り抜きます(例:0.8なら80%部分を切り抜く)。

  • パディング:

    python
    tf.image.resize_with_crop_or_pad(image, target_height, target_width)
    • 画像が小さい場合はパディングし、大きい場合は中心を基準に切り抜きます。


3. 画像の正規化

  • ピクセル値を[0, 1]または[-1, 1]の範囲にスケーリングするために利用されます。

  • 一般的な例:

    python
    image = tf.cast(image, tf.float32) / 255.0

4. 画像の反転・回転・変形

  • 左右反転:

    python
    tf.image.flip_left_right(image)
  • 上下反転:

    python
    tf.image.flip_up_down(image)
  • ランダム反転:

    python
    tf.image.random_flip_left_right(image)
  • 回転(90度単位):

    python
    tf.image.rot90(image, k=1) # 90度回転

5. 色調変換(カラーオーギュメンテーション)

  • 明るさの変更:

    python
    tf.image.adjust_brightness(image, delta)
  • コントラストの調整:

    python
    tf.image.adjust_contrast(image, contrast_factor)
  • 色相の調整:

    python
    tf.image.adjust_hue(image, delta)
  • 彩度の調整:

    python
    tf.image.adjust_saturation(image, saturation_factor)
  • これらは、データ拡張(Data Augmentation)に使われ、モデルの過学習を防ぐのに役立ちます。


6. エンコード・デコード

  • 画像ファイル(JPEG/PNGなど)をTensorに変換、またはその逆を行う処理です。

  • デコード(ファイル→Tensor):

    python
    tf.io.read_file(path) tf.image.decode_jpeg(image_bytes, channels=3)
  • エンコード(Tensor→ファイル):

    python
    tf.image.encode_jpeg(image_tensor)

7. バッチ処理との組み合わせ

画像前処理は通常、tf.data.Datasetのパイプライン内で使われます。

python
def preprocess(image): image = tf.image.resize(image, [224, 224]) image = tf.cast(image, tf.float32) / 255.0 return image dataset = dataset.map(lambda x, y: (preprocess(x), y))

まとめ

tf.imageは、画像のサイズ変更、正規化、データ拡張、切り抜き、色調調整など、多くの機能を備えており、データ前処理やAugmentationの主要なツールとなっています。これらを適切に活用することで、モデルの性能向上や訓練の安定化が期待できます。

生成日:2025/05/22