[ECCV 2020]End-to-End Object Detection with Transformers(DETR)

안녕하세요. 조현석 연구원입니다.

오늘은 End-to-End Object Detection with Transformers이란 논문을 가져왔습니다. DETR이라는 모델의 이름으로 유명한 해당 논문을 x-review로 작성하게 된 계기는 연구실 세미나, 특히 다양한 이미지 데이터를 함께 활용하는 멀티 모달 관련한 논문에서 DETR을 통해 visual entity를 뽑는 과정을 선행하는 경우가 많은데요. 대부분 “DETR로 이미지 상에 존재하는 객체에 대한 정보를 뽑습니다”하고 간단한 언급만 해주시고 넘어가셔서 도대체 DETR이라는 녀석이 무엇인데 이것으로 객체를 탐지한다는 것이지? 라는 단순한 호기심에 찾아보게 되었습니다. 그럼 x-review 시작하겠습니다.

기존의 전통적인 컴퓨터비전의 OD과 다르게 DETR은 OD문제를 direct set prediction problem으로 정의하였는데요. 즉, OD파이프라인에서 우리의 사전지식이 가미된 hand-designed components들인 NMS과정, 사전 엥커나, 사전 그리드를 생성하는 과정을 제거한 것입니다. 마치 NMS과정을 통해서 한 객체 마다 하나의 BBox예측을 만들어야 한다든지, 사전에 특정한 비율로 정의된 엥커박스를 정의하는 등의 행위를 OD을 수행하기 위해서 모델 스스로가 아닌 사람의 사전지식을 주입되는 것으로 규정하고 이를 이겨내 완전한 end-to-end 검출을 하려는 시도를 하였습니다.

저자들은 트렌스포머의 인코더-디코더 구조와 이분 매칭(bipartite matching)을 통한 유일한 예측을 강제하는 손실함수를 사용하였습니다. 그리고, 주어진 고정된 학습된 객체 쿼리의 집합을 통해서 DETR은 객체들과 이미지의 전역적인 문맥을 추론하고, 다른 처리 과정없이 바로 병렬적으로 최종 예측 집합을 추론하게 됩니다.

위와 같은 방식으로 작동하는 DETR은 기존의 OD파이프라인에서 사용하는 여러가지 처리에 대한 부분을 소거해서 단순화 시켰습니다.

이분 매칭에 대해서 간단하게 설명드리자면,

두 집합 A, B에 속한 각각의 점들이 타 그룹의 점들과 1:1로만 연결될 수 있는 상태에서 최대한 많은 edge를 만들어내는 알고리즘입니다. 각 A집합의 점 마다 B집합과에서 매칭될 수 있는 점들이 위의 이미지의 점선으로 표시되어있습니다. 이때 어떻게 연결하느냐에 따라 특정점은 매칭이 만들어지지 못 할 수 도 있습니다. 예를 들어서 A그룹의 (위에서부터) 2번, 4번 점이 각각 B그룹의 5번, 4번 점을 점유한다면 A그룹의 5번 점은 연결할 수 있는 매칭이 없게 되는 것 입니다. 이런 조건 속에서 가장 많이 연결되고 그때의 edge 개수를 구하는 것이 이분 매칭이 하고자 하는 바입니다.

이분 매칭 알고리즘에 대한 내용은 아래의 포스팅 자료를 참고해주시길 바랍니다.
https://m.blog.naver.com/jihwanmoon0319/223005133812

본 논문에서는 위의 이분매칭 알고리즘에서 하고자 하는 것을 동일하게 진행합니다. 다만 조금 다른 점은 두 집합 A, B에 속한 각각의 점들이 상대 집합을 구성하는 모든 점과 연결될 수 있고 두 집합의 점의 수가 동일하여, 결국에 두 집합 원소 간의 일대일 대응이 완성된다는 점입니다. 이는 DETR이 기존 검출기에서 필수적으로 사용하던 NMS를 대체하는 주요 방법론으로 응용됩니다.

마지막으로 저자들은 DETR을 MSCOCO OD Dataset으로 평가하였고, 정확도와 추론속도 측면에서 잘 최적화된 Faster R-CNN과 유사한 성능을 보였다고 합니다. 그럼 리뷰 시작하겠습니다

1. Introduction

OD 테스크는 모든 분들이 잘 아시다시피 이미지 상에 관심있는 객체의 집합에 대한 위치와 카테고리로 구성된 집합을 예측하는 것을 목표로 합니다. 본 논문이 작성된 시점 2020년도를 기준으로 대부분의 검출기들은 이러한 위치와 카테고리 집합에 대한 예측을 곧바로 수행하는 것에 한계가 있었다고 합니다. 그래서 OD을 사전에 정의된 anchors나 window centers 혹은 RPN를 거쳐서 나온 수많은 proposal들에 대한 회기, 분류 문제로 대신 정의해서 풀고 추가적인 처리를 하는 방식을 택했습니다.

이러한 방식이 사전에 정의된 앵커, 윈도우센터, 혹은 RPN에서 제공하는 수많은 proposal들에 대해서 모두 예측을 수행할 것을 강제했기 때문에, OD로 풀고자 하였던 객체에 대한 예측 외에도 수 많은 잉여 예측들을 할 수 밖에 없었습니다. 따라서, 검출기의 성능은 이런 불필요한 예측을 거르기 위한 NMS라든가, 학습 시 각 엥커마다 타겟 BBox를 어떻게 할당하는 지 등의 전처리 단계에 큰 영향을 받았습니다.

