图像增广
import torch
import matplotlib.pyplot as plt
from torch.utils.data import Dataset, DataLoader
import torchvision
from PIL import Image
# 获取图像
img = Image.open(r'D:\pyPro\hhandwritten_web\static\images\bg.jpg')
plt.imshow(img)
文章图片
# 定义增广函数
def show_img(img,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(0,num_rows):
for j in range(0,num_cols):
axes[i][j].imshow(img[i * num_rows + num_cols])
axes[i][j].axes.get_xaxis().set_visible(False)
axes[i][j].axes.get_yaxis().set_visible(False)
def apply(img, aug, rows = 2, cols = 4, scale = 1.5):
Y = [aug(img) for _ in range(0,rows*cols)]
show_img(Y, rows, cols, scale)
- 水平翻转
# 采用默认的行列
apply(img, torchvision.transforms.RandomHorizontalFlip())
文章图片
- 垂直翻转
apply(img, torchvision.transforms.RandomVerticalFlip())
文章图片
- 裁剪
# 我们每次随机裁剪出?块?积为原?积0.1 - 1的区域,且该区域的宽和?之?随机取?0.5 - 2,然后再将该区域的宽和?分别缩放到200像素。
shape_aug = torchvision.transforms.RandomResizedCrop((600,1000), scale= (0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)
文章图片
- 颜色
#设置如何随机变化图像的亮度( brightness )、对?度( contrast )、饱和度( saturation )和?调( hue )。
apply(img, torchvision.transforms.ColorJitter(brightness=0.5, hue=0.5,contrast=0.5, saturation=0.5))
文章图片
- 叠加多个变化
mutil_aug = torchvision.transforms.Compose(
[torchvision.transforms.RandomResizedCrop((600,1000), scale= (0.1, 1), ratio=(0.5, 2)),
torchvision.transforms.ColorJitter(brightness=0.5, hue=0.5,contrast=0.5, saturation=0.5)]
)
apply(img,mutil_aug)
【pytorch|pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等】
文章图片
推荐阅读
- PyTorch|PyTorch 第二周第三节(transforms图像增强(一))
- 机器学习|pytorch 数据预处理(填充、随机裁剪、随机遮挡、随机左右翻转)
- python入门学习|ubuntu下安装pytorch离线安装的方法,torchvision离线安装,numpy离线安装
- 人工智能|YOLOX笔记
- 人工智能|在自定义数据集上训练YOLOX
- python|【转载】OpenCV-Python系列之稀疏光流(五十九)
- 读论文|【读论文】基于改进特征金字塔的无监督光流估计
- yolox|YoloX算法学习(1)
- 算法|一举打败16个同类模型,视频超分比赛冠军算法入选CVPR 2022,来自商汤&南洋理工大学...