pytorch torchvision.datasets.ImageFolder FileNotFoundError:找不到类.ipynb_checkpoints的有效文件

问题描述 投票:0回答:5

尝试在 Colab 中使用 pytorch torch.datasets.ImageFolder 加载训练数据。

transform = transforms.Compose([transforms.Resize(400),
                                transforms.ToTensor()])
dataset_path = 'ss/'
dataset = datasets.ImageFolder(root=dataset_path, transform=transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=20)

我遇到以下错误:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-27-7abcc1f434b1> in <module>()
      2                                 transforms.ToTensor()])
      3 dataset_path = 'ss/'
----> 4 dataset = datasets.ImageFolder(root=dataset_path, transform=transform)
      5 dataloader = torch.utils.data.DataLoader(dataset, batch_size=20)

3 frames
/usr/local/lib/python3.7/dist-packages/torchvision/datasets/folder.py in make_dataset(directory, class_to_idx, extensions, is_valid_file)
    100         if extensions is not None:
    101             msg += f"Supported extensions are: {', '.join(extensions)}"
--> 102         raise FileNotFoundError(msg)
    103 
    104     return instances

FileNotFoundError: Found no valid file for the classes .ipynb_checkpoints. Supported extensions are: .jpg, .jpeg, .png, .ppm, .bmp, .pgm, .tif, .tiff, .webp

我的数据集文件夹包含一个子文件夹,其中包含许多 png 格式的训练图像,但 ImageFolder 仍然无法访问它们。

machine-learning computer-vision pytorch torchvision pytorch-dataloader
5个回答
17
投票

我在使用类似IPython笔记本的工具时遇到了同样的问题。

首先请检查您的

dataset_path
下是否有隐藏文件。如果您在 Linux 环境下,请使用
ls -a

我遇到的情况是我发现了一个名为

.ipynb_checkpoints
的隐藏文件,它与图像类子文件夹平行。我认为该文件会导致 PyTorch 数据集混乱。我确定它没有用,所以我就把它删除了。然后数据集就可以正常工作了。

或者如果您想简单地忽略该文件,您也可以尝试this


1
投票

图像文件夹中的文件需要放置在每个类的子文件夹中,如下所示:

root/dog/xxx.png
root/dog/xxy.png
root/dog/[...]/xxz.png

root/cat/123.png
root/cat/nsdf3.png
root/cat/[...]/asd932_.png

https://pytorch.org/vision/stable/datasets.html#torchvision.datasets.ImageFolder

您的

ss
目录中的文件是这样组织的吗?


0
投票

1-图像文件夹中的文件需要放置在每个类的子文件夹中(如 Sergii Dymchenko 所说)

2-使用google colab时输入绝对路径


0
投票

google colaboratory的解决方案:
当您创建目录时,coollaboratory 还会在其中创建 .ipynb_checkpoints。
要解决该问题,只需将其从包含图像的目录的文件夹(即从 train 文件夹)中删除即可。你需要运行:

!rm -R test/train/.ipynb_checkpoints
!ls test/train/ -a   #to make sure that the deletion has occurred

其中

test/train/
是我到数据集文件夹的路径


0
投票

我最近也遇到了同样的错误。原来是目录结构的问题。就我个人而言,我将其与 ImageLoader 一起使用,因此请确保您的结构如下所示。 (注意我也使用了谷歌colab):

数据

  • data_you_are_trying_to_train
    • 火车
      • class_1
    • 测试
      • class_1
© www.soinside.com 2019 - 2024. All rights reserved.