저자들은 이러한 기존의 파이프라인을 단순화시키기 위해서 사전에 정의된 앵커, 윈도우센터, 혹은 RPN에서 제공하는 수많은 proposal에 대해서 위치와 카테고리를 예측하고, 후처리를 통해서 객체에 대한 예측을 속아내는 방식이 아닌, 다이렉트로 객체에 대한 예측을 하는 방식을 모델링 했다고 합니다.

이러한 end-to-end 방식으로 추론하는 모델은 복잡하게 구조화된 예측 테스크들, 가령 machine translation 혹은 speech recognition 등에 적용하여 큰 진보를 이룬 이력이 있다고 하는데요. 저자들은 이런 타 테스크에서 성공을 바탕으로 OD분야에도 이와 비슷한 접근 방식을 취하려는 시도를 합니다.

즉, 저자들은 OD를 곧바로 물체에 대한 위치와 카테고리로 구성된 집합을 예측하는 문제로 정의하였습니다. 또한 베이스 아키텍쳐로 트렌스포머의 인코더-디코더 구조를 가져왔습니다. 트렌스포머의 스퀀스 내부의 모든 대응 쌍에 대한 상호작용을 모델링하는 방식인 self-attention mechanism을 이용하여 동일한 객체에 대한 중복 예측 제거처럼, 집합 예측의 특정 제약 조건에 특히 적합하게 만듭니다.

나중에 더 설명드리겠지만, 디코더 단에서 예측 집합을 만들기 위해서 물체의 예측을 수행하는 N개의 객체 쿼리들끼리 self-attention 연산을 적용하여 예측들 간의 관계를 고려하여 서로 다른 예측을 하도록 유도하기 때문입니다.

Figure 1은 DETR(DEtection TRansformer)의 전체적인 프레임 워크를 축약하여 묘사하고 있는데요. DETR은 이미지 내의 모든 물체를 한번에 예측합니다. 그리고, 집합 손실함수(a set loss function)를 통해서 end-to-end방식으로 학습합니다. 이 집합손실 함수를 계산하는데 있어서, 예측과 정답 사이의 이분 매칭(bipartite matching)을 수행한다고 합니다. 또한 DETR은 OD 파이프라인의 단순화를 위해서 다양한 사람의 사전지식이 들어가 있는 구조들을 제거하였습니다. 이런 단순한 구조와 사람의 사전 지식으로 최적화 해야 하는 요소들(예를 들어서, NMS의 하이퍼파라미터 설정 혹은 SSD의 사전 정의된 anchors에 대한 크기 및 종횡비 등의 요소등이 그 예시가 될 수 있겠네요.) 을 제거한 덕분에 DETR은 CNN과 트렌스포머로 구성된 다양한 프레임워크에 손쉽게 적용되고, 녹아들 수 있다고 하네요. 이런 점이 멀티 모달 논문에 visual entity를 뽑기 위한 검출기로서 DETR이 적합했던 요소지 않았을까? 라는 생각을 해봅니다.

또한 기존의 direct로 예측을 진행하는 사전 연구들이 진행이 되었다고 하는데요, 해당 연구들과 본 연구가 다른 점은, 바로 이분 매칭 손실함수(bipartite matching loss)를 사용했다는 점과 병렬적 디코딩(parallel decoding)을 수행했다는 점인데요. (기존에는 auto-regressive한 방식으로 순차적인 디코딩을 수행했다고 하네요)

특히나 이분 매칭 손실 함수를 사용함으로서, 하나의 예측과 그것에 대응 되는 하나의 정답 물체가 매칭이 이루어질 수 있었고, 이러한 예측과 정답에 대한 일대일 매칭은 예측 물체의 permutation에 대해서 불변하는 성질을 띄기 때문에, 예측을 병렬적으로 수행할 수 있었다고 합니다.

또한 추가적으로 검출기의 안정적인 예측을 위해서 예비디코딩 손실함수(auxiliary decoding losses)를사용한다고 합니다. 이후에 각각이 리포팅된 성능에 어떤 영향을 미치는 지에 대한 실험을 추가적으로 수행했다고 하니 뒤에서 더 설명드리겠습니다.

introduction이 길어졌는데요… 간단하게 Method로 넘어가기 전에 주목 할만한 Related work에 대해서 소개하겠습니다.

2. Related work

주목 할만한 Related work를 소개하자면, 병렬 추론과 베이스 아키텍쳐의 기반 연구인 transformer and parallel decoding에 대한 연구를 소개시켜드리겠습니다.

2.2 Transformers and Parallel Decoding

해당 related work에서 주목할 점은 machine translation에서 트렌스포머인데요. 처음에는 현재시점의 출력에 대한 토큰을 바로 이전 시점의 출력에 대한 토큰으로 입력받아 생성하는 방식인 auto-regressive 한 방식으로 추론하였다고 합니다. 그러나 출력에 대한 토큰을 순차적으로 예측해야 함에 있어서 출력 길이가 길어지면 그 길이에 비례하여 추론시간이 늘어났고, 앞선 출력에 대한 예측이 오류가 있다면 이후에 나오는 출력 토큰에 대한 것들도 오류를 야기하는 문제가 있었다고 합니다. 이런 문제를 해결하고자 auto-regressive한 방식이 아닌, 병렬적으로 디코딩(parallel decoding) 방식으로 변형 적용되었다고 합니다. 저자들은 이런 사전 연구를 기반으로 OD을 위한 set prediction 테스크를 병렬적으로 수행하는 방식을 채택했다고 합니다.

3. The DETR Model

