Использование набора данных SYNTHIA для сегментации экземпляра - PullRequest
0 голосов
/ 23 марта 2020

Я использовал набор данных SYNTHIA (подмножество RAND-CITYSCAPES) для сегментации c, используя первый канал изображения метки, как предложено в предыдущем посте:

Как читать метку ( аннотации) из набора данных Synthia? .

В файле набора данных README говорится, что второй канал выделен для сегментации экземпляра:

"GT / LABELS: папка, содержащая png файлы (по одному на изображение). Аннотации даны в двух каналах. Первый канал содержит класс этого пикселя (см. таблицу ниже). Второй канал содержит уникальный идентификатор экземпляра для тех объектов, которые являются динамическими c (автомобили, пешеходы и т. д. c.). "

Затем я пытаюсь прочитать карты сегментации экземпляра и semanti c, используя следующий код, который я написал:

def read_synthia_label(path):
    raw_label = np.asarray(imageio.imread(path, format='PNG-FI'))
    seg_label = Image.fromarray(np.uint8(raw_label[:,:,0]))
    inst_label = Image.fromarray(np.uint16(raw_label[:,:,1])) 
    return seg_label, inst_label

Однако, когда я проверял согласованность меток, я заметил, что метки сегментации для одной и той же метки экземпляра в одном и том же изображении не совпадают. Т.е. следующая ошибка assert throws:

with PathManager.open(instance_id_file, "rb") as f:
    inst_image = np.asarray(Image.open(f), order="F")

with PathManager.open(segmentation_file, "rb") as f:
    segm_image = np.asarray(Image.open(f), order="F")

flattened_inst_ids = np.unique(inst_image)

for instance_id in flattened_inst_ids:
    inds_for_same_inst = np.where(instance_id == inst_image.ravel())[0]
    assert(segm_image.ravel()[inds_for_same_inst[0]] == segm_image.ravel()[inds_for_same_inst[-1]]) # throws error   

Я неправильно читаю сегментацию экземпляра? Кто-нибудь когда-нибудь использовал SYNTHIA для сегментации экземпляров? Я не смог найти никакой документации по этому вопросу в Интернете, поэтому любая помощь будет признательна.

...