Instance segmentation과 Semantic segmentation의 특징
오늘 공부할 내용은 CVPR 2020에 출판된 panoptic-DeepLab을 이용한 전체론적인 장면 이해 개선 방법(Improving Holistic Scene Understanding with Panoptic-DeepLab)입니다. 자율 주행 자동차나 로봇 등의 서비스에서 instance segmentation이나 semantic segmentation 태스크를 하기 위해 컴퓨터 비전 기술이 쓰입니다. Instance segmentation은 개별의 사물을 인식하고 식별자를 부여하는 태스크이고 Semantic segmentation은 이미지에 있는 주변 배경 등을 포함하여 모든 픽셀을 레이블하는 것입니다. 하지만 이는 같은 클래스에 속하는 다른 인스턴스들의 픽셀들을 구분하지 못합니다. 즉, 의자라는 물체를 segmentation한다는 것입니다. 하지만 이게 A 의자인지 B의자인지는 구분을 하지 않습니다. Panoptic segmentation은 이 두 가지 방법을 합쳐서 각 픽셀에 의미적인 레이블과 인스턴스 ID를 기반으로 인코딩된 단일한 값을 부여하는 것을 목표로 합니다.
기존의 segmentation 방법의 한계
기존 연구는 Mask R-CNN을 기반으로하는데 instance segmentation과 semantic segmentation을 따로 진행합니다. Instance segmentation에서는 인스턴스들끼리 겹치는 경우가 생기는데, 이를 해결하기 위해 더 좋은 신뢰도의 마스크를 따른다던가 미리 정의된 카테고리 간의 관계를 기반으로 결정하는 등 휴리스틱한 방법을 씁니다. 또한, Semantic segmentation과 instance segmentation 간에 결과가 다를 수도 있다는 문제점과 실시간 애플리케이션에 적용하기에는 처리 속도가 따라가지 않는다는 문제점이 여전히 존재합니다. 따라서 이런 실시간성 panoptic segmentation에 필요해졌습니다.
Panoptic segmentation 방법 고안
본 연구에서는 DeepLab이라는 보편적으로 쓰이는 의미적 segmentation 방법에 적은 수의 파라미터와 미미한 계산 오버 헤드만을 추가하여 panoptic segmentation을 할 수 있는 방법을 고안했습니다. 제안된 기법에서는 추가되는 방법 없이 semantic과 instance segmentation이 오버랩되지 않게 동시에 처리 가능하고, semantic과 instance segmentation의 결과를 합치는 효율적인 operation을 만들어서 실시간으로 enc-to-end panoptic semgentation이 가능하도록 합니다. 본 기법에서는 바운딩 박스를 만들어 내지 않을 뿐 아니라 세 가지의 loss function만을 요하여 이전 기법에 비해 뛰어난 성능을 보입니다.
제안하는 Panoptic-DeepLab은 다음과 같은 세 가지 출력을 통해 물체를 인지합니다.
①-1. Semantic segmentation을 이용해 semantic 클래스 구합니다. 그러나 만약 같은 종류의 사물이 겹쳐져 있다면 각 사물 인스턴스에 대해서는 구분해주지 않습니다.
①-2. 이를 해결하기 위해 각 인스턴스의 중심점을 예측하면서 인스턴스 중심 regression을 통해 연관되는 인스턴스 픽셀들을 추출합니다.
②. ①-2의 regression된 임의의 한 인스턴스 픽셀들과 예측된 중심점을 그룹핑하여 instance segmentation이 진행됩니다.
③. ①-1 의 semantic segmentation에서 나온 결과와 ②에서 최종적으로 나오는 instance segmentation을 합쳐서 대다수 동의 기반으로 마지막 panoptic segmentation 결과를 도출해냅니다.
제안된 스킴 NN 디자인은 4가지 컴포넌트로 구성됩니다.
1. 인코더 backbone은 ImageNet에서 미리 학습합니다. Semantic segmentation과 instance segmentation에 모두 적용합니다. ImageNet을 선학습시킨 후에 feature map을 도출하고 각 segmentation 브랜치에 공유합니다. Feature map은 기본 Convolution을 기반으로 생성하면 결과가 해상도가 떨어지고 거칠어지기 때문에 대신 atrous convolution 을 쓰게 됩니다.
2. 다양한 공간 스케일에서 정보를 얻을 수 있게 segmentation을 진행하기 위해 ASPP 모듈들을 각 브랜치에 독립적으로 배치합니다.
3. 각 segmentation 태스크 별로 특화된 디코더 모듈을 적용합니다. 디코더는 DeepLab을 기반으로 두 가지를 수정하여 적용합니다. 추가적인 Low-레벨의 feature map을 디코더에 적용하여 공간적인 정보를 유지하여(물체의 경계선 같은) 결과 feature map의 성능이 많이 떨어지지 않도록 합니다. 5 × 5 depthwise-separable convolution를 디코더에 적용하여 더 나은 성능 결과가 나오도록 합니다.
4. 태스크별로 특화된 예측 헤드 배치를 합니다. Semantic segmentation은 작은 스케일의 물체의 segmentation에 더 효과적인 각 픽셀별로 웨이트를 다르게 주는 standard bootstrapped cross entropy loss function 적용합니다. Instance segmentation은 사전 지식 없이 물체 인스턴스의 중심과 주변 픽셀 사이의 오프셋(편차)을 예측하도록 학습됩니다.
panoptic segmentation의 성능 결과에서 생각할 점
세 가지 데이터셋을 통해서 실험하고, semantic, instance, panoptic segmentation 모두에서 좋은 결과를 얻었습니다. 결론적으로, 바운드박스 없는 panoptic segmentation에서 새로운 state-of-the-art가 되었습니다. Semantic segmentation과 instance segmentation이 개념적으로 보면 굉장히 비슷해서 그냥 하나에 approach로 바로 할 수 있을 것 같은데 안 되는 이유는 무엇일지 좀 더 생각해 봐야 되겠습니다. 또한, 실시간성에 강하다고 했는데, 실제로 자율 주행하는 차의 데이터를 기반으로 해보면 어떤 결과가 나올지도 궁금해졌습니다.