数据增强在文章『一次说全TensorFlow中常用的数据增强方法:随机裁剪、上下左右翻转、亮度、对比度』里介绍过,简单理解就是通过人为的一些变化进行数据的改变,产生一些新的数据。常见用的数据增强方法就是那么几种,例如随机翻转、随机裁剪、对比度、亮度等的调整。本文就是简单说说在PyTorch里如何进行数据增强。

裁剪Crop

PyTorch中对于图片数据增强提供了两种裁剪方式,分别是随机裁剪(RandomCrop)和中心裁剪(CenterCrop)。这两种方式只要区别是看处理的时候,使用者要求对边缘是否敏感。如果对边缘不敏感,可以使用中心裁剪,这样边缘可能就不被训练了。一般还是使用随机裁剪可以更好的增强模型的泛化能力。

RandomCrop一般给个size参数就行了,也就是裁剪后的大小。

transforms.RandomCrop(
    size,
    padding=None,
    pad_if_needed=False,
    fill=0,
    padding_mode='constant',
)

随机水平翻转RandomHorizontalFlip

参数p是翻转的比例。

transforms.RandomHorizontalFlip(p=0.5)

随机上下翻转RandomVerticalFlip

参数p是翻转的比例。

transforms.RandomVerticalFlip(p=0.5)

随机旋转RandomRotation

degrees旋转的角度。

transforms.RandomRotation(
    degrees,
    interpolation=<InterpolationMode.NEAREST: 'nearest'>,
    expand=False,
    center=None,
    fill=0,
    resample=None,
)

颜色调节ColorJitter

transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
  • brightness:亮度调节
  • contrast:对比度
  • saturation:饱和度
  • hue:随机颜色

随机灰度RandomGrayscale

transforms.RandomGrayscale(p=0.1)

如何在代码中使用数据增强

在创建训练集和数据集之前,定义了transform。如果想要数据增强,那么就不能再直接让测试集和训练集公用一个transform。

transform = transforms.Compose([
    transforms.Resize((192, 192)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[.5, .5, .5], std=[.5, .5, .5])
])

对于测试集,没有必要进行数据增强,于是直接定义test_transform如下:

test_transform = transforms.Compose([
    transforms.Resize((192, 192)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[.5, .5, .5], std=[.5, .5, .5])
])

对于训练集,进行数据增强,于是直接定义train_transform如下:

train_transform = transforms.Compose([
    transforms.Resize((224, 224)),
    
    transforms.RandomCrop(192)   # 随机裁剪
    transforms.RandomHorizontalFlip(p=0.5)   # 随机左右翻转
    transforms.RandomRotation(0.2)
    transforms.ColorJitter(brightness=0.5)
    
    transforms.ToTensor(),
    transforms.Normalize(mean=[.5, .5, .5], std=[.5, .5, .5])
])

然后在ImageFolder里创建数据集的时候,选用对应的transform即可。

选择合适的transform


版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2023/PyTorchMore.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处并附带原文链接!!
▶ 站长邮箱 [email protected][email protected] ,如不方便留言可邮件联系。

小陶的个人微信公众号

学累了就来张美女照片养养眼吧,身体是革命的本钱,要多多休息哦~ 随机美女图片

最后修改:2023 年 04 月 16 日
如果觉得我的文章对你有用,请随意赞赏!