from PIL import Image img = Image.open("lingmao.jpg")
type(img) #PIL.JpegImagePlugin.JpegImageFile
img.size #(940, 940)
import torch from torchvision import transforms img = transforms.Resize(size=(256, 256))(img)
import numpy as np np.array(img).shape #(256, 256, 3)
img = transforms.Grayscale()(img)
np.array(img) array([[ 85, 86, 87, ..., 100, 100, 100], [ 86, 87, 87, ..., 100, 100, 100], [ 87, 87, 87, ..., 100, 100, 100], ..., [ 38, 38, 38, ..., 40, 39, 38], [ 36, 36, 36, ..., 39, 38, 38], [ 36, 36, 36, ..., 38, 38, 38]], dtype=uint8)
转tensor且转换到[0,1] 之间
transforms.ToTensor()(img)
tensor([[[0.3333, 0.3373, 0.3412, ..., 0.3922, 0.3922, 0.3922], [0.3373, 0.3412, 0.3412, ..., 0.3922, 0.3922, 0.3922], [0.3412, 0.3412, 0.3412, ..., 0.3922, 0.3922, 0.3922], ..., [0.1490, 0.1490, 0.1490, ..., 0.1569, 0.1529, 0.1490], [0.1412, 0.1412, 0.1412, ..., 0.1529, 0.1490, 0.1490], [0.1412, 0.1412, 0.1412, ..., 0.1490, 0.1490, 0.1490]]])
直接除以255,再取小数点后4位有效数字
100/255 = 0.39215686274509803 38/255 = 0.14901960784313725
img = transforms.ToTensor()(img) type(img) # torch.Tensor
按特征维度进行归一化,即批归一化
#output[channel] = (input[channel] - mean[channel]) / std[channel] transforms.Normalize(mean=[0.5], std=[0.5])(img)
tensor([[[-0.3333, -0.3255, -0.3176, ..., -0.2157, -0.2157, -0.2157], [-0.3255, -0.3176, -0.3176, ..., -0.2157, -0.2157, -0.2157], [-0.3176, -0.3176, -0.3176, ..., -0.2157, -0.2157, -0.2157], ..., [-0.7020, -0.7020, -0.7020, ..., -0.6863, -0.6941, -0.7020], [-0.7176, -0.7176, -0.7176, ..., -0.6941, -0.7020, -0.7020], [-0.7176, -0.7176, -0.7176, ..., -0.7020, -0.7020, -0.7020]]])