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