首页 > 解决方案 > pytorch dataset.imagefolder的loader选项的作用是什么?

问题描述

装载机选项

PyTorch dataset.imagefolder 的 loader 选项的作用是什么?

实际上,现在我在一个文件夹中有 10,000 张图像,但我只想使用 100 张图像。现在我按索引加载所有图像和子集数据集。

from torch.utils.data import Subset
a = dset.ImageFolder(root=path_F,transform=transform)
index = list(range(0,100))
b = Subset(a,index)

loader 选项可以使我的代码简单吗?

标签: pythonpytorch

解决方案


loader负责加载给定路径的图像。默认情况下 PyTorch 使用pillow它的Image.open(path)功能,请参阅docs

您可以像这样指定自定义加载(按45度加载和旋转):

import torchvision
from PIL import Image


def loader(path):
    return Image.open(path).rotate(45)


dataset = torchvision.datasets.ImageFolder("images", loader=loader)

所以不,你不应该用它来选择图像。

原则上,您可以使用is_valid_file参数来这样做:

class Chooser:
    def __init__(self):
        self._counter = -1

    def __call__(self, path):
        self._counter += 1
        return self._counter < 100


dataset = torchvision.datasets.ImageFolder("images", is_valid_file=Chooser())

我强烈反对这种方法,因为意图不是很清楚,它会通过整个数据集检查每个图像。你现在的路就是要走的路


推荐阅读