즉각적인 검출 집합을 예측하는 데 중요한 두 가지 요소는 (1).예측 박스와 정답 박스를 유일하게(unique) 매칭 시키는 것을 가능하게 해주는 집합 예측 손실 함수(**a set prediction loss)**와 (2).이미지 상에 존재하는 물체들의 집합을 예측하고 그들의 관계를 모델링 해주는 신경망 구조입니다.

먼저 object detection set prediction loss에 대해서 설명드리겠습니다.

3.1. object detection set prediction loss

DETR은 디코더에서 N개의 예측으로 고정된 크기의 대한 집합을 추론합니다. 여기서 N이라는 숫자는 한 이미지를 보고 생성한 예측의 숫자로 한 이미지 등장하는 물체의 수보다 훨씬 큰 숫자를 상정합니다. 이렇게 고정된 숫자의 집합을 생성했을 시, 학습 어려움을 주는 요소는 바로 정답에 대한 예측을 평가하는 일이었다는데요. 저자들은 손실함수 계산을 위해서 총 두 단계로 스텝을 나누게 됩니다. 먼저, 저자들이 제안한 이분 매칭 손실함수가 예측 물체와 정답 물체 사이의 최적의 이분 매칭 조합을 만들도록 합니다. 그 다음에 형성된 최적의 이분 매칭에 매칭된 예측, 정답 물체 사이의 object-specific한 손실함수(pair-wise loss)를 최적화 하는 방향으로 학습을 진행합니다.

수식적으로 설명을 드리자면, y를 정답물체의 집합, \hat{y}=\hat{[y_{i}]}^{N}_{i=1}을 N개의 예측으로 이루어진 예측집합이라고 한다면(N은 한 이미지상에 존재하는 물체 수 보다 훨씬 큰 수), 먼저 정답 물체의 집합 y\varnothing(no object)로 패딩을 넣어서 동일하게 N개로 이루어진 집합 만들어줍니다. (예측과 정답이 일대일 매칭이 되도록)

그리고, y집합과 \hat{y}집합 사이의 이분 매칭을 찾기 위해서, N개의 요소를 순서를 바꿔가면서(permutation) 탐색합니다.

여기서 \mathfrak{S}_{N}은 집합을 구성하는 N개의 요소의 순서를 바꿀 때, 가능한 집합의 조합이 되겠습니다.

그 다음 수식(1)을 통해서 \mathfrak{S}_{N}의 조합 중에 cost를 최소로 만드는 조합에 해당하는 집합인 \hat{\sigma}을 선택하게 됩니다.

수식(1)을 좀 더 자세히 설명드리자면,

수식 (1)에서 L_{match}(y_{i}, \hat{y_{\sigma(i)}})는 앞서 언급했던 pair-wise matching cost로 매칭된 정답(y_{i})과 \sigma{(i)}인덱스에서 정답(y_{i})과 매칭된 예측(\hat{y}_{\sigma{(i)}})사이의 손실함수 값에 해당합니다. 이 손실함수값은 카테고리 예측에 대한 텀과 예측 박스와 정답 박스의 유사도에 관한한 텀으로 구성할 수 있습니다.

더 세분화 하자면, 정답 집합의 i번째 요소는 y_{i} = (c_{i}, b_{i})로 표현될 수 있는데 c_{i}는 정답 카테고리 라벨(no object 패딩에 관한 라벨은 \varnothing)이고, b_{i}\in{[0,1]^{4}}는 정답 바운딩 박스로 주어진 이미지 사이즈에 대하여 0~1사이로 노멀라이즈된 중심값, 높이, 너비(cx, cy, w, h)로 구성된 벡터가 되겠습니다.

그리고 \sigma{(i)}번째 인덱스의 예측에 대해서 카테고리가 c_{i}일 확률을 \hat{p}_{\sigma{(i)}}(c{i})라고 하고, 예측 박스를 \hat{b}_{\sigma(i)}라고 한다면, 매칭된 정답과 예측 간의 손실함수인 L_{match}(y_{i}, \hat{y_{\sigma(i)}})를 아래의 수식처럼 정의할 수 있습니다.

일단은 매칭된 정답이 no object 패딩 일 때는 계산에서 제외하고, 만약 매칭된 정답이 객체인 경우, 해당 정답의 클레스일 확률과 정답 박스와 예측 박스 사이의 L_{box}를 계산하는 것을 알 수 있습니다. 여기서 언급된 L_{box}는 뒤에서 더 자세히 다루도록 하겠습니다.

결국 이런 방식으로 매칭된 예측끼리의 손실함수 값을 최소화하는 방식으로 최적의 매칭 조합을 찾을 수 있고, 이것이 기존의 검출기들이 매칭을 찾는 휴리스틱한 과정(예를 들자면, SSD에서 학습을 위한 positive pair를 찾기 위한 anchors와 예측 박스 사이의 IoU 0.5를 기준으로 판단을 하는 것들)과 동일한 역할을 수행하는 부분이 되겠습니다.

수식(1)을 통해서 \mathfrak{S}_{N}의 조합 중에 cost를 최소로 만드는 조합에 해당하는 집합인 \hat{\sigma}를 찾았으니, \hat{\sigma}에 해당하는 조합의 매칭된 예측, 정답 쌍에 대해서 손실함수를 계산하여 학습의 supervision을 주게 되는데요.

이전 연구를 토대로 아래 수식(2)와 같이 카테고리 예측에 대한 negative log-likelihood와 box loss의 선형 조합으로 나타낼 수 있는 Hungarian loss를 풀어준다고 하네요.

위의 수식에서 \hat{p}_{\hat\sigma{(i)}}(c{i})\hat{b}_{\hat\sigma(i)}는 각각 \hat{\sigma}의 조합에 대해서, 예측 카테고리가 c{i}일 확률과 예측 박스 벡터에 해당합니다.

