三. Pytorch Transforms的使用

1. 理解transforms.py 工具箱

  transforms 是一个 transforms.py 的工具箱,包含ToTensor(),Resize等工具包,先创建具体的工具继承transforms功能,  然后使用工具.

2.  如何使用transforms 工具箱

from torchvision import transforms
from PIL import Image

image_path = "/home/wtj/Data/Coco2017_pet/images/train2017/000000000042.jpg"
img = Image.open(image_path)

# python 用法 -> tensor数据类型
# 1. transforms 被如何使用(python)
tensor_trans = transforms.ToTensor()  #创建工具继承功能
tensor_img = tensor_trans(img)        # 使用工具
print(tensor_img)

3. 为什么要使用transforms.ToTensor()

 因为tensor 数据类型包含了神经网络训练过程的属性,如梯度.cuda. 反向传播.

 4.  常见的Transforms

  • transforms.Normalize()

# ToTensor
tensor_trans = transforms.ToTensor()
img_tensor = tensor_trans(img)
print(img_tensor.shape)
writer.add_image("image tensor",img_tensor,0)

# Normalize 输入必须是tensor
print(img_tensor[0][0][0])
# output[channel] = (input[channel] - mean[channel]) / std[channel]
trans_norm = transforms.Normalize([3, 6, 9], [9, 3, 5])  #(均值,方差)
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize",img_norm,2)

writer.close()

  •   transforms.Resize() 

不限定输入格式

# Resize 
print(img.size)
trans_resize = transforms.Resize((512, 512))
# img PIL -> Resize -> img_resize PIL
img_resize = trans_resize(img)
print(img_resize.size)
  • transforms.Compose()

将transforms 的操作组合起来,中括号不能忘

# Compose - resize -2
trans_compose = transforms.Compose([tensor_trans, trans_norm, trans_resize])
img_compose = trans_compose(img)
writer.add_image("compose",img_compose,0)

  • transforms.RandomCrop

随机裁剪

trans_random = transforms.RandomCrop(256)
trans_compose2 = transforms.Compose([trans_random, tensor_trans])
for i in range(10):
    img_crop = trans_compose2(img)
    writer.add_image("crop",img_crop, i)

 

总实现代码

# useful transforms
from PIL import Image
from cv2 import transform
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

image_path = "/home/wtj/Data/Coco2017_pet/images/train2017/000000000042.jpg"
img = Image.open(image_path)

writer = SummaryWriter("logs")

# ToTensor
tensor_trans = transforms.ToTensor()
img_tensor = tensor_trans(img)
print(img_tensor.shape)
writer.add_image("image tensor",img_tensor,0)

# Normalize
print(img_tensor[0][0][0])
# output[channel] = (input[channel] - mean[channel]) / std[channel]
trans_norm = transforms.Normalize([3, 6, 9], [9, 3, 5])  #(均值,方差)
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize",img_norm,2)

# Resize 
print(img.size)
trans_resize = transforms.Resize((512, 512))
# img PIL -> Resize -> img_resize PIL
img_resize = trans_resize(img)
print(img_resize.size)
print(type(img_resize))

img_resize = tensor_trans(img_resize)
writer.add_image("resize",img_resize,0)


# Compose - resize -2
trans_compose = transforms.Compose([tensor_trans, trans_norm, trans_resize])
img_compose = trans_compose(img)
writer.add_image("compose",img_compose,0)

# RandomCrop 随机裁剪
trans_random = transforms.RandomCrop(256)
trans_compose2 = transforms.Compose([trans_random, tensor_trans])
for i in range(10):
    img_crop = trans_compose2(img)
    writer.add_image("crop",img_crop, i)

writer.close()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值