我正在编写一个简单的数据集转换工具,其中包含许多图片对。作为数据增强,我希望对每个对应的图片都应用一些随机变换,但是该图片对中的图像应以相同的方式进行变换。
例如,给定一对两张图片 A
和 B
,如果将 A
水平翻转,则 B
必须以同样的方式翻转,接下来的另一对 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
在指定时使用相同的转换方式?
transform = transforms.RandomChoice([
实际上是transform = RandomChoice([
,对吗? - TFCT.RandomChoice()
,因为我将torchvision.transforms
导入为T
。 - Ivan