오늘 review해 볼 논문은 2020년도에 나온 DETR입니다!
제목 : End-to-End Object Detection with Transformers(DETR)
저자 : Nicolas Carion et al.
학회 : EECV 2020
게제 년도 : 2020년
인용수 : 14,623회
먼저 IoU와 GIoU에 대해서 알아보겠습니다!
- IoU(Intersection over Union)
- 예측 bounding box와 ground truth가 일치하는 정보를 0과 1 사이의 값으로 나타낸 값입니다
- Box가 겹치지 않으면 떨어진 정도를 반영할 수 없습니다
-> box가 떨어져 있으면, 떨어진 거리와 관계 없이 동일한 loss 0이 부여됩니다
- GIoU
- IoU를 개선시킨 것으로, bounding box와 ground truth를 모두 포함하는 최소 크기의 C box를 이용합니다
- Box가 겹치지 않은 경우(IoU=0)에도 loss를 정의해 학습에 이용할 수 있습니다(-1 ~ 1 사이의 값)
다음으로는 precision과 recall에 대해서 알아보겠습니다!
- Precision
- 예측을 positive로 한 애들 중에서, 예측 값과 실제 값이 일치하는 데이터의 비율입니다
- Box 친 애들 중 제대로 class를 예측한 애들의 비율입니다
- Detection한 결과가 실제 Object들과 얼마나 잘 일치하는가?를 나타냅니다
- 예측을 한 데이터가 기준입니다
- Recall
- 실제 값이 positive한 애들 중에서, 예측 값과 실제 값이 positive로 일치하는 데이터의 비율입니다
- 실제 Object 중 Box를 제대로 친 애들의 비율입니다
- 실제 Object들을 빠뜨리지 않고 얼마나 정확히 Detection 했는가?를 나타냅니다
- 실제 Object가 기준입니다
이번에는 Precision-Recall의 변화 및 AP에 대해서 알아보겠습니다!
- Confidence Threshold에 따른 Precision-Recall 변화
- Confidence : 모델마다 주로 C로 등장하는, 해당 예측이 얼마만큼의 신뢰도를 가지는지를 나타내는 점수입니다(이 정도 확률로 예측한다..)
- Confidence Threshold : Confidence의 임계값으로, Confidence가 몇 이상인 예측들만 예측으로 볼 것인지에 대한 수치입니다
(1) C.Threshold가 낮으면 Box 예측이 많아짐(난사) -> Precision 감소, Recall 증가
(2)C.Threshold가 높으면 Box 예측이 적어짐(신중) -> Precision 증가, Recall 감소- Confidence Threshold에 따라 Precision과 Recall의 Trade-off가 있습니다
- Precision-Recall Curve와 AP(Average Precision)
- Precision-Recall Curve는 Recall의 변화에 따른 Precision을 나타낸 곡선입니다.
- X축은 Recall을 나타내고, Y축은 Precision을 나타냅니다
- 이때 Precision-Recall Curve의 면적이 AP(Average Precision)라고 할 수 있습니다
-> 즉 AP는 Precision 값들의 평균이라고 볼 수 있습니다
다음으로는 Confusion Matrix(오차 행렬)에 대해서 알아보겠습니다!
Confusion Matrix는 이진 분류에서의 예측을 유형별로 나눈 것입니다.
- FP : 실제 없는 것에 box를 치거나 class를 예측한 것입니다
- FN : 있는 object에 대해 box를 안 친 것입니다
- TP : Box도 잘치고, class 예측도 잘 한 것입니다
- TN : 지표에 쓰이지 않습니다
마지막으로 mAP에 대해서 알아보겠습니다!
mAP : 여러 Object들에 대한 AP의 평균입니다
-> AP : 1개의 Object class에 대한 수치입니다
AP[.50:.05:.095] : IoU를 기준으로 0.5부터 시작해서 0.95까지 0.05씩 높이면서 측정한 mAP를 나타냅니다
-> AP@[.50:.05:.095]로 표기하기도 합니다
- AP50 : IoU의 최솟값이 0.5
- AP75 : IoU의 최솟값이 0.75

먼저 본 논문의 Contribution에 대해서 간단하게 알아보고 넘어가도록 하겠습니다
(1) Direct set prediction
-> Object Detection을 Direct Set Prediction으로 정의해, Transformer와 Bipartite matching loss를 사용한 DETR을 제안했습니다.
(2) Faster R-CNN과 비슷한 성능
-> COCO dataset에 대하여 Faster R-CNN과 비슷한 수준의 성능을 보였습니다.
(3) 크기가 큰 객체 포착 성능 우수
-> Self-Attention을 통한 Global Information(전역 정보)을 활용함으로써, 크기가 큰 Object를 Faster R-CNN보다 훨씬 잘 포착 가능합니다.
기존 방법은 Regression, Anchor, Window 등을 이용해 proposal을 찾은 뒤, 중복을 제거하는 과정을 사용하는 Indirect Way를 사용했습니다.
그렇기 때문에 중복되는 prediction을 피하기 위해 Post-Processing이 많이 사용되었습니다.
이러한 기존 방법의 한계점에 대해서 알아보겠습니다.
기존 방법은 RPN, NMS 등 미리 hand-design 되어야 하는 prior knowledge가 생긴다는 한계가 있었습니다
-> 이때 RPN, Anchor Box, NMS는 몇 천개의 영역을 처리해야 합니다(pos-processing)
또한 pipeline이 복잡하고 End-to-End 구조라고 보기 힘들다는 한계점이 존재했습니다

본 논문에서는 Transformer(Encoder, Decoder) + Bipartite matching(Hungarian Algorithm)을 제안했습니다.
(1) Prediction bounding box와 Ground truth box 사이의 unique한 matching을 가능하도록 하는 set prediction loss를 이용합니다.
(2) 한 번의 forward pass로 object model 사이의 relation을 예측하는 architecture를 사용합니다.(End-to-End)
(1) Predicted bounding box와 ground box 사이의 unique한 matching 수행
(2) Matching된 결과를 기반으로 Hungarian loss 연산
Bapartite Matchin(Hungarian Algorithm)이 무엇인지 대해 알아보겠습니다.
Bipartite Matching은 일대일로 중복이 허용되지 않는 matching을 수행합니다.

-> 빨간 선일때 이분 매칭입니다.
이번에는 Object Detection set prediction loss에 대해 알아보겠습니다


좀더 Architecture에 대해서 자세히 알아보겠습니다
(1) CNN Backbone : Transformer에 들어가는 Feature map을 뽑아냅니다(ResNet 50,101을 사용합니다)
(2) Transformer Encoder, Decoder
-> Encoder : 같은 instance끼리 높은 attention을 가집니다.
-> Decoder : box에 접하는 부분이 높은 값을 가집니다(말단 부분을 잘 학습합니다)
(3) FFN(Feed Foward Network) : FNN을 통과하여 Class와 Box를 예측합니다(Bipartite matching을 수행합니다)





GFLOPS : 부동소수점 초당 연산량입니다
FPS : 모델이 얼마나 빠르게 동작하는지 측정합니다
AP : precision-recall 그래프의 아래쪽 면적입니다
AP50 : IoU 최솟값 0.5
AP 75 : IoU 최솟값 0.75







