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

YOLO分类模型训练报错:期望路径对象而非NoneType

问题

尝试用包含两类JPG图片的自定义数据集训练YOLO分类模型,启动训练时触发报错:

Traceback (most recent call last):
  File "C:\pythonProject\main.py", line 5, in <module>
    model.train(data='./training_dataset', epochs=1, imgsz=64)
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\engine\model.py", line 341, in train
    self.trainer.train()
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\engine\trainer.py", line 192, in train
    self._do_train(world_size)
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\engine\trainer.py", line 288, in _do_train
    self._setup_train(world_size)
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\engine\trainer.py", line 255, in _setup_train
    self.test_loader = self.get_dataloader(self.testset, batch_size=batch_size * 2, rank=-1, mode='val')
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\models\yolo\classify\train.py", line 88, in get_dataloader
    dataset = self.build_dataset(dataset_path, mode)
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\models\yolo\classify\train.py", line 83, in build_dataset
    return ClassificationDataset(root=img_path, args=self.args, augment=mode == 'train', prefix=mode)
  File "C:\pythonProject\venv\lib\site-packages\ultralytics\data\dataset.py", line 220, in __init__
    super().__init__(root=root)
  File "C:\pythonProject\venv\lib\site-packages\torchvision\datasets\folder.py", line 309, in __init__
    super().__init__(
  File "C:\pythonProject\venv\lib\site-packages\torchvision\datasets\folder.py", line 145, in __init__
    samples = self.make_dataset(self.root, class_to_idx, extensions, is_valid_file)
  File "C:\pythonProject\venv\lib\site-packages\torchvision\datasets\folder.py", line 189, in make_dataset
    return make_dataset(directory, class_to_idx, extensions=extensions, is_valid_file=is_valid_file)
  File "C:\pythonProject\venv\lib\site-packages\torchvision\datasets\folder.py", line 61, in make_dataset
    directory = os.path.expanduser(directory)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\ntpath.py", line 293, in expanduser
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

更换两个不同数据集后问题仍存在,完整代码如下:

from ultralytics import YOLO

model = YOLO('yolov8n-cls.pt')

model.train(data='./training_dataset', epochs=1, imgsz=64)

数据集结构为:training_dataset/train/cats、training_dataset/train/dogs

解决方案
  • 补全数据集结构:YOLO分类训练默认需要训练集和验证集,在training_dataset目录下添加val文件夹,内部创建与train一致的cats和dogs子目录,并放入对应类别的验证图片。最终结构应为:
    training_dataset/
    ├─ train/
    │  ├─ cats/
    │  └─ dogs/
    └─ val/
       ├─ cats/
       └─ dogs/
    
  • 临时跳过验证集(不推荐,无法评估模型泛化能力):修改训练代码,添加val=False参数,代码如下:
    from ultralytics import YOLO
    
    model = YOLO('yolov8n-cls.pt')
    
    model.train(data='./training_dataset', epochs=1, imgsz=64, val=False)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:13:13