공부한 내용
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 |