1 应用场景
在我们训练模型的时候,有的时候数据不够,就需要通过水平翻转、垂直翻转、镜像、旋转、改变亮度、标准化等方式增加图像的多样性,此时可以调用Pytorch 中的Transforms完成这些操作
2 导入相应的库
from torchvision import transforms as T
from PIL import Image
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
2.编写图像增强的方法
使用transforms.Compose([ ])可以将不同的图像增强方法综合到一起。
在使用过程中可以跳转到不同操作的源码处,观察不同输入输出数据的格式。比如 RandomHorizontalFlip(),也就是随机水平翻转操作的参数是这样规定的。
img_transform = T.Compose([
T.Resize((224, 224)),
T.RandomHorizontalFlip(p=0.5), # 随机水平翻转
T.RandomVerticalFlip(p=0.5), # 随机垂直翻转
# transforms.RandomResizedCrop(size=IMG_WIDTH, scale=(0.08, 1.0)), # 随机裁剪,有黑边
# transforms.RandomCrop(IMG_WIDTH, padding=6),
# T.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5), # 亮度和hsv
# transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
# T.Normalize(mean=[0.5, ], std=[0.5, ])
])
3.对图象进行变换并保存。
# 首先规定图片所在的路径
train_path = 'dataset/train/'
img_path =list(map(lambda x: os.path.join(train_path, x), os.listdir(train_path)))
# print(img_path)
# print(len(img_path))
for i in range(len(img_path)):
img_new = Image.open(img_path[i])
# print(img_new)
# print(img_new.size)
imgname = 'img_' + str(i)+'.jpg'
imgpath = os.path.join(train_path, imgname)
# 读取图片进行变换
img_new1=img_transform(img_new)
img_new1.save(imgpath)
变换后的新图片,如图所示