利用pytorch图像增广

利用pytorch图像增广

图像增广(image augmentation)技术通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。

图像增广的另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。

简单说就是,通过一些技巧,让图像数据变多;

图像增广基于现有训练数据生成随机图像从而应对过拟合。

import sys
from IPython import display
import matplotlib.pyplot as plt
%matplotlib inline
import time
import torch
from torch import nn, optim
from torch.utils.data import Dataset, DataLoader
import torchvision
from PIL import Image
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(device)
cuda
def set_figsize(figsize=(3.5, 2.5)):
    use_svg_display()
    # 设置图的尺寸
    plt.rcParams['figure.figsize'] = figsize
def use_svg_display():
    """Use svg format to display plot in jupyter"""
    display.set_matplotlib_formats('svg')
img=Image.open('test.jpg')
plt.imshow(img)
<matplotlib.image.AxesImage at 0x7fb7abf34d30>

def show_images(imgs, num_rows, num_cols, scale=2):
    figsize = (num_cols * scale, num_rows * scale)
    _, axes = plt.subplots(num_rows, num_cols, figsize=figsize)
    for i in range(num_rows):
        for j in range(num_cols):
            axes[i][j].imshow(imgs[i * num_cols + j])
            axes[i][j].axes.get_xaxis().set_visible(False)
            axes[i][j].axes.get_yaxis().set_visible(False)
    return axes
def apply(img,aug,num_rows=2,num_cols=4,scale=1.5):
    Y=[aug(img) for _ in range(num_rows*num_cols)]
    show_images(Y,num_rows,num_cols,scale)
apply(img,torchvision.transforms.RandomHorizontalFlip())

在这里插入图片描述

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

shape_aug=torchvision.transforms.RandomResizedCrop(200,scale=(0.1,1)) # 将给定的PIL图像裁剪为200*200和0.1到-1的比例尺。
apply(img,shape_aug)

apply(img,torchvision.transforms.ColorJitter(brightness=0.5)) # 将亮度变为原图像的(1-0.5~01+.5)

apply(img,torchvision.transforms.ColorJitter(hue=0.5)) # 类似地随机改变图片的色调

apply(img,torchvision.transforms.ColorJitter(contrast=0.5))  # 类似地随机改变图片的对比度

apply(img,torchvision.transforms.ColorJitter(saturation=0.5))  # 类似地随机改变图片的饱和度

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

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

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gowi_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值