PyTorch学习(二):Transform

PyTorch文档

Introduction

torchvision.transforms

前言:Transforms是常见的图像变换工具。他们可以通过compose函数被连接起来

Transformation接受tensor图像也接受tensor的batch类型。Tensor类型:CHW,Tensor的batch类型:BCHW

Tensor的范围由Tensor的类型定义,对于float类型,数值在[0, 1)之间;对于整型integer,范围为[0, MAX_DTYPE]

注意:对于torch的随机种子和python的随机种子将会产生不同的结果

# Previous versions
# import random
# random.seed(12)

# Now
import torch
torch.manual_seed(17)

Composition of transforms

Compose

torchvision.transforms.Compose(transforms)

将几个不同的transforms组合起来

transforms.Compose([
    transforms.CenterCrop(10),
    transforms.PILToTensor(),
    transforms.ConvertImageDtype(torch.float),
])

Transforms on PIL Image and Tensor

Resize

torchvision.transforms.Resize(size, interpolation, max_size=None, antialias=None)

将图片大小转换到给定的大小

  • size - 输出图像的大小
  • interpolation - 插值方法,默认为双线性插值

RandomHorizontalFlip

torchvision.transforms.RandomHorizontalFlip(p=0.5)

将图片以给定的概率随机翻转

Functional Transforms

函数可以为转换的过程提供细粒度控制。与上面的转换相反,函数转换不提供随机数生成器,即随机种子对其无效,你需要对其转换的方式来指定参数

to_tensor

torchvision.transforms.functional.to_tensor(pic)

将PIL Image或者numpy.ndarray转化为tensor
返回:tensor

  • pic - PIL Image或者numpy.ndarray

pad

torchvision.transforms.functional.pad(img, padding, fill, padding_mode)

将输入图片的所有边进行填充
返回:PIL Image or Tensor

  • img(PIL Image or Tensor) - 填充的图像
  • padding(int or sequence) - 如果是int,对所有边都进行填充。如果是两个值,对左右和上下分别填充。如果是四个值,分别填充左上右下
  • fill - Pixel fill value for constant fill. Default is 0.如果是一个长度为3的元祖,则分别填充RGB三个值,只有在padding_mode为constant的时候使用
  • padding_mode - 填充类型,默认为constant
    • constant:填充特定的值,由fill变量指定
    • edge:由图像边缘的值进行填充
    • reflect:以边为对称轴进行填充,不重复边上的值。例如以2填充[1,2,3,4]会得到[3,2,1,2,3,4,3,2]
    • symmetric:以图像边的最后一个值填充。例如以2填充[1,2,3,4]会得到[3,2,1,2,3,4,3,2]

adjust_gamma

torchvision.transforms.functional.adjust_gamma(img, gamma, gain:float=1)

对一张图片进行gamma校正
返回:gamma校正的图片

I o u t = 255 × g a i n × ( I i n 255 ) γ I_{out} = 255\times gain\times (\frac{I_{in}}{255})^{\gamma} Iout=255×gain×(255Iin)γ

  • img - PIL Image or Tensor
  • gamma - float. gamma大于1会让阴影变暗,gamma小于1会让暗的区域变亮
  • gain - 乘积因子

adjust_saturation

torchvision.transforms.functional.adjust_saturation(img, saturation_factor:float)

调整图片的饱满度
返回:PIL Image or Tensor

  • img - PIL Image or Tensor
  • saturation_factor - float. 调整饱满度。黑白图:0,不变:1,增强饱满度:2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV和PyTorch都是计算机视觉领域常用的工具。OpenCV是一个开源的计算机视觉库,提供了一系列针对图像和视频处理的函数和工具。PyTorch是一个深度学习框架,提供了一系列高效的深度学习算法和工具。 在计算机视觉任务中,通常需要对图像进行预处理和数据增强。OpenCV提供了一些常用的图像处理函数,如图像缩放、裁剪、旋转、平移、颜色转换等。而PyTorch则提供了一些数据增强的函数,如随机翻转、随机旋转、随机裁剪等。 为了将OpenCV和PyTorch结合起来,可以使用OpenCV对图像进行预处理,然后将预处理后的图像转换为PyTorch张量,再使用PyTorch提供的数据增强函数进行数据增强。最后再将增强后的数据转换为PyTorch张量,用于模型训练。 以下是一个示例代码,展示了如何使用OpenCV和PyTorch进行图像预处理和数据增强: ```python import cv2 import torch import torchvision.transforms as transforms # 图像预处理 img = cv2.imread('image.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 将BGR格式转换为RGB格式 img = cv2.resize(img, (224, 224)) # 图像缩放 img = img.transpose((2, 0, 1)) # 转换为PyTorch张量的格式 # 数据增强 transform = transforms.Compose([ transforms.RandomHorizontalFlip(), # 随机水平翻转 transforms.RandomRotation(10), # 随机旋转 transforms.RandomCrop(224), # 随机裁剪 transforms.ToTensor() # 转换为PyTorch张量 ]) img = transform(img) # 模型训练 model = ... output = model(img) ``` 在这个示例中,我们首先使用OpenCV对图像进行预处理,然后将预处理后的图像转换为PyTorch张量的格式。接着使用PyTorch提供的数据增强函数对图像进行数据增强,最后再将增强后的数据转换为PyTorch张量,用于模型训练。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值