利用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)

©著作权归作者所有:来自51CTO博客作者谁唱江南断肠句的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Oracle数据科学:图像识别与视频合成
  2. 在图像生成领域里,GAN这一大家族是如何生根发芽的
  3. 热门的模型跨界,Transformer、GPT做CV任务一文大盘点
  4. 让图像识别准确率瞬间下降40个点,「江苏卷」版ImageNet你考得过吗
  5. 拯救单身狗:这个对象生成器帮你看看未来对象长啥样
  6. 深度学习在医学影像中的研究进展及发展趋势
  7. 如何使用PhotoNinja进行图像之间的复制粘贴?
  8. 谷歌开源新模型EfficientNet:图像识别效率提升10倍,参数减少88%
  9. Python中的图像增强技术

随机推荐

  1. 控制台在node . js中没有“debug”方法吗
  2. php从PostgreSQL 数据库检索数据,实现分页
  3. Nivoslider(在动态ajax内容中)不会在第一次
  4. Javascript警报中文本的颜色
  5. 如何将带有双引号反斜杠的JSON字符串转换
  6. jQuery分页插件jBootstrapPage,一个Bootst
  7. AngularJS身份验证和基于XSRF令牌
  8. js 处理url中文参数 java端接收处理
  9. How to learn js properly(week4)使用js建
  10. jquery.fullCalendar官方文档翻译(一款小