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

PyTorch加载本地图像训练二分类器:可视化与反归一化问题

问题解决:图像显示异常与反归一化修正

1. 反归一化的正确实现

你当前的反归一化代码存在笔误:第三个均值项的分母写成了0.255,但原归一化的标准差是0.225,这是导致颜色还原错误的核心原因。正确的反归一化逻辑是:

  • 反归一化均值 = -原均值 / 原标准差
  • 反归一化标准差 = 1 / 原标准差

修正后的代码:

inv_normalize = transforms.Normalize(
    mean=[-0.485/0.229, -0.456/0.224, -0.406/0.225],
    std=[1/0.229, 1/0.224, 1/0.225]
)

2. 解决3×3网格重复显示的问题

出现网格重复是因为反归一化后的张量像素值可能超出[0, 1]范围(PIL图像和plt.imshow要求像素值在0-1或0-255区间内),导致显示时出现异常拉伸。解决方法是在转PIL图像前,将张量的值限制在[0, 1]区间:

修改后的图像还原与显示代码:

# 先定义反归一化变换
inv_normalize = transforms.Normalize(
    mean=[-0.485/0.229, -0.456/0.224, -0.406/0.225],
    std=[1/0.229, 1/0.224, 1/0.225]
)

tensor_image = images[1]
# 反归一化 + 限制像素值范围
restored_tensor = inv_normalize(tensor_image).clamp(0, 1)
img = to_pil_image(restored_tensor)
plt.imshow(img)
plt.show()

额外注意事项

  • 必须保证inv_normalize的定义在调用它的代码之前,避免未定义错误。
  • 你使用的Resize(256)+RandomCrop(224)逻辑是合理的,不会导致显示异常,无需调整。

内容的提问来源于stack exchange,提问作者Jose Ramon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:37