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

Windows10运行KITS19仓库遇路径错误,训练RESUNET报TypeError

解决方案:修复KITS19 ResUNET训练的路径类型错误

问题根源分析

从报错栈可以明确看到,错误出在dataset/kits19.py第106行的路径拼接代码:

case_root = root / data / f'case_{case:05d}'

这里的data变量被传入了模块对象(module),而非预期的字符串/路径对象,导致pathlib2在处理路径拼接时抛出TypeError: expected str, bytes or os.PathLike object, not module。这种情况大多是变量名冲突,或是调用方法时传错了参数类型导致的。


分步修复步骤

1. 定位参数传入错误

打开dataset/kits19.py,找到调用_read_npy的_get_data方法(第67行左右):

train_imgs, train_labels, train_case_slice_num = self._read_npy(self._root, self._train_case, is_test=False)

这里的第二个参数self._train_case应该是数据集目录名(比如'imagesTr'或'labelsTr'),但实际传入的是训练案例ID列表或其他非字符串对象,甚至可能是误导入的data模块。

2. 修正_read_npy的调用参数

修改_get_data中的调用逻辑,确保传给_read_npy的第二个参数是正确的字符串路径。比如读取训练图像和标签需要分开调用:

# 读取训练图像
train_imgs, _, train_case_slice_num = self._read_npy(self._root, 'imagesTr', self._train_case, is_test=False)
# 读取训练标签
_, train_labels, _ = self._read_npy(self._root, 'labelsTr', self._train_case, is_test=False)

同时检查_read_npy方法的定义,确保参数顺序匹配:

def _read_npy(self, root, data_dir, cases, is_test=False):
    # 方法逻辑...
    case_root = root / data_dir / f'case_{case:05d}'
    # ...

3. 适配Windows路径规则

在Windows系统下,确保self._root是有效的路径对象或字符串:

  • 避免使用未转义的反斜杠,推荐用正斜杠'F:/Uni/203/cse465/kits19-challenge/data'或原始字符串r'F:\Uni\203\cse465\kits19-challenge\data'
  • 优先用pathlib的Path对象初始化根路径:
from pathlib2 import Path
self._root = Path(r'F:\Uni\203\cse465\kits19-challenge\data')

4. 排查变量名冲突

检查代码顶部是否有类似import data的导入语句,这会导致data变量被覆盖为模块对象,和路径字符串变量冲突。如果有,修改导入别名:

import data as dataset_data  # 重命名避免冲突

额外验证点

  • 确认KITS19数据集的目录结构正确:根目录下必须包含imagesTr、labelsTr、imagesTs文件夹,每个文件夹内是case_00000.npy格式的文件。
  • 运行前可添加调试代码验证变量类型:
# 在_read_npy方法开头添加
print(type(data_dir), data_dir)  # 确认输出是<class 'str'>和正确的目录名

内容的提问来源于stack exchange,提问作者Samiha Akhter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:26:07