논문 읽기/Segmentation

[논문 읽기] Panoptic Segmentation with a Joint Semantic and Instance Segmentation Network(2018)

AI 꿈나무 2021. 9. 26. 23:11
반응형

Panoptic Segmentation with a Joint Semantic and Instance Segmentation Network

 PDFPanoptic Segmentation, Daan de Geus, Panagiotis Meletis, arXiv 2018

 

Summary

 해당 논문은 Panoptic Segmentation task를 위한 모델입니다.

 

 Instance network와 Semantic network를 joint 학습시켜서 결과값을 heuristics하게 병합합니다.

 

 

 ResNet-50으로 특징을 추출한뒤에 추출된 특징은 semantic, instance branch로 전달됩니다.

 

(1) Semantic branch

 semantic segmentation branch는 Pyramid Pooling Module을 적용하여 multi-scale로 특징을 추출하고 input image 크기로 upsample 합니다.  upsample에는 deconvolution을 적용하고 bilinear resize를 사용합니다. 이 출력값은 image의 모든 pixel에 class를 예측합니다.

 

(2) instance branch

 instance segmentation branch는 Mask R=CNN을 기반으로 합니다. RPN으로 proposal을 생성하고 이 proposal에 대하여 classification score, bounding box coordinates, instance mask를 예측합니다. 이후에 non-maximum suppression을 적용합니다. 이 branch의 출력값은 이미지 내의 object에 해당하는 pixel의 cluster가 됩니다.

 

(3) Loss function

 joint training을 하므로 Loss는 7가지 요소로 이루어져 있습니다.

 

 

 rpn obj, det cls, mask, seg는 cross entropy를 사용합니다. rpn reg와 det reg는 L1 regression loss를 사용합니다. 마지막 R는 모델 파라미터에 대한 L2 regularization 입니다.

 

(4) Merging heuristics

 segmentation과 instance 의 예측값을 Panotic segmentation output format으로 heuristic하게 조합합니다.

 

Ovelapping instance masks

 instance의 예측값이 object detector에 기반하기 때문에 많은 overlapping 영역이 생깁니다. 이 overlapping 영역에 대하여 NMS를 적용한다면 많은 true prediction이 제거될 수 있습니다. 대신에 per-instance probability map을 활용합니다. 어떤 pixel이 두 개 이상의 object에 속한다면 높은 확률을 가진 object로 예측합니다. 이 확률은 instance branch에 의해 예측된 확률 입니다. 결과적으로 모든 출력 pixel은 단 하나의 object에 속합니다.

 

Conflicting predictions for things classes

 instance branch는 stuff  class를 예측하지 않지만 thing class에 대해 예측을 합니다. 이는 semantic branch와 겹치게 되는데 이를 heuristic한 방법으로 해결합니다. semantic 출력값은 object의 instance사이에 구별을 하지 않기 때문에 두 출력값은 직접적으로 비교될 수 없습니다. 이러한 이유로 semantic output의 모든 thing class를 제거하고 제거한 영역을 stuff로 대체합니다. 모든 class가 stuff로 대체되는데 따라서 instance의 출력값이 우선순위가 됩니다. 그리고 총 4096 픽셀 이하의stuff class를 제거합니다. 그리고나서 위 임계값이 성립하는 다음 best stuff class로 대체됩니다. 이러한 conflict를 해결한 후에 모든 object는 unique한 id를 얻습니다.

 

Experiment

 

 위 결과 표를 보면 stuff와 thing 사이의 PQ가 큰 gap이 발생합니다.  논문에서는 이 이유를 instance branch가 small, oddly-shaped objects를 잘 검출하지 못하기 때문이라고 설명합니다. 이 이유는 RPN의 성능과 관련되어 있다고 생각해서 실험에 사용한 두 데이터 셋에 RPN의 mean recall을 조사합니다

 

 


my github

 

Seonghoon-Yu/Paper_Review_and_Implementation_in_PyTorch

공부 목적으로 논문을 리뷰하고 해당 논문 파이토치 재구현을 합니다. Contribute to Seonghoon-Yu/Paper_Review_and_Implementation_in_PyTorch development by creating an account on GitHub.

github.com

 

반응형