1. Abstract
기존의 Obejct Detection Methods들은 task에 대한 사전 지식을 고려한 hand-designed component들이 필요해 complex detection pipeline을 가지고 있는 indirect set prediction problem이었습니다. 저자들은 이에서 벗어나 object detection을 direct set prediction problem(image-to-set)으로 보고자 했습니다. 이를 위해 set matching을 위한 bipartite matching, hungarian algorithm같은 기존의 매칭 알고리즘을 Loss에 녹였고, image-to-set으로 direct set prediction에 sequnece-to-sequence( sequence set prediction이라는 표현이 적절하지 않지만 비슷한 맥락으로 볼 수 있다는 점을 강조하고 싶었습니다. )를 위해 디자인됐었던 Transformer를 가져옵니다. 아키텍처적으로 기존의 backbone으로 Transformer의 encoder만을 사용하던 것과는 다르게 'Attention is all you need'의 Transformer의 encoder-decoder구조를 가져와 direct set prediction의 적절한 architecutre를 사용했습니다. ( 이러한 점에서 필자는 개인적으로 Transformer를 정말 잘 이해하고 활용한 논문은 DETR이라고 생각한다. ) 결국 DETR에서 주장하고자 하는 바는 기존의 것들에 비해 본질적으로 간단한 구조를 가지면서도 기존의 prior knowledge를 고려한 hand-designed complex detection pipeline에 대등한 성능을 보여 줬다는 점입니다. 이를 well-optimized Faster R-CNN과 비교하면서 확인해볼 수 있습니다.
2. Problem Definition
object detection은 image가 주어졌을 때 object가 존재하는 영역인 bounding box와 그 object가 어떤 label인지를 함께 예측하는 task입니다. 즉, bounding boxes와 labels의 Set을 predict하는 set precition problem인 것입니다.
하지만, 기존의 방법론들은 direct가 아닌 indirect한 방식으로 set prediction을 했습니다. 즉, surrogate regression이나 large proposal set( anchors, window center, region proposals )을 이용하는 것입니다. 이런 방식은 구조적으로 Detection이라는 task에 대한 사전 지식에 기반해 hand-crafted한 components(anchor, nms 등)들을 요구하게 됩니다. 특히 기존의 detector들은 inital guss에 무척 종속적인 예측을 하게 되기에 실제 final performance도 이 inital guess를 어떻게 정확하게 설정하는지에 영향을 많이 받습니다. 예를 들면 anchor box들을 미리 구성할 때 1:3 비율부터 3:1 등등을 정해줄 수 있었던 것처럼 이러한 hand-crafted components의 영향을 많이 받는 것입니다.
또한 이러한 기존의 방식들은 near-duplicate prediction을 만들어내게 됩니다. 그렇기에 후처리의 영향력이 더 커지게 되는데, 이러한 후처리들도 그리고 detection pipeline도 gt와 prediction사이에 no-unique assignment rules 즉, 정확히 매칭을 해주지는 않는 방식이고 이는 불확실성이 크기에 명확한 매칭보다 좋은 방법은 아닙니다. (metric적으로는 또 다른 이야기일 것입니다. )
결국 기존의 detector들은 detected prediction들 간의 관계를 모델링 하기 위해서 proposal box coordinate와 같은 hand-crafted context feature들을 사용하는데 반면에 저자들은 이러한 prior knowledge를 줄이면서 기존의 방식의 복잡하고 near-duplicate problem을 야기하는 문제를 해결하고자 합니다. 즉, 기존의 문제를 해결하기 위해서 최근 성행하는 end-to-end 철학에 근거해 이 complex structed prediction으로부터 hand-crafted components들을 제거해 simple direct set prediction으로 개선하는 것입니다.
3. Main Features
이를 위해 저자들이 주장하는 solution은 결국 direct set problem으로 풀어나감으로써 해결할 수 있다는 것입니다. 이때 Direct Set Prediction Problem으로 풀기 위해 저자들이 제안한 main feature는 크게 2가지입니다. 첫 번째는 predict와 gt 간의 unique한 매칭을 하며 prediction을 하도록 하는 set prediction loss이고, 두 번째는 object set을 예측하고 object들 간의 관계를 모델링하는 architecture입니다.
이러한 main feature들을 사용하게 된 이유는 결국 direct set prediction을 하기 위해서입니다. 각각의 feature들에 대해서 이해해보고 direct set prediction을 위해 애 필요한지를 살펴보도록 합시다.
3.1. Set Prediction Loss
앞선 문제 상황을 다시 떠올려 봅시다. 기존의 detector들이 가지는 indirect set prediction은 hand-designed component들이 너무 많이 들어갑니다. 즉, bounding box와 label로 이루어진 set의 원소들 자체를 image로부터 direct로 뽑아내지 못해, bounding box가 될 수 있을만한 후보들 내에서 찾아주는 등의 indirect한 방식을 사용하는 것입니다. 또한, 이렇게 하게 될 경우 너무 많은 박스들을 만들어내고 near-duplicate problem이 생길 수밖에 없습니다. ( 하나의 object에 대해서 여러 개의 near-duplicate box들을 prediction하는 ) 기존에는 이러한 near-duplicate problem도 hand-designed하게 NMS와 같은 GT에 의해서 Measure되지 않는 방식을 사용했습니다. ( 당연하게도 불확실성이 높아질 것입니다. )
저자들은 이를 해결하는 첫 번째 키를 Biparate Matching Loss에서 찾았습니다. object detection을 indirect set prediction으로 풀게 될 경우 set 자체를 예측한다기보다는 proposals 중에 적절한 것을 찾아낸다는 느낌에 가까웠습니다. direct set prediction을 위해서는 네트워크로 직접적으로 set을 prediction하도록 해야 하고 그러기 위해서 Set Prediction Loss를 정의해야 합니다. 그렇다면 Set Prediction Loss에는 어떤 내용들이 들어가야 hand-desinged feature & prior knowledge 없이도 충분히 네트워크가 잘 학습할 수 있을까요?
사실 일반적인 object detection처럼 label을 잘 예측하는지와 bbox의 위치에 대해서 loss를 걸어주는 부분은 동일합니다. 핵심은 바로 네트워크로만 direct set prediction을 했을 때 생길 수 있는 matching problem에 있습니다. 이는 간단히 예시를 통해 생각해볼 수 있습니다. image가 하나 주어지고 network를 통과해서 object들의 set를 prediction 한다고 해봅시다. 당연하게도 네트워크에서 predict되는 object들의 set은 unordered일 것입니다.( 왜 set인지 생각하자 ) 즉, 네트워크가 predict한 결과 박스들에서 초록색 박스가 GT의 초록색 박스에 매칭 되어 loss가 measure 되어야 한다는 것을 전혀 알 수 없다는 것입니다. 이렇게 predict된 object들은 GT에 unordered하기에 direct set prediction을 해주기 위해서는 네트워크가 내부적으로 predict된 결과를 GT에 매칭 시켜주는 부분이 필요하다는 것입니다.
이때 서로 다른 두 가지 그룹이 존재하고 양쪽 그룹의 element가 서로 다른 그룹의 element에 연결되는 그래피를 '이분 그래프'라고 하며 이 두 그룹을 매칭 하는 것을 Bipartite Matching이라고 합니다. 결국 핵심은 다른 두 그룹 ( 여기서는 prediction set과 GT )가 있고 이 두 그룹의 요소들을 matching 시켜주는 것입니다. 본 논문에서 prediction과 ground truth를 매칭 시켜주는 부분이 필수적이기에 이러한 matching problem의 아이디어를 가져오게 됩니다.
이러한 Bipartite Matching을 해줄 때 어떻게 assignment 해주는지에 따라서 여러 알고리즘이 존재합니다. 본 논문에서는 최적의 assignment를 위해서 assignment problem에서 cost를 정의하고 cost가 가장 적게 하는 방향으로 assigment를 해주는 hungarian algorithm을 사용합니다. 이렇게 매칭이 필요한 상황에서 assignment 및 matching에 대한 내용을 loss에 녹여 hungarian algorithm에 기반해 매칭을 해주고 loss를 measure 하는 방식의 hungarian loss를 사용하고자 합니다.
조금 더 자세히 설명해보자면 크기가 N인 set을 prediction 하는 즉 N개의 prediction결과를 낼 때 prediction과 GT 두 set 사이에서의 bipartite maching을 찾기 위해서는 permutation of N 즉 N-N의 그룹을 매칭 하기 위해서 각각의 그룹의 요소들에 대해서 모든 경우의 수를 확인해봐야 한다는 것이다. 이런 bipartite matching을 위해서 저자들이 사용한 hungarian loss는 이러한 permutation of N개 각각의 매칭 될 수 있는 경우의 수에 대해서 그 상태로 매칭 됐을 때의 cost를 모든 경우의 수에 대해서 cost를 구하고 난 후 가장 cost를 작게 하는 경우로 매칭을 하겠다는 것입니다. 이때 matching을 위해 정의하는 cost값은 다음과 같습니다.
즉, Matching Cost는 간단히 1. class prediction term과 2. gt box와 preidciotn box 간의 유사도 즉 박스가 얼마나 일치하는지에 대한 bbox termd으로 정의됩니다. 결국 일반적으로 object detection을 잘하기 위해서 사용하는 loss의 구성과 유사하게 cost를 구성함으로써 네트워크 자체적으로 좋은 prediction을 하도록 학습이 되도록 하는 것이 결국은 알아서 매칭도 잘하고 예측도 잘하게 한다는 것이니 이에 맞게 bipartite matching을 하겠다는 것입니다.
이때 생각해야 할 점은 네트워크를 통해서 N개의 set을 prediction 하기에 output으로 몇 개의 set을 prediction 할지 결정해야 합니다. 그래야 GT와 Prediction을 매칭 할 수 있으니까요. 하지만, 사실 데이터셋에 존재하는 데이터들을 보면 한 이미지 내의 object개수가 천차만별이기 마련입니다. 이를 위해서 'no object' class를 가지는 GT를 만들어서 사용하게 됩니다. 즉, GT의 object가 3개인 상황에서 네트워크 자체는 N=10개를 prediction 하도록 설계되어 있다면, GT에서 7개를 no object class로 집합에서 공집합을 넣어주는 것처럼 GT set을 일종의 공집합으로 패딩을 해주어 N-N의 unique matching이 가능하도록 해줍니다. (set에서 공집합 부분으로 패딩 해주는 거 ) 또한, 추가적으로 생각해야 할 점은 N개의 prediction을 하도록 정해줄 때 N을 설정함에 있어서 데이터셋 내에서 한 이미지에서 흥미 있는 object의 최대 개수보다 충분히 큰 값을 가지도록 설정해줘야 학습이나 추후 Inference과정에서 문제가 생길 가능성이 적습니다. 따라서 저자들은 COCO dataset에 대해서 N=100으로 설정했습니다.
그렇게 train 과정에서는 forward가 될 때 prediction 된 결과가 GT와 매칭 되는 것이 선행적으로 되어야만 이 prediction object가 저 GT에 연결되는구나를 알 수 있게 되고, 이렇게 매칭이 되어야만 loss를 measure 할 수 있는 것입니다. 따라서 저자들은 먼저 이러한 matching cost에 기반해서 prediction과 GT를 매칭 시켜준 후에 이렇게 매칭 된 상태를 이용해서 loss를 measure하게 됩니다. 이렇게 매칭을 해준 후에 loss를 measure하게 함으로써 direct set prediction problem으로 풀릴 수 있게 되는 것입니다. 결국 matching까지도 알아서 해주게 하기에 direct set prediction이 되는 것입니다.
이런 맥락에서 결국 매칭 한 뒤에 사용하는 loss도 결국은 set prediction을 잘하고자 하는 매칭 상태를 찾는 cost의 설계 원칙과 목적을 같이 하기에 거의 유사한 term으로 구성됩니다. 한 가지 다른 점은 앞서도 잠깐 살펴봤지만, N을 충분히 크게 설정해주기 때문에 no object class에 해당하는 element들이 즉 공집합이 set에서 무척 많게 됩니다. 이는 class imbalance 문제를 발생하게 되기에 학습에 관여되는 loss에서는 class prediction term에 log를 붙임으로써 이러한 효과를 완화하게 됩니다. ( 물론 no object에 대한 것은 prediction에 dependent하지 않게 measure되야 하기에 constant를 부여하지만, 그래도 이런 문제가 발생할 수 있습니다. )
그래서 결국은 매칭이 기존의 detecor 방법론 들에서 사용하는 heuristic assignment rule과 비슷한 역할을 해주는 것이고, 본 논문에서는 cost에 기반하는 hungarian algorithm를 통해 매칭을 해주게 되고, 이렇게 duplicate 없이 one-to-one으로 unique 하게 매칭 된 것에 대해서 loss를 measure 함으로써 ( 비슷한 수식 사용) direct set prediction을 학습하게 됩니다. 즉, 기존의 indirect set prediction으로 풀던 anchor box를 사용하던 예시들을 살펴보면 이미지로부터 직접적으로 box의 좌표점과 class를 생성해내지 않습니다. 알고리즘마다 약간씩 다르지만 네트워크의 output은 anchor box와 predicted box의 관계를 학습하고 이를 통해서 다시 anchor로부터 드디어 box의 좌표를 만들어냅니다. (https://csm-kr.tistory.com/33) 즉, selective search나 RPN 같은 것을 통해서 anchor box라는 large inital guess set에 기반해서 candidate box들을 얻고 이로부터 다시 box coordinates와 class를 prediction 합니다. 본 논문의 cost 기반의 bipartite matching 되는 부분은 기존의 이러한 indirect방법들이 했던 anchor box들을 이용한 selective search와 같은 부분들과 유사한 역할을 해주게 됩니다. 중요한 차이점 두 가지는 본 논문에서는 one-to-one 한 unique 매칭을 하도록 해줬다는 점과 loss를 통해 학습되는 방향에 적합한 cost를 기반으로 네트워크에서 나오는 정보를 활용해 ( loss와 cost와 거의 유사하니) end-to-end로 direct 하게 이러한 역할까지 해결해줬다는 점입니다. 즉, 그냥 이러한 set prediction loss를 두고 학습시키면 잘 prediction 하도록 학습되면서 알아서 matching까지 잘해준다는 것입니다. 그렇기에 direct set prediction인 것이고요.
3.2. Transformer Architecture ( Encoder-Decoder )
이러한 direct set prediction을 풀기에 적합한 Network Architecture로 저자들은 Transformer의 Encoder-decoder아키텍처를 사용했습니다. 기존의 sequence set을 input으로 받아 output으로 내는 Transformer처럼 여기서도 set prediction을 end-to-end로 하고 있기 때문이죠. 물론 한 번에 parallel decoding을 통해 prediction 한다는 점에서 기존의 autoregressive 하게 sequence를 one by one으로 prediction 하는 Transformer와는 다릅니다.
그래서 전체 구조는 다음과 같이 backbone으로 cnn을 활용해 나온 featrue를 positional encoding을 시켜준 후에 Transformer encoder-decoder구조에 넣어 우선 encoder로 feature를 embedding 시켜주고 그렇게 embedding 된 feature를 decoder에 전달해 encoder embedding과 decoder input(learned object query)을 같이 deocder에서 parallel decoding을 해줌으로써 output으로 set을 prediction 하게 설계되어 있습니다.
https://youtube.com/clip/UgkxpfiGq20EJKnwTDdc9QVQ0LFPZfrzEZmn
그래서 결과적으로 강조되어야 할 부분은 이렇게 direct set prediction을 위해서 parallel decoding을 하는 Transformer의 구조를 잘 이해하고 사용했다는 점이다. 이제 전체 구조에서 몇 가지 세부적인 사항들을 살펴보겠다.
3.2.1. permutation invariant & positional encoding
논문을 읽어보면 permutaiton invariant라는 이야기가 계속 나오게 됩니다. 간단히 해석하자면 순서와 무관하다는 말입니다. self-attention 및 cross-attention을 떠올려 보게 되면 순서에 관계없이 같은 결과를 도출하게 됩니다. 하지만, Transformer의 기존 논문에도 적혀있듯 input으로 사용하는 정보들은 사실 각각 다른 location 정보를 가지고 있기에 이러한 location information을 알려주는 부분이 필요하다는 것이고, 이를 positional encoding이 해주게 됩니다. 그래서 기존의 Transformer 논문처럼 sin, cos으로 분해해서 해주는 spatial positional encoding을 하는 것이 일반적인 방법입니다.
본 논문의 Encoder 또한 이렇게 spatial postional encoding을 해주게 된다. 한 가지 다른 점은 처음 encoder전체의 input에만 해주는 것이 아니라 각 attention layer에 input으로 들어가게 되는 모든 곳에 positoinal encoding을 해 주게 된다는 점입니다. 이는 decoder에서도 동일합니다. decoder또한 permutation invariant한 MHSA를 사용하고 있기에 local information을 더해주는 positional encoding을 해줘야 합니다. 하지만, decoder는 input을 받아야하고 우리는 각 deocder layer에 N개의 object queries를 넣어 parallel한 decoding을 해줘야합니다. ( 즉, 기존의 autoregressive하게 output sequence의 하나씩 예측하는 방식이 아니다. ) 결국 우리의 decoder도 permutation in variant하기 때문에 N개의 input embedding이 반드시 parallel한 decoding을 거쳐 서로 다른 output results를 만들어야 한다는 것 입니다. 그러기 위해서는 이러한 input embedding에도 이들이 서로 다른 object에 대한 results를 만들어낼 거라는 구별을 해주는 정보가 필요하고 그걸 positional encoding을 통해 해주게 됩니다.
3.2.2. learned object query
하지만, decoder에서 input으로 처음에 initalization 된 각각의 object query들이 어떤 obejct를 나타낼지 그리고 어떻게 바뀔지 전혀 알 수가 없다. 그래서 네트워크가 이 또한 학습하도록 즉, learned positional encoding을 사용해주는 것입니다. input으로 그저 learned object query를 사용한다고 생각하면 되겠습니다. 그러면 그림처럼 parallel 한 decoding을 통해 각각의 object query가 서로 다른 output results(object)를 만들어내게 되는 것입니다. ( 저 그림처럼 파란색 object query는 파란색 결과를 만들어 내고 이렇게 각각의 decoder output이 FFN을 타서 bbox와 class를 prediction 하는 것이다. ) 그렇게 decoder에서 나온 각각의 decoded output 혹은 output embedding은 N개의 object queries로부터 decoding 된 결과이고 이는 각각의 FFN을 통해서 box coordinates와 class label을 prediction 하게 됩니다.
이때 learned positional encoding에 대한 직관을 하나 더 가져가자면, positional encoding을 원래 쓰는 목적대로 permutation invariant 한 input object query들 간에 서로 다르다는 것을 인식시켜주는 용도도 하는데, 학습된다는 점에서 살펴보게 되면 attention layer를 거치면서 각 object query들은 서로 간의 관계를 학습하게 될 것입니다. 그렇게 되면 데이터셋 전체의 경향성을 배우게 되고, 특정 object를 가리키게 될 query가 주로 중앙 근처에 있다던지(데이터의 경향성 학습)와 같은 특성, 경향성을 learning 하게 되고 이 object가 위치적으로 그런 경향성 및 특성을 가진다라는 것이 이렇게 positional encoding으로 해석되어 들어가니까 더 좋은 성능을 낼 수 있게 되는 것입니다. 이렇게 모든 objet에 대해서 함께 pair-wise realation을 사용하기에 model은 globally한 추론을 할 수 있게 됩니다. 즉 이미지 전체의 맥락을 고려할 수 있게 되는 것 입니다.
이때 learned objet query에 대한 몇 가지를 더 살펴보자면 앞서 이야기했듯 우리는 fixed size의 input embedding 즉 N개를 사용합니다. 앞서도 언급했듯 N개의 set을 prediction 하기에 output으로 몇 개의 set을 prediction 할지 결정해야 합니다. N은 충분히 큰 값을 사용하여 데이터의 모든 interest of objects를 포함할 수 있게 하면서 object가 없는 것들은 no object class를 GT에 추가해줌으로써 no onject로 detection 되게 해야 합니다. 이는 segmentation과 같은 task에서 back ground class를 두는 것과 비슷한 역할을 합니다.
3.2.3. Encoder-Decoder Intuition
ablation study 및 visualization을 통해서 저자들은 encoder와 decoder가 직관적으로 DETR에서 어떤 역할을 하고 있는지를 살펴보고 가설을 제시합니다. 지금부터 실험 결과들을 통해 이를 살펴보도록 하겠습니다.
Encoder
앞서도 언급했듯 encoder는 전체 image의 context를 고려하는 global scene reasoning을 하게 되는데, 이때 encoder는 disentangling objects 하는 역할을 한다고 저자들은 주장합니다. 실제로 encoder layer의 output attention map을 visualize 해보면 다음과 같이 이미지 안의 few points에 초점을 두고 있고, attnetion 하고 있고 이는 특정 object들을 잘 구분하고 있다. 확실히 서로 다른 object들이 잘 구분되도록 disentangling 하는 모습을 attention map을 통해 확인할 수 있으니, Encoder가 disentangling objects를 학습한다는 것입니다.
Decoder
디코더도 인코더와 마찬가지로 예측된 object 각각의 attention map을 시각화해보게 되면 encoder에서 확인했던 attention에 비해서 비교적 local 하고 haed나 legs와 같은 object의 극단( ex) 사람 기준 사지 - 손 끝, 다리 끝 등) 혹은 끝 쪽에 해당하는 부분에 집중하고 있는 것을 확인할 수 있습니다. 이를 통해서 저자들은 인코더에서 global 한 정보에 집중해 이미 잘 분리된 instances에 대한 정보를 가지고 있는 상태에서 decoder가 더 명확한 objet detection을 위해서 object 바운더리나 class prediction에 집중하게 해 줌으로써 더 정확한 objet detection을 하도록 해준다는 점을 주장합니다.
앞서 살펴봤던 encoder의 attention map을 visualization 한 것을 보면 어느 정도 object를 잘 구분하고 있지만, 그 경계가 명확하지는 않습니다. 즉 global 한 관점에서 disentangling objects를 하고 있지만( 대략적으로 구분을 하고 있지만 ), fine 하고 local 하게 각 object에 대해서 명확히 예측하지는 못하고 있습니다.(정확히 둘의 경계를 구분하지는 못하고 있다.) 그 부분을 decoder에서 해결해주면서 추가적으로 class를 잘 구분하기 위한 정보까지 고려하고 있는 것입니다. 실제로 attention 결과를 보면, 두 코끼리를 구분하기 위해서 두 코끼리의 경계 쪽에 attention 된 것을 볼 수 있습니다. 특히 주황색 attention을 잘 살펴보면 파란색과 구분하기 위해서 둘의 경계인 작은 코끼리의 등 쪽에 집중된 모습을 볼 수 있습니다. 또한, 코끼리라는 class로 잘 prediction 하기 위해서 코끼리 클래스의 특징인 코나 꼬리 같은 쪽에 attention 된 것 또한 볼 수 있는 것입니다.
4. Experiments
추가적으로 실험을 통해서 확인한 몇 가지 결과들을 살펴보겠습니다.
4.1. NSM vs No-NMS ( No-duplicate DETR )
DETR은 NMS 사용이 필요 없지만 NMS 없이도 no duplicates 하게 좋은 모델이라는 것을 보이기 위해서 NMS를 매 decoder layer 뒤에 넣어 성능을 비교해봤습니다. 초기 decoder layer에서는 NMS가 좋은 결과를 가져오지만, 결국 마지막 decoder layer까지 가게 될 경우 NMS를 사용하나 안 하나 성능적으로 거의 차이가 없다는 것입니다. 즉, NMS는 depth가 깊어질수록 효과가 감소하게 되고, 마지막 layer에서 결국 NMS를 사용하는 것은 큰 의미가 없기에 필요 없다는 것입니다.
결국 NMS 없이도 충분히 no-duplicate한 예측을 할 수 있고, NMS를 사용하지 않더라도 성능적으로도 준수하기에 DETR이 충분히 좋은 모델이라는 것입니다.
4.2. Insights ( by technical details )
추가적으로 저자들이 실험하면서 얻을 수 있었던 techincal detail과 관련된 몇 가지 인사이트 들을 간단히 정리하겠습니다.
- DETR에서 뿐만 아니라 종종 사용되는 Trick으로 Backbone에서 learning rate를 detecotr나 segmentor보다 더 낮게 가져가는 트릭 ( pretrained backbone이 너무 많이 바뀌는 것은 오히려 부적절한 영향을 주기에 )
- 당연한 얘기지만, resolution을 크게 가져갈 수 있는 learning trick은 small object detection의 performance를 향상한다.
- DETR은 확장성이 좋은 모델이다. 현 모델 구조에 Segmentation head만 붙임으로써 Instance Segmentation까지 가능하게 할 수 있다는 것이다. (자세한 것은 논문을 참고)
- AP 관점에서는 unique matching이 되는 detection보다는 오히려 엄청 많은 box들을 그리는 것이 성능에 도움이 된다는 직관을 고려할 때 DETR은 AP관점에서 떨어져 보일 수 있는데, 저자들은 이러한 문제는 no object로 예측하는 결과들을 no object class가 아닌 second highest scoring class로 override 해서 예측하게 함으로써 AP관점에서도 최적화를 할 수 있게 할 수 있다.
- Transformer는 전형적으로 Adam, Adagrad 같은 optimizer를 사용하고 dropout과 long training schedule을 가져간다.( inductive bias) 반면 Faster R-CNN 같은 모델의 경우 Adam이나 dropout을 사용하는 경우 오히려 별로였고, SGD와 minimal data augmentation을 하는 것이 좋았다.
- encoded layer의 개수를 점진적으로 늘릴수록 성능은 개선된다. 다만 효율성 측면에서 좋은지는 상황에 맞게 재고해봐야 한다.
4.3. comparison of Faster R-CNN
결과적으로 저자들이 제시한 DETR은 기존의 베이스라인으로 설정했던 well-optimized Faster RCNN과 비교해 봅니다. 결과는 다음과 같습니다. 비슷한 파라미터 수를 가지는 모델과 비교해볼 때 DETR은 FPN 같은 small object 등에 적합한 구조를 추가하지 않았음에도 아주 기본적인 DETR만으로도 Faster RCNN과 유사한 성능을 보인다는 것입니다. 하지만, DETR은 자체적으로 Large object에 대한 성능은 상당히 좋지만, ( + 7.7 ) Small object에 대한 성능은 상당히 떨어지는 것을 볼 수 있습니다. ( -6.1) 하지만, 저자들은 제시한 DETR은 아주 베이식한 것으로 개선될 여지가 너무너무 많고 기존의 것들을 가져다 쓰더라도 성능이 훨씬 오를 것임을 확신한다. 그럼에도 불구하고 설정된 hand-designed comopnents가 매우 많이 들어간 복잡한 파이프라인을 가지는 indirect 한 detector와 대등하거나 살짝 더 높은 성능을 보여주는 것을 볼 때 추후 Object Detection task에서 매우 좋은 연구 방향성을 제시해줄 수 있는 논문인 것이다.
5. Conclusion
개인적으로 DETR은 Transformer를 정말 잘 이해하고 사용한 논문이라고 생각한다. 또한 Set Prediction problem이 사용될 수 있을 만한 task가 정말 많은데, 이러한 task들에서 DETR의 set prediction loss와 encoder-decoder architecture는 정말 활발히 사용될 수 있을 것 같다. 결국 DETR은 이렇게 Direct Set Prediction의 관점으로 봄으로써 기존의 complex 하고 hand-designed comoponents들로 가득한 detector들보다 구조적으로나 성능적으로나 꽤나 좋은 contribute를 했다는 점에 주목할만할 것 같다. 앞서도 언급됐지만 이러한 DETR은 무적 basic 한 구조를 처음 제시한 것이기에 추후에 더 많은 방향으로 연구될 가능성을 담고 있다고 생각한다. 실제로 Sparse DETR, Deformable DETR 등 많은 후속 연구들이 나온 것이 이를 증명한다. 앞으로도 충분히 개선 여지 및 활용 여지가 많은 잘 쓰인 논문이었던 것 같다.
References
https://www.youtube.com/watch?v=utxbUlo9CyY
https://powerofsummary.tistory.com/205
https://velog.io/@gjghks950/DETR-End-to-End-Object-Detection-with-Transformers-Review