REF
https://jiho-ml.com/weekly-nlp-34/
https://openmmlab.medium.com/dive-into-yolov8-how-does-this-state-of-the-art-model-work-10f18f74bab1
https://github.com/ultralytics/ultralytics/blob/main/ultralytics/nn/modules/block.py#L205
YOLO-World: Real-Time Open-Vocabulary Object Detection 리뷰
DEMO : https://huggingface.co/spaces/stevengrove/YOLO-World
PAPER : https://arxiv.org/pdf/2401.17270.pdf / https://www.semanticscholar.org/reader/37c112454a236ab91c9c6b5cc165a6c3251e9206
MODEL & CODE : https://github.com/AILab-CVC/YOLO-World?tab=readme-ov-file
to detect objects beyond the predefined categories 를 목적으로 한 연구 분야
초기 셋팅 : training detectors on the base classes and evaluating the novel (unknown) classes
novel object 에 대한 detector의 성능을 알아보려 했지만 제한된 데이터 셋으로 학습했기 때문에 여전히 일반화 성능 떨어짐
최근 연구 : grounding 멀티모달 학습을 함
GLIP - phrase grounding 을 기반으로 open-vocabulary detection을 위한 pretrained framework 제안하고 zero-shot 평가
Groungind DINO - grounded pre-training을 cross-modality fusion을 통해 detection transformers 에 통합
DETCLIP, DETCLIPv2, GLIPv2 와같은 연구 - large-scale image-text pairs로 학습된 pre-trained detectors사용, region-text matching 을 통한 image-text datasets 사용으로 일반화 성능 향상을 도모
그러나 이런 연구는 ATSS, DINO, SWIN-T 와 같은 매우 큰 백본을 사용하여 high computationl demands, deplyment 가 어려운 문제가 있음
→ YOLO-WORLD 제안 : aiming for efficient open-vocabulary object detection with real-time inference and easier downstream application deployment
Grounding 이란?
Grounding이란, 사람 사이에 효과적인 소통을 위해 필수적인 공통 된 이해와 기반을 다지는 과정을 뜻합니다.
예를 들면 “비가 오네"라는 말을 듣고 고개를 끄덕이거나 “빗물이 떨어진다”라고 의역을 하는 것도 grounding의 한 방법이죠. 다른 배우가 “싫어. 지금 화창한데?”라고 하면 함께 세계관을 형성하지 못하고 연극의 흐름을 깨겠죠. 반면 “우산이 없으니 편의점에서 사자."라고 대답하면 비가 오고 있다는 제안을 우산이 없다는 말로 수용하고 우산을 사야된다라는 정보를 제공하기 때문에 적절한 “Yes, and-”식 대사가 됩니다.
기냥 large scale 데이터로 학습한 pre-trained 모델 만든다는 말인듯 ??
yolo 는 많이 쓰이고 있으나 미리 라벨링이 된 데이터로 지도 학습하는 모델은 open-senario 에서의 활용도가 떨어짐
이를 해결하기 위해 vision-language modeling 과 pretraining on large scale dataset을 통해 open vocabulary detection 수행
기존 : YOLO series 는 각 카테고리 기준으로 라벨링된 bounding box 가 있는 instance annotations 학습
논문 : instance annotations → resgion-text pairs 로 refomulate
구성 : YOLO detector, a Text Encoder, and a Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN)
처리 과정 :
먼저 text가 입력으로 들어오면, Text Encoder가 text를 embedding으로 만듬
YOLO detector에 있는 Image encoder가 입력 이미지를 multi scale features로 만듬
RepVL-PAN으로 image features 와 text embeddings을 fusion해서 text and image representation을 모두 활용
구성요소를 하나씩 보면
YOLO Detector
Text Encoder
Text Contrastive Head
Training with Online Vocabulary
Inference with Offline Vocabulary
yolov8 에서 사용된대로 csp network의 p3,p4,p5 layer에서 나온 image feature c3,c4,c5 사용
추론 시에는 offline vocabulary embeddings can be re-parameterized
open-vocabulary capability 에서의 vision-semantic representation을 improve하고 image-text embedding 상호작용을 강화하기 위해 아래 모듈 제안
하나씩 자세히 보면
Text-guided CSPLayer (T-CSPLayer)
yolov5 의 c3 layer 와 yolov8 c2f layer
c3 : 3개의 convlayer로 구성된 csp bottleneck layer
c2f : 3개의 conv layer로 구성된 fast implementation csp bottleneck layer
c2f layer 는 skip connection 과 split 갯수가 늘어남
Image-Pooling Attention
on large-scale detection, grounding, and image-text datasets.
Learning from Region-Text Contrastive Loss.
모자이크 샘플 이미지 I 와 텍스트 T가 주어지면 , YOLO-Worldsms K개의 object predictions와 Annotaions를 출력
yolov8 에서 사용한 TOOD의 task-aligned label assignment 를 사용하여 prediction 과 GT를 매칭하였고
text index를 classification label로 활용하려 각 positive prediction을 assign
Loss functions :
이 vocabulary를 기반으로 object-text (region-text) 간의 유사도와 object-text assignments간의 cross-entropy region-text contrastive loss L_con을 구성
bounding box regression을 위한 IOU loss , distributed focal loss 추가
최종 Loss:
람다_I는 indicator factor : input Image가 detection 또는 grounding data면 1, image-text data면 0
image-text 데이터에서온 이미지면 contrastive loss 만 학습해서 멀모 데이터를 배우게 끔, detection 데이터면 검출 기능을 배우도록
image-text datasets은 noisy box 를 가지고 있다고 간주해서(수도 라벨링으로 생성했기 때문에) regression loss는 정확한 bounding box를 가졌을 때만 계산되도록 함
Pseudo Labeling with Image-Text Data.
pre-training을 할 때 image-text pairs 를 바로 사용하는게 아니라, region-text pair를 자동으로 생성하는 automatic labeling 기법을 제안함
수도 라벨링 3단계
extract noun phrase
n-gram algorithm 을 사용하여 text 에서 noun phrase(명사구)를 추출
pseudo labeling
GLIP 과 같은 pre-trained open-vocabulary detector를 사용하여 각 이미지마다 주어진 명사구에 대해 pseudo boxes를 생성하고 region-text 쌍을 만듬
filtering
pre-trained CLIP 을 사용하여 image-text pairs and region-text pairs의 relevance (관련성)를 평가하고 low-relevance를 가진 pseudo annotation과 image를 filtering ,
추가적으로 NMS를 사용해서 중복 bounding box도 filtering 함
이 방법으로 CC3M 데이터로부터 246k의 이미지와 821k pseudo anntations를 만듬
자세한 내용 appendix 참고
pre-training it on large-scale dataset 에서의 effectiveness와 fine tuning의 성능 평가를 위해
LVIS benchmark and COCO benchmark에서 zero shot 성능 평가
MMYOLO, MMDetection 상에서 구현
three variants of YOLO-World : small, medium, large
open-source CLIP 의 pretrained weight을 text encoder로 활용
속도 측정 : NVIDIA V100 GPU without extra acceleration mechanisms, e.g., FP16 or TensorRT
Experimental Setup.
pre-training stage
zero shot evaluation
LVIS benchmark에서의 최근 SOTA 연구들 : Groudning DINO, DetCLIP, DetCLIPv2, GLIPv2 과 비교
The experimental results also demonstrate that small models, e.g., YOLO-World-S with 13M parameters, can be used for vision-language pre-training and obtain strong open-vocabulary capabilities.
pre-training 효과를 보기 위해 COCO dataset and LVIS dataset을 fine tuning 시켜 성능 확인 , 자세한 training setup 논문 참고
coco dataset fine tuning 할 때는 RepVL-PAN 제거했음 : COCO 데이터 세트의 vocabulary 크기가 작다는 점을 고려하여 TensorRT를 사용한 추가 가속화를 하기 위해서
yolo-world large 모델이 이전 yolo 시리즈보다 더 나은 성능을 보임
open-vocabulary capability를 real world application에서 활용하기 위해 real time 추론과 efficiency 향상을 목적으로 한 논문
4.3 Ablation Experiments 논문 참고 - pretraining yolo-world의 성능, proposed RepVL-PAN 의 성능, 다른 text encoder를 사용했을 때의 성능비교
4.4 Open-Vocabulary Instance Segmentation 논문 참고
4.6. Visualizations 논문 참고
DEMO : https://huggingface.co/spaces/stevengrove/YOLO-World
인풋으로 이미지와 검출하고자 하는 객체를 prompt로 넣으면 됨
단추까지 잡는 모습,,,
멀티모달로 학습이 되어서 같은 이미지를 넣어도 prompt를 바꿔서 넣으면 내가 검출하고자 하는 디테일한 객체를 조절가능
cup을 prompt로 넣었을 때는 이미지 안의 모든 컵을 검출하지만, 이미지 안에서 핵심이 되는 컵을 찾고자 하는 prompt로 넣었을 때는 이미지의 앞에 위치한 컵 하나만 검출하는 것을 볼 수 있다.
멀티모달 짱짱맨