Uber에서 발표하였으며 2019 CVPR Oral Paper 중 하나인

'UPSNet: A Unified Panoptic Segmentation Network'에 대해서 리뷰하도록 하겠습니다.


Paper Link : [Link] / Github Link : [Github Link]




Abstract

- 이 논문에서는 새롭게 제안된 panoptic segmentation task를 위한 Unified Panoptic Segmentation Network (UPSNet)을 제안합니다. 우선 panoptic segmentation을 이해하기 위해 Kaiming He와 Ross Girshick가 저자인 Facebook의 'Panoptic Segmentation'을 간단하게 정리하도록 하겠습니다.


Panoptic Segmentation

 : Panoptic segmentation은 semantic segmentation (각 픽셀 별 레이블링)과 instance segmentation(물체를 인식하고 segment 하는 것)을 합친 것이라고 볼 수 있습니다. 즉, panoptic segmentation은 stuff와 thing의 구별도 포함하는 개념입니다. 



(d) Image : Panoptic segmentation (각 픽셀별 클래스 + 인스턴스 클래스)



 또한 'Panoptic Segmentation' 논문에서는 해당 task를 위한 metrics도 제안하고 있습니다. Panoptic segmentation을 이해하기 위해서는 논문에서 사용하는 stuff와 things의 개념을 이해할 필요가 있습니다. Instance segmentation이 구분하는 셀 수 있는 물체(countable objects)를 things라 하고 semantic segmentation을 통해 다룰 수 있는 무정형이며 셀 수 없는 영역(amorphous and uncountable regions)을 stuff라고 합니다. Semantic segmentation과 instance segmentation에서 사용되었던 기존의 metrics들은 stuff와 things 클래스를 동시에 고려하지 않기 때문에 panoptic segmentation에서는 사용할 수 없습니다. 해당 논문에서 제안하는 metrics를 이해를 돕기 위해 IoU (Intersection of Union)과 논문의 figure 중 하나를 살펴보도록 하겠습니다.




이미지 출처 : https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

 IoU는 object detection과 segmentation에서 주로 사용되는 metrics로 위의 그림과 같이 ground truth 영역과 prediction 영역의 교집합을 합집합으로 나눈 값입니다. 따라서 IoU는 0에서 1의 값을 가지며 두 개의 영역이 완벽하게 일치할 경우 1의 값을 가지게 됩니다.

 Papnotic segmentation에서는 특정 instance에 대한 ground truth와 prediction의 IoU가 0.5 이상일 경우를 True Positive (TP)로 설정하고 False Negative (FN)와 False Positive (FP)를 포함하여 총 3개의 경우로 구분했습니다. 이를 논문의 figure를 바탕으로 이해해보도록 하겠습니다.



 동그란 형태의 옅은 갈색의 person에 대한 IoU값이 0.5 이상이므로 TP의 쌍에 포함되어 있으며 길쭉한 주황색 person도 마찬가지 입니다. 이와 반대로 진한 갈색의 person은 예측하지 못했으므로 FN에 해당하고 분홍색의 dog의 경우, person으로 잘못 예측했으므로 FP에 해당합니다.




 위의 개념들을 바탕으로한 panoptic segmentation을 위한 PQ metrics는 위의 수식과 같습니다. 우선 PQ metrics는 각 클래스별로 독립적으로 계산된 다음에 평균을 내기 때문에 클래스 불균형(class imbalance)이 있는 경우에도 의미 있는 값을 가집니다.

 수식을 직관적으로 이해해보자면 분모의 FP와 FN와 관련된 항을 제외한 ∑ IoU / | TP | 의 경우 단순히 matched segments의 평균 IoU이고 분모에 더해준 | FP | / 2 + | FN | / 2 은 matching되지 않는 segments에 대해 페널티를 주는 역할을 합니다.




 또한 PQ metrics는 위와 같이 SQ (segmentation quality)와 RQ (recognition quality)로 쪼갤 수 있는데 위에서 언급했듯이 SQ의 경우 matched segments의 평균 IoU이고, RQ의 경우 흔히 사용되는 F1 score와 동일합니다. 따라서 PQ를 SQ X RQ로 분해하는 것을 통해 인사이트를 얻을 수 있습니다. (하지만 SQ가 오직 matched segments에 대해서만 계산되기 때문에 두 개의 값이 독립적인 것은 아닙니다.)



