(三)Transforms的使用

1.transforms的结构与用法

在这里插入图片描述

2.transforms的代码实战

2.1 ToTensor代码

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

img_path = "/Users/songyuxi/PycharmProjects/pythonProject/hymenoptera_data/train/ants/0013035.jpg"
img_pil = Image.open(img_path)  # jpeg类型
transform = transforms.ToTensor()  # 声明ToTensor类的对象
img_tensor = transform(img_pil)  # 将jpeg类型转换为tensor类型
writer = SummaryWriter(log_dir="logs")
writer.add_image(tag="tensor_img", img_tensor=img_tensor, global_step=2)
writer.close()

在这里插入图片描述

2.2Normalize代码

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

img_path = "/Users/songyuxi/PycharmProjects/pythonProject/images/01.jpeg"
img_pil = Image.open(img_path)  # jpeg类型

# totensor
transform = transforms.ToTensor()  # 声明ToTensor类的对象
img_tensor = transform(img_pil)  # 将jpeg类型转换为tensor类型

# normalize
norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])  # 声明Normalize类对象
img_tensor_norm = norm(img_tensor)  # 将tensor类型图像归一化

writer = SummaryWriter(log_dir="logs")
writer.add_image(tag="tensor_img", img_tensor=img_tensor, global_step=1)
writer.add_image(tag="tensor_img_norm", img_tensor=img_tensor_norm, global_step=1)
writer.close()

在这里插入图片描述

2.3Resize的代码

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

img_path = "/Users/songyuxi/PycharmProjects/pythonProject/images/01.jpeg"
img_pil = Image.open(img_path)  # jpeg类型

# totensor
transform = transforms.ToTensor()  # 声明ToTensor类的对象
img_tensor = transform(img_pil)  # 将jpeg类型转换为tensor类型

# normalize
norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])  # 声明Normalize类对象
img_tensor_norm = norm(img_tensor)  # 将tensor类型图像归一化

# resize
resize = transforms.Resize((512, 512))
img = resize(img_pil)  # 将img_pil由高640,宽368 转换为高512,宽512
print(img_pil.size)
print(img.size)
img_tensor_resize = transform(img)  # 将jpeg类型转换为tensor类型

writer = SummaryWriter(log_dir="logs")
writer.add_image(tag="tensor_img", img_tensor=img_tensor, global_step=1)
writer.add_image(tag="tensor_img_norm", img_tensor=img_tensor_norm, global_step=1)
writer.add_image(tag="tensor_img_resize", img_tensor=img_tensor_resize, global_step=1)
writer.close()

在这里插入图片描述

2.4Compose的代码

Compose()中的参数需要是一个列表,Python中列表的表示形式为[数据1,数据2,数据3,…]。在Compose中,数据需要是transforms类型,所以得到Compose([transforms参数1,transforms参数2,…])

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

img_path = "/Users/songyuxi/PycharmProjects/pythonProject/images/01.jpeg"
img_pil = Image.open(img_path)  # jpeg类型

# totensor
transform = transforms.ToTensor()  # 声明ToTensor类的对象
img_tensor = transform(img_pil)  # 将jpeg类型转换为tensor类型

# normalize
norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])  # 声明Normalize类对象
img_tensor_norm = norm(img_tensor)  # 将tensor类型图像归一化

# resize
resize = transforms.Resize((512, 512))
img = resize(img_pil)  # 将img_pil由高640,宽368 转换为高512,宽512
print(img_pil.size)
print(img.size)
img_tensor_resize = transform(img)  # 将jpeg类型转换为tensor类型

# compose  (640,368)->(512,512)->tensor->normalize
compose = transforms.Compose([resize, transform, norm])
img_compose = compose(img_pil)

writer = SummaryWriter(log_dir="logs")
writer.add_image(tag="tensor_img", img_tensor=img_tensor, global_step=1)
writer.add_image(tag="tensor_img_norm", img_tensor=img_tensor_norm, global_step=1)
writer.add_image(tag="tensor_img_resize", img_tensor=img_tensor_resize, global_step=1)
writer.add_image(tag="tensor_img_compose", img_tensor=img_compose, global_step=1)
writer.close()

在这里插入图片描述

2.5RandomCrop的代码

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

img_path = "/Users/songyuxi/PycharmProjects/pythonProject/images/01.jpeg"
img_pil = Image.open(img_path)  # jpeg类型

# totensor
transform = transforms.ToTensor()  # 声明ToTensor类的对象
img_tensor = transform(img_pil)  # 将jpeg类型转换为tensor类型

# normalize
norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])  # 声明Normalize类对象
img_tensor_norm = norm(img_tensor)  # 将tensor类型图像归一化

# resize
resize = transforms.Resize((512, 512))
img = resize(img_pil)  # 将img_pil由高640,宽368 转换为高512,宽512
print(img_pil.size)
print(img.size)
img_tensor_resize = transform(img)  # 将jpeg类型转换为tensor类型

# compose  (640,368)->(512,512)->tensor->normalize
compose = transforms.Compose([resize, transform, norm])
img_compose = compose(img_pil)

# RandomCrop
randomcrop = transforms.RandomCrop(300)
compose1 = transforms.Compose([randomcrop, transform])
img_random = compose1(img_pil)

writer = SummaryWriter(log_dir="logs")
writer.add_image(tag="tensor_img", img_tensor=img_tensor, global_step=1)
writer.add_image(tag="tensor_img_norm", img_tensor=img_tensor_norm, global_step=1)
writer.add_image(tag="tensor_img_resize", img_tensor=img_tensor_resize, global_step=1)
writer.add_image(tag="tensor_img_compose", img_tensor=img_compose, global_step=1)
writer.add_image(tag="tensor_img_random", img_tensor=img_random, global_step=1)
writer.close()

在这里插入图片描述

3.transforms包下的常用类

3.1 Compose

在这里插入图片描述

3.2 ToTensor

在这里插入图片描述

3.3 Normalize

在这里插入图片描述

3.4 Resize

在这里插入图片描述

  • CenterCrop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值