gusdlf93 / Paper_Survey

4 stars 1 forks source link

[2021 NIPS] Per-Pixel Classification is Not All You Need for Semantic Segmentation #9

Open gusdlf93 opened 2 years ago

gusdlf93 commented 2 years ago

본 논문은 Segmentation Task에서, Mask를 사용함으로써, 추론 성능을 올린, 상당히 새로운 논문입니다. Mask방법은 머신러닝 기반의 전통적인 기법들에서는 매우 좋은 성능을 보여 줌으로써, 많이들 사용이 되고 있었지만, 2015년에 FCN 논문이 매우 높은 성능으로 전통 기법들과의 격차를 벌리게 되면서 사장되다시피 한 기법입니다,

하지만, 이것은 Mask 방법이 Per-pixel classification에 비해서 성능이 떨어진다는 것이 아니라, 어떻게 보자면, 단순히 딥러닝과 전통적인 머신러닝 기반의 기법들 사이에서 벌어진 성능의 차이라는 것을 지적합니다.

이에, 본 논문에서는 MaskFormer라는 모델을 제안합니다. image MaskFormer는 Per-pixel classification과, Mask classification으로 이루어져 있습니다.

Per-pixel classification는 일반적인 Segmentation Model의 추론값이고, Mask classification는 다음과 같은 순서로 진행되게 됩니다 1) Transformer Decoder를 통해서 마스크(특정 클래스를 나타내는 픽셀들의 묶음)와 마스크의 클래스 정보를 생성합니다. 2) 픽셀과 곱해질 마스크는 임베딩을 통해서 C(클래스 갯수)*N의 차원을 갖게 됩니다. 3) 이렇게 생성된 마스크는 Per-Pixel embedding 과 dot product를 진행함으로써, 픽셀별로 클래스에 대한 정보를 지우고, 마스크로 변환하게 됩니다. 4) 마지막으로, 각각의 마스크들을 추론한 결과값과 곱해지게 되면서, segmentation이 완료가 되게 됩니다.

이렇게 살펴보니 Pixel-wise Classification을 진행한 후, 이들을 CRF(Conditional Random Field)와 유사한 방법으로 처리한거 같습니다.

그러니까, 간단히 정리하자면, 픽셀 단위의 추론결과가, 픽셀별로 특정 클래스에 속할 확률을 나타내게 되는데, 이를 픽셀별로 특정 마스크에 속할 확률로 변환하고, 각각의 마스크는 특정 클래스들을 나타냅니다. 마지막으로 추론 결과는 픽셀별로 마스크의 confidence * 클래스 confidence 값으로 결정됩니다.

이렇게 되면 좋은 점이 무엇이냐면, 추론이 mask단위라서 픽셀단위의 FP나 FN이 줄어들 수 있습니다. 또한 여러개의 마스크들이 동일한 위치를 선점해도, 같은 마스크라면 결과 값이 바뀌지 않고, 마스크들끼리 클래스가 다르다면 가장 높은 confidence를 가진 마스크를 냄기고, 겹쳐진 다른 마스크들은 지워지게 됩니다.

매우 간단한 방법으로, 성능을 높일 수 있는 방법으로, 저희 프로젝트들에서도 종종 사용되어도 좋을거 같습니다, 조만간 구현해볼 예정입니다.

image mask 적용시 성능향상이 있습니다. PQ는 Panoptic Quality의 약자, st는 stuff의 약자입니다. image Recognition Quality (RQ)는 물체 감지 등으로 사용되는 F1 점수 SQ는 Semantic Segmentation에서 사용되는 mIoU 점수 이 둘 점수를 곱한 값이 PQ라고 합니다.