728x90
Cascade R-CNN
faster rcnn에서 postive/negative sample을 나누는 기준(0.5)에 집중하였다. 이 기준을 바꾸면 어떻게 될까라는 생각에서 cascade r-cnn이 제시된 것이다.
- IoU threshold에 따라 다르게 학습되었을 때 결과가 다름
- Input IoU가 높을수록 높은 IoU thereshold에서 학습된 model이 더 좋은 결과를 냄
- IoU threshold에 따라 다르게 학습되었을 때 결과가 다름
- 전반적인 AP의 경우 IoU threshold 0.5로 학습된 model이 성능이 가장 좋음
- 그러나 AP의 IoU threshold가 높아질수록 IoU threshold가 0.6, 0.7로 학습된 model의 성능이 좋음
- 학습되는 IoU에 따라 대응 가능한 IoU박스가 다름
- 그래프와 같이 high quality detection을 수행하기 위해선 IoU threshold를 높여 학습할 필요가 있음(단, 성능이 하락하는 문제가 존재) -> 이를 해결하기 위해 Cascade RCNN을 제안
1. Method
- (b) : bbox pooling을 반복 수행항 시 성능 향상되는 것을 증명
- IoU threshold가 다른 classifier가 반복될 때 성능 향상 증명
- B0 : RPN으로 얻은 bbox
- RoI threshold가 각각 다른 H1, H2, H3를 생성
- Faster RCNN과는 다르게 IoU threshold가 다른 Classifier C1, C2, C3를 학습
- Loss의 경우 각각 C1, C2, C3의 classifier loss를 합
- inference 시, C1, C2, C3의 confidence를 평균
- 큰 성능 향상은 없음
- IoU threshold가 다른 RoI head를 cascade로 쌓을 시 성능 향상 증명
- 이전 B1, B2를 사용하여 projection
- 여러 개의 RoI head(H1, H2, H3)를 학습
- Head 별로 IoU threshold를 다르게 설정
- C3, B3가 최종 결과
Deformable Convolutional Networks (DCN)
Transformer
1. Vision Transformer (ViT)
- Flatten 3D to 2D (Patch 단위로 나누기)
- Learnable한 embedding 처리
- Add class embedding, posigion embedding
- Transformer
- Predict
- Flatten 3D to 2D (Patch 단위로 나누기)
- P = patch 크기
- N = HW/P^2
- reshape image : HxWxc -> Nx(P^2xC)
- Learnable한 embedding 처리
- E(embedding matrix)라는 matrix를 이용해서 학습을 가능하게 만들어줌
- Add class embedding, position embedding
- 앞서 만들어진 embedding 값에 class embedding 추가([CLS]Token)
- 이미지의 위치 따라 학습하기 위해 position embedding 추가
- ViT의 문제점
- ViT의 실험부분을 보면 굉장히 많은 양의 Data를 학습하여야 성능이 나옴
- Transformer 특성상 computataional cost 큼
- 일반적인 backbone으로 사용하기 어려움
DETR
- Transformer를 처음으로 Object Detection에 적용
- 기존의 Object Detection의 hand-crafted post process 단계를 transformer를 이용해 없앰
1. Architecture
- CNN backbone을 사용
- Transformer (Encoder-Decoder) 적용
- Prediction Heads
- Highest level feature map : Transformer 특성상 많은 연산량이 필요하여 highest level feature map만 사용
- Flatten 2D
- Positional embedding
- Encoder
- Decoder
- Feed Forward Network(FFN)
- N(한 이미지에 존재하는 object 개수보다 높게 설정)개의 output
2. Train
- ground truth에서 부족한 object 개수만큼 no object로 padding 처리 -> 예를 들어 N=10이고 image에 3개의 객체가 존재한다면 나머지 없는 객체 7개를 no object로 처리하는 것이다.
- ground truth와 prediction이 N:N 매핑
- 각 예측 값이 N개 unique하게 나타나 post-process 과정이 필요 없음
Swin Transformer
- CNN과 유사한 구조로 설계
- Window라는 개념을 활용하여 cost를 줄임
- 적은 Data에도 학습이 잘 이루어짐
- CNN과 비슷한 구조로 Object Detection, Segmentation 등의 backbone으로 general하게 활용
1. Architecture
- Patch Partitioning : 이미지를 Patch로 나누어줌
- Linear Embedding
- Swin Transformer Block
- Window Multi-head Attention
- Patch Merging
- Patch Partitioning
- Linear Embedding
- detection task에서는 class embedding을 제거
- Swin Transformer Block
- Window Multi-head Attention
- Window 단위로 embedding을 나눔
- 기존 ViT같은 경우 모든 embedding을 Transformer에 입력
- Swin-Transformer는 WIndow 안에서만 Transformer 연산 수행 -> 이미지 크기에 따라 증가되면 computational cost가 Window 크기에 따라 조절 가능
- Window 안에서만 수행하여 receptive field를 제한하는 단점 존재
- Shifted Window Multi-head Attention
- W-MSA의 경우 Window 안에서만 수행하여 receptive field를 제한하는 단점 존재 -> 이를 해결하기 위해 Shifted Window Multi-head Attention을 Transformer Block 2번째 layer에서 수행
- Window size와 다르게 나뉜 부분들 해결 필요
- 남는 부분들 (A, B, C)를 아래 그림처럼 옮겨줌
- 남는 부분들은 masking 처리하여 self-attention 연산이 되지 않도록 함
- Patch Merging
728x90
'Boostcamp AI Tech' 카테고리의 다른 글
[주말 실험 일지_일] Object Detection (0) | 2021.10.05 |
---|---|
[주말 실험 일지_토] Object Detection (0) | 2021.10.05 |
[Boostcamp 9주차] 피어세션과 학습 회고 (0) | 2021.10.02 |
[Boostcamp Day-41] EfficientDet (0) | 2021.10.02 |
[Boostcamp Day-41] 1 Stage Detectors (0) | 2021.10.01 |