从左到右
第一张:求图像每个通道的均值和方差,然后做归一化
第二张:求图像整体的均值和方差,然后做归一化
第三张:原图
import torch
from PIL import Image
import numpy as np
img = Image.open(r"H:\wendang\20190927090000198.jpeg")
np_image = np.array(img)
image = torch.from_numpy(np_image).float()
print(image.shape)
mean = []
std = []
for i in range(3):
me = image[:,:,i].mean()
st = image[:,:,i].std()
mean.append(me.item())
std.append(st.item())
ten_mean = torch.as_tensor(mean)[None,None,:]
ten_std = torch.as_tensor(std)[None,None,:]
channel_image = (image-ten_mean)/ten_std
x = image.mean()
y = image.std()
global_image = (image-x)/y
new_image = torch.hstack((channel_image,global_image,image))
new_img = Image.fromarray(new_image.numpy().astype(np.uint8))
new_img.show()
在做图像预处理时,为通道归一化
BatchNorm:batch方向做归一化,算NHW的均值和方差
#------------------------------------------------------------------------------------#
LayerNorm:channel方向做归一化,算CHW的均值和方差
#------------------------------------------------------------------------------------#
InstanceNorm:一个channel内做归一化,算HW的均值和方差
#------------------------------------------------------------------------------------#
GroupNorm:将channel方向分group,然后每个group内做归一化, 算(C//G)HW的均值