【发布时间】:2025-12-18 06:35:02
【问题描述】:
我正在尝试规范化这个灰度 X 射线图像数据集https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia
我有一些疑问
1)我查看了一些使用相同数据集完成的项目,下面的这个项目有三个平均值(大概是三个通道)。但既然这是一个灰度图像数据集,它怎么会有 3 个通道的平均像素值呢?它不应该只是0到1之间的一个数字吗? (https://www.kaggle.com/brennolins/image-classification-pytorch-transfer-learning)
-
为了找到均值和标准,我尝试这样做 -
train_loader = DataLoader(dataset = train_set, batch_size=64, shuffle=True) def get_mean_std(loader): channels_sum, channels_square_sum, num_batches= 0, 0, 0 for data, _ in loader: channels_sum += torch.mean(data, dim=[]) channels_square_sum += torch.mean(data**2, dim = [0,2,3]) num_batches += 1 mean=channels_sum/num_batches std= (channels_square_sum/num_batches - mean**2) return mean, std mean, std= get_mean_std(train_loader) print(mean) print(std)
它给了我一个单一的值作为我的像素平均值。我跑了两次,得到了两个不同的平均值和一组不同的标准值。怎么会这样?
这是我试图应用于我的训练集的转换 -
transf_train = tt.Compose([
tt.Resize(60),
tt.RandomCrop(54, padding=4, padding_mode='reflect'),
tt.ToTensor(), # converts pixels [0-255] to tensors [0-1]
tt.Normalize(mean = [0.485, 0.456, 0.406], std = [0.229, 0.224, 0.225])])
(我从上面完成的 pytorch 项目中获取了这些当前值。我想知道如何自己找到这些值,以及当图像为灰度时如何有三个平均通道)
谢谢!
【问题讨论】:
标签: python pytorch normalization