常用的数据增广方法:
- 比例缩放
- 位置截取
- 翻转
- 旋转
- 亮度、对比度和色调的变化
读取原图:
import torchvision.transforms as transforms
from PIL import Image
img = Image.open('cat.jpg')
img.show()
print('img:',img.size)
输出为:
img: (500, 313)
1、比例缩放
img1 = transforms.Resize(112)(img) # 短边缩放成112,长边按比例缩放
img2 = transforms.Resize((112, 112))(img) # 强行缩放成手动设置的比例
img1.show()
img2.show()
print('img1:', img1.size)
print('img2:', img2.size)
输出为:
img1: (178, 112)
img2: (112, 112)
2、位置截取
rand_img = transforms.RandomCrop(112)(img) # 随机裁剪112*112
rand_img.show()
print('rand_img:', rand_img.size)
center_img = transforms.CenterCrop(112)(img) # 以原图中心为中心,裁剪112*112
center_img.show()
print("center_img:", center_img.size)
输出为:
rand_img: (112, 112)
center_img: (112, 112)
3、翻转
hor_img = transforms.RandomHorizontalFlip(p=1)(img) # 随机水平翻转, p为概率
hor_img.show()
ver_img = transforms.RandomVerticalFlip(p=1)(img) # 随机垂直翻转,p为概率
ver_img.show()
输出为:
4、旋转
ot_img = transforms.RandomRotation(15)(img) # 随机在(-15, 15)度旋转
rot_img.show()
print("rot_img:", rot_img.size)
输出为:
rot_img: (500, 313)
5、亮度、对比度和色调的变化
bright_img = transforms.ColorJitter(brightness=1)(img) # 随机从0~2之间的亮度变化
bright_img.show()
contrast_img = transforms.ColorJitter(contrast=1)(img) # 随机从0~2之间的对比度
contrast_img.show()
hue_img = transforms.ColorJitter(hue=0.5)(img) # 随机从-0.5~0.5之间的色调
hue_img.show()
saturation_img = transforms.ColorJitter(saturation=0.5)(img)
saturation_img.show()
color_img = transforms.ColorJitter(brightness=1,contrast=1,hue=0.5,saturation=0.5)(img)
color_img.show()
输出为: