한결 편해진 마음(!)으로 오랜만에 해보는 논문 리뷰 😌
공부하고 싶은 논문은 많은데 놀기도 해야해서 마음이 급한 상태입니다 ㅠㅠㅋㅋㅋ 누가 내 하루 48시간으로 늘려줘..
각설하고, 최근 Detection Transformer에 관심이 생겨서 DETR을 시작으로 DETR 시리즈들을 차근차근 공부해보려고 한다. 오늘은 그 첫 장..
2020년 ECCV에 출간된 Meta의 End-to-End Object Detection with Transformer
를 읽고 리뷰해 보겠다.
DETR은 2개 파트로 나눠서 이번 1편에서는 방법론, 2편에서는 실험 부분을 살펴보려고 한다.
본 논문은 객체 탐지를 직접적인 집합 예측 문제로 간주하여 학습 파이프라인을 간소화한다. 시퀀스 예측에 널리 사용되는 아키텍처인 Transformer [47]에 기반한 encoder-decoder 아키텍처를 채택한다. 시퀀스 내 요소들 간의 모든 쌍별 상호작용(pairwise interaction)을 명시적으로 모델링하는 트랜스포머의 self-attention 메커니즘은 이러한 아키텍처를 중복 예측 제거와 같은 집합 예측의 특정 제약 조건에 특히 적합하게 만든다.
DEtection TRansformer (DETR, Figure 1 참조)는 모든 객체를 한 번에 예측하며, 예측된 객체와 실제 객체 간의 이분 매칭을 수행하는 집합 손실 함수를 사용하여 end-to-end로 학습된다. DETR은 공간적 앵커나 비최대 억제(non-maximal suppression)와 같이 사전 지식을 인코딩하는 여러 수동 설계 구성 요소를 제거하여 탐지 파이프라인을 단순화한다. 대부분의 기존 탐지 방법과 달리, DETR은 사용자 정의 계층이 필요하지 않으므로 표준 CNN 및 트랜스포머 클래스를 포함하는 모든 프레임워크에서 쉽게 재현할 수 있다.
Figure 1. DETR은 일반적인 CNN과 트랜스포머 아키텍처를 결합하여 최종 탐지 집합을 (병렬로) 직접 예측한다. 학습 중에는 bipartite matching(이분 매칭)이 prediction과 GT box를 고유하게 할당한다. 일치하는 것이 없는 예측은 "no object" (Ø) 클래스 예측을 생성해야 한다.
직접적인 집합 예측에 대한 대부분의 이전 연구와 비교할 때, DETR의 주요 특징은 이분 매칭 손실과 (비자기회귀적) 병렬 디코딩 [29,12,10,8]을 사용하는 트랜스포머의 결합이다. 대조적으로, 이전 연구는 RNN을 사용한 자기회귀적 디코딩 [43,41,30,36,42]에 초점을 맞췄다. 우리의 매칭 손실 함수는 예측을 실제 객체에 고유하게 할당하며, 예측된 객체의 순열에 불변하므로 병렬로 출력할 수 있다.
본 논문은 가장 인기 있는 객체 탐지 데이터셋 중 하나인 COCO [24]에서 매우 경쟁력 있는 Faster R-CNN 기준 모델 [37]과 DETR을 평가한다. Faster R-CNN은 많은 설계 반복을 거쳤으며 최초 발표 이후 성능이 크게 향상되었다. 우리의 실험은 새로운 모델이 비슷한 성능을 달성함을 보여준다. 더 정확하게는, DETR은 큰 객체에서 훨씬 더 나은 성능을 보여주는데, 이는 트랜스포머의 비국소적(non-local) 계산 덕분일 가능성이 높다. 그러나 작은 객체에서는 낮은 성능을 보인다. FPN [22]의 개발이 Faster R-CNN에 그랬던 것처럼 향후 연구가 이 측면을 개선할 것으로 기대한다.
DETR의 학습 설정은 여러 면에서 표준 객체 탐지기와 다르다. 새로운 모델은 매우 긴 학습 일정을 필요로 하며 트랜스포머의 보조 디코딩 손실로부터 이점을 얻는다.
DETR의 학습 설정은 여러 면에서 표준 객체 탐지기와 다르다. 새로운 모델은 매우 긴 학습 일정을 필요로 하며 트랜스포머의 보조 디코딩 손실(auxiliary decoding losses)로부터 이점을 얻는다. 본 논문은 입증된 성능에 어떤 구성 요소가 중요한지 철저히 탐구한다.
DETR의 설계 정신은 더 복잡한 작업으로 쉽게 확장된다. 본 논문의 실험에서, 사전 학습된 DETR 위에 학습된 간단한 segmentation head가 최근 인기를 얻고 있는 어려운 픽셀 수준 인식 작업인 Panoptic Segmentation [19]에서 경쟁력 있는 기준 모델들을 능가함을 보여준다.
본 연구는 여러 분야의 이전 연구를 기반으로 한다: 집합 예측을 위한 이분 매칭 손실(bipartite matching losses), 트랜스포머 기반의 인코더-디코더 아키텍처, 병렬 디코딩, 그리고 객체 탐지 방법.
집합을 직접 예측하는 정형화된 딥러닝 모델은 없다. 기본적인 집합 예측 작업은 다중 레이블 분류(multilabel classification)이며 (컴퓨터 비전 분야에서의 참고 문헌은 [40,33] 참조), 이에 대한 기준 접근 방식인 일대다(one-vs-rest)는 거의 동일한 상자와 같이 요소들 간에 기본 구조가 있는 탐지와 같은 문제에는 적용되지 않는다. 이러한 작업에서의 첫 번째 어려움은 거의 중복되는 것을 피하는 것이다. 대부분의 현재 탐지기는 이 문제를 해결하기 위해 비최대 억제(non-maximal suppression)와 같은 후처리 방법을 사용하지만, 직접적인 집합 예측은 후처리가 필요 없다. 중복을 피하기 위해서는 모든 예측된 요소들 간의 상호작용을 모델링하는 전역 추론 체계가 필요하다. 고정 크기 집합 예측의 경우, 밀집 완전 연결 네트워크 [9]로 충분하지만 비용이 많이 든다. 일반적인 접근 방식은 순환 신경망(recurrent neural networks) [48]과 같은 자기회귀적(auto-regressive) 시퀀스 모델을 사용하는 것이다. 모든 경우에 손실 함수는 예측의 순열에 불변해야 한다. 일반적인 해결책은 헝가리안 알고리즘 [20]을 기반으로 손실을 설계하여 실제와 예측 간의 이분 매칭을 찾는 것이다. 이는 순열 불변성을 강제하고 각 대상 요소가 고유한 일치를 갖도록 보장한다. 이분 매칭 손실 접근 방식을 따른다. 그러나 대부분의 이전 연구와 대조적으로, 자기회귀 모델에서 벗어나 병렬 디코딩을 사용하는 트랜스포머를 사용하며, 이는 아래에서 설명한다.
트랜스포머는 Vaswani 등 에 의해 기계 번역을 위한 새로운 어텐션(attention) 기반 빌딩 블록으로 소개되었다. 어텐션 메커니즘 은 전체 입력 시퀀스로부터 정보를 집계하는 신경망 계층이다. 트랜스포머는 Non-Local Neural Networks 와 유사하게 시퀀스의 각 요소를 스캔하고 전체 시퀀스로부터 정보를 집계하여 업데이트하는 자기 주의(self-attention) 계층을 도입했다. 어텐션 기반 모델의 주요 장점 중 하나는 전역적인 계산 능력과 완벽한 메모리이며, 이로 인해 긴 시퀀스에서 RNN보다 더 적합하다. 트랜스포머는 현재 자연어 처리, 음성 처리 및 컴퓨터 비전의 많은 문제에서 RNN을 대체하고 있다.
트랜스포머는 초기의 시퀀스-투-시퀀스 모델 을 따라 출력 토큰을 하나씩 생성하는 자기 회귀(auto-regressive) 모델에서 처음 사용되었다. 그러나 (출력 길이에 비례하고 일괄 처리하기 어려운) 엄청난 추론 비용으로 인해 오디오, 기계 번역, 단어 표현 학습, 그리고 최근에는 음성 인식 분야에서 병렬 시퀀스 생성이 개발되었다. 본 논문 또한 계산 비용과 집합 예측에 필요한 전역 계산 수행 능력 간의 적절한 균형을 위해 트랜스포머와 병렬 디코딩을 결합한다.
대부분의 최신 객체 탐지 방법은 어떤 초기 추측값(initial guesses)에 상대적으로 예측을 수행한다. 2단계 검출기(Two-stage detectors) [37,5]는 제안(proposals)에 대해 상자를 예측하는 반면, 단일 단계 방법(single-stage methods)은 앵커(anchors) [23] 또는 가능한 객체 중심의 격자(grid of possible object centers) [53,46]에 대해 예측한다. 최근 연구 [52]는 이러한 시스템의 최종 성능이 이러한 초기 추측값이 설정되는 정확한 방식에 크게 의존한다는 것을 보여준다. 본 논문의 모델에서는 이 수동으로 만들어진 프로세스를 제거하고 앵커 대신 입력 이미지에 대한 절대적인 상자 예측(absolute box prediction)을 통해 탐지 프로세스를 간소화할 수 있다.
집합 기반 손실 (Set-based loss). 여러 객체 검출기 [9,25,35]는 이분 매칭 손실(bipartite matching loss)을 사용했다. 그러나 이러한 초기 딥 러닝 모델에서는 서로 다른 예측 간의 관계가 컨볼루션 계층이나 완전 연결 계층(fully-connected layers)만으로 모델링되었으며, 수동으로 설계된 NMS 후처리가 성능을 향상시킬 수 있었다. 더 최근의 검출기 [37,23,53]는 실제값과 예측값 간의 비고유 할당 규칙(non-unique assignment rules)을 NMS와 함께 사용한다. 학습 가능한 NMS 방법 [16,4]과 관계 네트워크(relation networks) [17]는 어텐션(attention)을 사용하여 서로 다른 예측 간의 관계를 명시적으로 모델링한다. 직접적인 집합 손실(direct set losses)을 사용하면 후처리 단계가 필요하지 않다. 그러나 이러한 방법은 탐지 간의 관계를 효율적으로 모델링하기 위해 제안 상자 좌표와 같은 추가적인 수동 컨텍스트 특징(hand-crafted context features)을 사용하는 반면, 본 논문은 모델에 인코딩된 사전 지식을 줄이는 솔루션을 찾는다.
순환 검출기 (Recurrent detectors). 본 논문의 접근 방식과 가장 가까운 것은 객체 탐지 [43] 및 인스턴스 분할(instance segmentation) [41,30,36,42]을 위한 end-to-end set prediction이다. 본 논문과 유사하게, 이들은 CNN 활성화를 기반으로 하는 인코더-디코더 아키텍처와 함께 이분 매칭 손실을 사용하여 경계 상자 집합을 직접 생성한다. 그러나 이러한 접근 방식은 소규모 데이터셋에서만 평가되었고 최신 기준 모델과 비교되지 않았다. 특히, 이들은 자기 회귀 모델(autoregressive models) (더 정확하게는 RNNs)에 기반하므로 병렬 디코딩을 사용하는 최근의 트랜스포머를 활용하지 않는다.
탐지에서 직접적인 집합 예측을 위해 필수적인 두 가지 요소는 다음과 같다: (1) 예측된 상자와 실제 상자 간의 고유한 매칭을 강제하는 집합 예측 손실(set prediction loss). (2) 객체 집합을 예측하고(단일 패스에서) 그 관계를 모델링하는 아키텍처. 모델 아키텍처는 Figure 2에 자세히 설명되어 있다.
DETR은 디코더를 한 번 통과하여 고정된 크기의 N개 예측 집합을 추론하며, 여기서 N은 이미지 내 일반적인 객체 수보다 훨씬 크게 설정된다. 학습의 주요 어려움 중 하나는 예측된 객체(클래스, 위치, 크기)를 실제 값과 비교하여 점수를 매기는 것이다. 본 논문의 손실은 예측된 객체와 실제 객체 간의 최적의 이분 매칭(bipartite matching)을 생성한 다음, 객체별 (경계 상자) 손실을 최적화한다.
를 GT object set이라 하고, 을 개의 prediction set이라고 하자. 이 이미지의 객체 수보다 크다고 가정하면, 또한 ∅(no object)으로 패딩 크기 의 집합으로 간주한다. 이 두 집합 간의 bipartite matching을 찾기 위해 가장 낮은 비용을 갖는 개 요소의 순열 을 검색한다:
는 ground truth 와 인덱스 를 갖는 prediction 사이의 쌍별 매칭 비용(pair-wise matching cost)이다. 이 최적의 할당은 이전 연구(예: [43])를 따라 헝가리안 알고리즘(Hungarian algorithm)으로 효율적으로 계산된다.
매칭 비용은 class prediction과 predicted box와 실제 상자의 유사성을 모두 고려한다. 실제 집합의 각 요소 는 로 볼 수 있으며, 여기서 는 target class label(Ø일 수 있음)이고 는 실제 상자 중심 좌표와 이미지 크기에 대한 상대적인 높이 및 너비를 정의하는 벡터이다. 인덱스 를 갖는 예측에 대해 클래스 의 확률을 로, 예측된 상자를 로 정의한다. 이러한 표기법으로 를 로 정의한다.
매칭을 찾는 이 절차는 최신 검출기에서 proposal [37]
또는 anchor [22]
를 실제 객체와 매칭하는 데 사용되는 휴리스틱 할당 규칙(heuristic assignment rules)과 동일한 역할을 한다. 주요 차이점은 중복 없이 직접적인 집합 예측을 위해 일대일 매칭을 찾아야 한다는 것이다.
두 번째 단계는 손실 함수, 즉 이전 단계에서 매칭된 모든 쌍에 대한 헝가리안 손실(Hungarian loss)
을 계산하는 것이다. 일반적인 객체 검출기의 손실과 유사하게 손실을 정의한다. 즉, 클래스 예측에 대한 음의 로그 우도(negative log-likelihood)와 나중에 정의될 상자 손실(box loss)의 선형 결합(inear combination)이다:
여기서 는 (1)에서 계산된 최적의 할당(optimal assignment)이다. 실제로는 클래스 불균형을 고려하여 일 때 로그 확률 항의 가중치를 10배 낮춘다. 이는 Faster R-CNN 학습 절차가 부분 샘플링(subsampling)을 통해 양성/음성 제안의 균형을 맞추는 방식과 유사하다 [37]. 객체와 ∅ 간의 매칭 비용은 예측에 의존하지 않으며, 이는 그 경우 비용이 상수임을 의미한다. 매칭 비용에서는 로그 확률 대신 확률 를 사용한다. 이렇게 하면 클래스 예측 항이 (bounding box loss)와 비교 가능하게 되며, 더 나은 경험적 성능을 관찰했다.
Bounding box loss. 매칭 비용의 두 번째 부분과 헝가리안 손실(Hungarian loss)은 경계 상자의 점수를 매기는 이다. 초기 추측값 일부에 대한 변화량(∆)으로 상자 예측을 수행하는 많은 탐지기와 달리, box prediction을 직접 수행한다. 이러한 접근 방식은 구현을 단순화하지만 손실의 상대적 스케일링(relative scaling)에 문제가 발생한다. 가장 일반적으로 사용되는 손실은 상대적 오차가 유사하더라도 작은 상자와 큰 상자에 대해 다른 스케일을 갖게 된다. 이 문제를 완화하기 위해 우리는 손실과 스케일 불변(scale-invariant)인 일반화된 IoU 손실(generalized IoU loss) [38] 의 선형 결합을 사용한다. 전반적으로, 우리의 상자 손실은 로 정의되며, 이고, 여기서 는 하이퍼파라미터이다. 이 두 손실은 배치 내 객체 수로 정규화된다.
overall DETR 구조는 Figure 2와 같이 매우 단순한 구조이다. 다음과 같이 3개의 main components로 구성되어 있다.
많은 최신 탐지기와 달리, DETR은 일반적인 CNN 백본과 트랜스포머 아키텍처 구현을 제공하는 모든 딥러닝 프레임워크에서 단 몇 백 줄의 코드로 구현될 수 있다. DETR을 위한 추론 코드는 PyTorch [32]에서 50줄 미만으로 구현될 수 있다.
Figure 2. DETR은 기존 CNN 백본을 사용하여 입력 이미지의 2D representation을 학습한다. 모델은 이를 평탄화하고, positional encoding으로 보강한 후 transformer encoder로 전달한다. decoder에서는 object queries(객체 쿼리)라고 부르는 학습된 소수의 fixed positional embedding을 입력으로 받고, 추가적으로 encoder output에 attending한다. decoder의 각 output embedding은 공유된 FFN으로 전달되고, detection (클래스 및 bbox)또는 “no object” 클래스를 예측한다.
Backbone : 초기 이미지 에서 시작하여, 기존의 CNN 백본은 저해상도 활성화 맵(activation map) 을 생성한다. 일반적으로 , , 값을 적용한다.
Transformer encoder : 먼저, 1×1 컨볼루션(convolution)은 고수준 활성화 맵 의 채널 차원을 에서 더 작은 차원 로 줄여 새로운 특징 맵 를 생성한다. 인코더는 시퀀스를 입력으로 예상하므로, 의 공간 차원을 하나의 차원으로 축소하여 특징 맵을 만든다. 각 인코더 계층은 표준 아키텍처를 가지며 multi-head self-attention 모듈과 feed-forward network(FFN)로 구성된다. 트랜스포머 아키텍처는 순열 불변(permutation-invariant)
[*입력 데이터의 순서가 바뀌어도 결과가 동일하게 나오는 성질]이므로, 각 어텐션 계층의 입력에 추가되는 고정된 위치 인코딩(positional encodings) [31,3]으로 이를 보완한다.
Transformer decoder : 디코더는 트랜스포머의 표준 아키텍처를 따르며, multi-headed self-attention 및 encoder-decoder attention 메커니즘을 사용하여 크기 의 개 임베딩을 변환한다. 원본 트랜스포머와의 차이점은 우리 모델이 각 디코더 계층에서 개의 객체를 병렬로 디코딩하는 반면, Vaswani 등 [17]은 출력 시퀀스를 한 번에 하나의 요소씩 예측하는 자기회귀(autoregressive) 모델을 사용한다는 것이다. 디코더 또한 순열 불변(permutation-invariant)이므로, 다른 결과를 생성하려면 개의 입력 임베딩이 서로 달라야 한다. 이러한 입력 임베딩은 우리가 객체 쿼리(object queries)라고 부르는 학습된 위치 인코딩이며, 인코더와 유사하게 각 어텐션 계층의 입력에 이를 추가한다. 개의 객체 쿼리는 디코더에 의해 출력 임베딩으로 변환된다. 그런 다음 피드 포워드 네트워크(다음 하위 섹션에서 설명)에 의해 독립적으로 상자 좌표와 클래스 레이블로 디코딩되어 N개의 최종 예측을 생성한다. 이러한 임베딩에 대한 셀프-어텐션 및 인코더-디코더 어텐션을 사용하여, 모델은 객체들 간의 쌍별 관계를 사용하여 모든 객체에 대해 전역적으로 추론하는 동시에 전체 이미지를 컨텍스트로 사용할 수 있다.
Prediction feed-forward networks (FFNs) : 최종 예측은 ReLU 활성화 함수와 은닉 차원 를 갖는 3계층 퍼셉트론(perceptron)과 선형 투영 계층(linear projection layer)에 의해 계산된다. FFN은 입력 이미지에 대한 상자의 정규화된 중심 좌표, 높이 및 너비를 예측하고, 선형 계층은 소프트맥스(softmax) 함수를 사용하여 클래스 레이블을 예측한다. 고정된 크기의 개 경계 상자 집합을 예측하는데, 여기서 은 일반적으로 이미지에서 관심 있는 실제 객체 수보다 훨씬 크므로, 슬롯 내에서 객체가 탐지되지 않았음을 나타내는 추가적인 특수 클래스 레이블 Ø이 사용된다. 이 클래스는 표준 객체 탐지 접근 방식의 "배경(background)" 클래스와 유사한 역할을 한다.
Auxiliary decoding losses : 본 논문에서는 학습 중 디코더에서 보조 손실(auxiliary losses) [1]을 사용하는 것이 도움이 된다는 것을 발견했는데, 특히 모델이 각 클래스의 정확한 객체 수를 출력하도록 돕는 데 유용했다. 각 디코더 계층 뒤에 예측 FFN과 헝가리안 손실(Hungarian loss)을 추가한다. 모든 예측 FFN은 파라미터를 공유한다. 서로 다른 디코더 계층에서 예측 FFN으로의 입력을 정규화하기 위해 추가적인 공유 계층 정규화(layer-norm)를 사용한다.
DETR 에서 Transformer encoer는 CNN feature map을 sequence로 변환하고 [B, H*W, d_model], self-attention을 통해 global context를 구축한다.
Multi-head attention의 각 head에서 색상, 공간, 의미와 같이 다른 관점에서 관계를 학습한다.
→ Feature Refinement, Long-range Dependency 및 Spatial Relationship 학습 강화
100개의 학습 가능한 Object Queries [B, 100, d_model]를 랜덤하게 초기화하고, 학습 과정에서 Hungarian matching을 통해 점진적으로 특정 객체 검출 역할에 특화된다 (특정 영역이나 크기에 대한 전문화)
Self-attention에서는 이러한 object query들이 상호작용하여 서로 중복되는 역할이 없도록 분담한다. Cross-attention에서는 각 object query가 encoder feature에서 자신이 담당할 객체의 위치에 높은 attention weight를 부여하고, 이를 통해 객체의 위치와 클래스를 예측한다.
FFN에서는 Attention으로 수집된 정보를 더 풍부하고 표현력 있는 feature로 정제시킨다. 차원 변환(차원 확장 후 다시 축소하는 구조)을 통해 비선형적 표현력을 크게 증가시킨다.
2개의 prediction head는 각각 (1) Classification Head (2) Bounding Box Head로 구성되어 있다. Classification Head에서는 91개의 coco class와 no object를 분류하며, 100개의 object query에서 90개 가량은 “no object”로 예측된다 (sparse prediction). Boundingbox Head에서는 정규화된 (cx, cy, w, h)좌표를 직접 예측하여 앵커 및 후처리 과정을 제거한다.