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)
变换后的新图片,如图所示