在autodl云服务上训练yolov8分类模型的时候出现了报错,以及文件夹数量和跑模型的时候类别对应不上的问题。比如:我的train文件夹下只有cat,dog。但是代码出现了 ERROR ❌️ requires 2 classes, not 4 这种问题。去github看了下issue才知道的,特做笔记
train: New cache created: /root/datasets/Smile_classify_part/train.cache
Traceback (most recent call last):
File "model_train.py", line 6, in <module>
model.train(
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/model.py", line 810, in train
self.trainer.train()
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 208, in train
self._do_train(world_size)
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 323, in _do_train
self._setup_train(world_size)
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 290, in _setup_train
self.test_loader = self.get_dataloader(
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/models/yolo/classify/train.py", line 82, in get_dataloader
dataset = self.build_dataset(dataset_path, mode)
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/models/yolo/classify/train.py", line 77, in build_dataset
return ClassificationDataset(root=img_path, args=self.args, augment=mode == "train", prefix=mode)
File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/data/dataset.py", line 427, in __init__
self.base = torchvision.datasets.ImageFolder(root=root)
File "/root/miniconda3/lib/python3.8/site-packages/torchvision/datasets/folder.py", line 309, in __init__
super().__init__(
File "/root/miniconda3/lib/python3.8/site-packages/torchvision/datasets/folder.py", line 145, in __init__
samples = self.make_dataset(self.root, class_to_idx, extensions, is_valid_file)
File "/root/miniconda3/lib/python3.8/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 "/root/miniconda3/lib/python3.8/site-packages/torchvision/datasets/folder.py", line 102, in make_dataset
raise FileNotFoundError(msg)
FileNotFoundError: Found no valid file for the classes .ipynb_checkpoints. Supported extensions are: .jpg, .jpeg, .png, .ppm, .bmp, .pgm, .tif, .tiff, .webp
和
train: /root/datasets/Smile_classify_part/train... found 44155 images in 2 classes ✅
val: /root/datasets/Smile_classify_part/val... found 1007 images in 4 classes: ERROR ❌️ requires 2 classes, not 4
原因:因为我在jupyter上运行的,数据集是上传到autodl上的,租用别人的云显卡的。并且我上传数据的时候对数据集进行了操作,比如移动删除之类的。所以有可能会导致出现了隐藏的文件
解决方式:每次操作完数据集,请重新启动jupyter,然后使用下面的命令检测是否有隐藏的文件,有时候使用这个命令后,在终端还是显示不出来的。建议直接执行删除隐藏文件的命令
查看的命令
find . -type f -name ".*"
这里.表示当前目录,-type f表示只查找文件(不包括目录),“-name ".*"”表示匹配以.开头的文件名。不过这个命令会查找所有子目录中的隐藏文件
在当前路径下删除所有隐藏文件 和 .ipynb_checkpoints 文件夹
find . \( -name ".*" -o -name ".ipynb_checkpoints" \) -delete