pytorch中rgb图像归一化参数背后的原因

The reason behind rgb image normalization parameters in pytorch

我在很多教程和 pytorch 文档中都看过 transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)),我知道第一个参数是 mean,第二个是 std。我不明白为什么不同频道的值不同。

这可以只是代码作者(例如COCO或PascalVOC)的原始数据集中的颜色分布。所有的颜色都被平等地代表只是偶然。但是,如果您在您的案例中使用相同的均值,我怀疑由于均值和标准的相似性,它会产生很大的不同。

例如,在我从 GoPro 相机获取的自定义数据集中,均值和标准差如下:

mean: [0.2841186 , 0.32399923, 0.27048702],
std: [0.21937862, 0.26193094, 0.23754872]

平均数几乎不相等。然而,这并不意味着它们在 ML 模型中被区别对待。所有这些转换所做的就是确保每个特征都是标准化的(通过 z-score 标准化)。

这样想:如果一种颜色在您的数据集中以通常更高的强度表示(例如,如果您有许多充满活力的“蓝色”海滩、天空、泻湖等图片),比您必须从该通道中减去更大的数字以确保您的数据标准化。