앞서 소개 드린 수식(1), 수식(2)에 해당하는 두 가지 손실함수에서 공통적으로 예측박스와 정답박스 간의 L_{box}를 계산하는 것을 볼 수 있는데요. L_{box}(.) 연산은 바운딩박스에 대해서 평가를 하는 손실함수에 해당합니다. 아래의 수식을 통해서 계산해준다고 하네요.

기존의 검출기는 초기에 정해진 앵커 등을 기준으로 상대적인 박스들을 위치를 예측하게 되는데요. (URP때를 떠올려보면, SSD에서도 gcxgcy 형태로 초기 앵커를 기준으로 예측한 박스가 얼마나 cx, cy, w, h 방향으로 차이가 존재하는 지를 예측을 했던 것을 생각할 수 있습니다. ) 그러나 DETR은 곧바로 예측 박스를 만들어내기 때문에 예측 치로 상대적인 값이 아닌 해당 박스의 절대적인 값을 예측하게 됩니다. 따라서 박스에 관하여 L1 distance 기반의 손실 함수를 취한다면 큰 박스에 대한 예측과 작은 박스에 대한 예측 간의 손실 값의 스케일 차이가 존재할 수 밖에 없습니다.

이러한 부분을 조금 완화해주고자 일반화된 IoU 손실함수를 함께 사용한다고 합니다. 해당 IoU 손실함수는 박스 스케일에 불변하는 IoU를 기반으로 손실 값을 계산하여 스케일에 의해 발생하는 손실 값의 차이를 줄여주는 역할을 해준다고 합니다.

\lambda_{iou}, \lambda_{L1}은 일반화된 IoU 손실함수와 L1 손실함수를 반영 비율을 결정해주는 하이퍼파라미터 값에 해당합니다. 그리고 최종적으로 배치단위의 학습을 진행할 때, L_{box}를 배치 내에 존재하는 물체의 숫자로 나누어 노멀라이즈한 상태로 학습 시그널을 제공한다고 하네요.

3.2. DETR architecture

이제 본격적인 DETR 아키텍쳐에 대한 설명인데요. 위의 Figure 2.를 참고해주시면 감사하겠습니다.

본 모델은 크게 3가지의 요소로 구성됩니다. 그 구성은 굉장히 단순한데, (1) raw 이미지로부터 특징을 추출하기 위한 CNN backbone, (2) 인코더-디코더 구조의 트렌스포머, (3) 최종 검출 예측을 수행하기 위한 feed forward network로 각각에 대해서 알아보겠습니다.

3.2.1. CNN-backbone

(1) 먼저 CNN-backbone의 이야기입니다. 단순히 3채널 컬러 이미지 x_{img}\in{\mathbb{R}^{3\times{H_{0}\times{W_{0}}}}}를 받아서, 더 낮은 차원의 특징맵 f\in\mathbb{R}^{C\times{H}\times{W}}을 생성합니다.

일반적으로 C=2048, H,W={H_{0}\over{32}},{W_{0}\over{32}}의 값을 갖는다고 합니다.

3.2.2. Transformer Encoder-Decoder

그 다음으로 트렌스포머 인코더구조 입니다. CNN-backbone에서 생성한 특징맵 f\in\mathbb{R}^{C\times{H}\times{W}}를 1×1 conv를 태워서 채널축에 대해서 더 작은 값인 d를 갖는 특징맵 z_{0}\in\mathbb{R}^{d\times{H}\times{W}}를 만들어줍니다.

그리고, 트렌스포머 인코더는 스퀀스를 인풋으로 받기 때문에 특징맵 z_{0}를 채널축은 그대로 두고 공간축(spatial dimension)을 2차원에서 1차원으로 쭉 펴줍니다. 즉, z_{0}\in\mathbb{R}^{d\times{H}\times{W}}에서 z_{0}\in\mathbb{R}^{d\times{H}{W}}로 만들어줍니다. 이로서 z_{0}d개의 HW차원의 벡터들의 시퀀스로 만들어서 인코더를 태웁니다.

각 인코더 레이어는 multi-head self-attention(MHSA)과 feed forward network(FFN)로 구성된 기본 트렌스포머의 구조를 따라가고, 각 레이어의 입력마다 위치에 대한 인코딩인 positional encoding을 해준다고 합니다.

인코더 이후에 디코더를 태우는데요. 인코더와 동일하게 디코더도 기본 트렌스포머의 구조를 따라간다고 합니다. 총 N개의 예측을 수행하기 위해서 디코더의 인풋으로 N개의 객체 쿼리(object query)가 제공되는데요. N개의 서로 다른 예측을 수행해야하므로 이 객체 쿼리들은 서로 달라야 합니다. 따라서 이런 입력 쿼리는 사전에 학습된 위치 인코딩으로 사용한다고 합니다.

제공된 입력 쿼리들은 디코더 레이어를 거치면서 출력 임베딩으로 변환됩니다. 그러는 과정에서 임베딩들 간에 셀프 어텐션 및 인코더-디코더 어텐션을 사용하여 이미지 전체에 대한 관계 뿐만 아니라, 각 레이어의 예측들 간의 관계를 모델링 할 수 있다고 합니다. 특히 디코더 단의 셀프 어텐션이 N개의 물체의 예측에 대한 쿼리끼리 관계를 계산하여 이미지 상의 객체마다 유일한 예측을 하도록 돕는다고 합니다.

3.2.3. Prediction Feed-Forward Network(FFNs)

