sy00n / DL_paper_review

issues에 논문 요약
0 stars 0 forks source link

[4] End-to-End Object Detection with Transformers #4

Open sy00n opened 1 year ago

sy00n commented 1 year ago

paper link : https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123460205.pdf

Q. (이 논문이 나오기 이전의) 일반적인 OD 모델들은 어떻게 작동했을까?

Q. 그렇다면 본 논문에서는? image

Method

image 전체적인 구조는 fig 2와 같다. 충분히 큰 N개의 종류의 prediction이 이루어진다고 가정한다. 왜 충분히 큰 N개로 해야할까? 이미지에 object 종류가 총 몇 개가 있을지 모르기 때문이다. 그래서 충분히 큰 N개 종류가 있다고 가정해놓고 object에 해당하지 않는 부분은 No object로 예측한다.

그러고 나서 예측된 값과 실제 값을 이분매칭 하게 되고, 이를 최적화한다. image

매칭된 loss값은 pair-wise한 matching cost이다. 결과적으로 sigma를 찾는 task는 최적 할당 문제로 생각할 수 있고 다시 말해 가중 이분 매칭(bipartite matching)이다. 이 과정은 hungarian algorithm에 따라 이루어진다. (bipartite matching에 관한 설명은 생략하겠다.) 이 매칭 과정은 학습과는 상관이 없다. 즉 backpropagation이 흘러가지 않는다. loss를 계산하기 전에 이분 매칭을 통해 예측값과 ground truth 간 1:1 매칭을 해준다.

해당 task를 수행하면서 결과적으로 생성되는 아웃풋은 class와 bounding box가 나온다. 그리고 bounding box는 일반적으로 중심 좌표, 높이, 너비에 한 정보를 담는다. 본 논문에서는 bounding box 관련 값들을 0과 1 사이로 normalize 한다.

image

매칭된 loss값의 수식이다. class가 잘 맞고 bounding box 또한 잘 맞춘다면 loss가 줄어드는 형태이다. 즉, classification loss, IoU loss 둘 다 최소로 해야 한다. 그런데 이 때 대부분의 정답이 no object이기 때문에 class imbalance 문제가 생겨 no object의 경우 probability term을 1/10으로 줄여주게 된다. (Fast-RCNN에서 subsampling 개념과 유사함.)

image

두 bounding box가 유사해지도록 하는 역할이다.

이분 매칭을 통해 기존 region proposal 혹은 anchor와 같은 heuristic한 방법론과도 잘 맞는다. 이분 매칭의 결과로 set prediction의 중복된 결과를 피할 수 있게 된다.

구조를 파트별로 나눠서 살펴보겠다.

encoder에서는 multi-head self-attention을 수행한다. Decoder에서는 object query와 encoder의 output을 입력으로 한다. 이 object query는 입력 이미지에 어떤 object가 존재하는지 query를 날리는 것이다. 구현상으로는 초기에는 랜덤하게 초기화된 embedding vector, 혹은 학습된 positional embedding vector가 들어가게 된다. 즉 정보를 받는 빈 그릇이라고 생각하면 되겠다. Decoder는 병럴적으로 인코딩되어서 해당 정보들이 기본적으로 하나의 인스턴스가 되어 prediction 하게 된다.

Encoder-Decoder attention을 통해 이미지의 어느 부분을 위주로 봐야할지 학습하고 self attention을 통해 역할을 어떻게 분배하여 최적의 1:1 매칭을 수행할 수 있을지 학습한다.

이미지의 특정 부분에서는 object query를 재사용한다. 말그대로 class 정보를 학습하는게 아니라 spatial한 정보를 학습하는 것이 object query의 역할임을 실험적으로 밝혔다.
(It turns out experimentally that it will tend to resuse a given slot to predict objects in a given area of the image.)

image 큰 object에 대해서는 성능이 좋지만 확실히 small object에 대해서는 faster-RCNN에 뒤쳐지는 것을 볼 수 있다. CNN을 태우고 나온 이미지 중 마지막 layer를 사용하기 때문에(receptive field가 커지니까) 작은 feature에서 성능이 낮은 결과를 보였을 것이다. 따라서 multi-scale feature를 사용하면 이 문제를 해결할 수 있다. (Deformable DETR)

마치 maskformer에서 작은 물체 segmentation 성능이 안좋아서 multi-scale feauture를 쓴 mask2former와 비슷한 느낌임. (maskfomer -> mask2former / DERT -> Deformable DETR)