Pytorch中的图像增强
我喜欢交替地增强图像。 我有如下pytorch转换代码Pytorch中的图像增强,pytorch,Pytorch,我喜欢交替地增强图像。 我有如下pytorch转换代码 import torchvision.transforms as tt from torchvision.datasets import ImageFolder #Data transform (normalization & data augmentation) stats = ((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)) train_tfms = tt.Compose(
import torchvision.transforms as tt
from torchvision.datasets import ImageFolder
#Data transform (normalization & data augmentation)
stats = ((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))
train_tfms = tt.Compose([tt.RandomCrop(32, padding = 4, padding_mode = 'reflect'),
tt.RandomHorizontalFlip(),
tt.RandomAffine(degrees=(10, 30),
translate=(0.1, 0.3),
scale=(0.7, 1.3),
shear=0.1,
resample=Image.BICUBIC)
tt.ToTensor(),
tt.Normalize(*stats)])
当我按如下方式创建数据集并进行训练时,所有图像都将得到增强
train_ds = ImageFolder('content/train', train_tfms)
但我要轮流。第一个图像,只需训练为原始图像。但下一幅图像被放大了
train_ds = ImageFolder('content/train', train_tfms)
如何才能做到这一点?从一个数据集,您可以创建两个数据集,一个有扩展,另一个没有,然后将它们连接起来。由于我们使用的是子数据集pytorch类,它将为我们处理这个问题,所以我们将保持这个顺序
train\u ds\u no\u aug=ImageFolder('content/train')
train\u ds\u aug=ImageFolder('content/train',train\tfms)
#检查aug_idx和no_aug_idx是否重叠
8月idx=火炬号(1列,8月2号列车)
no_-Augu_-idx=火炬(0,len(列车编号),2)
train\u ds\u no\u aug=torch.utils.data.Subset(train\u ds\u no\u aug,no\u aug\u idx)
train\u ds\u aug=torch.utils.data.Subset(train\u ds\u aug,aug\u idx)
train\u ds=torch.utils.data.ChainDataset([train\u ds\u no\u aug,train\u ds\u aug])
#完成:=
我有问题。我不能在train\u dl=DataLoader中设置shuffle=True(train\u ds,batch\u size,shuffle=False,num\u workers=8,pin\u memory=True)
那么当我进行训练时,我会出现错误,因为AssertionError:ChainDataset只支持IterableDataset