【PyTorch】画像を回転させる【rotate】

PyTorch で画像を回転させたいことがあると思います。
その時に使えるのが、torchvision.transforms.functional.rotate です。

ソースコード

では、画像を回転させてみます。

まずは必要なライブラリをimportと回転させたい画像を読み込みます。

import numpy as np
import torchvision.transforms.functional as TF
import matplotlib.pyplot as plt
from PIL import Image

img = Image.open("<path/to/img>")
img = img.resize((224, 224))
display(img)
回転させたい画像

torchvision.transforms.functional.rotate に画像と角度をしていするだけで、
回転させることができます。

数パターン試してみます。

img_rotated = TF.rotate(img, 45)
display(img_rotated)
45度回転させた時
img_rotated = TF.rotate(img, 180)
display(img_rotated)
180度回転させた時

見てわかる通り指定した確度に反時計回りに回転します。

ちなみに入力は torch.Tensor でも可能です。

import torch
import torchvision

img_torch = torchvision.transforms.functional.to_tensor(img)
img_rot = TF.rotate(img_torch, 45)
img_rot = img_rot.squeeze(0)
plt.imshow(img_rot.permute(1, 2, 0))

バッチの時でも、バッチじゃないときでもできるようになっています。
つまり、データのshapeが(B, C, H, W) or (C, H, W)のどちらでも回転できます。

参考文献

https://pytorch.org/vision/stable/generated/torchvision.transforms.functional.rotate.html

コメント

タイトルとURLをコピーしました