Torchvision(transform)

一、transforms的结构

1、具体的函数

2、对其的理解

工具箱用法

二、如何使用transforms

from torchvision import transforms
from PIL import Image

img_path = "dataset/train/bees/90179376_abc234e5f4.jpg"
img = Image.open(img_path)
print(img)
# "Convert a PIL Image or ndarray to tensor and scale the values accordingly."

tensor = transforms.ToTensor()
# def __call__(self, pic):
# Args:
# pic (PIL Image or numpy.ndarray): Image to be converted to tensor.
#
# Returns:
# Tensor: Converted image."
img_tensor = tensor(img)

print(img_tensor)

 Run Result:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x332 at 0x1FBF445DEE0>
tensor([[[0.0745, 0.0745, 0.0745,  ..., 0.0667, 0.0627, 0.0549],
         [0.0784, 0.0784, 0.0745,  ..., 0.0549, 0.0549, 0.0510],
         [0.0784, 0.0784, 0.0784,  ..., 0.0510, 0.0549, 0.0510],
         ...,
         [0.1098, 0.1020, 0.0941,  ..., 0.6863, 0.6863, 0.6824],
         [0.1098, 0.0980, 0.0863,  ..., 0.6863, 0.6863, 0.6863],
         [0.1020, 0.0941, 0.0941,  ..., 0.6863, 0.6863, 0.6863]],

        [[0.1294, 0.1294, 0.1255,  ..., 0.1020, 0.0980, 0.1020],
         [0.1333, 0.1333, 0.1255,  ..., 0.1020, 0.1020, 0.0980],
         [0.1333, 0.1333, 0.1333,  ..., 0.1020, 0.1020, 0.0980],
         ...,
         [0.1843, 0.1882, 0.1882,  ..., 0.6235, 0.6235, 0.6196],
         [0.1843, 0.1843, 0.1882,  ..., 0.6235, 0.6235, 0.6235],
         [0.1882, 0.1882, 0.1882,  ..., 0.6235, 0.6235, 0.6235]],

        [[0.0000, 0.0000, 0.0078,  ..., 0.0275, 0.0235, 0.0235],
         [0.0039, 0.0039, 0.0078,  ..., 0.0235, 0.0235, 0.0196],
         [0.0039, 0.0039, 0.0039,  ..., 0.0235, 0.0235, 0.0196],
         ...,
         [0.0039, 0.0039, 0.0000,  ..., 0.6667, 0.6667, 0.6627],
         [0.0039, 0.0000, 0.0000,  ..., 0.6745, 0.6667, 0.6667],
         [0.0039, 0.0000, 0.0000,  ..., 0.6745, 0.6667, 0.6667]]])

 Tensor类型相关参数

三、结合TensorBoard讲解Tensorforms常用相关函数

3.1、将图片展示在TensorBoard上-ToTensor()函数

# SummaryWriter是PyTorch的一个类,它是用于将训练过程中的数据和统计信息写入到TensorBoard可视化工具所需的格式中的工具。
# TensorBoard是一个用于可视化和分析深度学习模型的工具,它可以帮助你更好地理解和监控你的模型训练过程。SummaryWriter类允许你将不同的数据类型写入到TensorBoard的事件文件中,然后可以使用TensorBoard来可视化这些数据。

from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image

img_path = "dataset/train/bees/90179376_abc234e5f4.jpg"
img = Image.open(img_path)
print(img)
# "Convert a PIL Image or ndarray to tensor and scale the values accordingly."

tensor = transforms.ToTensor()
writer = SummaryWriter("logs")
img_tensor = tensor(img)
writer.add_image("Tensor_img",img_tensor)
writer.close()

 

3.2、Normalize归一化函数

#Normalize
#如果均值较大,则图像的整体亮度会减小,反之亦然。
#较大的标准差会使图像的对比度增加,而较小的标准差会使图像的对比度减小。
tensor_norm = transforms.Normalize([0.6,0.2,0.6],[0.1,1,0.1])
img_norm = tensor_norm(img_tensor)
writer.add_image("Normalize_img",img_norm,6)
writer.close()

 

3.3、Resize裁剪函数

#Resize
#输入一个参数图片较小边将会匹配到该值,输入两个参数将改变图片的高和宽
train_resize = transforms.Resize((512,512))
#输入为PIL类型,输出为PIL类型
img_resize = train_resize(img)
#通过ToTensor再将PIL转化为tensor类型
img_resize = tensor(img_resize)
writer.add_image("Resize",img_resize,1)
writer.close()

 

3.4、Compose一系列格式转换

参数列表每一个类型之间前一个输出与后一个输入要对应

#Compose
train_resize2 = transforms.Resize((1024,512))
train_compose = transforms.Compose([train_resize2,tensor])
#依据transforms.Compose()函数参数
#img PIL(原始类型) -> PIL(裁剪后类型) -> Tensor(裁剪完成后再转换类型)
img_resize2 = train_compose(img)
writer.add_image("Resize",img_resize2,2)

 

3.5、RandomCrop

#RandomCrop-裁剪出一张图片
train_RandomCrop = transforms.RandomCrop((300,300))
img_randomcrop = train_RandomCrop.forward(img)
img_randomcrop = tensor(img_randomcrop)
writer.add_image("RandomCroop",img_randomcrop)

#RandomCrop-裁剪出十张图片
train_RandomCrop1 = transforms.RandomCrop(310)
tensor_randomcrop = transforms.Compose([train_RandomCrop1,tensor])
for i in range(10):
img_crop = tensor_randomcrop(img)
writer.add_image("RandomCroop", img_crop,i)

 该方法一般用于数据的增强

。。。。。。

3.6、如何使用函数总结

看官方文档

关注输入与输出类型

看参数含意

有的只给了函数输入类型但没告诉输出类型

print()打印

print(type(*))打印类型

debug,在返回对象下一行设断点,查看返回对象类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DQ小恐龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值