BoostCamp

2021.09.14 - [Week 7] Day 2. 팀 구성 완료

배기니어 2021. 9. 15. 00:46

공부한 내용

Instance / Panoptic Segmentation and Landmark Localization

1. Instance Segmentation

 1.1. What is Instance Segmentation?

  1) Instance segmentation

   • 더 진보된 segmentation

   • semantic segmentation + object detection

   • 같은 class의 물체라도 개체(instance)가 다르면 구분 가능

 

 1.2. Instance Segmentation

  1) Mask R-CNN

   • faster R-CNN과 동일한 구조

   • ROI pooling 대신 RoIAlign이라는 새로운 pooling layer 적용

    - interpolation 통해 소수점 pixel level의 pooling 지원

    - 정교한 feature 생성하여 성능 향상

   • Faster R-CNN (classification + box regression) + Mask branch

   • mask branch

    - 7x7 activation map을 14x14로 upsampling

    - 각 class 별로 binary mask prediction

    - classification head에서 나온 class 예측 결과에 대해 mask 참조하여 최종 mask 반환

   • R-CNN family

    - region proposal 기반의 detection architecture로 새로운 task 수행하는 구조로 쉽게 확장 가능

    - 확장 가능성이 높아 다양하게 활용 가능 

  2) YOLACT (You Only Look At CoefficientTs)

   • instance segmentation위한 single stage 구조

   • realtime으로 instance sengmentation 가능

   • FPN (Feature Pyramid Network)를 backbone으로 사용하여 고해상도 feature map 사용 가능

   • mask의 proto type을 사용하는 것이 가장 큰 특징

    - mask를 생성해낼 수 있는 기본적인 여러 물체의 soft segmentation components

    - 선형대수의 span 가능한 basis로 볼 수 있다.

   • 작동 방식

    - prediction head에서 각 detection에 대해 coefficient 출력

    - mask 효율적으로 생성하기 위해 proto type의 수를 object 수로 적용하지 않고 적당히 작게 설정

    - 계수들과 proto type을 선형결합(weighted sum)하여 각 detection에 적합한 mask response map 생성 

  3) YolactEdge

   • 소형의 edge device에 적용하기 위해 YOLACT를 확장한 구조

   • 이전 frame 중에서 key frame에 해당하는 feature를 다음 frame에 전달하여 feature map의 계산량을 줄이는 방식

   • 기존보다 빠르지만 비슷한 성능

   • frame에 따라 독립적으로 processing되는 구조의 한계로, mask 떨리거나 깜빡이는 문제

 

2. Panoptic Segmentation

 2.1. What is panoptic segmentation?

  1) Semantic segmentation vs. panoptic segmentation

   • instance segmentation이 기능성을 추가하면서 발전한 것

   • instance segmentation은 배경에는 관심이 없고 움직이는 작은 object에 대해 관심

   • 배경 등에 관심이 있을 때는 semantic segmentation이 유리하지만 개체를 구별하지 못하는 단점

   • semantic segmentation과 instance segmentation의 특성을 합친 새로운 task

 

 2.2. Panoptic segmentation

  1) UPSNet

   • FPN 구조 적용하여 고해상도 feature map 사용

   • head branch를 여러 개로 나누어 수행

   • semantic head

    - fully convolutional layer 구조로, semantic segmentation map을 prediction

    - X_thing : 물체를 예측하는 mask

    - X_stuff : 배경 예측하는 mask로, 최종 출력에 바로 적용된다.

   • instance head

    - classification과 box regression

    - mask logit 추출

    - Y_i : instance에 해당하는 mask (instance response)

    - semantic head의 instance 부분을 masking한 response와 instance reponse를 더해서 최종 출력에 삽입

   • panoptic head

    - 개별적인 task의 결과를 융합하여 최종적으로 하나의 segmantation map 출력

   • instance와 배경에 관련된 object 이외의 unknown class의 물체들은 모두 합쳐서 하나의 채널로 추가

  2) VPSNet

   • panoptic segmentation의 구조를 video로 확장

   • 두 시간차를 갖는 영상 사이에 Φ(motion map) 사용해서 각 frame에서 나온 feature map을 motion에 따라 warping

   • motion map

    - 한 영상의 point가 다음 영상의 어느 point에 해당하는지 모든 pixel에 대해 대응관계를 가지고 있는 motion을 나타낸 map

    - (t-τ)에서 뽑힌 feature를 target frame인 t에서의 feature와 마찬가지로 찍힌 것처럼 tracking

   • t frame에서 찍힌 feature와 warping된 feature를 합쳐서 사용하여, 현재 frame에서 추출된 feature로 대응하지 못하거나 가려진 부분도 detection 성공률 증가

   • 여러 frame의 feature map 합쳐 사용하여 시간 연속적으로 smooth한 segmentation 가능

   • 작동 방식

    - 이전 roi에 motion map 적용하여 roi의 feature 추출

    - tracking head 통해 현재 roi와 이전 roi의 관계 파악

    - 같은 object는 같은 id 가질 수 있도록 시간에 따라 tracking

    - 이후 과정은 UPSNet과 동일하게 처리

   • 전경, 배경 뿐 아니라 개별 물체도 잘 구분하고, 시간에 따라 id 유지되는 효과

 

