下面的代码
plastic_train_image_folder = torchvision.datasets.ImageFolder(plastic_dir, transform=transforms)
抛出以下错误:
在/Users/username/Documents/Jupyter/archive/Garbage classification/Garbage classification/plastic中找不到任何class文件夹
然而,那里有文件。下面的代码打印482
。
list_plastic = os.listdir(plastic_dir)
number_files_plastic = len(list_plastic)
print(number_files_plastic)
为什么会出现这个错误?
正如您在文档中看到的,ImageFolder
类期望图像位于目录中,每个感兴趣的类对应一个目录:
一个通用的数据加载器,图像以这种方式排列:
root/dog/xxx.png root/dog/xxy.png root/dog/xxz.png root/cat/123.png root/cat/nsdf3.png root/cat/asd932_.png
您的图像可能在根目录中,这不是预期的方式,因此出现错误。
当您获得路径时,它会确保其中有一个目录:
def find_classes(directory: str) -> Tuple[List[str], Dict[str, int]]:
"""Finds the class folders in a dataset.
See :class:`DatasetFolder` for details.
"""
classes = sorted(entry.name for entry in os.scandir(directory) if entry.is_dir())
if not classes:
raise FileNotFoundError(f"Couldn't find any class folder in {directory}.")
class_to_idx = {cls_name: i for i, cls_name in enumerate(classes)}
return classes, class_to_idx
- 所以如果你的数据集是例如在/kaggle/dataset/women-clothes然后你想把它/kaggle/dataset作为路径目录,而不是/kaggle/dataset/dataset/women-clothes。