마지막으로 최종 예측을 위해서 hidden dimension이 d, 각 층을 ReLU activation으로 구성한 3개의 층의 다층 퍼셉트론에 태웁니다. 이 FFN은 인풋 이미지를 기준으로 한 노멀라이즈 된 박스의 중심과 높이, 너비(cx, cy, w, h)를 예측하고, softmax함수를 사용해서 카테고리 라벨도 예측하게 됩니다.

이미지마다 앞서 언급한 총 N개의 예측으로 이루어진 집합을 예측하게 되고, 물체가 아닌 것의 카테고리는 일반적인 검출기에서 “background”역할과 유사한 \varnothing(no object)로 예측하게 됩니다.

3.2.4. Auxiliary Decoding Losses

추가적으로 저자들은 학습 시에 디코더가 올바른 숫자의 물체들을 추론하는 데 도움을 주는 auxiliary Losses를 각 디코더 출력마다 적용하였습니다.

적용한 방식을 설명 드리자면, 모든 디코더 레이어의 출력에 대해서 파라미터를 공유하는 FFNs 배치해서 추론을 하도록 만들고, 그 추론들을 통해서 Hungarian Loss를 계산하도록 한 것 입니다. 또한 파라미터를 공유하는 FFNs의 인풋에 동일한 분포를 갖는 인풋을 넣어주고자, FFNs 앞에서 shared layer-norm을 적용해주었다고 합니다.

4. Experiments

저자들은 DETR을 COCO dataset에 대해서 평가를 진행하였고, Faster R-CNN baseline과 유사한 성능을 보였다고 합니다.

또한 모델 구조와 목적함수에 대한 ablation study와 정량, 정성적인 평가를 제공하였는데요. 그것 이외로 DETR이 이식성이 좋고 확장 가능한 모델임을 보여주기 위해서, DETR의 파라미터는 고정시켜두고 추가적으로 조금 학습한 모델로 panoptic segmentation을 수행한 결과를 리포팅하고 있습니다.

먼저, 데이터셋으로 COCO2017 detection and panoptic segmentation 데이터셋을 사용하였고요. 평균적으로 한 이미지당 7개의 객체가 존재하고 최대 63개의 객체가 존재하는 이미지로 구성 되어있다고합니다. 또한 객체의 크기에 따라 small, Medium, large로 분류있다고 하네요.

평가 매트릭으로 나오는 AP는 bbox에 대한 AP을 의미합니다.

4.1. Comparison with Faster R-CNN

먼저 Faster R-CNN과 DETR의 성능비교에 대한 실험입니다. 해당 실험에선 Faster R-CNN과 DETR간의 구조적 차이로 인해서 모든 옵티마이져, 각각에 최적화된 하이퍼파라미터 등을 완벽히 맞춰주지는 못했지만, 두 모델을 최대한 동일한 환경에서 학습시키고자, DETR에서 사용되는 일반화된 IoU 목적함수를 Faster R-CNN의 box Loss에 추가하고, 동일한 random crop augmentation을 사용하는 등의 노력을 했다고 합니다. 또한 각 모델이 최적의 학습을 할 수 있도록 충분한 학습을 진행시켰다고 합니다.

위에 Table 1.을 보시면, Faster R-CNN의 계열과 DETR계열의 COCO val 데이터셋에서 GFLOPS/FPS, 파라미터 수, AP성능 들을 보여줍니다. 가장 상단 섹션은 Faster R-CNN의 계열들의 성능을 리포팅하고 있는데요. 모델 중 DC5가 붙은 모델은 특징맵의 해상도를 늘리기 위해서 첫 번째 Conv에서 stride의 효과를 제거하고, 마지막 Conv는 dilation conv를 사용한 모델을 의미합니다. 그리고, FPN을 추가적으로 사용한 모델이 두 번째에 위치하고 있습니다. 마지막으로 R101이 붙은 모델은 CNN backbone으로 ResNet50이 아닌 ResNet101을 추가로 사용한 모델이 되겠습니다.

중간 섹션은 상단 섹션의 Faster R-CNN 모델들과 동일한 구조이지만, box loss에 일반화된 IoU loss를 추가한 경우에 해당합니다.

마지막 섹션은 여러 DETR 모델의 결과를 나타냅니다. 베이스라인인 DETR은 6개의 인코더와 6개의 디코더 레이어를 가지며, 8개의 어텐션 헤드를 가지고 있다고 합니다.

DETR은 COCO val 데이터셋에서 42AP를 달성했는데요. DETR이 이를 달성하는 방법은 큰 객체에 대한 AP인 AP_{L}에서 +7.8만큼 개선하는 것이지만, 작은 객체에 대한 AP인 AP_{S}에서는 -5.5만큼 뒤처진다는 점 또한 주목해야 할 부분이라고 합니다.(해당 수치는 DETR과 유사한 파라미터 수를 갖고, GIoU 손실함수를 사용한 Faster RCNN-FPN+와 비교한 성능인 것 같은데, 수치가 표와는 맞지 않아서 의아한 상태입니다…)

이는 단순히 backbone의 차이로, 특징을 추출하는 방식이 CNN으로 구성된 conv연산이냐, 트렌스포머의 SA연산이냐의 차이로 저자는 분석하고 있습니다.

마찬가지로 유사한 매개변수 수와 비슷한 FLOP 수를 가진 DETR-DC5는 더 높은 AP를 가지지만, 역시 AP_{S}에서는 상당히 뒤처져 있습니다. ResNet-101 백본을 사용한 Faster R-CNN과 DETR 또한 유사한 결과를 보여줍니다.

4.2. Ablation study

