본문 바로가기
BOOSTCAMP AI TECH/7주차_Computer Vision

[BOOSTCAMP AI TECH] 34일차_Instance/Panoptic segmentation

by 이민우 2021. 3. 11.
728x90
반응형

Instance segmentation

-물체의 class뿐 아니라 같은 class의 각 객체까지 식별 가능한 모델

 

 

Mask R-CNN

-R-CNN과 구조 자체는 비슷하다.

-다만 차이점으로 RoI Align이라는 풀링 레이어를 제안했다.

-R-CNN의 RoI 풀링은 정수 좌표에서만 특징을 추출할 수 있었다.

-하지만 RoI Align은 보간법을 통해 정교화된 subpixel (소수점 픽셀 레벨)의 풀링을 지원한다.

-즉, 소수 좌표에서도 특징을 추출할 수 있게 되었다.

-이를 통재 정교화된 특징을 추출할 수 있게 되었고 성능이 향상되었다.

 

-기존 Faster R-CNN에서는 풀링된 특징 위에 올라가있던 헤더가 두 개였다.

-Mask R-CNN에서는 기존의 헤더 옆에 Mask branch를 추가했다.

-Mask branch는 14*14로 업샘플링을 하고 채널 수를 256개로 줄였다. 이후 클래스의 개수로 채널 수를

 맞추게 되는데, 각 클래스별로 Binary classification을 통해 해당 클래스가 존재하는지 아닌지를 식별한다.

 

-하나의 바운딩 박스에 대하여 일괄적으로 모든 클래스에 대한 마스크를 전부 생성한다.

 그리고 classfication head에서 클래스가 어떤 곳에 모일 것이라는 예측 결과를 이용해

 어떤 mask를 참조할 지 결정한다.

-이렇게 참조함으로써 마스크 중 하나를 골라 사용하고 최종 마스크를 반환한다.

 

 

 

YOLACT (You Only Look At CoefficienTs)

-Mask R-CNN과 달리 Single stage 구조이다.

-Real time으로 semantic segmentation이 가능한 single stage network이다.

 

-특징 피라미드 구조를 사용한다. 고해상도 특징맵을 사용할 수 있다.

-가장 큰 특징은 마스크의 프로토타입을 추출해 사용한다는 것이다.

 프로토 타입에서는 마스크는 아니지만 마스크를 합성해낼 수 있는 기본적인 여러 물체의 soft segmentation

 components들을 생성할 수 있다.

-즉, 마스크는 아니지만 마스크로 합성될 수 있는 재료들을 제공하는 것이다.

 

-이후 prediction head에서는 각 detection에 대해 protonet에서 나온 프로토 타입들을 잘 합성하기 위한 Coeffients

 (계수)들을 출력해준다.

-그리고 계수들과 프로토타입들을 선형 결합해준다. 각 detection에 적합한 mask response map을 생성해준다.

 

-위의 예시에서 Detection1은 사람을, Detection2는 라켓을 검출하는 경향이 있다.

-이 프로토 타입들에 계수들을 곱한 (여기서는 덧셈/뺄셈으로 표현)후 더해서 최종적인 Detection Response map

 을 만든다.

 

-여기서 mask를 효율적으로 생성하기 위해서는 프로토 타입 갯수를 객체 갯수에 맞추지 않아도 된다.

-적당하게 작게 설정하는 대신 선형결합으로 다양한 마스크를 생성하는 것이 포인트이다.

 

 

 

YolactEdge

-YOLACT는 빠르지만 소형으로 동작하는 모델은 아니었다.

-그래서 소형화되어 동작하기 위해 YolactEdge가 등장했다.

 

-YolactEdge는 이전 프레임 중 key 프레임에 해당하는 특징을 다음 프레임으로 전달해 특징맵의 계산량을 획기적으로

 줄였다.

-따라서 소형화된 모바일에서도 빠르게 동작 가능하다.

 


 

 

Panoptic segmentation

-기존 Instance Segmentation은 배경에는 관심이 없고 움직이는 물체에만 관심을 가졌다.

-따라서 Instance Segmentation은 배경을 추출하지 않았다.

-Panoptic segmentation은 배경 정보 뿐 아니라 관심을 가질만한 물체의 인스턴스까지 추출해준다.

 

 

 

UPSNet

 

-FPN 구조를 사용하고 head branch를 여러 개로 나눈 구조이다.

 

-Semantic Head는 FCN 구조로 되어있어 Semantic prediction을 하게 된다.

-Instance Head는 물체의 Detection과 마스크의 logit을 추천하는 작업을 담당한다.

-Panoptic Head는 개별적인 작업들을 모아준다.

 

-자세히 표현하면 다음과 같다.

 

 

 

 

VPSNet

-VPSNet은 두 시간차를 가지는 영상 사이에 모션 맵을 사용한다.

-각 프레임에서 나온 특징맵을 모션에 따라 랩핑을 해주게 된다.

-모션맵은 한 영상의 점이 다음 t+1에서 어디로 가는지 (모든 픽셀에 대해)  대응 관계를 가지고 있다.

-즉 t-r에서 추출한 특징을 모션맵을 사용해 현재 타겟 프레임인 t로 옮겨준다.

