-
YOLO-World: Real-Time Open-Vocabulary Object Detection 논문 요약Computer Vision 2024. 4. 10. 15:45
https://arxiv.org/abs/2401.17270
Open Vocabulary Object Detection
- 추론 시 한정되지 않은(open) 어휘로 새로운 클래스를 감지하는 것이 목표
- 기존에도 object detection을 vision-language pretraining으로 재구성하여 훈련한 시도가 있었으나 이러한 방법들은 heavy computation으로 인해 real-time에서 동작하기 어렵다는 문제가 있었다.
- 이러한 문제를 해결하고자 기존의 real-time 측면에서 좋은 성능을 보여준 yolo 구조를 활용하여 OVD 문제를 real-time으로 풀어내고자 한 시도가 yolo-world라고 볼 수 있을 것 같다.
Introduction
- YOLOv8 아키텍쳐에서 많은 부분을 가져와서 사용하였고, Text encoder의 경우 pretrained CLIP을 사용하였다.
- 또한, 기존의 YOLOv8 아키텍쳐에서 사용되는 Path aggregation network를 변형시킨 Vision-Language PAN을 통해 text feature와 image feature를 연결할 수 있도록 했다.
- 그리고 대량의 데이터셋에 대해 region-text contrastive learning으로 pretraining하는 기법을 사용했다.
Method
Pre-training Formulations
- 기존의 Object Detection task에서는 bounding box와 category label을 쌍으로 학습을 진행하는데, 이를 OVD task에 맞게 변형하여 Region-text pair로 바꾸었다.
- 추론시에는 이미지와 텍스트를 입력으로 받아 bbox와 Object embedding을 출력할 수 있도록 했으며, 인풋 텍스트가 캡션이거나 익스프레션인 경우, n-gram algorithm을 사용하여 명사를 추출하였다.
Model Architecture
Yolov8에서 많은 부분을 가져와 사용했는데,
- Darknet backbone을 이미지 인코더로 사용하였으며,
- Path aggregation network와 regression과 object embedding을 위한 헤드 부분을 가져와 사용하였고
- Multi-scale feature pyramid 구조를 그대로 사용하였다.
텍스트 인코더의 경우 CLIP의 사전학습된 transformer를 그대로 가져와 사용하였고 Text Contrastive Head라는 모듈을 통해 bounding box와 object embedding을 출력하여 object-text similarity를 계산할 수 있도록 했다.
다음의 수식을 보시면 알 수 있듯이 object-text similarity는 코사인 시밀러리티를 사용하였고, 학습시에 안정화를 위해 아핀 변환 인자인 알파와 베타를 사용하였다고 한다. 아마 학습이나 성능 상으로 이유로 그렇게한 것 같다.
이렇게 계산된 object-text similarity는 이후에 학습과, 아웃풋 출력을 위한 region-text matching을 위해 사용된다.
Training with Online Vocabulary / Inference with Offline Vocabulary
- 기존의 open-vocabulary detector는, inference를 수행할 때마다 text embeddings와 관련된 연산을 수행으로써 속도 측면에서 burden이 있었다.
- YOLO-WORLD에서는 prompt를 offline-vocabulary로 변환한 후에 모델의 파라미터로 re-parameterize하는 과정을 통해 연산량을 줄임으로써 이후에 배포 단계에서의 속도를 개선했다. 이 부분이 핵심적인 부분으로 생각되는데, 이에 대한 내용을 RepVL-PAN 부분에서 다시 설명된다.
Re-parameterizable Vision Language PAN
- 우선 앞전에서 적었듯이, YOLOv8에서 사용된 Path aggregation network를 활용하여 top-down과 bottom-up 구조를 사용하였다.
- 그리고 CSP layer를 text-guided csplayer로 변경하고, image pooling attention 메커니즘을 통해 텍스트에는 이미지 정보를, 이미지에는 텍스트 정보를 통합할 수 있도록 했다.
- Text-guided CSPLayer의 경우, Dark Bottleneck을 통과한 image feature와 text embedding을 사용하여 max-sigmoid attention이라는 과정을 통해, image feature에 text feature를 합산하는 과정을 수행하는 모듈이다
- 다음의 수식을 보면, 먼저 image feature와 text embedding에 대해 matrix multiplication을 한 값에 대해 최댓값을 구한 후, 이를 시그모이드 함수에 넣고 최총적으로 다시 image feature와 곱하는 방식으로 attention을 수행하시는 것을 알 수 있다.
- 그리고 다음과 같이 추론시에는 re-parameterization을 통해 이 과정을 단순화 해서 text embedding W를 convolution layer의 웨이트로 바꾸어서 모델의 파라미터로 변환 후 사용했다고 한다.
- 다음으로 image-pooling attention 매커니즘은 텍스트 임베딩에 이미지 정보를 합성하는 과정인데, 이를 위해서 멀티 스케일 피쳐에 대해 우선 맥스 풀링을 적용하여 27개의 patch token을 생성하고 이를 멀티 헤드 어텐션을 통해 다음과 같이 계산하였다.
- 또한 Image-pooling attenttion에서도 마찬가지로 추론시에는 w를 convolution layer로 reparamterization함으로써 이 과정을 단순화한 것으로 보인다.
- 따라서 Re-parameterizable vision language pan은 최종적으로 image-aware text embedding과 text guided image feature를 출력하게 되고, 이 두가지를 통해 object similarity를 계산하여 최종 디텍션 결과를 도출하게 된다.
Pre-training Schemes
- 마지막으로 사전 학습 방식을 보면, Region-Text Contrastive loss를 사용하여 학습을 진행하는데, 우선 TOOD에서 사용된 Task-aligned label assignment를 통해 positive sample을 구한다.
- 수식을 보면 object-text similarity s와 IoU 값을 곱하여 도출된 t 값을 크기 순으로 나열하여 가장 큰 N개를 positive sample 나머지를 negative sample로 간주하여 학습을 진행한다.
- 이를 통해 contrastive loss를 계산하는데, 기본적으로 CLIP과 동일하지만 image-text pair 아닌 region-text pair로 cross entropy loss를 통해 계산한다.
- 그리고 Contrastive loss 외에도 yolov8에서 사용된 dfl loss와 Iou loss를 추가하여 전체 loss를 계산하게 된다.
- Dfl loss와 iou loss는 둘다 localization을 위한 loss라고 보시면 될 것 같고 DFL(distribution focus loss)은 자세히는 모르지만, target box의 위치를 general distribution로 모델링하는 것을 목표로 하며, 모델이 target box 위치 근처에 보다 빠르게 집중할 수 있도록 한다고 한다.
- 또 여기서 람다 아이로 표현된 수식의 경우 indicator factor인데 image-text 데이터셋을 사용하는 경우 0으로 설정하여 contrastive loss만 계산될 수 있도록 했다고 한다. (image-text 데이터셋의 경우 정확하지 않은 bbox를 갖고 있는 경우가 많기 때문)
- 그 다음으로 대량의 이미지-텍스트 데이터셋에 대해 그대로 사용하기 보다는 수도 라벨링 과정을 통해 region-text pair를 도출했다고 한다.
- 그 과정을 세가지 단계로 수행했다.
- 우선 첫번째로 n-gram 을 통해 명사를 추출한다.
- 그 다음에 Open vocabulary Detector인 GLIP model을 통해 수도 라벨링을 진행한다.
- 마지막으로 CLIP을 통해서 region-text similarit를 계산한 후에, 특정 임계값을 넘는 pair만 남기는 방식으로 필터링을 진행하였다고 한다.
Experiments
Pre-training
- AdamW optimizer, 초기 learning rate of 0.002, weight decay of 0.05
- 32 NVIDIA V100 GPUs에서 batch size 512로 100 epochs 동안 사전 학습
- data augmentation: color augmentation, random affine, random flip, mosaic with 4 images
- Text encoder is frozen during pre-training.
Zero-shot Evaluation on LVIS
Comparison on object detection
'Computer Vision' 카테고리의 다른 글
An Introduction to Vision-Language Modeling 논문 요약 (0) 2024.08.28 MLP-Mixer: An all-MLP Architecture for Vision 논문 요약 (1) 2024.03.29 Parameter-Efficient Transfer Learning for NLP 논문 요약 (1) 2024.03.27 CLIP-IQA: Exploring CLIP for Assessing the Look and Feel of Images 논문 요약 (0) 2024.03.19 VILA: Learning Image Aesthetics from User Comments with Vision-Language Pretraining 논문 읽기 (1) 2024.03.18