VOCBboxDataset возвращает неправильный размер набора данных при применении к моему набору данных - PullRequest
0 голосов
/ 03 марта 2019

У меня есть 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 в качестве val и 10 в качестве тестовых изображений.Но при печати длины поезда, val и набора тестовых данных я всегда получаю поезд + 12, поезд + 3 и тест.Например, в этом случае он будет отображаться как 182,73,10 для поезда, val и test.Значение теста не изменяется.Каждый раз значение поезда и 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))

Количество изображений в наборе данных "train": 182 Количество изображений в наборе "valid" данных: 73 Количество изображений в наборе "test" данных:10

Почему это происходит и как это предотвратить.И также как-то это влияет на мой тренировочный процесс?

train.txt link (https://imgur.com/B1Gszfi) val.txt link (https://imgur.com/kOcIZ5h)

1 Ответ

0 голосов
/ 06 марта 2019

Проблема была связана с небольшой ситуацией, когда текстовые файлы имели пропуски, поскольку список изображений вырезался, копировался и вставлялся в один и тот же файл.Текстовые файлы были созданы в блокноте.В блокноте индекс не виден, но пропуски видны, когда вы просматриваете текстовые файлы в github, где первоначальное индексирование все еще присутствует, и индексирование остается, даже если размер списка был сокращен.Например, сначала был создан список из 182 изображений, но позже он урезан до 170. Поэтому, когда мы используем объект «Создание набора данных», код читает все строки текстового файла, т.е. он будет читать 182 вместо 170. Нам нужно убедиться, чтономер индекса и номер изображения одинаковы, чтобы избежать этой проблемы.

...