コンピュータビジョンにおける一般的な画像摂動法のPytorch実装

また、データ拡張(データ拡張)の別の言い方も非常に似ています。主な違いは、モデルの堅牢性を向上させるためにトレーニング中にデータ拡張が実行されることです。ここで説明する外乱は、トレーニングされたモデルの堅牢性を評価するためのテスト中に実行されるためデータ拡張プロセスは必要ありませ次のように画像を読むことを検討してください。

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

おすすめ

転載: blog.csdn.net/qq_40714949/article/details/122753671