【发布时间】:2021-04-03 11:26:07
【问题描述】:
我正在为包含多对图像的数据集编写一个简单的转换。作为数据增强,我想对每一对应用一些随机变换,但该对中的图像应该以相同的方式进行变换。
例如,给定一对两个图像A和B,如果A水平翻转,B必须水平翻转为A。然后下一对C 和D 应该与A 和B 进行不同的转换,但C 和D 的转换方式相同。我正在尝试以下方式
import random
import numpy as np
import torchvision.transforms as transforms
from PIL import Image
img_a = Image.open("sample_ajpg") # note that two images have the same size
img_b = Image.open("sample_b.png")
img_c, img_d = Image.open("sample_c.jpg"), Image.open("sample_d.png")
transform = transforms.RandomChoice(
[transforms.RandomHorizontalFlip(),
transforms.RandomVerticalFlip()]
)
random.seed(0)
display(transform(img_a))
display(transform(img_b))
random.seed(1)
display(transform(img_c))
display(transform(img_d))
然而,上面的代码没有选择相同的转换,我测试过,它取决于transform被调用的次数。
有没有办法强制transforms.RandomChoice 在指定时使用相同的转换?
【问题讨论】:
标签: python pytorch torchvision