pytorch学习(Transforms的使用)(三)

transforms

transforms主要用于图片的一些变换。
transforms指的是transforms.py文件,里面有很多class,每个class为一个图片处理工具。
transforms的工具有totensor,resize等等。

ToTensor

将图片转换为tensor

from PIL import Image
from torchvision import transforms

img_path = "dataset/train/ants/0013035.jpg"
img = Image.open(img_path)

tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)

print(type(tensor_img))

变为tensor后传给tensorboard,后续例子的变化均传给tensorboard,以便查看结果。

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

img_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
img = Image.open(img_path)

tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)

writer = SummaryWriter("logs")
writer.add_image("ToTensor", tensor_img)
writer.close()

Normalize

对图片的像素点的均值和标准差进行设置,这里先将图片变为tensor,再传入Normalize。

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

writer = SummaryWriter("logs")
img = Image.open("dataset/train/ants/0013035.jpg")

# ToTensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)


# Normalize
'''transforms.Normalize的参数为tensor的每一个channel的均值和标准差,第一个[0.5, 0.5, 0.5]为tensor的每一个channel的均值,第二个[0.5, 0.5, 0.5]为标准差,
函数作用为output[channel] = (input[channel] - mean[channel]) / std[channel]'''
trans_norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
img_norm = trans_norm(img_tensor)
writer.add_image("Normalize", img_norm)

writer.close()

tensorboard 显示结果为:
在这里插入图片描述

Resize

将图片变为指定大小。

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

writer = SummaryWriter("logs")
img = Image.open("data/VCG211363439424.jpg")

# resize
trans_resize = transforms.Resize((512, 512))# (512,512)为图片大小,只传入一个数图片形状不会改变。
img_resize = trans_resize(img)
img_resize = trans_totensor(img_resize)
writer.add_image('resize', img_resize, 0)

writer.close()

Compose

Compose可以将多个操作串联在一起,这里先Resize在ToTensor,串联在一起。

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

writer = SummaryWriter("logs")
img = Image.open("data/VCG211363439424.jpg")

# ToTensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)

# Compose 
trans_resize_2 = transforms.Resize(512) #这里只输入一个数,对原图做等比缩放
trans_compose = transforms.Compose([trans_resize_2, trans_totensor]) #compose将缩放和转tensor操作合成在一起
img_resize_2 = trans_compose(img)
writer.add_image("resize", img_resize_2, 1)


writer.close()

RandomCrop

随机位置在原图中裁剪指定大小的图片。

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

writer = SummaryWriter("logs")
img = Image.open("data/VCG211363439424.jpg")

# ToTensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)

# RandomCrop
trans_random = transforms.RandomCrop(512) #随机位置在原图中裁剪(512,512)大小的图片
trans_compose_2 = transforms.Compose([trans_random, trans_totensor])
for i in range (10):
    img_crop = trans_compose_2(img)
    writer.add_image("RandomCrop", img_crop, i)
writer.close()

总结

1.注意transforms的输入和输出类型,如果文档没有告诉输出是什么类型,可以print结果或print(type()),或者debug,看变量类型。
2.看官方文档,transforms.py文件里每一个类都有简介,注意输入参数。
4.使用方法:导入transfrom.py;创建该文件里面类的实例,创建的时候需要传参数,表示该实例的具体作用;用该实例对数据进行变换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值