我有一个 250 个图像数据集和 250 个带有两个类的注释文件:球和球员。该文件夹还包含三个文本文件 train.txt、val.txt、test.txt,分别包含训练、测试和验证图像列表。
bball_labels = ('ball','player')
class BBall_dataset(VOCBboxDataset):
def _get_annotations(self, i):
id_ = self.ids[i]
anno = ET.parse(os.path.join(self.data_dir, 'Annotations', id_ +
'.xml'))
bbox = []
label = []
difficult = []
for obj in anno.findall('object'):
bndbox_anno = obj.find('bndbox')
bbox.append([int(bndbox_anno.find(tag).text) - 1 for tag in ('ymin',
'xmin', 'ymax', 'xmax')])
name = obj.find('name').text.lower().strip()
label.append(bball_labels.index(name))
bbox = np.stack(bbox).astype(np.float32)
label = np.stack(label).astype(np.int32)
difficult = np.array(difficult, dtype=np.bool)
return bbox, label, difficult
在 250 个中,我将 170 个作为训练,70 个作为验证,10 个作为测试图像。但是在打印 train、val 和 test 数据集的长度时,我总是得到 train+12, train+3 nad test。例如,在这种情况下,对于 train、val 和 test,它将显示为 182、73、10。测试值不变。每次 train 和 val 值都会增加 12 和 3。
valid_dataset = BBall_dataset('BasketballDataset', 'val')
test_dataset = BBall_dataset('BasketballDataset', 'test')
train_dataset = BBall_dataset('BasketballDataset', 'train')
print('Number of images in "train" dataset:', len(train_dataset))
print('Number of images in "valid" dataset:', len(valid_dataset))
print('Number of images in "test" dataset:', len(test_dataset))
“训练”数据集中的图像数量:182 “有效”数据集中的图像数量:73 “测试”数据集中的图像数量:10
为什么会发生这种情况以及如何防止这种情况发生。而且它是否会以某种方式影响我的培训过程?
train.txt 链接 ( https://imgur.com/B1Gszfi ) val.txt 链接 ( https://imgur.com/kOcIZ5h )