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

PyTorch实现Unet++训练时DataLoader worker 0捕获TypeError问题求助

错误根因定位

从报错堆栈可以直接定位到核心问题:dataset.py第63行调用cv2.imread读取mask图像时返回了None,后续对返回值执行维度切片[..., None]时触发类型错误。该错误在DataLoader的子进程中执行数据集读取逻辑时抛出,因此外层会提示DataLoader worker process 0相关报错。

排查步骤

  • 校验单个mask文件的可读性
    即使目录配置正确,也可能存在单个mask文件损坏、文件名匹配异常的情况,运行以下脚本遍历所有mask文件,找出读取失败的文件:
import cv2
import os

# 替换为你配置文件中对应的mask路径、mask后缀
mask_dir = "/path/to/your/mask/dir"
mask_ext = ".png"

for filename in os.listdir(mask_dir):
    if filename.endswith(mask_ext):
        mask_path = os.path.join(mask_dir, filename)
        img = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
        if img is None:
            print(f"读取失败文件:{mask_path}")
  • 校验mask后缀配置一致性
    注意Linux环境下路径大小写敏感,如果配置文件中mask_ext设为.png,但实际文件后缀为.PNG或者.jpg,会导致cv2.imread找不到文件返回None。
  • 校验img_id拼接逻辑
    检查dataset中img_id的生成逻辑,确认img_id + self.mask_ext拼接后的文件名和实际mask文件名完全匹配,排查是否存在img_id包含多余空格、换行符、分割符错误的问题。
  • 临时调整DataLoader配置方便调试
    将DataLoader的num_workers参数改为0,错误会直接在主进程抛出,可以在dataset.py第63行前打印拼接后的mask完整路径,手动校验路径是否存在、文件是否正常。

内容的提问来源于stack exchange,提问作者Ted Lu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:09:02