Python,类数据集,如何在pytorch中将图像与其各自的标签连接起来

米歇尔比

我是PyTorch的新手,在最近的几天里,我一直在努力使用Dataset类来构建自定义数据集。

我正在使用此数据集(https://www.kaggle.com/ianmoone0617/flower-goggle-tpu-classification/kernels),问题是它的图像及其标签位于单独的文件夹中,我无法弄清楚如何串联它们。

这是我正在使用的代码:

class MyDataset(Dataset):

    def __init__(self, csv_file, root_dir, transform=None):
        self.labels = pd.read_csv(csv_file)
        self.root_dir = root_dir
        self.transform = transform

    def __len__(self):
        return len(self.labels)

    def __getitem__(self, index):
        if torch.is_tensor(index):
            index = index.tolist()

        image_name = os.path.join(self.root_dir, self.labels.iloc[index, 0])
        image = io.imread(image_name)

        if self.transform:
            image = self.transform(image)

        return (image, labels)

文件夹的结构如下所示: 文件夹的结构]

我真的很想了解这一点,所以在此先谢谢大家!!

乔达格

好像您快到了。有很多方法可以解决这个问题。例如,您可以在初始化期间读取两个csv文件以构建字典,该字典将中的标签字符串映射flowers_idx.csv到中指定的标签索引flowers_label.csv

import os
import pandas as pd
import torch
from torchvision.datasets.folder import default_loader
from torch.utils.data import Dataset

class MyDataset(Dataset):
    def __init__(self, data_csv, label_csv, root_dir, transform=None):
        self.data_entries = pd.read_csv(data_csv)
        self.root_dir = root_dir
        self.transform = transform

        label_map = pd.read_csv(label_csv)
        self.label_str_to_idx = {label_str: label_idx for label_idx, label_str in label_map.iloc}

    def __len__(self):
        return len(self.labels)

    def __getitem__(self, index):
        if torch.is_tensor(index):
            index = index.item()

        label = self.label_str_to_idx[self.data_entries.iloc[index, 1]] 
        image_path = os.path.join(self.root_dir, f'{self.data_entries.iloc[index, 0]}.jpeg')

        # torchvision datasets generally return PIL image rather than numpy ndarray
        image = default_loader(image_path)

        # alternative to load ndarray using skimage.io
        # image = io.imread(image_path)

        if self.transform:
            image = self.transform(image)

        return (image, label)

请注意,这将返回PIL图像而不是ndarray,因为通常是Torchvision数据集返回的图像。这也很好,因为许多Torchvision转换只能被提取为PIL图像。

现在,一个简单的用例可能是:

import torchvision.transforms as tt

dataset_dir = '/home/jodag/datasets/527293_966816_bundle_archive'
# TODO add more transforms/data-augmentation etc...
transform = tt.Compose((
    tt.ToTensor(),
))

dataset = MyDataset(
    os.path.join(dataset_dir, 'flowers_idx.csv'),
    os.path.join(dataset_dir, 'flowers_label.csv'),
    os.path.join(dataset_dir, 'flower_tpu/flower_tpu/flowers_google/flowers_google'),
    transform)

image, label = dataset[0]

在训练或验证期间,您可能会使用DataLoader来采样数据集。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么IntelliJ IDEA无法在Maven项目中将Oracle数据库与Java代码连接起来?

来自分类Dev

如何将SQL Server Management Studio中创建的数据库与Visual Studio连接起来?

来自分类Dev

如何在where子句中将具有动态结果的两行或更多行连接起来?

来自分类Dev

如何在Spring中自动将带有注释的第三方类连接起来?

来自分类Dev

如何在Keras中将嵌入与可变长度输入连接起来?

来自分类Dev

Python数据框将列连接起来并输出到嵌套行

来自分类Dev

如何在多对多关系中查找列中的所有相同值,并将表与其他三个表连接起来?

来自分类Dev

如何在Raku-lang中将两个矩阵连接起来?

来自分类Dev

如何在C ++中将字符串与char连接起来?

来自分类Dev

