При использовании Deeplab с пользовательским набором данных следует ли добавлять дескрипторы не только в segmentation_dataset.py файл?

#python #tensorflow #deep-learning

#python #тензорный поток #глубокое обучение

Вопрос:

В настоящее время я использую DeepLab для проекта сегментации, и мне интересно, почему в большинстве руководств упоминается только обновление одного скрипта, который называется segmentation_dataset.py с дескриптором разделения в отношении вашего собственного набора данных,

 _BLABLABLA = DatasetDescriptor(
    splits_to_sizes={
        'train': 5,
        'val': 3,
        'trainval': 8,
    },
    num_classes=3,  # 2 foreground   1 background
    ignore_label=255,
)
 

плюс имя для этого набора данных в разделе,

 _DATASETS_INFORMATION = {
    'cityscapes': _CITYSCAPES_INFORMATION,
    'pascal_voc_seg': _PASCAL_VOC_SEG_INFORMATION,
    'ade20k': _ADE20K_INFORMATION,
    'bla': _BLABLABLA,
}
 

Это все хорошо, но если вы углубитесь в код, вы (или я) поймете, что в train.py script, файл .py, который называется data_generator.py называется. При открытии он содержит список характеристик для каждого набора данных. Теперь самое смешное, что ни в одном руководстве по DeepLab не упоминается, что вы должны обновить этот скрипт .py (data_generator) с описанием вашего набора данных, как в segmentation_dataset.py .

Как это может быть? Имя набора данных, которое является флагом и, следовательно, train.py параметр, по умолчанию указывающий на набор данных pascal. Итак, если бы вы использовали свой собственный набор данных, как вы говорите train.py «Я хочу, чтобы вы обратили внимание на характеристики bla«, а не на паскаль?

P.S Некоторые сказали бы, что вам не нужно беспокоиться об этом, потому что все ваши данные записаны в ваших tfrecords. Но, тем не менее, неявное присвоение имени вашему набору данных должно иметь какие-то последствия, верно?