栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

常用的Transforms中的方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

常用的Transforms中的方法

文章
这里用一些实际代码来举例,Transforms中常用方法的一些使用(ToTensor、Normalize、Resize、Compose、RandomCrop等等)

示例代码如下:

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

writer = SummaryWriter("logs")
img = Image.open(r"D:pycharm_professionalPycharmProjectslearning_pytorchimagesbaby.jpg")


# ToTensor
# 生成类对象
trans_totensor = transforms.ToTensor()
# 往类对象中传入参数并返回结果
img_tensor = trans_totensor(img)
# 将结果添加到事件当中
writer.add_image("ToTenser",img_tensor)


# Normalize
print(img_tensor[0][0][0])
# 为什么是传入[0.5,0.5,0.5],因为其有测试图片有三个通道
# 生成类对象
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
# 往类对象中传入参数并返回结果
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
# 将结果添加到事件当中
writer.add_image("Normalize",img_norm)


# Resize
print(img.size)
# 生成类对象
trans_resize = transforms.Resize((512,512))
# img PIL -> resize -> img_resize PIL
img_resize = trans_resize(img)
print(img_resize) # 
# resize之后的图像是PIL.Image的数据类型,想要把变化后的图片在tensorboard显示的话,还要将图像转换为tensor的数据类型
# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
writer.add_image("Resize",img_resize)


# Compose - resize -2
trans_resize_2 = transforms.Resize(512)
# PIL -> PIl -> tensor
trans_compose = transforms.Compose([trans_resize_2,trans_totensor])
img_resize_2 = trans_compose(img)
writer.add_image("Resize",img_resize_2,1)


# RandomCrop
trans_random = transforms.RandomCrop(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()

tips

  • 其实可以发现哈,ToTensor、Normalize、Resize、Compose的使用方法都是先生成一个对应的类对象,然后再向类对象中传入图片,返回一个结果。
# 示例:
# 生成类对象  
trans_totensor = transforms.ToTensor()
# 往类对象中传入参数并返回结果
img_tensor = trans_totensor(img)
# 将结果添加到事件当中
writer.add_image("ToTenser",img_tensor)
  • 需要注意的一点就是,在使用一个方法之前一定要弄清楚,这个方法要求的参数类型是什么!一定要注意一个方法的输入是什么类型,输出是什么类型!
# 示例:
# Resize
print(img.size)
# 生成类对象
trans_resize = transforms.Resize((512,512))
# img PIL -> resize -> img_resize PIL
img_resize = trans_resize(img)
print(img_resize) # 
# resize之后的图像是PIL.Image的数据类型,想要把变化后的图片在tensorboard显示的话,还要将图像转换为tensor的数据类型
# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
writer.add_image("Resize",img_resize)
  • 记住在pycharm中写代码的时候一定要熟练掌握 ctrl + alt 和ctrl + p的使用,应为这两个快捷键可以减少很多的问题
  • 还有就是在使用到一个不怎么常用的方法的时候,第一件事你可以想到的就是跳回到源码,看看官方的解释。

总结:
1.关注输入和输出类型
2.多看官方文档
3.不知道返回值的时候:

  • print()
  • print(type())
  • debug
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987372.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号