- 다시 본론으로 돌아와 UPSNet의 Abstract를 살펴보도록 하겠습니다. UPSNet은 다음과 같이 크게 3가지로 구분될 수 있습니다 : 'Semantic segmentation head (Deformable convolution)' + 'Instance segmentation head (Mask R-CNN)' + 'Panoptic Head (Parameter-free)'. 각 head에 관해서는 아래에서 더욱 자세히 다루도록 하겠습니다.





1. Introduction

- Semantic segmentation과 instance segmentation은 모두 이미지를 픽셀 단위에서 이해하는 것을 목표로합니다. 하지만, 두 가지 tasks의 이분법으로 인해 서로 관련성이 있음에도 불구하고 매우 다른 방법의 모델링으로 이끌었습니다. 예를 들어, semantic segmentation에는 주로 fully convolutional neural networks 형태의 모델이 사용되지만 instance segmentation에는 proposal based detectors가 흔히 사용됩니다.
 따라서 이 두 가지 tasks의 상보성을 고려하고 실생활에 적용가능한 segmentation system을 만들기 위해 두 가지를 합친 panoptic segmentation이 고안되었습니다. 특정 픽셀이 stuff에 속하는 경우에 panoptic segmentation의 목표는 단순히 해당 픽셀이 stuff 클래스 중에서 어떤 클래스에 속하는지를 예측하는 것입니다. 반면에 특정 픽셀이 어떤 thing 클래스에 속하는지 뿐만 아니라 어떤 인스턴스에 속하는지도 결정할 수 있어야 합니다.


- 논문에서 제안하는 Unified Panoptic Segmentation Network (UPSNet)은 위에서 언급한 panoptic segmentation을 위한 모델입니다. UPSNet은 shared representations을 제공하기 위해 하나의 네트워크를 백본으로 사용합니다. 그리고 semantic segmentation과 instance segmentation을 동시에  해결하기 위해 백본 네트워크 다음에 두 개의 heads를 설계했습니다. Semantic head는 deformable convolution으로 구성되어 있으며 feature pyramid networks (FPN)으로부터 얻어낸 multi-scale의 정보를 이용합니다. Instance head는 Mask R-CNN의 구조를 따르며 mask segmentation, bounding box 그리고 클래스 정보를 출력합니다. 그리고 가장 중요한 panoptic head는 최종 panoptic segmentation을 예측하는 역할을 합니다. 앞선 두 개의 heads의 logits에 extra unknown class에 해당하는 새로운 채널을 추가합니다. 이렇게 함으로써, semantic과 instance segmentation 사이에 발생하는 충돌(conflicts)을 해결할 수 있습니다. 또한 panoptic head는 parameter-free 하기 때문에 매우 가벼우며 (lightweight) 다양한 백본 네트워크에서 쉽게 사용할 수 있습니다. 그리고 해당 head를 통해 end-to-end로 학습을 할 수 있습니다.


- UPSNet의 성능을 확인하기 위해 Cityscapes, COCO 그리고 Cityscapes와 유사한 자체 데이터셋으로 테스트를 해보았고 그 결과 최고의 성능(state-of-the-art performances)를 달성했으며 inference 속도가 훨씬 빠르다는 결과를 얻었습니다.




2. Unified Panoptic Sementation Network

- 지금부터 모델과 implementation details에 대해서 설명하도록 하겠습니다. 우선, semantic class labels을 stuff와 thing으로 구분하였습니다. 구체적으로, thing은 보행자나 자전거와 같은 instances들의 label 집합이고 stuff는 도로나 하늘과 같이 정확한 instance boundary가 존재하지 않으며 semantics를 나타내는 나머지 labels을 의미합니다.



- 2.1 UPSNet Architecture

