深度学习训练数据的图像增强
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(),
],
)
提前致谢
回复
我来回复-
Max D. 评论
该回答已被采纳!
是的,强烈建议在大多数情况下标准化您的图像,显然您将面临一些不需要标准化的情况。原因是将值保持在一定范围内。即使网络“大”,网络的输出也会受到输入数据范围的强烈影响。如果您的输入范围不受控制,您的预测将发生巨大变化。因此,梯度也会失控,可能会使您的训练效率低下。我邀请您阅读thisandthatanswers,以了解有关规范化背后“为什么”的更多详细信息,并对行为有更深入的了解。
使用 imagenet 均值和标准差对图像进行归一化是很常见的:
mean = [0.485, 0.456, 0.406]
,std = [0.229, 0.224, 0.225]
。当然,如果您的数据集足够真实,您也可以考虑在生产环境中使用其自己的均值和标准差来代替 imagenet 的。最后请记住这些值,因为一旦你的模型被训练,你仍然需要对任何新图像进行归一化,以在未来的推理中达到良好的准确性。
2年前