Каким должно быть изображение с пометкой для семантической сегментации?

Как я понимаю из приведенного ниже объяснения, будут два типа изображений для семантической сегментации, которые являются входными данными и масками. Изображения маски - это изображения, которые содержат метку в пикселях, которая может быть целым числом (0 для ДОРОГИ, 1 для ДЕРЕВА или (100,100,100) для ДОРОГИ (0,255,0) для ДЕРЕВА).

Семантическая сегментация описывает процесс связывания каждого пикселя изображения с меткой класса (например, цветок, человек, дорога, небо, океан или машина). https://se.mathworks.com/help/vision/ug/semantic-segmentation-basics.html

Согласно моему исследованию, существует множество типов помеченных изображений для семантической сегментации. Наряду с различными расширениями (.png .jpg .gif .bmp ...), некоторые из них являются изображениями с меткой RGB (3-канальный), а некоторые - СЕРЫМ (1-канальным) изображения. Ниже приведены два примера, которые лучше поясняют эту ситуацию.

  1. # P4 #
    # P5 #
  2. # P6 #
    # P7 #

Если мое изображение помечено как шкала СЕРЫЙ, я в основном делаю его RGB, копируя каждое значение этого канала СЕРЫЙ для 3 каналов RGB. Напротив, усредняя каналы RGB, я могу сделать помеченное изображение как СЕРЫЙ масштаб. В чем разница? Какой из них больше подходит для какой задачи (бинарная сегментация или что-то еще)?

В моем случае у меня 4 класса, и я пытаюсь выполнить мультиклассовую семантическую сегментацию. Я уже пометил около 600 изображений в DataTurks. Это означает, что у меня есть только полигоны объекта, и я должен создать свое помеченное изображение самостоятельно. На данный момент мои входные изображения и изображения маски имеют расширение «.jpg» и «.png» соответственно. Как мне пометить свои изображения вместе с каким расширением?


person saki    schedule 02.03.2019    source источник


Ответы (1)


Вы можете сохранить маску как полутоновые изображения png со значениями 0,1,2,3 (поскольку у вас есть 4 класса) в каждом месте, соответствующем классу (дерево, куст и т. Д.) Значений пикселей во входных данных. изображений.

Сделав это, вы можете убедиться, что изображение маски сгенерировано правильно.

import cv2
import numpy as np
lbl_img = '<path_to_mask_image>'
mask = cv2.imread(lbl_img, 0)
print(np.unique(mask))

[0 1 2 3] # это будет зависеть от количества классов, присутствующих в изображении маски

person Manoj Mohan    schedule 02.03.2019