You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对图像及其对应掩码执行相同的裁剪数据增强?

图像与掩码增强后无法匹配问题

我对图像和掩码使用了相同的随机裁剪处理逻辑,但增强后的结果却无法对应,效果如图所示:
增强后图像与掩码不匹配

处理代码如下:

randomScale = random.uniform(0.08, 1.0)
CPtransform = transforms.RandomResizedCrop((self.height, self.width), scale=(randomScale, randomScale), ratio=(1,1), interpolation=2)
toImage = T.ToPILImage()
padImage= CPtransform(toImage(image).convert("L"))
padMask = CPtransform(toImage(mask).convert("L"))
return TF.to_tensor(padImage), TF.to_tensor(padMask)

求各位帮忙解决,感谢!


解决方法

问题根源:RandomResizedCrop每次调用都会重新生成随机裁剪区域的位置、尺寸参数,所以图像和掩码实际用了不同的裁剪规则,导致对应不上。

下面提供两种可行的解决方式:

方式一:复用变换的随机参数

手动获取变换的随机参数,再用同一组参数分别处理图像和掩码:

randomScale = random.uniform(0.08, 1.0)
CPtransform = transforms.RandomResizedCrop((self.height, self.width), scale=(randomScale, randomScale), ratio=(1,1), interpolation=2)
toImage = T.ToPILImage()

# 转换为PIL图像
pil_img = toImage(image).convert("L")
pil_mask = toImage(mask).convert("L")

# 获取裁剪参数(仅生成一次)
crop_params = CPtransform.get_params(pil_img, CPtransform.scale, CPtransform.ratio)

# 用同一参数裁剪图像和掩码
padImage = TF.resized_crop(pil_img, *crop_params, size=CPtransform.size, interpolation=CPtransform.interpolation)
padMask = TF.resized_crop(pil_mask, *crop_params, size=CPtransform.size, interpolation=CPtransform.interpolation)

return TF.to_tensor(padImage), TF.to_tensor(padMask)

方式二:使用PyTorch v2版本的变换模块

如果你的PyTorch版本≥2.0,可以用torchvision.transforms.v2,它支持同时传入图像和掩码,自动保证变换参数一致:

from torchvision import transforms as T_v2

randomScale = random.uniform(0.08, 1.0)
# 使用v2版本的RandomResizedCrop
CPtransform = T_v2.RandomResizedCrop((self.height, self.width), scale=(randomScale, randomScale), ratio=(1,1), interpolation=2)
toImage = T.ToPILImage()

pil_img = toImage(image).convert("L")
pil_mask = toImage(mask).convert("L")

# 同时处理图像和掩码,参数自动同步
padImage, padMask = CPtransform(pil_img, pil_mask)

return TF.to_tensor(padImage), TF.to_tensor(padMask)

内容的提问来源于stack exchange,提问作者Alan K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:01:25