标签:torchvision img 增广 0.5 pytorch num transforms 图像 apply
利用pytorch图像增广
图像增广(image augmentation)技术通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。
图像增广的另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。
简单说就是,通过一些技巧,让图像数据变多;
图像增广基于现有训练数据生成随机图像从而应对过拟合。
import sysfrom IPython import displayimport matplotlib.pyplot as plt%matplotlib inlineimport timeimport torchfrom torch import nn, optimfrom torch.utils.data import Dataset, DataLoaderimport torchvisionfrom 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)
标签:torchvision,img,增广,0.5,pytorch,num,transforms,图像,apply 来源: https://blog.51cto.com/u_14189203/2706754
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。