1. Cascade RCNN
1.1 Contribution
Faster RCNN을 training할 때 positive와 negative를 나누는 기준의 threshold가 0.5였는데 0.5에 대한 background는 아무런 근거가 없었다
그래서 이를 바꿔서 학습해보는 연구가 시행됨
-> Input IoU가 높을수록 높은 IoU threshold에서 학습된 model이 더 좋은 결과를 냄
- IoU threshold에 따라 다르게 학습되었을 때 결과가 다름
- 전반적인 AP의 경우 IoU threshold 0.5로 학습된 model이 성능이 가장 좋음
- 그러나 AP의 IoU threshold가 높아질수록 (ex. AP70, AP90) IoU threshold가 0.6, 0.7로 학습된 model의 성능이 좋음
- 학습되는 IoU에 따라 대응 가능한 IoU 박스가 다름
- 그래프와 같이 high quality detection을 수행하기 위해선 IoU threshold를 높여 학습할 필요가 있음
- 단, 성능이 하락하는 문제가 존재
- 이를 해결하기 위해 Cascade RCNN을 제안
1.2 Method
(b) + (c) 를 활용하여 (d)를 만들었음
(d)
- 여러개의 RoI head(H1,H2,H3)를 학습
- Head별로 IoU threshold를 다르게 설정
- C3, B3가 최종결과
.
(d)에서
b1 -> 1stage
b2 -> 2stage
b3 -> 3stage
- Bbox pooling을 반복 수행할 시 성능 향상되는 것을 증명 (Iterative)
- IOU threshold가 다른 Classifier가 반복될 때 성능 향상 증명 (Integral)
- IOU threshold가 다른 RoI head를 cascade로 쌓을 시 성능 향상 증명 (Cascade)
2. Deformable Convolutional Networks (DCN)
CNN의 문제점
- 일정한 패턴을 지닌 conv는 geometric transformations에 한계를 지님
2.1 Contribution
기존해결방법
- Geometric augmentation
- Geometric invariant feature engineering
Deformable convolution
- 기존엔 고정된 사이즈였다면, 다양한 shape을 가져도 되는게 아닌가? 라는 의문에서 시작
2.2 Method
Deformable Convolution
- offset을 추가해서 연산
배경과 작은객체 큰 객체를 비교
- 일정한 패턴을 지닌 convolution neural networks는 geometric transformations에 한계를 파악
- 일정한 패턴이 아니라 offset을 학습시켜 위치를 유동적으로 변화
- 주로 object detection, segmentation에서 좋은 효과를 보임
3. Transformer
- NLP에서 long range dependency를 해결 이를 vision에도 적용
- Vision Transformer (ViT)
- End-to-End Object Detection with Transformers (DETR)
- Swin Transformer
Self Attention
ex) I love you라는 문장을 넣으려면 이 문장을 컴퓨터가 이해할 수 있는 벡터로 넣어야한다
벡터로 바꾸는 과정은 TF-IDF, Fast Text, Word2vec, BERT embedding등을 활용
positional encoding: 순서를 담당
3.1 Vision Transformer (ViT)
이미지를 sequential하게 풀었음
1) Flatten 3D to 2D (Patch 단위로 나누기)
픽셀단위로 쪼개면 연산량이 너무 많아지기 때문에 patch를 정해서 이미지를 쪼갠다
4개의 패치가 생기고 각 워드의 dimension은 192가된다
2) Learnable한 embedding 처리
- 𝐸 라는 matrix를 이용해서 학습을 가능하게 만들어줌
3) Add class embedding, position embedding
- 앞서 만들어진 embedding 값에 class embedding 추가 ([CLS]Token)
- 이미지의 위치 따라 학습하기 위해 position embedding 추가
4) Transformer
- Embedding: Transformer 입력값
5) Predict
첫번재 output CLS토큰으로부터 나온 값을 MLP Head를 통과해서 classification 수행
ViT의 문제점
- ViT의 실험부분을 보면 굉장히 많은양의 Data를 학습하여야 성능이 나옴
- Transformer 특성상 computational cost 큼
- 일반적인 backbone으로 사용하기 어려움
3.2 End-to-End Object Detection with Transformer(DETR)
Contribution
- Transformer를 처음으로 Object Detection에 적용
- 기존의 Object Detection의 NMS와 같은 hand-crafted post process 단계를 transformer를 이용해 없앰
(set of box predictions) 부분 output 개수를 사용자가 정할 수 있다
Neck구조는없다
• Highest level feature map
▪ Transformer 특성상 많은 연산량이 필요하여 highest level feature map만 사용
• Flatten 2D
• Positional embedding
• Encoder
Backbone
• 224 x 224 input image
• 7 x 7 feature map size
• 49 개 의 feature vector 를 encoder 입력값으로 사용
Decoder
Encoder에서 나온 벡터를 Decoder에 넣는다
아웃풋 벡터의 워드 개수를 정해야한다.
Train
- 이 때 groundtruth에서 부족한 object 개수만큼 no object로 padding 처리
- 따라서 groundtruth와 prediction이 N:N 매핑
- 각 예측 값이 N개 unique하게 나타나 post-process 과정이 필요 없음
=> N을 8이라 했을 때 prediction은 8개를 예측하지만 groundtruth는 8보다 작음 그래서 padding처리함
3.3 Swin Transformer
ViT의 문제점
- ViT의 실험부분을 보면 굉장히 많은양의 Data를 학습하여야 성능이 나옴
- Transformer 특성상 computational cost가 큼
- 일반적인 backbone으로 사용하기 어려움
-> 해결법
- CNN과 유사한 구조로 설계
- 많은양의 cost를 줄이기위해 Window라는 개념을 활용
Architecture
이미지를 패치하여 나누는 작업은 동일하지만 transformer를 N개로 나눠서 Stage별로 Transformer를 수행
이때 featuremap의 사이즈를 줄여줬다 이 작업이 CNN의 backbone과 유사
1) Patch Partitioning
2) Linear Embedding
ViT의 embedding과 동일하나 class embedding 제거
3) Swin Transformer Block
2번의 Attention이 하나의 Transformer로 묶인다
ViT는 Multi head attention을 사용하지만
Swin Transformer는 Window Multihead Self Attention과 Shifted Window Multi head Attention를 사용한다
4) Window Multi-head Attention
- Window(grid) 단위로 embedding을 나눔.
- 기존 ViT같은 경우 모든 embedding을 Transformer에 입력
- Swin-Transformer는 Window 안에서만 Transformer 연산 수행
- 따라서 이미지 크기에 따라 증가되던 computational cost가 Window 크기에 따라 조절 가능
- Window 안에서만 수행하여 receptive field를 제한하는 단점 존재
Shifted Window Multi-Head Attention
Window Multi-Head Attention의 단점을 보안하기 위해 W방향 H방향으로 shift하여 다시 연산한다
이렇게하면 receptive fiedl가 다양해진다
하지만 가장자리에 윈도우 조각들이 생긴다
- 남는 부분들 (A, B, C)를 그림과 같이 옮겨줌
- 이 때 남는 부분들을 masking 처리하여 self-attention 연산이 되지 않도록 함
5) Patch Merging
정리
- 적은 Data에도 학습이 잘 이루어짐
- Window 단위를 이용하여 computation cost를 대폭 줄임
- CNN과 비슷한 구조로 Object Detection, Segmentation 등의 backbone으로 general하게 활용
'부스트캠프 AI Tech 2기 > 2기 CV P-Stage-Objectdetection' 카테고리의 다른 글
Ready for Competition (0) | 2021.10.08 |
---|---|
Advanced Object Detection 2 (0) | 2021.10.06 |
EfficientDet (0) | 2021.10.02 |
1 stage Detectors (0) | 2021.10.01 |
Neck (0) | 2021.09.30 |