【python】画像の機械学習に必須!transformsのComposeの挙動を写真を使って解説!

この記事でわかること

・pythonを使って画像の読み込み方法がわかる

・transformsのComposeの使い方がわかる。

メイドさん

PyTorchで画像の前処理としてtransformsのComposeがよく使われます。
Composeは、一括で加工ができるため大変便利ですが、Composeの挙動が意外に分かりづらかったりします。
今回は、Composeを使うと、画像がどのように変換されるか解説します。

準備として

transforms.Composeの挙動を確認する前に1枚の画像を用意します。

今回は、ポートレート撮影モデルの未来さんの画像を使わせていただきます!

以下、元画像を読み込むpythonプログラム。

from PIL import Image

#元画像を読み込む
img = Image.open("DSC_0474.jpg")

print("元画像のサイズは(1280, 850)")
print(img.size)

transforms.Composeの挙動を確認する2つの実装方法

transforms.Composeの挙動を確認する2つの実装例を紹介します。

実行環境は、jupyter notebookを想定しています。

画像を512ピクセルにリサイズしてみる

以下のコードを実行して、元画像を512ピクセルにリサイズしてみます。

#リサイズの設定
imsize = 512

#ここでは、画像のサイズを512に合わせる
loader = transforms.Compose([
    transforms.Resize(imsize)])  # リサイズ


def image_loader(image_name):
    image = Image.open(image_name)
    #ここでtransforms.Composeを適用する
    image = loader(image)
    return image


style_img = image_loader("DSC_0474.jpg")
print("変換後の画像のサイズは")
print(style_img.size)
style_img

結果は以下の通りに、最小ピクセルが512(※ブログの仕様上、見た目が512になっていないことがあります)になりました。

画像をリサイズの後にグレースケールに変換する

元画像を512にリサイズした後に、グレースケールに変換してみます。


#リサイズの設定
imsize = 512

#画像サイズの変更とグレースケールを組み合わせてみる
loader = transforms.Compose([
    transforms.Resize(imsize), #リサイズ
    transforms.Grayscale()])  # グレースケールに変換

def image_loader(image_name):
    image = Image.open(image_name)
    image = loader(image)
    return image


style_img = image_loader("DSC_0474.jpg")
print("変換後の画像のサイズは")
print(style_img.size)
style_img

元画像が、リサイズされてグレースケールの画像に変換されたことがわかるかと思います。

このように、transforms.Composeを使うと、複数の操作が簡単に記述できることがわかります。

全体的なソースコード

今回の記事について、全体的なコードは以下のとおりです。

まとめ

transformsのComposeの使い方が、少しでも理解できたのではないかと思います。

Composeは、kaggleの画像処理系のコンペでよく使われるので、ぜひ使いこなしたいテクニックです!

スポンサーリンク
PR




PR




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
PR