저자들은 트렌스포머 디코더에서 적용된 어텐션 메커니즘이 다른 N개의 예측들 사이의 특징 관계들을 모델링하는 중요한 요소라고 언급하고 있는데요. 이것 외에도 아키텍쳐의 서로 다른 요소들과 손실함수들이 최종 검출 결과에 어떠한 영향을 주는 지 알아보기 위해서 ablation study를 진행했다고 합니다.

ablation study를 위한 성능들은 모두 10epoch를 돌린 후, validation set으로 추론한 것에 대한 성능들이라고 입니다. 또한 사용한 DETR모델은 ResNet-50-based를 CNN backbone으로 사용하고 6개의 인코더 층, 6개의 디코더 층, 임베딩 차원을 256으로 한 트렌스포머를 사용하였다고 합니다. 해당 모델은 41.3M의 파라미터를 가지고 있고, 각각 short schedules와 long schedules에서 40.6 AP, 42.0 AP의 성능을 보였다고 합니다.

4.2.1. Numer of Encoder Layers

첫 번째 ablation study는 몇 개의 인코더 층을 쌓아야 하는가?에 대한 Ablation입니다.

먼저, 표에서 인코더 층을 하나도 사용하지 않은 경우는 ablation base모델로 사용한 6개의 인코더 층을 사용한 모델에 비해서 overall AP는 3.9 정도 떨어지는 것을 확인 할 수 있습니다. 특히, 객체 중 큰 물체에 대한 성능인 AP_{L}의 성능이 6.0 포인트나 떨어지는 것을 확인 할 수 있습니다. 이를 통해서 인코더 구조의 MHSA을 통한 전역 추론이 이미지의 대부분(전역부위)을 차지하는 큰 물체를 모델링하는 데 꼭 필요하다는 결론을 냈습니다. 그것에 대한 정성적인 근거로 아래 Figure 3을 제공하였는데요.

해당 그림은 학습된 DETR의 마지막 인코더의 attention map을 히트맵 형식으로 시각화 한 것인데요. 각 화살표로 연결된 attention map이 각 object쿼리가 들어갔을 때, 해당 쿼리에 대한 attention map을 보여줍니다. 인코더 단에서 이미 배경과 전경에 대한 분리는 당연하고 각 객체에 대한 분리까지 하고 있는 것을 확인 할 수 있습니다.

또한, 0→3→6→12로 인코더 층을 늘려감에 따라서 AP성능이 점진적으로 상승하는 것을 볼 수 있습니다. 그런데, 작은 물체에 대한 성능은 6개 정도에서 더 이상 상승하지 않고 수렴하는 양상을 보여주네요.

4.2.2. Number of Decoder Layers

두 번째 ablation study는 몇 개의 디코더 층을 쌓아야 하는가?에 대한 Ablation입니다.

저자들은 기본 DETR모델의 6개의 디코딩 레이어 중에서 1번 ~ 6번 레이어를 통과하고 나온 출력에 대해서 auxiliary losses를 적용하고, 모든 디코딩 레이어의 출력들에 대해서 객체를 추론하였는데요.

아래 Figure 4.는 각 디코딩 레이어에 대해서 객체를 예측하도록 한 뒤, 그것을 평가하여 각 디코딩 레이어의 중요성을 분석한 것입니다.

평가는 AP와 AP50으로 진행하였습니다. 또한 DETR의 설계부터 NMS가 필요 없도록 설계되었으나, 그 타당성과 당위성을 증명하고자 기본 하이퍼파라미터로 세팅된 NMS를 적용해보았다고 하는데요.

먼저, AP와 AP50 각각, 1번 디코딩 레이어에서 추론한 것과 6번 디코딩 레이어에서 추론한 것의 성능이 +8.2/9.5 정도의 큰 차이를 보였다고 합니다.

또한 NMS적용에 관한 실험인 파랑 실선과 파랑 점선을 비교해보면 첫 디코딩 레이어에서는 NMS를 적용하는 편이 좋았고, 이후 점진적으로 성능의 갭이 줄다가 나중에는 아주 근소하게 NMS를 적용하지 않는 것이 더 좋게 보이는 데요.

이런 이유에 대해서 저자는 첫 디코딩 레이어의 출력 결과는 self-attention(SA)으로 각 출력 예측끼리의 관계를 고려하여 모델링 하지 못한 것으로, 동일한 객체에 대해서 여러 개의 바운딩 박스를 생성하는 경향이 있고, 이것이 NMS를 적용하는 것이 긍정적인 효과를 줄 수 있었다고 합니다.

그리고 이후의 레이어에서는 이전 디코딩 레이어의 출력들의 관계를 SA로 고려할 수 있기 때문에 동일한 객체에 대해서 여러 개의 바운딩 박스를 생성하는 경향이 줄고, 마지막 6번째 층에서는 오히려 NMS가 TP를 제거하는 경향을 보였다고 합니다.

또한 아래 Figure 6은 디코더의 어텐션을 서로 다른 객체에 대한 예측(서로 다른 쿼리)을 다른 색으로 표현한 그림인데요.

그림을 보시면, 어탠션이 활성화된 부분이 코끼리의 코, 다리 혹은 얼룩말의 머리, 귀, 다리 끝 등으로 각 물체의 말단부 인 것을 알 수 있는데요.

저자들은 이것에 대한 해석으로 기존에 인코더의 어텐션으로 각 객체에 대한 분리를 했기 때문에, 디코더 단에서는 각 객체의 카테고리와 정밀한 바운딩 박스를 예측하기 위한 두드러진 특징과 말단부에 집중하고 있는 것이라고 합니다.

