【发布时间】:2019-07-24 23:11:43
【问题描述】:
据我了解,RandomHorizontalFlip 等替换图像而不是向数据集添加新图像。如何通过使用 PyTorch 向数据集添加增强图像来增加数据集大小?
我浏览了发布的链接,但没有找到解决方案。我想通过添加翻转/旋转的图像来增加数据大小 - 但这篇文章解决了图像的就地处理问题。
谢谢。
【问题讨论】:
据我了解,RandomHorizontalFlip 等替换图像而不是向数据集添加新图像。如何通过使用 PyTorch 向数据集添加增强图像来增加数据集大小?
我浏览了发布的链接,但没有找到解决方案。我想通过添加翻转/旋转的图像来增加数据大小 - 但这篇文章解决了图像的就地处理问题。
谢谢。
【问题讨论】:
你为什么想要它?一般来说,增加数据集的 epoch 数量就足够了,您的模型将至少看到每张图像的原始版本和增强版本(假设 epoch 数量相对较多)。
说明:
例如,如果您的增强有 50% 的机会被应用,那么在 100 个 epoch 之后,对于每个样本,您将获得约 50 个原始图像样本和约 50 个增强样本。因此,增加数据集大小相当于增加 epoch,但(可能)在内存方面效率较低(需要将图像存储在内存中以获得高性能)。
【讨论】:
它需要一些解释。
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])
【讨论】: