深度学习训练数据的图像增强

xiaoxingxing pytorch 447

原文标题Image augmentation on deep learning training data

我有一个关于图像增强的问题,更具体的是平均值和标准差。

这两个参数建议填写吗?

如果是这样,我怎么知道这个号码?我是否必须在火车之前遍历数据以及图像的每个通道才能得到它?

import albumentations as A
train_transform = A.Compose(
        [
            A.Resize(height=IMAGE_HEIGHT, width=IMAGE_WIDTH),
            A.ColorJitter(brightness=0.3, hue=0.3, p=0.3),
            A.Rotate(limit=5, p=1.0),
            # A.HorizontalFlip(p=0.3),
            # A.VerticalFlip(p=0.2),
            A.Normalize(
                mean=[0.0, 0.0, 0.0],# <-----------this parameter
                std=[1.0, 1.0, 1.0],# <-----------this parameter
                max_pixel_value=255.0,
            ),
            ToTensorV2(),
        ],
    )

提前致谢

原文链接:https://stackoverflow.com//questions/71472904/image-augmentation-on-deep-learning-training-data

回复

我来回复
  • Max D.的头像
    Max D. 评论

    是的,强烈建议在大多数情况下标准化您的图像,显​​然您将面临一些不需要标准化的情况。原因是将值保持在一定范围内。即使网络“大”,网络的输出也会受到输入数据范围的强烈影响。如果您的输入范围不受控制,您的预测将发生巨大变化。因此,梯度也会失控,可能会使您的训练效率低下。我邀请您阅读thisandthatanswers,以了解有关规范化背后“为什么”的更多详细信息,并对行为有更深入的了解。

    使用 imagenet 均值和标准差对图像进行归一化是很常见的:mean = [0.485, 0.456, 0.406],std = [0.229, 0.224, 0.225]。当然,如果您的数据集足够真实,您也可以考虑在生产环境中使用其自己的均值和标准差来代替 imagenet 的。

    最后请记住这些值,因为一旦你的模型被训练,你仍然需要对任何新图像进行归一化,以在未来的推理中达到良好的准确性。

    2年前 0条评论