常用的数据增广方法

1. 对图片进行按比例缩放
2. 对图片进行随机位置的截取
3. 对图片进行随机的水平和竖直翻转
4. 对图片进行随机角度的旋转
5. 对图片进行亮度、对比度和颜色的随机变化

下面使用torchvision演示一下这些数据增强方法。

123
import sysfrom PIL import Imagefrom torchvision import transforms
123
# 载入图片img = Image.open('img.jpg')img

随机比例缩放

  随机比例缩放使用的是torchvision.transforms.Resize()函数,函数有两个参数,第一个参数为缩放大小,如果为一个值则会按比例缩放,否则按传入的值缩放;第二个参数表示缩放图片使用的方法,默认的是双线性差值。

12345678
# 比例缩放print('缩放前尺寸为:{}'.format(img.size))new_img = transforms.Resize(224)(img)print('缩放后尺寸为:{}'.format(new_img.size))new_img

    缩放前尺寸为:(134, 43)    缩放后尺寸为:(698, 224)

12
new_img = transforms.RandomCrop(224, padding=8)(new_img)new_img

12345
new_img = transforms.Resize((224, 224))(img)print('缩放后尺寸为:{}'.format(new_img.size))new_img

    缩放后尺寸为:(224, 224)

随机位置截取

  随机位置截取能够提取图片中的局部信息,使得网络接受的输入具有多尺度的特征,所以能够有较好的效果,在torchvision中主要有以下两种方式,一个是torchvision.transforms.RandomCrop(),传入的参数是截取出图片的长和宽,在图片的随机位置进行截取;第二个是torchvision.transforms.CenterCrop(),同样传入图片的长和宽,会在图片的中心进行截取。

123
# 随机位置截取 100x100 的区域random_img = transforms.RandomCrop(100)(new_img)random_img

123
# 中心裁剪出 100x100 的区域center_img = transforms.CenterCrop(100)(new_img)center_img

123
# 进行填充后随机裁剪random_img2 = transforms.RandomCrop(224, padding=8)(new_img)random_img2

随机水平翻转和竖直翻转

torchvision.transforms.RandomHorizontalFlip()torchvision.transforms.RandomVerticalFlip()

123
# 随机水平翻转h_flip = transforms.RandomHorizontalFlip()(new_img)h_flip

123
# 随机竖直翻转v_flip = transforms.RandomVerticalFlip()(new_img)v_flip

随机角度旋转

torchvision.transforms.RandomRotation()

12
rot_im = transforms.RandomRotation(30)(new_img)rot_im

亮度、对比度和颜色变化

torchvision.transforms.ColorJitter()函数有四个参数,第一个参数为亮度,第二个参数为对比度,第三个参数为饱和度,第四个参数为颜色

123
# 亮度bright_img = transforms.ColorJitter(brightness=1)(new_img)bright_img

123
# 对比度contrast_img = transforms.ColorJitter(contrast=1)(new_img)contrast_img

123
# 饱和度saturation_img = transforms.ColorJitter(saturation=1)(new_img)saturation_img

123
# 颜色 随机变换颜色color_img = transforms.ColorJitter(hue=0.5)(new_img)color_img

123
compose_img = transforms.ColorJitter(0.5, 0.5, 0.5)(new_img)compose_imgnew_img

1234567891011121314151617181920
import matplotlib.pyplot as plt%matplotlib inline

img_transform = transforms.Compose([    transforms.Resize(232),    transforms.RandomCrop(224),    transforms.ColorJitter(0.15, 0.15, 0.15)])

nrows = 5ncols = 5figsize = (10, 10)

_, figs = plt.subplots(nrows, ncols, figsize = figsize)for i in range(nrows):    for j in range(ncols):        figs[i][j].imshow(img_transform(new_img))        figs[i][j].axes.get_xaxis().set_visible(False)        figs[i][j].axes.get_yaxis().set_visible(False)plt.show()