: UPSNet은 Introduction에서 언급했듯이 shared convolutional feature extraction backbone과 여러 개의 heads로 이루어져 있습니다. 모델 전체 구조는 아래와 같습니다.




Backbone : Backbone으로 Feature Pyramid Network (FPN)과 Resnet을 사용한 기존 Mask R-CNN의 backbone을 사용합니다.


Instance Segmentation Head : Bounding box regression, classification, segmentation mask를 출력하는 Mask R-CNN을 사용합니다. Instance head의 목표는 thing 클래스를 더욱 정확하게 식별할 수 있는 instance aware representations을 생성하는 것입니다. 궁극적으로 이러한 representations은 panoptic head로 전달되어 각 instance의 logits에 영향을 미칩니다.


Semantic Segmentation Head : 해당 head의 목표는 instance의 구별 없이 모든 semantic class를 segment하는 것입니다. 이를 바탕으로 instance segmentation의 정확도를 높여 thing 클래스에 대한 성능도 높일 수 있습니다. Semantic head는 FPN에서 얻은 multi-scale feature를 input으로 받는 deformable convolutution 기반의 sub-network로 구성되어 있습니다. 조금 더 구체적으로 정리하자면 multi-scale features maps을 각각 동일한 deformable convolution network에 통과시킨 후 upsampling을 하여 동일한 크기로 조정해준 후 이어 붙여(concatenate) 줍니다. 그 후 1 x 1 convolutions을 통해 최종 semantic class를 예측하게 됩니다. 그림으로 나타내면 아래와 같습니다.

 

또한 semantic head에서 보행자와 같은 전경(foreground) 물체를 더욱 강조하기 위해 RoI loss를 사용하였는데 이때 RoI loss를 사용한 것이 사용하지 않은 것보다 더욱 좋은 성능을 보였다고 합니다. RoI loss는 1x1 convolution 이후의 logits map을 ground truth bounding box로 cropping한 후 Mask R-CNN에 input 하기 위해 28 x 28로 resize 한 patch에 cross entropy를 계산한 것입니다.


Panoptic Segmentation Head : Semantic과 instance segmentation 결과를 바탕으로 panoptic segmentation head에서 두 개의 결과를 합치는 역할을 합니다. 



 논문에서 사용된 figure를 바탕으로 이해해보도록 하겠습니다. X는 semantic head에서 구한 logits이고 channel size는  + (각각 stuff와 thing 클래스의 수)입니다. X는 channel dimension을 따라서 와 으로 쪼개어질 수 있습니다. 학습 과정에서는 ground truth의 인스턴스 수에 의해서 가 결정되고 inference 과정에서는 mask pruning 과정을 통해 가 결정됩니다. (Mask pruning은 '2.2 Implementation Details'에서 설명하도록 하겠습니다.) Panoptic segmentation head의 목적은 우선 ( +) x H x W의 size를 갖는 logit tensor Z를 만든 다음에 각 픽셀마다 클래스와 인스턴스 ID를 결정하는 것입니다.


 우선 stuff를 분류하기 위한 logits으로 를 Z의 첫번째  channel에 부여합니다. 임의의 인스턴스에 대하여 instance segmentation에서 얻은 28 x 28 사이즈의 mask logits인 와 box 그리고 class ID 가 존재합니다. Inference 과정에서 와 는 Mask R-CNN의 결과를 통해 결정됩니다. 또한 semantic head에서 오직 box  내부에 해당하는 값들만 사용함으로써 인스턴스 i에 대한 또 다른 표현을 얻을 수 있습니다. 이 값들을 라 하고 bilinear interpolation과 box 외부 영역에 zero-padding을 가하여 를 와 동일한 크기로 맞추어준 것을 라 할 때, 인스턴스에 대한 최종 표현은 입니다. 모든 instance에 대한 값으로 Z를 채운 뒤에는 channel dimension을 축으로 softmax를 취하여 pixel-wise class를 예측합니다. 만약 이때 최댓값이 첫번째  channel에 해당한다면 해당 픽셀은 stuff 클래스 중 하나에 속하게 됩니다. 그렇지 않은 경우에는 최댓값은 인덱스가 instance ID에 해당합니다. 이후 panoptic segmentation head는 일반적인 pixel-wise cross entropy loss에 연결됩니다.


 또한 앞서 언급한 것과 같이 panoptic segmentation head는 semantic과 instance segmentation 사이에 발생하는 충돌을 해결해주는 역할을 합니다. Inference 과정에서, 특정 인스턴스의 ID를 위에서 언급한 방법과 같이 결정할 수도 있지만 Mask R-CNN에서 얻은 class ID 를 사용하거나 semantic head에서 얻은 을 사용할 수 있습니다. 이때, 와 가 동일할 경우, class ID로 를 사용합니다. 그렇지 않을 경우에는 의 최빈값 을 계산합니다. 이때 최빈값의 빈도가 0.5 이상이고이 stuff에 속하면 class ID로을 사용하고 그렇지 않으면 을 class ID로 사용합니다. 요약하자면, semantic head가 stuff class에 편향되는 결과를 보인다면 해당 head의 결과의 최빈값을 신뢰하겠다는 의미입니다. 또한 이러한 heuristic한 방법을 통해 stuff 클래스에 대해 더 좋은 segmentation 결과를 얻을 수 있었다고 합니다.




