首页 > 解决方案 > 当我们进行数据增强时,我们应该训练原始数据点吗?

问题描述

我对数据增强的定义感到困惑。我们应该训练原始数据点和转换后的数据点还是只训练转换后的数据点?如果我们同时训练两者,那么我们将增加数据集的大小,而第二种方法不会。

我在使用函数 RandomResizedCrop 时遇到了这个问题。

'train': transforms.Compose([
        transforms.RandomResizedCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),

如果我们随机调整和裁剪一些数据集的大小,我们实际上并没有增加数据集的大小以进行数据增强。那是对的吗?或者数据增强只需要改变/修改原始数据集而不是增加它的大小?

谢谢。

标签: deep-learningcomputer-visionpytorchtransformdata-augmentation

解决方案


transform.compose 就像预处理图像一样,将一种形式转换为特定的合适形式

在单个图像上应用转换意味着改变它的像素值并且它不会增加数据集的大小

对于更多数据集,您必须执行以下操作:

final_train_data = []
final_target_train = []
for i in tqdm(range(train_x.shape[0])):
    final_train_data.append(train_x[i])
    final_train_data.append(rotate(train_x[i], angle=45, mode = 'wrap'))
    final_train_data.append(np.fliplr(train_x[i]))
    final_train_data.append(np.flipud(train_x[i]))
    final_train_data.append(random_noise(train_x[i],var=0.2**2))
for j in range(5):
    final_target_train.append(train_y[i]) 

更多细节


推荐阅读