Mask-RCNN-TF2袋鼠训练代码报WinError123路径语法错误
问题描述
- 涉及框架:Mask-RCNN-TF2
- 触发场景:按照项目说明文档步骤操作,运行路径
Mask-RCNN-TF2-master\kangaroo-transfer-learning/kangaroo_training.py的袋鼠数据集训练代码时,在文件第103行附近触发运行错误,进程最终以退出码1终止。 - 完整错误回溯:
Traceback (most recent call last): File "G:/Thisis/Object Detection/Mask-RCNN-TF2-master/kangaroo-transfer-learning/kangaroo_training.py", line 108, in <module> layers='heads') File "G:\Thisis\Object Detection\Mask-RCNN-TF2-master\kangaroo-transfer-learning\mrcnn\model.py", line 2347, in train os.makedirs(self.log_dir) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\os.py", line 223, in makedirs mkdir(name, mode) OSError: [WinError 123] 文件名、目录名或卷标语法不正确: '//'
故障原因
报错核心是训练方法尝试创建日志存储目录时,拿到的self.log_dir路径值为非法的//,Windows系统无法识别该路径格式,导致目录创建失败。
该问题通常由两类配置错误引发:
- 初始化Mask RCNN模型实例时,未给
model_dir参数传入合法的本地路径,参数留空或传入了错误的拼接值,后续路径拼接逻辑生成了带双斜杠的无效路径 - Windows环境下路径编写时混用正斜杠
/和反斜杠\,导致自动路径拼接逻辑出错,生成非法路径
修复步骤
- 打开
kangaroo_training.py文件,定位到模型初始化代码段(即调用modellib.MaskRCNN()实例化模型的位置) - 检查
model_dir传参,禁止留空,手动指定一个本地可访问的绝对路径,建议直接指向项目目录下的logs文件夹,示例配置如下:
# 路径替换为你本地项目的实际存放路径,字符串前加r标记为原始字符串,避免转义错误 model = modellib.MaskRCNN(mode="training", config=config, model_dir=r"G:\Thisis\Object Detection\Mask-RCNN-TF2-master\logs")
- 如果手动指定路径后仍报错,打开
mrcnn/model.py第2347行附近,在os.makedirs(self.log_dir)代码前加入一行打印语句,确认实际生成的日志路径值:
print("当前使用的日志路径:", repr(self.log_dir))
运行代码后根据打印出的路径值,排查是否存在空值、双斜杠、非法字符等问题,对应修正相关配置即可。
4. 统一路径书写规范:Windows环境下路径不要混写两种斜杠,要么全部用反斜杠加原始字符串标记r"路径",要么全部用正斜杠/,避免路径拼接出错。
内容的提问来源于stack exchange,提问作者Md Tanzil
相关产品推荐
相关产品推荐