4.2.3. Importance of FFN

저자들은 인코더 레이어 내에 존재하는 FFN을 제거하여 파라미터를 줄이는 방법에 대해서 실험을 진행했다고 하는 데요.

이렇게 FFN을 완전이 없애니 41.3M에서 28.7M까지 파라미터가 낮아졌다고 합니다. 그러나 성능면에서 2.3AP가 떨어져서, 최적의 결과를 얻으러면 FFN이 필요하다고 결론냈다고 합니다.

4.2.4. Loss ablations

저자들은 L_{box}의 구성에 대한 ablation study를 제공했는데요.

베이스라인을 L1 목적함수와 일반화된 IoU(GIoU) 목적함수를 모두 사용한 저자들이 제안한 모델로 삼고, L1목적함수와 GIoU목적함수를 하나씩 빼면서 성능을 측정하였습니다(Table 4.) 개인적으로 두 박스 사이의 위치 오차를 줄이는 방향으로의 학습을 한다는 관점에서 L1 거리기반 regression 목적함수가 주요한 학습시그널을 줄 것 같지만, L1 목적함수만 사용하였을 때가 오히려 단순히 상대적인 IoU를 고려하는 GIoU를 통해서 학습한 것 보다 덜 한 성능을 보였습니다. 앞서 저자들이 말한 예측박스에 대한 스케일 문제 등 때문에 올바르지 못한 학습시그널이 가는 것으로 판단하였습니다. 또한 저자들의 주장처럼 베이스라인에서 L1 목적함수에 GIoU를 통해서 박스 크기에 대한 상대적인 스케일의 영향을 줄여주니, 보다 올바른 학습이 진행되어 성능이 향상한 것을 볼 수 있습니다.

특히나 DETR을 큰 물체에 대해서 굉장히 큰 폭의 성능향상을 보였습니다. 그런 이유로는 transformer를 통한 이미지 전체에 대한 상관관계를 계산한 특징을 사용하였기 때문이지 않을까 라는 생각을 합니다. 그러나 DETR은 작은 물체에 대해서는 낮은 성능을 보였습니다

다음 Figure 7은 Ablation Study는 아니지만, 저자가 했던 실험 중에 흥미로운 실험이 있어서 가져와 봤는데요.
COCO 2017 검증 세트의 모든 이미지에 대해 서로 다른 슬롯이 예측한 박스를 시각화 하고 있습니다. 해당 분석은 각 슬롯이 어떤 종류의 BBox를 예측하는지 시각화 한 것이며, 서로 다른 슬롯들이 서로 다른 크기의 박스의 출력을 담당하고 있는 것을 확인 할 수 있습니다.(여기서 센터점은 원래 이미지 크기의 바운딩 박스를 의미하고, 초록 점은 작은 박스들, 빨간 점은 수평으로 긴 박스를, 파란 박스는 수직방향으로 큰 박스를 의미합니다.)

4.3 DETR for panoptic segmentation

DETR은 panoptic segmentation에 이용하기 위해서, 단순히 디코더의 출력단에 mask head를 추가로 달아서 segmentation을 진행한다고 합니다. 그리고 학습은 두 단계를 통해서 진행하는 데요, 먼저 DETR을 OD테스크로 사전학습을 시키고요, 그 후에 사전학습된 DETR에 mask head를 추가 후, DETR의 파라미터를 고정하고 mask head만 학습 시키는 방식으로 25epoch를 돌린다고 합니다.

아래 Table 5는 그때 당시 SoTA모델인 UPSNet과 Panoptic FPN에 대한 성능과의 비교입니다.

평가 매트릭으론 Panoptic Quality(PQ)를 주요 지표로, PQ를 things(PQth) 와 stuffs(PQst)로 나누어서 리포팅하고 있습니다. 여기서 Things는 사람, 자동차, 동물 등 명확한 경계가 있는 개별 객체에 대한 segmentation성능을 의미하고, Stuffs는 하늘, 도로, 길 등 배경에 대한 성능을 의미합니다. 또한 AP는 mask AP로 things classes에 대해서만 계산한 것이라고 합니다.

저자들은 DETR이 SoTA 모델을 PQ평가 지표에서 능가하고 있는 것을 보여주며, DETR의 우수한 이식성에 대해서 언급하고 있습니다.

마치며…

원래 생각은 DETR을 가볍게 읽고, 그것의 파생인 deformable DETR의 내용도 함께 다루는 것이 목표였으나, 해당 내용을 이해하는데 쉽지 않았습니다. 특히 experiments가 굉장히 다양했고 그 의미를 파악하는 데 꽤나 많은 시간을 할애했던 것 같습니다. 또 요즘 논문과는 다르게? 무려 17페이지나 되는 방대한 양이…. 덕분에 분량이 조금 많아진 것 같습니다.

긴 리뷰 읽어주셔서 감사합니다.

Author: rcvlab

RCV연구실 홈페이지 관리자 입니다.

