semantic segmentation
각 픽셀마다 어떤 카테고리에 속하는지 분류. instance segmentation과는 구분된다. 예를 들어, 차가 여러 대 있는 이미지에서 instance segmentation은 car1, car2 등으로 여러 대를 구분해서 인식하지만, semantic segmentation은 모두 car라는 하나의 카테고리로 구분한다.
의료 이미지, 자율 주행 등의 분야에 사용되고 있다.
segmentation architecture
fully convolutional neural network (FCN) 로 구성되어 있다. FCN을 사용하면 feature와 classifier를 개별적으로 학습시키지 않고 처음부터 끝까지 효율적으로 학습한다. 임의의 해상도를 가진 이미지를 input으로 넣으면 그 해상도에 해당하는 segmentation map을 output으로 반환한다.
** 주의! Fully-connected와는 다르다.
fully-connected layer는 정해진 차원의 feature를 flatten해서 최종적으로 하나의 분류 결과를 반환한다. (따라서 공간적인 정보가 무시됨)
이에 반해 fully-convolutional layer는 공간적인 정보를 유지하고 있는 feature map으로 작동한다.
다만 fully-convolutional layer의 단점은 output segmentation map이 해상도가 낮다는 것이다. 이는 upsampling layer를 적용함으로써 해결할 수 있다. 중간의 feature map들을 뽑아와서 각각 upsampling을 해서 해상도를 맞춘 후에 종합해서 최종 segmentation map을 만든다.
U-Net
segmentation 작업을 하는 architecture 중 하나. FC layer들로 구성되어 있고 낮은 layer의 feature와 높은 layer의 feature를 종합해서 사용한다.
contracting path와 expanding path가 U자 구조를 이루고 있다. contracting path에서는 레이어를 거치면서 작은 feature map이 도출되는 과정을 거치고 (→ feature encoding) expanding path에서 원본 이미지의 해상도를 출력하기 위해 단계적으로 upsampling을 적용한다. (→ decoding)
여기서 유의할 점은 contracting path와 expanding path에서의 비대칭성이다. contracting path에서는 downsampling을 하면서 7 7 → 3 3 의 featrue map이 형성된다. (홀수 입력에서는 남은 부분을 버리기 때문) 그러나 expanding path에서는 upsampling을 하면서 2배가 되면 3 3 → 6 6 의 output이 나오게 된다. 즉, input은 7 7 이었으나 output으로는 6 6 가 나오면서 공간 resolution이 불일치하게 되는 것이다. 따라서 이미지 사이즈는 2의 배수가 되도록 설정해줘야 한다.
instance segmentation
instance segmentation 모델의 예로는 mask R-CNN이 있다.
기존의 faster R-CNN (semantic segmentation)은 RoI pooling을 이용하고 box regressor와 classifier만 이용했다면,
mask R-CNN은 보다 더 개선된 RoIAlign을 이용하고 box regressor, classifier에 더해서 mask prediction head가 추가되었다.
instance segmentation의 더 확장된 모델로는 인간의 3D 움직임을 다루는 DensePose R-CNN, 3D mesh까지 예측하는 Mesh R-CNN 등이 있다.
Transformer-based models
MaskFormer는 transformer 모델이 segmentation task에 적용된 모델로, mask classification 하나로 semantic segmentation과 instance segmentation을 모두 달성하기 위한 것이다.
panoptic segmentation
semantic segmentation과 instance segmentation을 합친 것으로, object들에 대해 class를 구별하면서도 같은 class의 object들 사이에도 구분을 한 것을 의미한다.
panoptic segmentation의 예로는 Uni-DVPS가 있다.
Uni-DVPS (Unified Model for Depth-Aware Video Panoptic Segmentation)는 video에 대해 panoptic segmentation과 depth estimation을 한 번에 수행하는 모델이다.
Segment Anything Model (SAM)
SAM은 이미지에서 물체를 자동으로 인식하는 모델이다.
point, bounding box, rough mask, text로 된 description 등 (→ prompt)를 제공하면 이미지와 대조하여 주어진 prompt에 대응하는 mask를 예측한다.