数据预处理之数据增广
·
数据增广
在基于图像识别的操作中,比较重要的一步是对图像数据集进行预处理,很多时候会用到数据增广操作,这会提高模型的泛化能力。
概念
数据增广就是增加一个已有的数据集,使得有更多的多样性。通俗来讲就是改变图像的颜色和形状。已有的数据集就会增加,多出来的部分就是各个不同图片的各种形态。最后使用增强的数据进行训练。
增广操作
常见的增广操作有:
- 翻转:包括左右翻转和上下翻转。上下翻转一般需要根据实例中的数据进行选择,它不总是可行的。
- 切割:根据随机的高宽比、随机大小和随机位置从原图中切割一块,然后变形到固定的位置。
- 变色:改变图像的色调、饱和度和明亮度。
案例
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))

更多推荐
所有评论(0)