pytorch数据增广相关推荐

  1. pytorch数据增广albumentations

    pytorch数据增广albumentations 图像增强库官方英文介绍 安装 pip install albumentations 支持的目标检测bbox格式 pascal_voc [x_min, ...

  2. Pytorch 数据增广(Data Augmentation)

    Pytorch 数据增广(Data Augmentation) 0. 环境介绍 环境使用 Kaggle 里免费建立的 Notebook 教程使用李沐老师的 动手学深度学习 网站和 视频讲解 小技巧:当 ...

  3. PyTorch 使用torchvision进行图片数据增广

    使用torchvision来进行图片的数据增广 数据增强就是增强一个已有数据集,使得有更多的多样性.对于图片数据来说,就是改变图片的颜色和形状等等.比如常见的: 左右翻转,对于大多数数据集都可以使用: ...

  4. 【深度学习】利用一些API进行图像数据增广

    [深度学习]利用一些API进行图像数据增广 文章目录 [深度学习]利用一些API进行图像数据增广 1 先送上一份最强的翻转代码(基于PIL) 2 Keras中的数据增强API种类概述 3 特征标准化 ...

  5. 【深度学习】基于深度学习的数据增广技术一览

    ◎作者系极市原创作者计划特约作者Happy 周末在家无聊,偶然兴心想对CV领域常用的数据增广方法做个简单的调研与总结,重点是AI时代新兴的几种反响还不错的方法.各种第三方与官方实现代码等.那么今天由H ...

  6. Mixup vs. SamplePairing:ICLR2018投稿论文的两种数据增广方式

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  7. 动手深度学习13——计算机视觉:数据增广、图片分类

    文章目录 一.数据增广 1.1 为何进行数据增广? 1.2 常见图片增广方式 1.2.1 翻转 1.2.2 切割(裁剪) 1.2.3 改变颜色 1.2.4 综合使用 1.3 使用图像增广进行训练 1. ...

  8. 数据增广(数据增强)方式

    awesome-mixed-sample-data-augmentation(xys:数据增广方式最近文章与代码合集) mixup 目标检测中图像增强,mixup 如何操作?(同时讲解了分类中的mix ...

  9. python 批量增广数据_GitHub:数据增广最全资料集锦

    作者:AgaMiko | 编辑:Amusi Date:2020-10-12 来源:CVer微信公众号 原文:GitHub:数据增广最全资料集锦 前言 CVer 陆续分享了GitHub上优质的AI/CV ...

最新文章

  1. 【专访】KDD2018主席熊辉教授:数据挖掘与深度学习结合新趋势
  2. Thymeleaf提取公共页面(从实例入手,以inspinia模板为例)
  3. 07丨切片集群:数据增多了,是该加内存还是加实例
  4. 获取Flex SDK加载进度的方法
  5. angular 注入器配置_Angular2 多级注入器详解及实例
  6. 服务器端的JavaScript
  7. 入参为字符串用日期对象接收
  8. 收费企业邮箱的好处-外贸企业优选
  9. Android数据库框架-ORMLite
  10. 工行u盾显示316_工行银行网上交易老是提示插入u盾
  11. cloudstack上传模板时候的一个报错
  12. 网线制作方法-RJ45
  13. electron打包的一些问题
  14. 每日一学—text-decoration 属性
  15. python制作软件excel,利用Python制作Excel对比工具
  16. 第十三章、IO流_File类与递归/基本流/增强流/属性集与打印流__黑马Java第57期个人学习笔记_个人笔记
  17. jar命令的使用与执行jar包
  18. wpa_supplicant 源码分析 --conf 配置文件
  19. 领导力五力模型指什么
  20. ABOV单片机开发简介

热门文章

  1. word调整页脚距离 顶端和低端的距离(叫页边距)
  2. AirDisk产品Q3C和T2硬盘不认的时候,一般就三种原因
  3. RTC使用野火例程,LSE复位可用,HSE和LSI不可用问题。
  4. 青椒炒黄瓜+伏特加+Bon jovi+编程
  5. 一起赚美元⑤ | Instapainting照片转油画服务,通过SEO优化,每月赚取3.2万美元的真实案例
  6. 自动驾驶汽车的车道检测
  7. 回复审稿意见应该注意什么?
  8. sin(1/x)的图像,第二类间断点,震荡间断点
  9. Ceph部署(二)RGW搭建
  10. Airtest+Poco+Pytest框架搭建1