数据增广

在基于图像识别的操作中,比较重要的一步是对图像数据集进行预处理,很多时候会用到数据增广操作,这会提高模型的泛化能力。

概念

数据增广就是增加一个已有的数据集,使得有更多的多样性。通俗来讲就是改变图像的颜色和形状。已有的数据集就会增加,多出来的部分就是各个不同图片的各种形态。最后使用增强的数据进行训练。

增广操作

常见的增广操作有:

  1. 翻转:包括左右翻转和上下翻转。上下翻转一般需要根据实例中的数据进行选择,它不总是可行的。
  2. 切割:根据随机的高宽比、随机大小和随机位置从原图中切割一块,然后变形到固定的位置。
  3. 变色:改变图像的色调、饱和度和明亮度。

案例

step1:引入必要的库,读取一张图片

import torch
import torchvision
from torch import nn
from PIL import Image
import matplotlib.pyplot as plt
from d2l import torch as d2l

image_path = '../dataset/train/ants/0013035.jpg'
image = Image.open(image_path)
plt.imshow(image)


step2.定义一个函数,用于实现某个操作

def apply(img, method, num_rows=2, num_cols=4, scale=1.5):
    Y = [method(img) for _ in range(num_rows*num_cols)]
    d2l.show_images(Y, num_rows, num_cols, scale=scale)

翻转

#左右翻转图像
apply(image, torchvision.transforms.RandomHorizontalFlip())

在这里插入图片描述

#上下翻转图像
apply(image, torchvision.transforms.RandomVerticalFlip())

在这里插入图片描述

随机裁剪

#随机裁剪
apply(image, torchvision.transforms.RandomResizedCrop(200, scale=(0.1, 1), ratio=(0.5, 2)))

在这里插入图片描述

颜色变换

#随机改变图像的亮度
apply(image, torchvision.transforms.ColorJitter(brightness=0.5, contrast=0, saturation=0, hue=0))

在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