이미지 데이터를 활용한 딥러닝 모델 중 가장 많이 사용되는 것들 중 하나인 Semantic Segmentation에 대해 간단히 살펴봅니다.
이미지 내의 객체들을 의미적으로 분할하는 것으로서 아래와 같이 각 객체를 픽셀단위로 어떤 클래스에 속하는지 분류합니다. 아래는 CityScapes 데이터셋을 DeepLab V3 모델로 분류한 영상입니다.
이 모델을 위한 정답데이터는 각 픽셀 마다 어느 클래스에 속하는지에 대해 라벨링이 되어 있어야 합니다. 따라서 하나의 픽셀이 두가지 클래스에 속하는 것은 정의될 수 없습니다. 아래와 같은 그림으로 간략히 표현할 수 있습니다.
분류하는 방식에 따라 여러 종류의 Segmantation이 존재합니다.
아래 그림의 첫번째 사진은 제트기 두 대가 촬영된 이미지 데이터입니다. 두번째 그림은 단순히 의미론적인 분류만을 수행하여 특정 픽셀영역이 제트기냐 아니냐만을 분류하므로 제트기가 몇 대인지는 알 수 없습니다. 세번째 그림은 픽셀영역이 제트기로 분류되면서 객체단위로도 분류하고 있는 것을 확인할 수 있습니다. 따라서 제트기의 수까지도 파악할 수 있습니다. 이것을 Semantic Instance Segmentation이라고 합니다. 가장 우측의 그림은 보시는 것처럼 제트기를 분류해낸 후 각 부이가 어떤 것인지까지 분류해내고 있습니다. 이를 Semantic Parts Segmentation으로 부릅니다.
풍부한 객체 정보
굉장히 세분화된 객체정보를 담고 있습니다. 픽셀단위로 어떤 클래스에 속하는지를 나타내야 하기 때문에 annotation data의 크기가 큰 편입니다.
연산량이 많음
픽셀단위로 라벨이 되어 있어 annotation data의 크기가 크고 이에 따라 추론해야 하는 피쳐맵도 크므로 연산량이 많습니다.
Ground Truth를 만드는데 많은 작업이 소요
픽셀마다 클래스가 부여되어야 하므로 annotation data를 만드는데 많은 작업이 소요될 수 있습니다.