3. Landmark Localization

 3.1. What is landmark localization?

  1) Landmark localization

   • landmark : 물체에 대해 중요하다고 생각하는 특징 부분

   • 얼굴, 사람 몸통 등에 대해 landmark 정의하고 tracking

   • landmark는 미리 정의하고 미리 정의한 landmark를 추정, 추적하는 방식

 

 3.2. Coordinate regression vs. heatmap classification

  1) Coordinate regression

   • box regression처럼 각 point의 x, y 위치를 예측하는 방식

   • 부정확하고, 일반화가 되지 않는 문제

  2) Heatmap classification

   • coordinate regression의 대안

   • semantic segmentation처럼 채널들이 각각의 keypoint 담당하여 각 keypoint마다 하나의 class로 생각

   • keypoint 발생할 확률의 map을 pixel 별로 classification 하는 방식

   • 각 위치에 해당하는 landmark가 확률 map처럼 표현된다.

   • 성능이 더 낫지만 모든 픽셀에 대해 판별하여 계산량이 많은 단점

  3) Landmark location to Gasussian heatmap

   • 좌표(location) -> heatmap 변환

   • 각 위치마다 confidence가 나오는 형태로 heatmap 표현

   • label : x, y 위치

 

 3.3. Hourglass network

  1) Hourglass network

   • 여러 개의 hourglass module을 쌓은 구조

   • hourglass module은 U-Net과 비슷한 구조이지만 feature map 합치는 부분에서 차이

   • hourglass module은 이전 feature map을 convolution layer에 통과시킨 후 더하는 연산

 

 3.4. Extensions

  1) DensePose

   • 신체 전체에 대해 dense한 landmark를 적용하여 3D를 알게 되는 것과 동일한 효과

   • 3D 표준 모델에서 어느 부위에 해당하는지 색상으로 표현하는 uv map 표현법 사용

   • UV map

    - 표준 3D map의 각 부위를 2D로 펼쳐 UV 좌표계의 이미지 형태로 만들어 놓은 좌표 표기법

    - uv map에서의 한 점과 3D mesh 상에서의 한 점이 1:1 matching

    - mesh 내에서의 point, triangle들이 id를 갖고, 움직여도 id가 보존되어 tracking 가능

    - uv map과 3D mesh의 관계는 변하지 않는다.

    - densepose는 uv map 좌표를 바로 출력하여 3D mesh를 바로 출력하는 것과 마찬가지

   • 구조

    - Faster R-CNN + 3D surface regression branch

    - Mask R-CNN과 비슷한 구조, mask branch가 uv map prediction으로 변환

    - patch : 각 body part의 segmentation map

    - U : U 좌표

    - V : V 좌표

  2) RetinaFace

   • FPN의 각 task에 해당하는 head를 필요한 대로 추가

   • FPN + Multi-task branches

   • 다양한 task를 한 번에 해결하는 multi-task 학습법

   • 조금씩 다르지만 공통적으로 얼굴에 대한 task를 해결하면서 공통된 정보를 통해 backbone network 강하게 학습하는 효과

   • 여러 head에서 오는 gradient를 통해 모든 성능 고려한 network 구성 가능

   • 많은 데이터를 사용한 효과, 사용한 data 대비 높은 성능

  3) Extension pattern

   • backbone network 위에 관심 task의 head만 추가하면 다양한 응용 가능

   • 현재 CV에서 큰 design pattern의 흐름 중 하나

 

4. Detecting objects as keypoints

object detection을 bounding box가 아니라 keypoints로 해결

 4.1. CornerNet & CenterNet

  1) CornerNet

   • bounding box가 왼쪽 위 점과 오른쪽 아래 점으로 unique하게 결정

   • backbone에서 나온 feature map의 네 가지 head를 통해 heatmap 표현으로 두 점과 두 점과 embedding 검출

   • 두 코너에서 나온 embedding이 서로 같은 object에서 나왔다면 동일한 성질 이용하여 학습

  2) CenterNet (1)

   • cornernet에서 center point 역할 추가

   • center point가 성능에 중요하다고 생각해서 center point 같이 추정하여 학습

  3) CenterNet (2)

   • corner만 있어도 bounding box는 잘 표현되어, center point가 redundant가 되는 문제

   • center 사용하면서 bounding box 특정하기 위해 필요한 최소 정보인 width, height 사용

   • 가장 속도 빠르고 성능도 좋다.

 


팀 구성을 마쳤다.

팀원분들 모두 원하는 방향이 비슷해서 이견이 없었다.

다들 열심히 하시는 좋은 분들인 것 같다.

같이 12월까지 재밌게, 열심히 공부해서 많이 성장할 수 있었으면 좋겠다.

손에 수포는 언제 없어지려나..

'BoostCamp' 카테고리의 다른 글

2021.09.24 - [Week 8] Day 2. Coma  (0) 2021.09.25
2021.09.23 - [Week 8] Day 1. Comma  (0) 2021.09.24
2021.09.13 - [Week 7] Day 1. 컨디션 쏘쏘  (0) 2021.09.14
2021.09.09 - [Week 6] Day 4. -  (0) 2021.09.10
2021.09.07 - [Week 6] Day 2. -  (0) 2021.09.08