PyTorch——图像预处理——标准化(一)

图像标准化

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)

 

posted @ 2021-03-24 13:48  一剑光寒十四州  阅读(1524)  评论(0)    收藏  举报