transforms是torchvision下的一个图像预处理库,包含了常用的图像预处理方法。
怎么使用?
首先找到torchvision定义,打开structure可以找到所有class:
以Totensor
(将图片格式装换成tensor格式)为例:
首先找到Totensor定义中的输入输出,输入可以是PIL型,输出为tensor
class ToTensor:
"""Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor.
先trans_totensor = transforms.ToTensor()
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image("ToTensor", img_tensor)
Resize
最新版本好像可以输入tensor型
class Resize(torch.nn.Module):
"""Resize the input image to the given size.
If the image is torch Tensor, it is expected
先对img PIL Resize
,先trans_resize = transforms.Resize((16,16))
,writer.add_image需要输入tensor类,要将PIL Totensor
trans_resize = transforms.Resize((16,16))
# img PIL -> resize -> img_resize PIL
img_resize = trans_resize(img)
print(img_resize)#print(type(img_resize))
# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
writer.add_image("Resize", img_resize,0)
两步可以用Compose
合并:
Compose要求后面函数的输入要是前面函数的输出。 Compose用法:Compose()中参数需要一个列表,列表表示形式为[数据1.数据2,...],在Compose中,数据需要transforms类型。
trans_resize_2 = transforms.Resize(1024)
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])
#PIL -> PIL -> tensor
img_resize_2 = trans_compose(img)
writer.add_image("Resize", img_resize_2,1)