이번 posting에서 다룰 논문은 Segmentation에 대해 3개의 논문을 다룰 것이다.
Segmentation의 경우 크게 3가지로 분류할 수 있는데, Semantic Segmentation, Instance Segmentation, Panoptic Segmentation이 그 3가지 이다.
- Semantic Segmentation
https://arxiv.org/abs/1411.4038
2. Instance Segmentation
https://arxiv.org/abs/1703.06870
3. Panoptic Segmentation
https://arxiv.org/abs/1801.00868
FCN [Fully Convolutional Network]
먼저 FCN에 대해 알아보자.
FCN은 semantic segmentation의 대표적인 논문이다. Semantic segmentation이란, semantic이라는 단어에서 유추할 수 있듯이 "의미" 단위로 segmentation을 하는 것이다.
예를 들어, 위의 그림을 보면, 세번째 그림에 있는 semantic segmentation의 경우 3마리의 고양이를 "고양이"라는 semantic 단위로 묶어서 하나로 보고 segmentation을 통해 고양이와 사람을 구분하는 것을 확인할 수 있다.
이 논문에서는 AlexNet이나 VGGNet, GoogLeNet과 같은 기존의 classification task를 위한 network를 semantic segmentation task로 가져오기 위해 3가지 기법을 적용했다.
Convolutionization
기존의 ConvNet의 경우 Convolutional layer들을 통과한 뒤, output을 vectorize하기 위해 dense layer를 통해 map이나 tensor를 flatten하는 작업으로 펴주기 때문에 결과 값이 어떤 확률 값으로 주어지게 되어 classification에는 매우 적합하다. 그러나 이 방법의 경우 translation invariant한 classification에는 적합하지만, location 정보도 중요한 segmentation에는 spatial information을 잃어버리므로 적합하지 않다는 단점이 존재한다.
따라서 이 문제를 해결하고자 이 논문에서는 fc layer를 벡터가 아닌 또 다른 convolution layer로 취급하여 spatial information을 보존하고자 하였다.
Deconvolution
두 번째 방법은 Deconvolution이다. Segmentation을 하기 위해서는 convolution layer들을 통과시키고 나온 prediction 결과 image의 크기가 원본과 동일해야 한다.
그러나 convolution layer들을 통과시키는 과정에서 각각의 layer들이 전부 원본 image와 동일한 크기라면, kernel을 sliding 해서 feature를 뽑아내는 CNN based model은 연산량이 굉장히 많아질 수 밖에 없다.
따라서 이 논문에서는 layer들의 크기를 전부 동일하게 하는 것이 아니라 Convolution 연산을 통해 feature를 뽑아낸 뒤 deconvolution 연산으로 다시 원본 이미지 크기와 동일하게 만들어주는 연산 방식을 사용하고 있다.
전체적인 과정을 보면 위의 그림과 같고, 아래 그림과 같이 heatmap이 찍힌다고 한다.
[출처 : Hyeonwoo Noh, Seunghoon Hong, Bohyung Han. 「Learning Deconvolution Network for Semantic Segmentation」, 2015]
Skip Architecture
ResNet을 통해 주목을 받은 skip architecture를 이 논문에서도 적용을 하고 있다.
Network의 경우 점점 깊어질 수록 semantic하고 global한 feature를 뽑아내고, 초반일 경우 local한 feature를 뽑아내는 경향이 존재한다.
하지만, 단일 architecture를 하게 되면 위의 FCN-32s 처럼 ground-truth와는 이질감이 있는 output이 나오게 된다. 따라서 이를 보완하고자 이 논문에서는 아래의 그림과 같이 단일 network에 skip architecture를 추가해서 FCN-32s보다 얕은 layer를 통해 detail한 feature를 뽑아내려고 하였다.
이러한 구조가 U-Net과 유사해서 실제로 backbone model을 U-Net을 이용하여 구현하시는 분들을 kaggle이나 github에서 쉽게 찾아볼 수 있다.
Conclusion
이 논문을 통해 Skip-architecture로 성능을 매우 증가시켰고, classification task를 semantic segmentation으로 갖고온 점, fc layer를 convolutionize해서 spatial information을 보존한 점을 높게 평가할 수 있을 것 같다.
Mask R-CNN
Mask R-CNN은 이전에 posting 했던 Faster R-CNN의 모델 구조를 가져와서 약간의 수정을 통해 instance segmentation으로 갖고 온 논문이다.
이를 위해 이 논문에서는 Faster R-CNN에 Mask branch를 추가한 architecture와 RoIAlign이라는 새로운 방식을 제안한다.
Mask Branch
먼저 architecture를 보면 Faster R-CNN의 구조에서 convolution layer들과 병렬적으로 class box에 대한 연산을 하는 mask branch가 존재하는 것을 확인할 수 있다.
RoIAlign
Faster R-CNN에서는 RoI pooling의 방식으로 다음 layer에 넘겨준다. 그러나 이 방법의 경우 pooling을 하는 과정에서 quantization에 의해 misalignment 문제가 생길 수 있다. 즉, 정확한 mask를 예측하는 것이 어려워진다.
따라서 이 논문에서는 RoI pooling 대신 bilinear interpolation을 이용한 RoIAlign이라는 방법을 이용해 misalignment 문제를 해결하고 정확한 mask를 예측할 수 있도록 하였다.
Architecture
전체적인 구조를 보면 위의 그림과 같다.
먼저 backbone network를 통과해서 feature map을 뽑아낸 뒤 동시에 RPN [Region Proposal Network]에 의해 region proposal들이 제안되면 RoIAlign를 거쳐서 Mask prediction과 coordinate, category prediction이 병렬적으로 이뤄지게 된다.
Utilization
Mask R-CNN의 경우 Pose estimation에도 활용이 될 수 있다고 한다.
Pose Estimation의 경우 다음 논문 review posting에서 자세히 다룰 예정이다.
Panoptic Segmentation
지금까지 다뤘던 semantic segmentation과 instance segmentation의 경우 위의 그림에서 [b], [c]와 같이 background, foreground를 구분하거나 눈에 보이는 셀 수 있는 instance들만 구분하는 경향을 보인다.
Panoptic segmentation의 경우는 semantic segmentation과 instance segmentation을 합친 segmentation 방식을 의미한다.
이 논문에서는 panoptic segmentation의 성능을 측정하는데 기존의 방식이 적합하지 않다고 봐서 Panoptic Quality라는 새로운 metric을 제시한다.
먼저 Segment Matching에 대해 설명을 하면, 흔히 알고 있는 IoU를 구하는 식인데, 두 instance p1과 p2가 겹치지 않기 때문에 이 둘의 확률을 합치면 1보다 작거나 같을 수 밖에 없으므로 threshold를 0.5로 설정하게 되면 둘 중 하나가 threshold보다 크다면 나머지 하나는 합쳐서 1보다 작거나 같기 위해서는 threshold보다 작을 수 밖에 없다 라는 의미를 담고 있다. 이를 통해 하나의 instance에 segment matching을 1개만 할 수 있게 된다.
그리고 두 번째로 PQ는 이 논문에서 새롭게 제안한 metric이다. True Positive들 중에 TP에 해당하는 p,g의 pair의 IoU의 합의 비율 값으로 구한다. 이 식의 경우 SQ [Segmentation Quality]와 RQ [Reconstruction Quality]로 분해할 수 있다.
여기까지가 Segmentation에 대한 설명이다.
Dataset이나 Output image의 경우 논문을 보면 쉽게 확인할 수 있기 때문에 생략했고, segmentation을 하기 위해 추가하거나 변형한 내용, metrics 위주로 설명을 했다. 그렇기 때문에 설명이 빈약해 보일 수 있지만, segmentation에 대한 전반적인 내용을 이해하기엔 무리가 없을 것이라고 생각한다.
다음 Posting에서는 Transformer를 base model로 하는 여러 논문들 [DETR, Segmenter, ViT]에 대해 다룰 예정입니다.
이번 posting에 대한 내용이 궁금하신 분들은 제 github에 발표자료 올려놓았으니까 참고하시면 도움이 될 것 같습니다.
감사합니다
'Paper Review' 카테고리의 다른 글
[논문] Emerging Properties in Self-Supervised Vision Transformers [a.k.a DINO] (2) | 2024.09.13 |
---|---|
[논문] Human Pose Estimation (2) | 2024.09.11 |
[논문] Transformer in Computer Vision (5) | 2024.09.11 |
[논문] Drone Object Detection Using RGB/IR Fusion (0) | 2024.09.10 |
[논문] Masked Autoencoders Are Scalable Vision Learners (2) | 2024.09.10 |