为嵌套在多个文件夹中的数据创建训练、测试拆分

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

我正在准备数据来训练图像识别模型。我目前有一个文件夹(数据集),其中包含多个带有标签名称的文件夹,这些文件夹中包含图像。

我想以某种方式分割这个数据集,以便我有两个具有相同子文件夹的主文件夹,但这些文件夹内的图像数量根据首选的训练/测试分割,例如训练中 90% 的图像数据集和测试数据集中的 10%。

我正在努力寻找分割数据的最佳方法。我读过一个建议,认为 pytorch torch.utils.Dataset 类可能是一种方法,但我似乎无法让它工作以保留文件夹层次结构。

python machine-learning pytorch
2个回答
0
投票

如果您有这样的文件夹结构:

folder
│     
│
└───class1
│   │   file011
│   │   file012
│   
└───class2
    │   file021
    │   file022

您可以简单地使用类

torchvision.datasets.ImageFolder

正如pytorch

网站所述

通用数据加载器,其中图像按以下方式排列:

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

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

然后,在创建 ImageFolder 实例后,例如这样

dataset = torchvision.datasets.Imagefolder(YOUR_PATH, ...)

你可以这样分割它:

test_size = 0.1 * len(dataset)
test_set = torch.utils.data.Subset(dataset, range(test_size))  # take 10% for test
train_set = torch.utils.data.Subset(dataset, range(test_size, len(dataset)) # the last part for train

如果您想对分割进行随机播放,请记住类子集使用分割的索引。所以你可以洗牌,然后分开它们。做这样的事情

indexes = shuffle(range(len(dataset)))
indexes_train = indexes[:int(len(dataset)*0.9)]
indexes_test = = indexes[int(len(dataset)*0.9):]

0
投票

我在这里发现了一个教物体识别训练的网站,你可以参考一下 Hướng dẫn chi tiết cách huấn luyện dữ liệu tùy chỉnh với YOLO5

还有更多 Ứng dụng mạng SSD300 vào nhận diện đối tượng

© www.soinside.com 2019 - 2024. All rights reserved.