根据你的截图和报错信息,问题核心在于 YOLO无法正确解析数据集路径。以下是具体分析和解决方案:
🔍 问题定位
错误信息显示:
RuntimeError: Dataset 'dataset/data.yaml' error ❌ [WinError 3] 系统找不到指定的路径
关键问题:
-
YOLO尝试访问的路径是:
D:\Project\profile\python-3.11\yolo\datasets\dataset\data.yaml\train
(自动拼接了不存在的yolo/datasets/
前缀) -
你的实际项目结构(从截图可见):
D:\Project\profile\python-3.11\face_emotion_yolo\face_emotion_train\ ├── dataset/ │ ├── data.yaml │ └── (图片数据) └── train.py
🛠️ 解决方案(3步搞定)
1️⃣ 修正YAML文件路径
修改 train.py
中的路径为 绝对路径(推荐):
a1.train(data=r'D:\Project\profile\python-3.11\face_emotion_yolo\face_emotion_train\dataset\data.yaml',# 其他参数保持不变...
)
💡 注意:Windows路径必须使用:
- 原始字符串
r'...'
或- 双反斜杠
'D:\\path\\to\\file'
2️⃣ 检查YAML内容
确保 data.yaml
内容如下(参考截图调整):
path: D:\Project\profile\python-3.11\face_emotion_yolo\face_emotion_train\dataset
train: train # 相对path的路径
val: val # 可选
names: ['愤怒', '蔑视', '厌恶', '恐惧', '开心', '自然', '悲伤', '惊讶']
3️⃣ 验证目录结构
确认数据集目录结构符合要求:
dataset/
├── data.yaml
└── train/├── 愤怒/ # 每个类别的图片文件夹├── 开心/└── ... # 其他6个类别
⚠️ 常见陷阱
-
YOLO的自动路径拼接
如果使用相对路径(如./dataset/data.yaml
),YOLO会尝试在以下路径查找:
项目目录/yolo/datasets/dataset/data.yaml
👉 这就是报错根源 -
中文路径问题
虽然你的类别名是中文,但确保:- 文件夹名和YAML中的
names
完全一致 - 无空格/特殊字符(如
愤怒
不要写成愤怒
)
- 文件夹名和YAML中的
-
图片格式验证
运行以下代码检查数据:
from pathlib import Path
yaml_path = r'你的绝对路径/data.yaml'
print("train目录图片数:", len(list(Path(yaml_path).parent.glob("train/*/*.jpg"))))
📌 终极验证
如果仍有问题,尝试:
import os
print("当前工作目录:", os.getcwd()) # 应该显示 face_emotion_train 目录
print("YAML存在:", os.path.exists(r'D:\...\data.yaml')) # 替换为你的路径
通过以上调整,路径问题应该能解决。如果遇到新错误,请提供:
- 完整的终端报错(文本形式)
- 执行
tree /F
的目录结构输出