1.1 Contribution
faster r-cnn에서 positive/negative sample을 나누는 기준에 대해 고민함
faster r-cnn backbone : 0.7 | head : 0.5
Localization performance
input iou : rpn 통과했을 때 나온 box와 GT의 iou
output iou : head 통과했을 때 나온 box와 GT의 iou
결과 : input iou가 높을수록 높은 IOU threshold에서 학습된 model이 더 좋은 성능을 냄
detection performance
iou threshold : GT와의 iou일 때 u를 기준으로 T/F를 나눔
전반적인 AP의 경우 iou threshold 0.5로 학습된 모델의 성능이 가장 좋지만
AP의 iou threshold가 높아질수록 (AP70, AP90) IoU threshold가 0.6, 0.7로 학습된 모델과 성능 차이가 나지 않음
결론
1.2 Method
(a) Faster R-CNN
C, B, H0, H1 : classification head , box head , RPN결과 proposal, poolong 결과 fixed feture
C0: 배경ㅇ인지 아닌지만 예측 / C1 : 어떤 object인지까지 예측
(b) Iterative
B0가 아닌 다른 박스가 존재한다면 그 박스로 ROI Pooling진행
head에서 예측된 bbox를 다시 pooling에 이용하는 방법
(c) Integal Loss
(d) Cascade R-CNN
결과
2.1 Contribution
CNN 문제점 : 일정한 패턴을 지닌 convolution neural networks는 geometric transformations(Affine, view point, Pose 변화)에 한계를 지님
기존 해결 방법 : Geometric augmentation, Geometric invariant feature engineering
Geometric invariant feature selection 사람이 생각하지 못하는 feature는 모델이 학습하지 못하는 단점
2.2 Method
Deformable Convolution
이미지에 사람은 이해하지 못하지만 computer는 이해하는 geometric 연산을 스스로 찾아 conviution filter size를 변형할 수 있게 하는 것이 main idea
(a) : vanilla conv
(b),(c),(d) : offset(= geometric transform)을 추가해서 kernel위치에서 offset만큼 이동한 image pixel과 곱하도록 함
이 R의 pixel값을 다르게 바꾸면 Deformable Convolution
한 점 𝑃0 에 deformable convolution layer
∆𝑃𝑛 만큼 더해줌으로써 deformable 하게 만들어줌.
객체가 있을 법한 위치에서 convoution을 수행
결론
3.1 Vision Transformer (ViT)
1) Flatten 3D to 2D (Patch 단위로 나누기)
P = PATCH 크기 , N = , Reshape image :
2) Learnable한 embedding 처리
E 라는 matrix를 이용해서 학습을 가능하게 만들어줌
3) Add class embedding, position embedding
앞서 만들어진 embedding 값에 class embedding 추가 ([CLS]Token) , 이미지의 위치 따라 학습하기 위해 position embedding 추가
4) Transformer
Embedding: Transformer 입력값
5) Predict
Class embedding vector 값을 MLP head에 입력시켜 최종 결과를 추출
문제점
3.2 End-to-End Object Detection with Transformer
Prediction Head
기존에는 NMS를 통해 box 선택
architecture
Encoder
Transformer 특성상 많은 연산량이 필요하여 highest level feature map만 사용
Flatten 2D
Positional embedding
Encoder
224 x 224 input image
7 x 7 feature map size
49 개 의 feature vector 를 encoder 입력값으로 사용
Decorder
Decoder
Feed Forward Network (FFN)
N개의 output
이 때 N은 한 이미지에 존재하는 object 개수보다 높게 설정
Train
결과
전체적인 AP는 상승하였으나, highest level feature만 사용하여 하락
3.3 Swin Transformer
Architecture
Patch Partitioning
Linear Embedding
Swin Transformer Block
2번의 attention -> window-multi head self attention / shifted window-multi head self attention
Window Multi-head Attention
Window 단위로 embedding을 나눔.
기존 ViT같은 경우 모든 embedding을 Transformer에 입력
Swin-Transformer는 Window 안에서만 Transformer 연산 수행
따라서 이미지 크기에 따라 증가되던 computational cost가 Window 크기에 따라 조절 가능
Window 안에서만 수행하여 receptive field를 제한하는 단점 존재
shifted window-multi head self 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
결과
Further Reading
Cascade R-CNN: High Quality Object Detection and Instance Segmentation
Deformable Convolutional Networks
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows