DL

[Paper Review] PIX2SEQ: A Language Modeling Framework for Object Detection 논문 정리

gomduribo 2023. 9. 18. 16:00

TNT 컴퓨터비전 스터디에서 이번주에는 Pix2Seq 논문을 정리하기로 했다.

 

논문: https://arxiv.org/pdf/2109.10852.pdf

 

Abstract

- 논문에서는 간단하고 범용적인 객체탐지 프레임워크인 Pix2Seq모델 제안

- 신경망이 객체가 무엇이고, 어디에 있는지 안다면, 어떻게 그것을 읽는지만 알려준다면 객체탐지가 가능할 것

- task-specific data augmentations을 사용하는것 이상으로, 이러한 접근법은 task에 대한 가정을 최소화하면서, COCO 데이터셋에서 타 객체탐지 알고리즘에 비해서 좋은 성능을 보임

 

Pix2Seq framework for object detection

 

Introduction

- 기존의 object detection은 pre-defined된 카테고리의 객체들의 위치를 찾고 인지하는것을 목적으로함

- 기존에는 탐지된 객체를 bounding box와 class labels로 나타냄

- 그러나 복잡도와 한정성이 존재하여 더 넓은 task에 범용적으로 사용되는것이 어려움

 

- 논문에서는 신경망이 어디에 어떤 객체가 있는지 안다면, 그것을 읽어내는 법을 배우기만 하면 될것이다라는 가정을 함

- 객체를 '묘사'하는 법을 학습한다면, 모델은 이미지 픽셀을 보고 '언어'를 도출해냄으로서 유용한 object representation을 만들어 낼것임

- 상단의 이미지처럼 Pix2Seq 모델은 이미지를 입력받아서, 이산적인 연속적인 token을 만들어 낼것

- 이러한 방법은 object detection을 pixel입력값을 기반으로한 language model task처럼 만듬

- Pix2Seq는 모델 구조와 loss함수가 간단하고 범용적이여서, 다른 분야로도 확장성이 좋음

 

The Pix2Seq Framework

Pix2Seq 모델은 4개의 큰 구조로 이루어져있음

- Image Augmentation:

training example을 풍부하게 하기 위해서 random scaling이나 crop과 같은 image augmentation기법을 사용

- Sequence construction and augmentation: 

객체는 보통 bounding box와 class label들로 표현되는데, 이것을 일련의 이산적인 token으로 변경

- Architecture:

Pix2Seq는 encoder-decoder모델은 사용하는데, encoder는 pixel input을 인식하고, decoder는 target sequence를 생성

-Objective/loss function:

Pix2Seq모델은 이미지를 인식해서 나온 token과 이전 time에 나온 token의 log유사도를 최대화하는 방향으로 학습

 

 

Sequence Construction from Object Descriptions

- Pascal VOC, COCO, OpenImages와 같은 객체 탐지 데이터셋에는 객체를 bounding box와 class label로 표현

- Pix2Seq에서는 객체를 일련의 이산적인 token으로 표현

- 객체는 [ymin,xmin,ymax,xmax,c]의 5개의 이산적인 token들의 배열로 나타내짐

- ymin, xmin등 연속적인 코너 좌표들은 1과 nbin사이의 정수로 이산화 되었음

- 그렇게 된다면 token을 표현할 수 있는 vocabulary의 크기는 bin의 개수+class의 개수가 됨

- 예를 든다면 600x600크기의 이미지는 600bin만 있으면 오차없이 표현가능, 하단의 사진은 bin의 개수에 따른 bounding box의 표현의 차이

 

 

- 이미지상에 객체가 여러개 있을때, 객체의 순서는 중요하지 않기 때문에 각 객체의 short discrete sequence를 무작위로 배치함

- 이렇게 해서 다중의 객체의 sequence를 무작위로 여러개 연결하여 한 이미지에서 한개의 sequence가 나오게함

- 다만, 각 이미지마다 다른 객체의 수를 가져서 sequence의 길이가 다를 것, 따라서 sequence의 끝에 EOS token을 붙여서 끝임을 표시

 

 

Architecture, Objective and Inference

Architecture

- Pix2Seq는 encoder-decoder구조를 사용함

- Encoder는 이미지를 입력받아서 hidden representation으로 인코딩하는 역할을 함. ConvNet, Transformer 등 다양한 모델이 사용될 수 있음

- Decoder로는 Transformer decoder를 사용. Decoder는 앞 time에서 생성된 token과, encoder에 의해 만들어진 image representation에 기반한 token을 한번에 하나씩 생성

 

Objective

- Pix2Seq 모델은 이미지와 앞선 time에 token이 주어졌을때 token을 예측함, 밑의 수식과 같이 생성된 토큰과 정답 token sequence의 유사도를 최대화하는게 목적함수임

 

Inference

- 추론할때에는, 가장 유사도가 높은 token을 샘플링, 가장큰 유사도를 가지는 token을 선택하거나 stochastic sampling technique을 이용하여 선정할수도 있음

 

 

Sequence Augmentation to Integrate Task Priors

- EOS token은 모델이 token생성을 멈추게 해주지만, 이것은 모델이 모든 객체를 모두 예측하지 않고 끝내려는것이 관찰됨

- 이것은 annotation noise(annotator가 모든 객체를 annotate하지 X)또는 몇 객체를 인식하거나 위치를 찾는데 있어서 불안정성 때문

- 이것은 average precision에는 1-2%정도로 미미한 영향을 끼치지만, recall에는 큰 영향을 끼침

- 하나의 trick으로 EOS token을 delay시키는 것이 있지만, 이것은 종종 noisy하고 겹치는 prediction을 야기

- 이런 문제를 완화하기 위해서 sequence augmentation technique을 도입

- sequence augmentation을 사용하면, 학습시 input sequence를 modify하여 실제 token과 합성된 noise token을 모두 포함하도록함

- 또한 target sequence도 modify하여 모델이 noise token을 식별할 수 있도록함

 

Altered sequence construction

- 먼저 synthetic noise object를 생성해서 input sequence를 augment

  > noise를 ground truth object에 추가

  > 완전히 random한 box들을 생성

 

 

 

Experiments

- COCO데이터셋에서 Pix2Seq를 검증하기 위해서 DETR과 Faster R-CNN와 비교를 진행. average precision, 여러 threshold를 기점으로한 AP를 기준으로 평가. 두가지 방법을 사용

 1) scratch 부터 COCO데이터셋을 학습

 2) Object365데이터셋으로 pretraining 후, COCO데이터셋으로 finetune