gpt4 book ai didi

python - 图像识别中的预处理

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:44 26 4
gpt4 key购买 nike

我是图像识别的初学者,需要一些有关预处理图像的帮助。

  1. 我使用迁移学习模型 resnet18 进行识别工作。我得到:
    在 [3] 中:pretrainedmodels.pretrained_settings['resnet18']
    出[3]:
    {'图像网':{'网址':
    'https://download.pytorch.org/models/resnet18-
    5c106cde.pth',
    '输入空间':'RGB',
    'input_size': [3, 224, 224],
    'input_range': [0, 1],
    '平均':[0.485,0.456,0.406],
    '标准':[0.229,0.224,0.225],
    'num_classes':1000}}

我发现 meanstd 与我的图像数据集完全不同。

我应该如何标准化我的训练集?用上面的均值和标准差还是用我自己算的均值和标准差?

  1. 我将数据集分为 train_setvalid_settest_set

我有两种方法:

A.计算它们的均值和标准差并单独归一化

B.计算整个数据集的均值和标准差,然后进行归一化。

哪个是对的?

3.什么时候做归一化?在 data_augmentation 之前还是在 data_augmentation 之后?

最佳答案

如果您使用自己的数据集和预训练权重训练新模型,则需要为新数据集设置新的均值和标准差。

基本上,您需要重复 ImageNet 的处理过程。编写一个脚本来计算整个数据集的一般 [mean, std] 值。

但请记住注意您的数据集分布,因为它肯定会影响模型性能。

然后为您的训练/验证集单独定义一个转换器方法。通常我们不会对测试集进行归一化,因为在现实世界场景中,您的模型将接收不同类型的数据。您应该在构建数据集时执行规范化过程,并结合其他增强技术。

例如,考虑这个玩具示例

"transformer": {
"train": transforms.Compose([
transforms.Resize(size=299),
transforms.RandomHorizontalFlip(p=0.2),
transforms.ToTensor(),
transforms.Normalize(new_mean, new_std)
]),
"valid": transforms.Compose([
transforms.Resize(size=299),
transforms.ToTensor(),
])
}

train_ds = CustomDataset(type="train", transformer=transformer["train"])
valid_ds = CustomDataset(type="valid", transformer=transformer["valid"])

如果你有更多的困惑,请告诉我

关于python - 图像识别中的预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54395051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com