如何在python中将具有相同列值的行连接起来?

来自分类Dev

VBA:如何将其连接起来

来自分类Dev

使用精确匹配和模糊匹配将R中的两个大型数据集连接起来

来自分类Dev

Excel:如何在一个单元格中将由unique()产生的列表与后面的其他文本连接起来

来自分类Dev

如何将基本表与其特定角色变化表连接起来?

来自分类Dev

如何将odoo与体式连接起来?

来自分类Dev

如何在Ubuntu 16.04中将ICU库与gcc连接起来?

来自分类Dev

如何在 PureScript 中将多个协程消费者与单个生产者连接起来?

来自分类Dev

Qlikview:如何将 ODBC 加载的数据与 excel 加载的数据连接起来?

来自分类Dev

如何将codeigniter中的两个表与jquery数据表连接起来

来自分类Dev

如何将数据框的行名称与特殊字符连接起来?

来自分类Dev

如何计算图像中每个块的直方图,然后将它们连接起来?

来自分类Dev

将列名与其他表中的值连接起来

来自分类Dev

Oracle - 如何将表与 JSON 数据连接起来?

来自分类Dev

如何将硬编码文本与标签中的绑定文本连接起来?

来自分类Dev

Azure:如何最好地将 SQL 数据库与 MySQL/Webservice 连接起来

来自分类Dev

如何在python中将小时与日期连接起来

来自分类Dev

在 Pug 中将变量与 Id 标签连接起来

来自分类Dev

将 Java 与 Python Flask 连接起来

来自分类Dev

如何在 Spring Boot 运行时将数据库与存储在主数据库中的配置连接起来?

Related 相关文章

  1. 1

    为什么IntelliJ IDEA无法在Maven项目中将Oracle数据库与Java代码连接起来?

  2. 2

    如何将SQL Server Management Studio中创建的数据库与Visual Studio连接起来?

  3. 3

    如何在where子句中将具有动态结果的两行或更多行连接起来?

  4. 4

    如何在Spring中自动将带有注释的第三方类连接起来?

  5. 5

    如何在Keras中将嵌入与可变长度输入连接起来?

  6. 6

    Python数据框将列连接起来并输出到嵌套行

  7. 7

    如何在多对多关系中查找列中的所有相同值,并将表与其他三个表连接起来?

  8. 8

    如何在Raku-lang中将两个矩阵连接起来?

  9. 9

    如何在C ++中将字符串与char连接起来?

  10. 10

    如何在python中将具有相同列值的行连接起来?

  11. 11

    VBA:如何将其连接起来

  12. 12

    使用精确匹配和模糊匹配将R中的两个大型数据集连接起来

  13. 13

    Excel:如何在一个单元格中将由unique()产生的列表与后面的其他文本连接起来

  14. 14

    如何将基本表与其特定角色变化表连接起来?

  15. 15

    如何将odoo与体式连接起来?

  16. 16

    如何在Ubuntu 16.04中将ICU库与gcc连接起来?

  17. 17

    如何在 PureScript 中将多个协程消费者与单个生产者连接起来?

  18. 18

    Qlikview:如何将 ODBC 加载的数据与 excel 加载的数据连接起来?

  19. 19

    如何将codeigniter中的两个表与jquery数据表连接起来

  20. 20

    如何将数据框的行名称与特殊字符连接起来?

  21. 21

    如何计算图像中每个块的直方图,然后将它们连接起来?

  22. 22

    将列名与其他表中的值连接起来

  23. 23

    Oracle - 如何将表与 JSON 数据连接起来?

  24. 24

    如何将硬编码文本与标签中的绑定文本连接起来?

  25. 25

    Azure:如何最好地将 SQL 数据库与 MySQL/Webservice 连接起来

  26. 26

    如何在python中将小时与日期连接起来

  27. 27

    在 Pug 中将变量与 Id 标签连接起来

  28. 28

    将 Java 与 Python Flask 连接起来

  29. 29

    如何在 Spring Boot 运行时将数据库与存储在主数据库中的配置连接起来?

热门标签

归档