5 thoughts on “[ECCV 2020]End-to-End Object Detection with Transformers(DETR)

  1. 안녕하세요 현석님 좋은 리뷰 감사드립니다.

    질문이 몇가지 있습니다.
    1. “특히나 이분 매칭 손실 함수를 사용함으로서, 하나의 예측과 그것에 대응 되는 하나의 정답 물체가 매칭이 이루어질 수 있었고, 이러한 예측과 정답에 대한 일대일 매칭은 예측 물체의 permutation에 대해서 불변하는 성질을 띄기 때문에, 예측을 병렬적으로 수행할 수 있었다고 합니다.” 와 “그리고, 𝑦집합과 𝑦^집합 사이의 이분 매칭을 찾기 위해서, N개의 요소를 순서를 바꿔가면서(permutation) 탐색합니다.” 에서 두 문장이 제가 이해하는 데 있어서 조금 혼동을 일으켜서,, permutation에 대해 불변한 성질을 띄는 이유에 대해 조금 헷갈리는 부분이 있습니다.
    단순히 예측되는 물체의 순서에 대해 불변하다는 뜻인가요? 이분 매칭에서 예측과 정답에 대한 1대1 매칭 시 순서를 바꿔가는 게 permutation이라는 거면, permutation에 대해 불변하다는 성질이 무엇인지 잘 모르겠습니다.. 조금만 추가 설명 부탁드립니다!
    2. 일반화된 IoU 손실함수 Liou에 대한 수식이 따로 있나요?
    감사합니다.

    1. 안녕하세요. 재찬님 리뷰 읽어주셔서 감사합니다.

      (1) 먼저, 𝑦집합과 𝑦^집합 사이의 최적의 이분 매칭의 조합을 찾는 것이 우선입니다. 그러기 위해서 N개로 구성되는 예측 집합의 순서를 바꿔가면서, 정답 집합의 원소들과 매칭을 수행을 하게 되는데요. 여기서 예측 집합의 순서를 바꾼다는 것이 첫 번째 ‘permutation’에 대한 의미가 되겠습니다. 그렇게 예측 집합 안에 N개의 원소의 순서를 바꿔가면서 나올 수 있는 조합에 대해 식(1)을 기반해서, 가장 Loss가 작아지는 최적의 매칭 조합을 찾게 됩니다. 이때, 동일한 객체에 대한 탐지 예측 결과의 순서가 다를 수도 있을 텐데요. 결국에 수식(1)을 기반으로 최적의 조합을 찾게 된다면, 예측 집합의 순서에 상관없이 동일한 예측결과와 GT가 매칭이 될 것입니다. 여기서 두 번째 ‘permutation invariant’의 의미를 찾을 수 있습니다.

      또한 제가 이해한 바로는 논문에서 이분매칭(bipartite matching)을 수행한다고 하여서 내부적으로 이분매칭 알고리즘을 돌리는 건가? 라고 생각을 하고 넘어갔는데요. 코드를 까보니 hungarian matching 알고리즘을 사용한다고 합니다.

      (2) 해당 수식에 대해서는 논문의 본문에는 reference로만 언급이 되어있어서 따로 리뷰에 싣지는 않았는데요.
      찾아보니 아래에 appendix에 굉장히 많은 정보가 있더군요. 그곳에GIoU loss에 대한 수식도 있어서 해당 부분은 x-review 본문에 추가하도록 하겠습니다.

      감사합니다.

  2. 안녕하세요, 좋은 리뷰 감사합니다.
    DETR이 조현석 연구원님께서 말씀하신대로 이미지를 활용하는 Scene graph generation과 더불어 다양한 테스크에 접목이 되고 있어 리마인드 할 겸 읽어보았습니다.

    간단한 질문 하나 남기자면,
    detector로부터 예측된 bbox 들을 없애는 과정인 NMS 과정을 대체할 수 있는 역할을 하게 된 모델로 이해를 하였습니다.

    원래라면 그림(6)과 같은 경우는 soft NMS 라는 과정은 동일한 클래스가 겹쳐있을 때 confidence를 낮추어 bbox를 좀 더 잘 표현을 하도록 해야 하는데 DETR이 이런 역할마저 제대로 해낸 것으로 보입니다. 그림(6)을 설명하실 때 decoder의 attention으로부터 서로 다른 객체에 대한 에측이라고 설명을 해주셨는데,
    해당 attention map으로부터 같은 코끼리이지만 서로 다른 코끼리라는 걸 어떻게 아는지 궁금합니다.

    감사합니다.

  3. 안녕하세요, 조현석 연구원님. 좋은 리뷰 감사합니다.
    막연하게 DETR이 transformer를 활용하여 기존 CNN-based detector architecture를 간소화시켰다고만 알고 있었는데, 리뷰를 잘 작성해주신 덕분에 보다 더 자세히 이해 할 수 있었습니다.
    제가 DETR를 깊게 공부해본적이 없어서 리뷰를 읽다가 이해하기 힘든 부분들이 몇 있었습니다. 질문에 대한 답변 주시면 감사하겠습니다.

    1. CNN output vector를 transformer encoder-decoder에 거치게 하는데, 디코더에서 N개의 예측은 구체적으로 어떻게 수행되나요?
    2. 디코더에서 예측한 object와 GT object를 매칭하기 위해 N개의 요소를 순서를 바꿔가면서(permutation)탐색한다고 하셨는데, 그럼 모든 예측 집합과 GT object를 일일히 완전탐색하며 가장 작은 cost를 찾아 매칭하는건가요?
    3. 디코더에 입력되는 object queries가 구체적으로 무엇인가요?
    4. prediction head에서는 그럼 N개의 FFN을 병렬적으로 통과하는 것인가요?

    꽤 긴 논문으로 보이는데, 잘 정리해주신 것 같습니다.
    감사합니다.

  4. 리뷰 잘 읽었습니다.

    decoder의 입력으로 들어가는 N개의 object query가 서로 다른 object 를 봐야하는 것은 자명하고, 이에 동의합니다. 이를 위해 ‘사전에 학습된 위치 인코딩으로 사용’ 이라고 표현해 주셨는데, 이에 대한 추가적인 설명 부탁드려도 될까요? N개의 query 에 대해 사전학습하는 부분이 있는건가요?

    감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다