在医学图像分割(如 u-net 训练)中,必须保证图像和对应掩码经历完全一致的几何变换(如旋转、翻转),否则会导致标签错位;本文提供基于 `torchvision.transforms.v2` 的可靠同步增强方案,并详解原理与实现细节。
在使用 PyTorch 进行语义分割任务(如乳腺肿块分割)时,一个常见但极易被忽视的关键问题是:图像(image)和掩码(mask)必须共享完全相同的随机变换参数。你当前的代码中分别对 image 和 mass_mask 调用 self.transform(),看似合理,实则存在根本性缺陷——RandomRotation、RandomHorizontalFlip 等随机变换每次调用都会独立采样新参数(例如不同的旋转角度或是否翻转),导致图像与掩码空间错位,严重破坏监督信号。
✅ 正确做法是:将图像与掩码“绑定”为单个张量,一次性完成变换,再解耦。核心思想是沿通道维度(dim=0)拼接二者,使变换操作作用于同一输入,从而天然保证几何一致性。
以下是推荐的修复方案(适配 torchvision.transforms.v2):