Unknown Prediction : 다시 한번 PQ metric를 살펴보도록 하겠습니다.



 식을 통해 알 수 있듯이 FN 혹은 FP 둘 중 어떤 것이라도 증가할 경우 성능이 떨어지게 됩니다. 이러한 현상은 또한 stuff classes에 대한 잘못된 예측으로 이어질 수 있습니다. 따라서 잘못된 예측이 불가피하다는 것을 가정할 때, 그런 픽셀을 unknown이라고 예측할 경우 특정 클래스의 FN를 1만큼 높이고 다른 클래스의 FP에는 영향을 미치지 않기 때문에 unknown으로 예측하는 경향이 있을 수 있습니다.


 이러한 문제를 해결하기 위해 논문에서는 extra unknown class의 logits을 으로 계산합니다. (이때 는 모든 masks 를 channel dimension을 축으로 concatenation한 것입니다.) 또한 max 함수는 channel dimension을 축으로 계산됩니다. 이러한 계산의 이론적인 해석은 특정 픽셀에 대해서 의 최댓값이 의 최댓값보다 클 경우에 특정 물체를 놓치고 있을 가능성(FN)이 크다는 것입니다. Unknown class에 대한 ground truth를 만들기 위해, 학습 과정에서 임의로 30%의 ground truth mask를 선정하여 해당 masks를 unknown으로 설정하였다고 합니다. 또한 metric 계산 과정에서는 unknown 클래스에 해당하는 픽셀은 계산되지 않습니다.


 ※ Figure 3에서 max 값끼리의 계산과 마지막 panoptic logits의 channel 중 1이 unknown class에 해당하는 부분입니다.





- 2.2 Implementation Details

: Batch size, batch normalization, loss term의 weights 등에 대한 나열은 생략하도록 하겠습니다. (궁금하신 분들은 논문을 참고해주세요.)


 이 부분에서는 위에서 언급했던 'mask pruning' 과정만 정리하도록 하겠습니다. Mask pruning이란 panoptic logits에 instance segmentation head에서 얻은 여러가지 mask 중에서 어떤 mask를 사용할지 결정하는 과정입니다. 우선, IoU threshold를 0.5로 설정하고 non-maximum suppression을 거칩니다. 이후 나머지 boxes에 대해 예측한 클래스에 대한 확률값을 정렬하고 확률값이 0.6 이상인 boxes만 남깁니다. 각 class에 대해 이미지와 동일한 사이즈의 canvas를 만들고 masks를 interpolate한 후 해당 canvas에 붙여넣어 줍니다. 확률을 기준으로 내림차순으로 mask를 paste하고 이전 mask과 paste하려는 mask의 IoU가 0.3 이하일 경우에만 겹치지 않는 영역에 해당 mask를 붙여넣어줍니다.





3. Experiments

- COCO, Cityscapes과 Uber 내부 데이터에 대한 결과는 아래와 같습니다.