2025.4.1

根据你的截图和报错信息,问题核心在于 YOLO无法正确解析数据集路径。以下是具体分析和解决方案:


🔍 问题定位

错误信息显示:

RuntimeError: Dataset 'dataset/data.yaml' error ❌ [WinError 3] 系统找不到指定的路径

关键问题:

  1. YOLO尝试访问的路径是:
    D:\Project\profile\python-3.11\yolo\datasets\dataset\data.yaml\train
    (自动拼接了不存在的 yolo/datasets/ 前缀)

  2. 你的实际项目结构(从截图可见):

    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个类别

⚠️ 常见陷阱

  1. YOLO的自动路径拼接
    如果使用相对路径(如 ./dataset/data.yaml),YOLO会尝试在以下路径查找:
    项目目录/yolo/datasets/dataset/data.yaml
    👉 这就是报错根源

  2. 中文路径问题
    虽然你的类别名是中文,但确保:

    • 文件夹名和YAML中的 names 完全一致
    • 无空格/特殊字符(如 愤怒 不要写成 愤怒
  3. 图片格式验证
    运行以下代码检查数据:

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'))  # 替换为你的路径

通过以上调整,路径问题应该能解决。如果遇到新错误,请提供:

  1. 完整的终端报错(文本形式)
  2. 执行 tree /F 的目录结构输出
posted @ 2025-04-01 23:00  258333  阅读(98)  评论(0)    收藏  举报