Panoptic segmentation

Panoptic segmentation


✅ Panoptic segmentation

1️⃣ What is panoptic segmentation?

image.png

Instance segmentation은 배경에는 관심이 없고 움직이는 작은 물체들에 대해서 나눴다. 하지만 배경에 대한 분할은 Semantic segmentation이 효과적이지만 Instance에 대해서는 구별을 하지 못하는 한계를 가지고 있다. 따라서 이 두가지가 가능한 Panoptic segmentation이 제시 되었다.



2️⃣ UPSNet

image.png

$$\text{Semantic & Instance head → Panoptic head → Panoptic logits}$$
  • backbone Network는 기존의 FPN 구조를 사용한다.
  • Head branch를 Semantic Head와 Instance Head로 나눠서 진행한다.
  • 그 뒷 단에 Panoptic Head가 들어가서 최종적으로 하나의 Segmentation map으로 합치게 된다.


좀 더 자세히 보면

image.png

  • 배경을 나타내는 $X_{stuff}$는 바로 최종 출력으로 들어가게 된다.
  • $X_{thing}$에 Masking을 진행하고 Instance response와 더해줘서 최종 출력으로 넣어준다.
  • Instance와 배경에 소속되지 않는 Unknown class의 물체도 있기 때문에 이를 고려해 주기 위해서 Semantic Mask map에 Instance로 사용된 부분들을 제외해서 Unknown class로 합쳐서 1개의 channel로 최종 출력에 넣어준다.



3️⃣ VPSNet

1. Reference feature를 Tartget feature와 함께 사용

image.png

두 시간차를 가지는 영상 사이에 $\phi$라는 motion map을 사용해서 각 frame에서 나오는 feature map을 motion에 따라서 wrapping을 해준다. 다시말해 $t-\tau$에서 $t$의 frame에 대응점들을 가지는 map과 실제 $t$에서 계산된 feature map을 합쳐서 사용한다. 이렇게 함으로써 현재 frame에서 추출된 feature만으로 대응하지 못하거나 보이지 않게 가려졌던 부분도 이전 frame에서 빌려온 특징들 덕분에 더 높은 정확도를 가진다. 여러 frame에 feature를 합쳐서 쓰면서 연속적으로 더 부드러운 Segmentation할 확률도 높아질 것이다.


2. Track module은 다른 object instance를 연결 시킨다.

image.png

그 다음으로 VPN을 통해서 RoI feature을 추출하고 기존 RoI들을 Track head를 통해서 어떻게 서로 연관이 되어 있는지 매칭을 해주는 작업을 한다. 각각의 id가 부여 되고 새로운 물체는 새로운 id가 부여된다.


3. 마지막으로 각각의 head를 통해서 최정 결과를 도출한다.

image.png

그 다음은 UPSNet과 동일하게 BBox head, Mask head, Semantic head에서 나온 결과를 통해 Panoptic map으로 합치게 된다.



✅ Landmark localization

1️⃣ What is landmark localization?

  • 주로 얼굴이나 사람의 동작을 추정하고 tracking하는데 사용한다.
  • 얼굴이나 사람의 몸통 등 중요하다고 생각되는 특징 부분을 정의하고 그것들을 추정하고 예측하는 것을 landmark localization이라고 한다.


2️⃣ Coordinate regression vs heatmap classification

image.png

  • Coordinate regression: 일반적으로 부정확하고 편향 되었다.
  • Heatmap classification: 더 나은 성능이지만 높은 계산 비용이 든다.

📌 Landmark location to Gaussian heatmap

image.png

$(x_{c},y_{c}) \text{ = center location} $



3️⃣ Hourglass network

image.png

쌓인 hourglass modules로 이전 출력을 개선하는 방향으로 상향식 및 하향식 추론을 반복한다.



4️⃣ DensePose

  • 모든 pixel을 인간의 3D표면으로 표현한다. UV맵으로 표현하게 된다.
  • UV map은 3D geometry를 2차원으로 표현하는 방법이다.
  • UV 맵은 모션 (즉, 표준 좌표)에 불변한다.

image.png

DensePose R-CNN = Faster R-CNN + 3D surface regression branch


5️⃣ RetinaFace

image.png

RetinaFace = FPN + Multi-task branches

(classification, bounding box, 5 point regression, mesh regression)

다양한 task의 branch를 사용해서 다양한 task를 한번에 풀도록 만들었다. 장점은 이렇게 여러개 task를 한번에 학습하면 task마다 다르지만 공통적인 부분도 존재해서 backbone network가 훨씬 더 강하게 학습되는 효과가 있다. gradient가 여러 곳에서 오는데 공통적인 정보도 있고 다른 정보도 있는데 한번에 update될 때 더 많은 정보를 담게 된다. 데이터를 더 많이 본 효과를 가진다.



✅ Detecting objects as keypoints

1️⃣ CornerNet

image.png

$$\text{Bounding box = {Top-left, Bottom-right} corners}$$

Backbone Network에서 나온 feature map에 4가지 head를 통해서 2개는 Heatmap를 통한 2개의 점(Top-left,Bottom-right)을 검출하도록 한다. 나머지 2개의 head는 Embedding이라고해서 각 point가 가지는 정보를 표현한다. 이때 학습을 할 때 2개의 Corner에서 나온 Embedding point는 같은 object에서 나왔다면 같아야 된다라는 조건을 걸어줘서 학습을 하게 된다. single-stage이다.


2️⃣ CenterNet

📌 CenterNet(1)

Bounding box = {Top-left, Bottom-right, Center} points

📌 CenterNet(2)

Bounding box = {Width, Height, Center} points

'AI > 이론' 카테고리의 다른 글

Multi-modal tasks II (Visual data & Audio)  (0) 2021.03.12
Multi-modal tasks I (Visual data & Text)  (0) 2021.03.12
Instance segmentation  (0) 2021.03.11
Conditional generative model  (0) 2021.03.11
torch.autograd  (0) 2021.03.10
Object Detection  (0) 2021.03.10
Semantic segmentation  (0) 2021.03.09
Image classification II  (0) 2021.03.09

+ Recent posts