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

TorchVision v2变换不生效,无法可视化CT图像分割预处理效果

TorchVision v2变换不生效,无法可视化CT图像分割预处理效果

看起来你遇到的问题大概率是几个细节没处理到位,我帮你梳理下可能的原因和解决办法:

首先,先排查变换是否真的被执行:

  • 先确认你的self.augment是不是设为True了?如果这个开关是False,那整个变换块根本不会运行,自然看不到效果。可以在if self.augment:下面加个打印语句验证下。
  • 另外,TorchVision v2的变换对输入类型有要求,它只支持torch.Tensor或者PIL.Image类型的输入。如果你的self.scan_slice是numpy数组,直接传入变换是不会生效的!你需要先把它转成张量:
    # 假设scan_slice是[3,512,512]的numpy数组
    self.scan_slice = torch.from_numpy(self.scan_slice).float()
    
    转成张量之后再应用变换,应该就能看到像素值的变化了。

然后,分割任务必须同步变换图像和标签:
你现在只单独变换了self.scan_slice,但可视化时用的是sample['structures'](多标签栈),这俩没同步变换的话,图像和分割标签的位置会对不上,看起来就像变换没生效。TorchVision v2支持联合变换图像和标签,你可以把它们打包成元组或者字典传入变换:

# 把图像和标签打包成元组
transformed_scan, transformed_structures = transform(self.scan_slice, self.structures)
# 或者用字典格式(更清晰)
transformed = transform({"image": self.scan_slice, "mask": self.structures})
transformed_scan = transformed["image"]
transformed_structures = transformed["mask"]

这样翻转、旋转这些空间变换会同时作用于两者,保证可视化时图像和分割层是匹配的。

接下来,可视化代码的小问题:
你处理分割标签的代码里有个小错误:

sub_structures[j,:,:] = np.where(sub_structures[j,:,:] < 1.0, np.nan, i)

这里的i是样本的索引(循环里的i),所有结构都会被设成同一个数值,用rainbow colormap的话根本区分不开不同结构。应该改成j+1,让每个结构有唯一的数值:

for j in range(sub_structures.shape[0]):
    sub_structures[j,:,:] = np.where(sub_structures[j,:,:] < 1.0, np.nan, j+1)
sub_structures = np.nansum(sub_structures, axis=0)

另外,CT图像的像素值范围通常很大(比如-1000到2000),直接转成int16后用imshow显示会因为超出0-255范围导致显示异常,最好先做归一化:

scan = np.moveaxis(scan, 0, -1).astype(np.int16)
# 归一化到0-255范围
scan = (scan - scan.min()) / (scan.max() - scan.min()) * 255
scan = scan.astype(np.uint8)

最后,你可以在变换前后打印某个固定位置的像素值,比如:

print("变换前像素值:", self.scan_slice[0, 100, 100].item())
self.scan_slice = transform(self.scan_slice)
print("变换后像素值:", self.scan_slice[0, 100, 100].item())

如果数值有变化,说明变换已经生效,问题就出在可视化环节;如果没变化,再回头检查输入类型和self.augment的开关。

备注:内容来源于stack exchange,提问作者Sumerechny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:29:42