ToTensor()
ToTensor顾名思义就是将数据类型转换为Tensor的格式,支持的参数有PIL,NdArray(numpy)
使用方法:
tensor = transforms.ToTensor() tensor_img = tensor(img)
先实例化再调用,可见此处用了__call__的魔法方法
Compose()
译为组合,可以将多个Transforms的工具组合一起使用,使用方法见Resize的代码
Resize()
和reshape几乎一样,可以重新定义图片大小。
需要注意的是,resize()的参数必须是一个PIL。
返回类型为PIL
初始化时需要一个元组或单个值:
一个元组指定长宽
单个值是等比例缩放
Normalize()
标准话,会对图像进行数据处理,大概的处理公式就是
output[channel] = (input[channel] - mean[channel]) / std[channel]
例如:transforms_norm = transforms.Normalize([1,2,3],[3,4,5]) image_tensor_Normalize = transforms_norm(image_tensor) #[1,2,3]为mean,[3,4,5]为std,image_tensor为input(注意要tensor的格式)
以上所以方法的实例代码:
from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms writer = SummaryWriter("logs") img = Image.open("C:\\Users\\2477491565\\Desktop\\learn_pytorch\\练手数据集\\train\\ants_image\\0013035.jpg") print(img) trans_totensor = transforms.ToTensor() image_tensor = trans_totensor(img) #可以是一个参数,也可以是两个参数。一个参数再使用Compose #两个参数和reshape类似,修改图像的分辨率 transforms_resize_1 = transforms.Resize((521,521)) img_resize_PIL = transforms_resize_1(img) print(type(img_resize_PIL)) transforms_Totensor = transforms.ToTensor() img_resize_1_tensor = transforms_Totensor(img_resize_PIL) writer.add_image("Totensor",img_resize_1_tensor,3) #一个参数为等比例修改图像,即放或缩小图像 transforms_resize_2 = transforms.Resize(521) ##Compose(组合),可以将多个transforms方法组合在一起使用 transfroms_compose = >transforms.Compose([transforms_resize_2,transforms_Totensor]) img_resize_2_tensor = transfroms_compose(img) writer.add_image("Totensor",img_resize_2_tensor,4) #output[channel] = (input[channel] - mean[channel]) / std[channel] transforms_norm = transforms.Normalize([1,2,3],[3,4,5]) image_tensor_Normalize = transforms_norm(image_tensor) writer.add_image("Totensor", image_tensor,0) writer.add_image("Totensor", image_tensor_Normalize,1) writer.close()
可以在Tensorboard中查看
等比大小需要双击查看,这里step4就没有演示了