[Object Detection] DETR 논문 리뷰
Before DETR
DETR (End-to-End Object Detection with Transformers) 은 거의 첫 번째로 나온 Transformer Architecture를 사용한 Object detecion 모델입니다. 논문을 읽기 위해서는 아래 개념을 알아야 합니다.
Anchor box Generation
NMS (Non Maximum Suppresion)
Faster R-CNN
Transformer Architecture
Bipartite Matching
IoU
pasnotic segmentation
region proposal
위 내용을 모르신다면 아래 블로그들을 참고하시면 될 것 같습니다.
Faster R-CNN
Faster R-CNN2
Anchor box, NMS, IoU
Transformer 1
Transformer 2
Bipartite Matching(이분 매칭)은 유명한 알고리즘으로 두 집합을 일대일(one-to-one) 매칭하는 알고리즘이고 Transformer는 기계번역에서 가장 유명한 논문 중 하나입니다. 이 둘은 자세히 정리된 블로그가 정말 많기 때문에 검색을 통해 쉽게 내용들을 접하실 수 있습니다. DETR에서는 이분 매칭 알고리즘으로 ‘Hungarian Algorithm’ 을 사용하고 있습니다.
Transformer가 잘 이해가지 않는다면 논문 RNN, LSTM, Seq2Seq, word2vec, Attention 을 참고하시면 좋을 것 같습니다. 모두 유명한 논문으로 관련 영상이 많으며 저는 위 유튜브 링크에서 ‘허민석’ 님 유튜브를 보고 공부했습니다.
Panotic Segment는 영상처리, 컴퓨터 비전에서 하나의 task입니다. segment, detection 외에도 generation, classification, 등의 많은 분야가 있습니다.
DETR
DETR 또한 유명한 논문이기 때문에 관련 리뷰가 많습니다. 저는 이 논문을 하나 하나 리뷰하는 것 보다 요약과 함께 제가 공부하면서 마주친 의문들에 대해 적어놓기로 했습니다.
DETR의 전체적인 리뷰는 제가 공부하면서 도움을 많이 받았고, 정리가 정말 잘 된 사이트의 링크를 남깁니다.
요약
1. Introduction
논문의 Introduction 에서는 이전의 Model인 Faster R-CNN 의 문제점 2가지를 말하고 있습니다. Hand-designed component와 Model의 복잡성 입니다.
Hand-designed component 는 수작업과 사전지식이 필요한 작업을 말합니다. 모델에서 Hyperparameter가 되는 요소입니다. 논문에서는 NMS 와 Anchor box Generation에 대해 언급하고 있습니다.
Model의 복잡성은 Faster R-CNN이 이미 너무 무겁다는 것입니다. Faster R-CNN에서는 이미 RPN, Fast R-CNN의 Network를 사용합니다. 무겁다는 의미는 이미 많은 모델이 결합되었으며, parameter 수도 많기 때문에 더 확장하기 어렵다는 의미입니다.
2. Related Work
논문의 이 부분에서는 이전까지의 Bounding box Prediction 에서 벗어난 DETR의 Set Prediction과 Transformer Architecture의 장점에 대해 설명하고 있습니다.
기존, Faster R-CNN 까지의 논문은 대부분 One to Many Labels assignment를 수행합니다. 하나의 Ground Truth 객체를 많은 수의 bounding box가 예측합니다. 반면 DETR의 경우 N개의 Box는 K개의 GT 객체에 대해서 이분 매칭되기 때문에 한 객체를 2개의 Box가 예측하는 일이 발생하지 않습니다. 이것은 이분 매칭의 특징입니다. N-K개의 box는 모두 No Object라는 항목과 매칭됩니다.
Transformer Architecture에 대해서는 해당 논문을 읽어보시는 것을 추천드립니다. DETR 리뷰에 같이 작성하면 글도 너무 길어질 뿐만 아니라, Transformer 논문 자체가 정말 많은 분야에서 사용되기 때문에 직접 공부하는 것이 더 좋기 때문입니다.
3. DETR Model
DETR 의 구조는 Transformer Architecture와 거의 대부분 일치합니다. Image는 Backbone을 거쳐 feature vector로 변환됩니다. 이 feature vector는 Encoder를 통과한 후 Decoder의 query와 합쳐지면서 최종 vector를 출력합니다. 최종적으로 나온 vector는 각각 2개의 FFN을 거쳐 Class와 Bouding box를 예측합니다. 예측된 Prediction은 GT와 이분매칭을 통해 가장 적합한 객체와 매칭됩니다.
4. Experiment
- Dataset, Detail
Scale Augmentation
Dropout : Transformer에서 0.1로 사용되었습니다.
Patch Crop, Random Crop & Resize
Optimizer : AdamW
Init : Xavier Init
Loss : Hungarian Loss by L1 & GIoU (Ratio 5, 2)
Activation : ReLu
이 외에 모델에 대해 언급하면 다음과 같습니다.
Backone : ResNet18,34,50,101, Frozen Normalization
Transformer Encoder : 6 Layer, 256 hidden dim, Batch Normalization, Residual Learning
Transformer Decoder : 6 Layer, Input 100 Queries, 8 Multi head Attention
Bounding Box FFN : 3 Layer MLP
- Comparison with Faster R-CNN
Parameter 수가 줄었으며 성능은 거의 비슷합니다. 단 작은 객체는 Faster R-CNN이 확실히 좋은 성능을 보입니다.
- Ablation
Ablation Study에서는 아래와 같은 내용을 다루고 있습니다.
Encoder & Decoder Layer 수의 변화에 따른 결과와 Visualizing(Fig 3,6) Encoder와 Decoder에서 FFN의 제거에 따른 성능 Positional Encoding의 제거에 따른 성능(Table 3) DETR에 NMS를 적용한 결과와 적용하지 않은 결과(Fig 4) 새로운 image에 대한 성능 (Fig 5) GIoU와 L1 Loss를 제거해보면서 테스트한 결과 (Table 4)
추가적인 기능을 넣은 결과보다 DETR 모델에서 여러가지를 제거해보면서 어떤 면이 결과에 중요한 영향을 미치는지에 대해서 설명합니다. 이 외에 Segment에 대한 내용도 있습니다.
Conclusion
기존의 Model에서 벗어나 Transformer를 이용한 간단한 새로운 모델을 만들었으며, 거의 비슷한 성능을 가진다고 말하고 있습니다.
장점으로는 NMS, Anchor box와 같은 Hand-design 요소의 제거, 낮은 복잡성과 높은 확장성, Parameter의 감소 등이 있습니다.
단점으로는 작은 객체에 대한 detection 성능이 떨어지고, 성능 면에서는 크게 발전하지 못했다는 것입니다.
Question
Q1. Backbone 에서 첫번째 Layer의 stride 제거와 마지막 Layer dilation Conv
먼저 Dilation Conv은 Conv기법 중 하나입니다. 쉬운 내용이라 검색을 통해 금방 이해할 수 있습니다. Stride 제거와 Dilation Conv를 사용할 경우 더 넓은 영역을 포착하게 되고 Feature Map의 해상도가 증가하게 됩니다. 해상도의 증가는 곧 Image를 더 크게 본다는 의미와 같습니다. 따라서 작은 객체를 탐지하는 성능이 향상되게 됩니다. 반대로 Computational Cost는 증가하게 됩니다.
Q2. Hand-design이 문제가 되는 이유
딥 러닝에서 Model에 수작업 요소가 존재한다는 것은 2가지 문제점이 있습니다.
첫 번째는 ‘정답을 아야 하는 경우’ 입니다. 예를 들어 Anchor box Generation의 경우 이미지의 객체에 크기에 따라 ‘사전 생성’ 되는 작업입니다. 사람이 직접 정답을 보고 box의 크기를 설정하는 작업은 일반화 되기 어렵습니다. 만약 새로운 input image가 test에는 없는 모양의 객체라면 감지하기 어려울 것입니다.
두 번째는 ‘모델의 성능이 수작업 요소에 의해 달라지는 경우’ 입니다. NMS 작업에서는 사람이 설정한 어떤 threshold, 즉 임계값에 의해 box가 선택되고 제거되는 과정을 가집니다. 이런 경우 threshold를 어떤 값으로 설정하느냐에 따라 모델의 성능이 기하급수적으로 변하게 됩니다. 또한 다양한 image에 대한 일반화 성능도 떨어지게 됩니다.
Q3. 작은 객체를 탐지하는 성능이 떨어지는 이유
이 질문에 대해서 DETR Github에서는 다음과 같은 답변을 하고 있습니다.
The current hypothesis is that the feature maps that we feed to the encoder (and then decoder) have a coarse resolution (divided by 32), which makes it harder for the model to precisely localize small objects (smaller than 32 pixels).
When we use higher resolution features (like the DC5 model), we get better at small objects, but due to the quadratic complexity of the encoder it’s harder to go on even higher resolution.
“Encoder의 입력으로 들어가는 feature map(backbone을 통과한 image)가 coarse resolution을 가지기 때문에 32pixel보다 작은 객체는 감지하기 어렵다. 더 높은 해상도를 사용하는 경우 작은 물체를 더 잘 처리할 수 있지만 모델의 복잡성과 계산 비용이 많이 올라가기 때문에 한계가 있다”
정도로 번역할 수 있습니다.
image를 backbone에 통과시켜서 feature map을 만들 때, 논문에서 원본 이미지의 크기를 1/32 로 만드는데 이 해상도 보다 작은 크기의 이미지는 감지하기 어렵다는 말 같습니다. 그렇다고 더 작은 수준으로 만들기에는 Cost 대비 성능 향상이 별로 좋지 않다고 합니다.