如何将图像和注释拆分为对象检测任务的训练集、测试集和验证集



我知道存在类似的线程,但我一直未能找到合适的答案。

我已经看到了基于某些类存储图像的解决方案,但这不是我想要的。我想知道如何将图像数据集正确地拆分为训练集、测试集和验证集,其中每个图像都有相应的注释(标记(文件。

图像及其各自的注释(pascal voc/yolo darmet格式(存在于相同和不同的目录中,这取决于拆分的方便性。

提前谢谢。

编辑:

我认为这可能是最快的解决方案:稍后也可以应用于获得验证。

train_size = int(0.8 * len(full_dataset))
test_size = len(full_dataset) - train_size
train_dataset, test_dataset = torch.utils.data.random_split(full_dataset, [train_size, test_size])

或者说:

train, val, test = torch.utils.data.random_split(dataset, [1000, 100, 100]) 

假设总共有1200个图像。

从sklearn导入train_testrongplit作为

from sklearn.model_selection import train_test_split

你可以使用

X_train_confirmed, X_test_confirmed, y_train_confirmed, y_test_confirmed = train_test_split(x, y, test_size=0.3, shuffle=False)

0.3意味着30%的数据将进行测试,70%将进行列车数据

如果希望在之后以相等的目标使用百分比分割数据

train_dataset, val_set = train_test_split(data, test_size=0.3, stratify=data.targets)

这里stratify=data.targets意味着它将在考虑目标的情况下平分数据,即每个目标的相等部分

我也遇到过类似的问题,我可以向你保证

http://scikit.ml/stratification.html哪个是

from skmultilearn.model_selection import iterative_train_test_split

为我在目标检测任务中实现了无偏且良好的每类比例分割。

我会写一篇媒介文章,并在此基础上继续链接。

最新更新