-그 후 원래 타겟 특징(파란색)과 랩핑된 특징(노란색)을 합쳐준다.

 

-이렇게 함으로써 타겟 특징에서 추출된 특징만으로 대응하지 못하거나 보이지 않게 가려졌던 부분들을

 이전 프레임에서 빌려온 특징 덕분에 더욱 높은 탐지 성공률을 자랑한다.

 

-다음으로는 Trak head를 통해 기존 ROI들과 현재 ROI들이 어떻게 서로 연관되었는지 연관성을 업로드한다.

 

-나머지는 UPS와 동일하다.

 

 


 

Landmark localization

-얼굴이나 사람의 pose를 측정하고 트랙킹하는데 사용된다.

-즉 얼굴이나 사람의 몸통 등 특정 물체에 대해 중요하다고 생각하는 특징부분(랜드마크)를 정의하고 추적한다.

 

-Landmark localization은 Heatmap classification을 사용한다.

-따라서 Landmark localization을 가우시안 히트맵으로 변환하기 위해 다음의 과정이 필요하다.

 

 

 

Hourglass Network

-Landmark 구조에 딱 맞춘 구조이다.

-이미지의 해상도를 작게 만들어, 즉 Receptive field를 크게 만들어 이를 기반으로 랜드마크를 찾는 방법이다.

-Receptive field를 크게 만들어 큰 영역을 보면서도 Skip connection을 통해 low level을 참조해 정확한

 위치를 특정하게끔 유도한다.

-이후 스택을 여러 번 쌓아서 detail을 구체화해나가며 결과를 개선한다.

 

-Hourglass 부분을 확대해보면 UNet과 비슷한 구조를 가짐을 알 수 있다.

-다른 점은 UNet은 합치는 과정에서 Concat을 활용하지만 Hourglass는 덧셈을 사용한다. 그래서 차원이 늘지는 않지만

 SKIP시에 또다른 합성곱 레이어를 통과하며 전달된다.

 

 

 

DensePose

-신체 모든 부위에 대해서 dense한 Landmark를 수행한다.

-신체 모든 부위에 대해서 Landmark를 알게되면 3D를 알게되는 것과 마찬가지이다.

-위의 사진과 같은 표현법은 UV map이라고 한다.

 

-UV Map : 표준 3D 모델의 각 부위를 2D로 펼쳐서 UV 좌표 내에 이미지 형태로 만들어놓은 표기법

-UV의 한 점은 3D mesh에서 한 점에 1:1로 대응되는데, 따라서 UV Map은 변화하지 않는다.

-따라서 영상에서의 트래킹이 가능하다.

 

-DensePose의 구조는 Mask R-CNN과 비슷하다.

-DensePose는 Faster R-CNN에 3D surface regression branch를 추가로 도입해서 만들어졌다.

-위의 patch 부분은 몸의 각 파트의 segmentation 부분이다.

 

 

 

RetinaFace

-기본 FPN 구조에 분류, 회귀, 랜드마크, 3d face 등 다양한 작업을 출력하는 네트워크

-Multi-task를 사용하면 백본 네트워크가 더 강하게 학습된다. 다양한 작업에 대해 여러 기울기가

 백본 네트워크로 역전파되기에 많은 상황에 대처 가능한 네트워크가 만들어지기 때문

 


 

Detecting objects are key points

-바운딩 박스가 아닌 키포인트의 형태로 감지하는 방법들

 

 

CornerNet

-바운딩 박스가 Top-left, Bottom-right 두 개의 점으로 결정되는 방법

-백본 네트워크에서 나온 특징 맵에서 여러가지 헤드를 통해 Heatmap에서 두 개의 코너 점을 추출한다.

-그 후 임베딩 맵(각 포인트가 가진 정보를 표현한 헤드)를 통과하며 같은 객체끼리 같은 임베딩을

 출력하게 만든다.

-그리고 임베딩 매칭을 통해 페어 형태로 bounding box를 추출한다.

 

 

 

CenterNet

-CornetNet에서 Center 점을 추가한 구조

 

 

 

 

 

 

 

 

 

Further Question

(1) Mask R-CNN과 Faster R-CNN은 어떤 차이점이 있을까요? (ex. 풀고자 하는 task, 네트워크 구성 등)

  1. Faster R-CNN에서는 ROI Pooling을 통해서 정수 좌표만을 지원했던 반면에, Mask R-CNN에서는 ROIAlign을 통해서 실수 좌표도 지원했다.
  2. Mask R-CNN = Faster R-CNN + Mask branch

(2) Panoptic segmentation과 instance segmentation은 어떤 차이점이 있을까요?

  • Instance segmentation : 배경에는 관심이 없으며, 움직이는 물체에만 관심이 있었다.
  • Semantic segmentation : 배경에도 관심이 있으나, 개체들을 구분할 수 없다.
  • Panoptic segmentation : 배경에도 관심이 있으며, 개체들을 구분할 수 있다.

(3) Landmark localization은 human pose estimation 이외의 어떤 도메인에 적용될 수 있을까요?

  • Facial landmark localization
  • Landmark localization (= keypoint estimation): Predicting the coordinates of keypoints.
728x90
반응형