如何使用 Pytorch 将增强图像添加到原始数据集中?

Posted

技术标签:

【中文标题】如何使用 Pytorch 将增强图像添加到原始数据集中?【英文标题】:How to add augmented images to original dataset using Pytorch? 【发布时间】:2019-07-24 23:11:43 【问题描述】:

据我了解,RandomHorizo​​ntalFlip 等替换图像而不是向数据集添加新图像。如何通过使用 PyTorch 向数据集添加增强图像来增加数据集大小?

我浏览了发布的链接,但没有找到解决方案。我想通过添加翻转/旋转的图像来增加数据大小 - 但这篇文章解决了图像的就地处理问题。

谢谢。

【问题讨论】:

检查***.com/questions/51677788/… Data Augmentation in PyTorch的可能重复 【参考方案1】:

你为什么想要它?一般来说,增加数据集的 epoch 数量就足够了,您的模型将至少看到每张图像的原始版本和增强版本(假设 epoch 数量相对较多)。

说明:

例如,如果您的增强有 50% 的机会被应用,那么在 100 个 epoch 之后,对于每个样本,您将获得约 50 个原始图像样本和约 50 个增强样本。因此,增加数据集大小相当于增加 epoch,但(可能)在内存方面效率较低(需要将图像存储在内存中以获得高性能)。

【讨论】:

增加 epoch 不是违背了增强的目的吗?随着我们增加 epoch 的数量,模型将倾向于过度拟合。我在这里错过了什么吗?请纠正我。 不一定。首先,这取决于您要解决的任务。例如,训练 GAN 等生成模型,VAE 不会过度拟合您的数据集(只要您避免模式崩溃)。在分类任务的情况下,也很难通过添加 epoch 来过度拟合您的模型(不要忘记您只是扩充了数据以使您的模型更好地泛化)。【参考方案2】:

它需要一些解释。 transforms.Compose 创建一个位于 <class 'torchvision.transforms.transforms.Compose'> 中的事物 (你可以通过type()知道它的类 例如

train_tfm = transforms.Compose([transforms.Resize((128, 128)),transforms.ToTensor(),])
print(type(train_tfm))

所以它不是数据集,因此不能直接协调

在代码中搜索,看看携带增广指令的变量是如何进行的。

应该有一些数据阅读器,可以在<class 'torchvision.datasets.folder.DatasetFolder'>类中

那么就可以使用了:

concat_dataset = ConcatDataset([train_set_1, train_set_2])

【讨论】:

以上是关于如何使用 Pytorch 将增强图像添加到原始数据集中?的主要内容,如果未能解决你的问题,请参考以下文章

为增强 Pascal Voc 数据集的原始图像添加类标签

小白学习PyTorch教程八使用图像数据增强手段,提升CIFAR-10 数据集精确度

图像分类实战:mobilenetv2从训练到TensorRT部署(pytorch)

图像分类实战:mobilenetv2从训练到TensorRT部署(pytorch)

如何通过数据增强增加图像数量

Python库 - Albumentations 图片数据增强库