常用的图像增广方法

翻转和裁剪

左右翻转图像通常不会改变对象的类别。这是最早且最广泛使用的图像增广方法之一。 接下来,我们使用transforms模块来创建RandomFlipLeftRight实例,这样就各有50%的几率使图像向左或向右翻转。

  1. 向右翻转图像
# img 是读入的照片
apply(img, torchvision.transforms.RandomHorizontalFlip())

在这里插入图片描述
2. 上下翻转图像

apply(img, torchvision.transforms.RandomVerticalFlip())

在这里插入图片描述
3. 图像进行随机裁剪

shape_aug = torchvision.transforms.RandomResizedCrop(
    (200, 200), scale=(0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)

'''
(200, 200)这是RandomResizedCrop的目标输出尺寸,即裁剪后的图像将被调整为200x200像素。


scale=(0.1, 1):图像将被缩放到原始尺寸的10%到100%之间。

ratio=(0.5, 2):这个参数指定了随机调整大小时图像的宽高比范围,ratio的范围是从0.5到2。这意味着在裁剪之前,图像的宽度和高度将被缩放,使得宽高比在0.5到2之间。
'''

在这里插入图片描述
4. 改变颜色

apply(img, torchvision.transforms.ColorJitter(
    brightness=0.5, contrast=0, saturation=0, hue=0))
'''
brightness=0.5:亮度调整参数。这个参数指定了亮度变化的范围。在这个例子中,brightness 设置为0.5,意味着图像的亮度可以在原始亮度的50%到150%之间随机变化。

contrast=0:对比度调整参数。这个参数指定了对比度变化的范围。在这个例子中,contrast 设置为0,意味着对比度不会发生变化,即图像的对比度保持不变。

saturation=0:饱和度调整参数。这个参数指定了饱和度变化的范围。在这个例子中,saturation 设置为0,意味着饱和度不会发生变化,即图像的颜色饱和度保持不变。

hue=0:色调调整参数。这个参数指定了色调变化的范围。在这个例子中,hue 设置为0,意味着色调不会发生变化,即图像的色调保持不变。

'''

在这里插入图片描述

apply(img, torchvision.transforms.ColorJitter(
    brightness=0, contrast=0, saturation=0, hue=0.5))

在这里插入图片描述

结合多种图像增广方法

shape_aug = torchvision.transforms.RandomResizedCrop(
    (200, 200), scale=(0.1, 1), ratio=(0.5, 2))

color_aug = torchvision.transforms.ColorJitter(
    brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)

augs = torchvision.transforms.Compose([
    torchvision.transforms.RandomHorizontalFlip(), color_aug, shape_aug])
apply(img, augs)

在这里插入图片描述

案例

在这里,我们只使用最简单的随机左右翻转。 此外,我们使用ToTensor实例将一批图像转换为深度学习框架所要求的格式,即形状为(批量大小,通道数,高度,宽度)的32位浮点数,取值范围为0~1。
这里用的cifar10作为案例:

train_augs = torchvision.transforms.Compose([
     torchvision.transforms.RandomHorizontalFlip(),
     torchvision.transforms.ToTensor()])

test_augs = torchvision.transforms.Compose([
     torchvision.transforms.ToTensor()])
# 这里用的cifar10作为案例
def load_cifar10(is_train, augs, batch_size):
    dataset = torchvision.datasets.CIFAR10(root="../data", train=is_train,
                                           transform=augs, download=True)
    dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size,
                    shuffle=is_train, num_workers=d2l.get_dataloader_workers())
    return dataloader
# 形成数据
train_iter = load_cifar10(True, train_augs, batch_size)
test_iter = load_cifar10(False, test_augs, batch_size)

相关推荐

  1. 计算机视觉8 图像广

    2024-04-13 11:10:01       18 阅读
  2. webRtc常用方法

    2024-04-13 11:10:01       45 阅读
  3. 数组常用方法

    2024-04-13 11:10:01       21 阅读
  4. 后端常用方法

    2024-04-13 11:10:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 11:10:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 11:10:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 11:10:01       82 阅读
  4. Python语言-面向对象

    2024-04-13 11:10:01       91 阅读

热门阅读

  1. Python:模块,包,库

    2024-04-13 11:10:01       44 阅读
  2. 【蓝桥杯】(完全日期)

    2024-04-13 11:10:01       35 阅读
  3. 选择成为一名程序员:兴趣与职业发展的交织

    2024-04-13 11:10:01       35 阅读
  4. maya模板导入动画

    2024-04-13 11:10:01       134 阅读
  5. 微服务learning

    2024-04-13 11:10:01       119 阅读
  6. 揭示API威胁的攻击趋势(下)

    2024-04-13 11:10:01       40 阅读