pytorch中ImageFolder初学

1、项目场景:

        作为一个深度学习小白,前些日子在kaggle上下载了一个猫狗数据集,但是在写自定义数据集的时候却发现图片文件排版和我之前写的不太一样,于是就发现了torchvision.datasets下的ImageFolder类可以轻而易举的返回想要的数据集。


2、图片数据

archive文件夹中包含了test_set和train_set,每一个训练和测试集下的cats和dogs文件夹里面都包含了几千张图片。


 

3、目的:获取自定义数据集中的数据(自定义类继承自Dataset)

以前我都是通过继承自torch.utils.data包下的Dataset类来自定义数据集

-->只获取测试集下猫的数据

这种方法虽然也能获取所有的训练和测试数据,但缺点就是代码多且复杂,什么事都得自己亲力亲为,因此不是一个好的选择。

4、目的:获取自定义数据集中的数据(使用ImageFolder)

可以直接使用一行命令就可以获取对应目录下的所有数据并自动分类

from torchvision.datasets import ImageFolder
root_path='./archive'
datasets = ImageFolder(root=root_path)

1、先查看一下数据集的数据(长度)

len(datasets)

10028

2、查看分类字典(datasets的属性class_to_idx)

datasets.class_to_idx

{'test_set': 0, 'train_set': 1}

3、查看全部数据(datasets的属性samples或者imgs)

返回结果是一个元组列表:

        第一个位置元素为图片数据(可以通过transform对图片数据进行相应的变换

        第二个位置为图片标签

貌似samples和imgs的效果一样?!

datasets.samples

[('./archive\\test_set\\cats\\cat.4001.jpg', 0),
 ('./archive\\test_set\\cats\\cat.4002.jpg', 0),
 ('./archive\\test_set\\cats\\cat.4003.jpg', 0),
 ('./archive\\test_set\\cats\\cat.4004.jpg', 0),
 ('./archive\\test_set\\cats\\cat.4005.jpg',0)]

5、ImageFolder类源码介绍(一个功能强大的可以返回数据集的类,对自定义数据集友好)

"""A generic data loader where the images are arranged in this way by default: ::

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

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

This class inherits from :class:`~torchvision.datasets.DatasetFolder` so
the same methods can be overridden to customize the dataset.

Args:
    root (string): 根路径
    transform (callable, optional):输入PILImage类的图片并通过transform类进行相应变换
    target_transform (callable, optional): A function/transform that takes in the
        target and transforms it.
    loader (callable, optional): A function to load an image given its path.
    is_valid_file (callable, optional): A function that takes path of an Image file
        and check if the file is a valid file (used to check of corrupt files)

 Attributes:
    classes (list): List of the class names sorted alphabetically.
    class_to_idx (dict): Dict with items (class_name, class_index).
    imgs (list): List of (image path, class_index) tuples
"""

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清橙2000

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值