1.如何得到成千上万张图像 各个通道的均值和方差
猜测:
法1:计算每张图像的均值和方法 然后每次计算一张图像的均值和方差后,都和前一个均值和方差求平均
或者是计算所有图像的均值和方差组成列表后,计算该列表的均值,类似于下面这样(转载于:https://blog.csdn.net/qq_30159015/article/details/82117878)
per_image_Rmean = []
per_image_Gmean = []
per_image_Bmean = []
for file_name in file_names:
img = cv2.imread(os.path.join(path, file_name), 1)
per_image_Rmean.append(np.mean(img[:,:,0]))
per_image_Gmean.append(np.mean(img[:,:,1]))
per_image_Bmean.append(np.mean(img[:,:,2]))
R_mean = np.mean(per_image_Rmean)
G_mean = np.mean(per_image_Gmean)
B_mean = np.mean(per_image_Bmean)
然后调查发现,可见光图像归一化时普遍选择mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]
原因还没调查清楚
mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]这是imageNet的数据集和方差
2.用于训练的网络经过T.RandomResizedCrop()转换后,变成随机大小和随机宽高比的数据,为什么要这么做
猜测:因为图像中的目标有大有小,有各种比例,有各种角度等
T.RandomResizedCrop()的效果
这样做,那么每张图片进入训练网络时的输入特征是否一致,如果不一致,是否会影响训练参数的格式和形式???
不清楚
是否需要根据测试集是什么,比如测试集目标大概率时多大,大概率是怎么拍的等,来调整上述的参数??
解释参考:
3.
从多通道的数据中提取某个单通道的数据
我做语义分割时自己标注后的label时RGBA格式,4通道,只有1个通道的数据代表着标注的类别值,所以就需要提取该通道的数据
import PIL.Image
import numpy as np
s = PIL.Image.open('/home/mlxuan/project/DeepLearning/data/image_Segmentation/js-segment-annotator-master/data/images/Split2/DJI_0200_0.png')
imgArr = np.asarray(s)
imgArr2 = [[imgArr[i][j][0] for j in range(len(imgArr[i]))] for i in range(len(imgArr))]
np.uint8(imgArr2).shape