from torch.utils.tensorboard import SummaryWriter
from PIL import Image
from torchvision import transforms
# 将图片转换成tensor
img = Image.open("hymenoptera_data/train/ants/0013035.jpg")
trans2tensor = transforms.ToTensor()
img2tensor = trans2tensor(img)
writer = SummaryWriter("logs")
writer.add_image("img2tensor", img2tensor, 1)
# 归一化
trans2norm = transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
img2norm = trans2norm(img2tensor)
writer.add_image("img2norm", img2norm, 1)
writer.close()
Normalize是transforms的一个类,其中它的构造方法主要是输入每个图片每个channel的均值和方差,第一个[0.5,0.5,0.5]分别表示三个通道的均值,第二个[0.5,0.5,0.5]分别表示三个通道的方差,然后给输入一个tensor变量,就返回了一个归一化后的tensor。
# Resize的使用
trans2resize = transforms.Resize((512, 512))
img2resize = trans2resize(img)
img2resize2tensor = trans2tensor(img2resize)
writer.add_image("img2resize", img2resize2tensor, 1)
Resize是transforms关于变换图片尺寸的一个类,具体使用方法如代码
# Compose的用法
trans22resize = transforms.Resize(512)
trans2compose = transforms.Compose([trans22resize, trans2tensor])
img22resize = trans2compose(img)
writer.add_image("img2resize", img22resize, 2)
Compose是transforms的一个类,它的参数是一个关于transforms类型的一个列表,其主要作用就是将对图片的各种操作进行一个组合。可以节省代码块
# random_crop的用法
trans2random = transforms.RandomCrop((500, 400))
trans22compose = transforms.Compose([trans2random, trans2tensor])
for i in range(10):
img2random = trans22compose(img)
writer.add_image("img2random", img2random, i)
randomcrop是一个随机裁剪的类,对一个图片进行随机裁剪,用法如上。
小结:
关注输入输出类型
看看方法需要什么参数
多看官方文档