火炬视觉图像文件夹"Could not find any class folder"



下面的代码

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。

相关内容

  • 没有找到相关文章