また、データ拡張(データ拡張)の別の言い方も非常に似ています。主な違いは、モデルの堅牢性を向上させるためにトレーニング中にデータ拡張が実行されることです。ここで説明する外乱は、トレーニングされたモデルの堅牢性を評価するためのテスト中に実行されるため、データ拡張プロセスは必要ありません。次のように画像を読むことを検討してください。
from PIL import Image
import torchvision.transforms as transforms
img = Image.open("1.jpg")
img.show()
- ガウスぼかしGaussian Blur:
blur = transforms.GaussianBlur(kernel_size=7, sigma=(2.0, 2.0))
img_blur = blur(img)
img_blur.show()
一般的に、ガウスカーネルの一般的なサイズは5、7、および9であり、シグマ値は0.1〜5です。
- ズームアウトPad:
img_pad = F.pad(img, padding=[24])
resize = transforms.Resize([224, 224])
img_pad = resize(img_pad)
img_pad.show()
この操作では、画像の周囲の黒い境界線を塗りつぶすと、実際には画像全体のサイズが大きくなります(元のサイズ+黒い境界線)。このため、パッド操作後、元のサイズに再スケールする必要があります。観察する必要のあるオブジェクトに相当するものが小さくなりました。
- 回転Rotation:
img_rotate = img.rotate(angle=15, expand=False)
img_rotate.show()
デフォルトでは、回転した画像のサイズは変更されません。この場合、実際にトリミングされます。トリミングしたくない場合は、expandパラメータをTrueに設定できます。
- 水平に反転HorizontalFlip:
hFlip = transforms.RandomHorizontalFlip(p=1.0)
img_hFlip = hFlip(img)
img_hFlip.show()
- 垂直に反転VerticalFlip:
vFlip = transforms.RandomVerticalFlip(p=1.0)
img_vFlip = vFlip(img)
img_vFlip.show()
- グレースケールGray:
gray = transforms.Grayscale()
img_gray = gray(img)
img_gray.show()
参照
https://pytorch.org/vision/stable/transforms.html
https://pytorch.org/vision/stable/auto_examples/plot_transforms.html#sphx-glr-auto-examples-plot-transforms-py