图像标准化
input:输入的图像像素值
mean(input):输入图像像素的均值
std(input):输入图像像素的标准差
将原始数据映射到均值为0、标准差为1的分布上
y = (x - mean)/σ :基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1
为什么要标准化/归一化
提升模型精度:
标准化/归一化后,不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
加速模型收敛:
标准化/归一化后,最优解的寻优过程明显变得平缓,更容易正确的收敛到最优解。
如下图所示:
代码
1 import torchvision.transforms as transforms 2 from PIL import Image 3 import numpy as np 4 5 img_path = "./4.jpg" 6 7 transform = transforms.Compose([ 8 # [0, 255] ——> [0, 1] 9 transforms.ToTensor(), 10 # ImageNet 11 transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) 12 ]) 13 14 img = Image.open(img_path) 15 # [H, W, C] ——> [C, H, W] 16 image = transform(img) 17 # tensor ——> numpy 18 image = image.numpy() 19 # [C, H, W] ——> [H, W, C] 20 image = np.transpose(image, (1, 2, 0)) 21 print(image)