데이터셋마다 다르지만, 적어도 SPADE model은 1 channel label을 이용하기 때문에 흑백 그대로 적용했습니다.
시각화할 때는 이쁘게 잘 나옵니다.
단, 정확한 라벨링을 위해 아래와 같은 요소를 확인해야 한다.
1. 1 channel
2. pixel이 정해진 class에 맞게 discrete하게 정해져있는지.
Code
def rectify_labelmap(labelmap, labels):
# RGBA to BInary
if len(labelmap.shape)>2:
labelmap=labelmap[:, :, 0]
# float to uint8
if (labelmap<=1).all():
labelmap=(labelmap*255).astype(np.uint8)
labels=np.array(labels)
# cliping pixel
for pixel in range(255):
close_label=labels[np.argmin(abs(labels-pixel))]
labelmap[labelmap==pixel] = close_label
return labelmap
겉보기엔 같아도 속이 다른 경우가 굉장히 많으니 조심하자.
raw image
basic label
그렇게 어려운 샘플은 아니라고 생각했는데..
modified labels