Pyroch中transforms 图像增强发方法的应用

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(),也就是随机水平翻转操作的参数是这样规定的。

Pyroch中transforms 图像增强发方法的应用_第1张图片

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)

变换后的新图片,如图所示

Pyroch中transforms 图像增强发方法的应用_第2张图片

你可能感兴趣的:(深度学习(PyTorch),深度学习,pytorch)