“ RuntimeError:在”的子文件夹中找到0个文件。有关Pytorch中子文件夹的错误

时间:2019-02-10 05:16:10

标签: python jupyter-notebook pytorch

我目前基于Windows 10,Jupyter Notebook,Pytorch 1.0,Python 3.6.x。

首先,我使用以下代码确认文件的正确路径:print(os.listdir('./Dataset/images/'))

我可以检查此路径是否正确。

但我遇到了Error

  

RuntimeError:在./Dataset/images/的子文件夹中找到0个文件   支持的扩展名是:.jpg,.jpeg,.png,.ppm,.bmp,.pgm,.tif”

怎么了? 您能提出解决方案吗?

我尝试./dataset/1/images喜欢这种方法。但是结果是一样的。...

img_dir = './Dataset/images/'
img_data = torchvision.datasets.ImageFolder(os.path.join(img_dir), transforms.Compose([
            transforms.Scale(256),
            transforms.RandomResizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            ]))
img_batch = data.DataLoader(img_data, batch_size=batch_size,
                               shuffle = True, drop_last=True)

6 个答案:

答案 0 :(得分:1)

使用celebA时遇到了相同的问题,包括200,000张图像。我们可以看到有很多图像。但是在很小的样本情况下(我尝试了20张图像),我检查了该错误不会出现,这意味着我们可以成功读取图像。 但是,当数目增加时,我们应该使用其他方法。

我根据这个网站解决了这个问题。感谢 QimingChen Github solution

简单地在原始文件夹中添加另一个名为1 (/ train / ---> train / 1 /)的文件夹将使我们的程序可以正常运行,无需进行更改路径。这是因为当面对大型数据集时,图像应按不同类别的子文件夹分类。

有关Github的原始答案:

比方说,我要使用ImageFolder(“ / train / ”)来阅读文件夹训练中的jpg文件。 文件结构是 /培养/ -1.jpg -2.jpg -3.jpg

我无法加载它们,导致出现错误: RuntimeError:在./data的子文件夹中找到0个图像 支持的图像扩展名是.jpg,.JPG,.jpeg,.JPEG,.png,.PNG,.ppm,.PPM,.bmp,.BMP

我阅读了上面的解决方案,并尝试了数十次。当我将结构更改为 / train / 1 /

-1.jpg -2.jpg -3.jpg

但是读入的代码仍然是-ImageFolder(“ / train /”),可以正常工作。

该程序似乎倾向于递归读取文件,这在某些情况下很方便。

希望这会有所帮助!

答案 1 :(得分:0)

请参阅ImageFolder数据集的文档,以了解此数据集类如何期望根据图像类将图像组织在“ ./Dataset/images”下的子文件夹中。确保您的图像遵守此顺序。

答案 2 :(得分:0)

根据pytorch中DataLoader的规则,您应该选择图像路径的上级路径。这意味着,如果图像位于'./Dataset/images/'中,则数据加载器的路径应改为'./Dataset'。我希望它可以解决您的错误。:)

答案 3 :(得分:0)

显然,解决方案是使图片名称为字母数字。它们可能是另一种解决方案,但这是可行的。

答案 4 :(得分:0)

您可以修改ImageFolder类以直接进入根文件夹(不包含子文件夹):

2.md

我们调用make_dataset方法来收集文件:

1.md

所有操作都在包含os.walk的循环中进行。在这里,文件是从“根”目录收集的,我们将其指定为包含文件的目录。

答案 5 :(得分:-2)

您可以发布文件的结构吗?在您的情况下,应该是:

img_dir
|_class1
  |_a.jpg
  |_b.jpg
|_class2
  |_a.jpg
  |_b.jpg
...