TNT 컴퓨터비전 스터디에서 이번주에는 Pix2Seq 논문을 정리하기로 했다.
논문: https://arxiv.org/pdf/2109.10852.pdf
Abstract
- 논문에서는 간단하고 범용적인 객체탐지 프레임워크인 Pix2Seq모델 제안
- 신경망이 객체가 무엇이고, 어디에 있는지 안다면, 어떻게 그것을 읽는지만 알려준다면 객체탐지가 가능할 것
- task-specific data augmentations을 사용하는것 이상으로, 이러한 접근법은 task에 대한 가정을 최소화하면서, COCO 데이터셋에서 타 객체탐지 알고리즘에 비해서 좋은 성능을 보임
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