Grounding DINO 이해하기

 

 

Title

Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection

https://arxiv.org/pdf/2303.05499

 

Introduction

 

많은 검출(Deteciton)모델은 사전에 준비된 데이터 한정으로만 학습이 진행되는데, 여기서 문제는 확장성 제한에 따른다. 인식해야할 물건이 바뀌거나 더 넓은 범주의 Detection을 하려면 1) 데이터 새로 모으고, 2) 레이블링 하고, 3) 모델 다시 학습하는 과정이 따른다. 4) 금액도 많이 들고, 5) 시간도 오래 소요되는것은 물론이다.

 

Zero-Shot Detector 는 재학습없이 새로운 물체도 인식될 수 있도록 되기를 원했고, 사용자가 입력한 prompt를 기반으로 찾게 되는 것을 의미한다.

 

Grounding DINO는 현재 zero-shot 객체 검출 모델에서 SOTA이다.

(왼) Prompt: 의자, (오) Prompt: 강아지 꼬리

 

사용자가 준 Prompt를 기반으로 객체를 잘 검출하는 것으로 보인다.

 

 

Grounding DINO의 Architecture

Grounding DINO는 기존 DINO와 GLIP 논문에서 결합된 아이디어이다.

DINO: Transformer 기반의 Detection 방법, NMS와 같은 후처리 기법이 제거된 방법
GPIP: text가 주어지고 거기에 대응되는 시각적 요소의 문맥을 이해하는 방법

 

1. Text Backbone and Image Backbone

- Image Backbone: Swin Transfomer (Multi-scale 이미지 feature extractor) 로 더욱 풍부한 이미지 feature 생성

- Text Backbone: BERT로 텍스트 feature 생성

위 그림처럼 text는 text backbone에서 추출하고, image는 image backbone에서 각자 추출한다.

 

 

 

2. Feature Enhancer

 

1번 과정에서 feature가 각각 추출이 되면 멀티 모달 피쳐 통합 과정을 위해 featrue enhancer로 전달된다.

Feature Enhancer는 복수개의 feature enhancer 레이어로 구성된다.

Deformable self-attention은 이미지 피쳐를 향상시키는데 활용되고, vanilla self-attention은 텍스트 피쳐를 향상시키는데 활용된다.

 

 

 

3. Language-guided query selection

 

물체 검출에 text 입력값을 제대로 가이드 시켜주기 위해서는, language-guided query selection module이 디코더 쿼리단에서 입력 테스트가 더 관련있는 feature로 selection될 수 있게 설계됐다.

 

 

 

4. Cross-modality Decoder

 

cross-modality decorder는 이미지랑 텍스트 feature 결합하는 기능으로 구성되어지는데,

3번의 query selection으로 부터 나온 각각의 cross-modality 쿼리들이 self-attention layer로 전달된다.

다음으로 image feature는 "image cross-attention"에서 결합하고, text feature는 "text cross-attention"에서 결합한다.

마지막으로, cross-modality 디코에 레이어에서 FFN layer으로 입력된다.

각각의 decorder 레이어는 기존 DINO 디코더 레이어와 달리 추가적인 text cross-attention 레이어가 있는데, 더욱 정교한 정렬 과정을 위해서 텍스트 정보를 쿼리에 삽입해야한다.

 

 

결론은 간단히 정리되어있는데, 정교하다는 장점이 있지만 느리다는 단점이 있고, 

실시간 검출로는 아직까지는  YOLO가 더 낫고, 실시간이 아니라면

GroundingDINO나 낫다라는 결론이 정리되어있습니다. 

 

 

본 글은 (https://blog.roboflow.com/grounding-dino-zero-shot-object-detection/) 사이트를 참조해 요약하였습니다.

 

 

+ 추가 Summary.

 

1. architecture에서 그림이 잘 이해가 안된다.

 

Introduction

  • 방대한 데이터에 대한 학습이 필요한데, 데이터 규모 축소에 대한 기술이 필요해지고 있다.
  • Dataset Distillation(DD: 데이터셋 증류): 큰 모델(Teacher Network)로부터 증류(distillation)한 지식을 작은 모델(Student Network)로 transfer 하는 일련의 과정, 의 프레임워크는 이차원레벨(bi-level) 최적화 기법으로 네트워크 업데이트 과정에서 데이터셋을 생성해내는 기법
  • DD기법들이 CIFAR나 MNIST 같이 작거나 간단한 데이터셋에 중점을 두고있다. (ImageNet같은 더 큰 resolution에서는 성능이 떨어짐)
  • DD의 또다른 숙제는 cross-architecture generalization
    • 기존 방법은 고정된 구조내에서 데이터 매칭을 시도해 원본 space에 편향가질 수 있다.
    • Figure2처럼, 원본 데이터를 모방하려다보니, sementic(의미가 담긴) 한 표현은 다소 부족한 모습.

 

 

Method

 

  • Preliminaries on Diffusion Models(디퓨전 모델에서의 예비역할)

Algorithm1.

  • 입력영상(T)와 거기에 맞는 레이블값(L)을 입력을 사전 학습된 인코더(E)
  • LDM은 원본 픽셀 공간 X를 더 콥팩트한 z 공간으로 효과적으로 압축을 진행 -> 인코더-디코더 수행 훈련중에서 저차원 latent space로 최적화를 수행한다.
  • 그러면, latent space는 효과적으로 고차원(high-frequency)

 

Results

  • SRe2L 기법(bottom)보다 더욱 D4M 제안방법이 더욱 풍부한 영상을 생성해낸다.

안녕하세요.

오늘은 메타(구. 페이스북)에서 공개한 LLaMa 논문에 대해서 설명해보도록 하겠습니다.

논문에 대한 Summary를 찾기 쉽지 않아 직접 리뷰해본 논문이네요 :)

아주아주 간략하게 리뷰해보겠습니다.


 

Paper link https://research.facebook.com/publications/llama-open-and-efficient-foundation-language-models/
Code link https://github.com/facebookresearch/llama

 

 

Pre-trained Data

 

  • 공공데이터만을 사용
  • 각 데이터별로 다양한 전처리 기법을 적용함.
  • 예) 글 내부에 영어가 아닌 다른 언어는 제외시키는 linear 모델
  • Github (코드), Wikipedia (지식), Books (책), ArXiv (과학적지식), StackExchange(수준높은 Q&A), 등의 데이터 수집을 진행
  • Tokenizer: BPE(Byte pair encoding) -> Sentence piece (BERT는 word piece)
  • Training: 1.4T 토큰, 학습동안 모든 토큰은 only 1번만 사용됨. (위키피디아, books 도메인은 2번)

 

BPE 토큰화란?

1994년에 제안된 "정보 압축 알고리즘", 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 기법

  • Tockenizer 전: aaabdaaabac (aa->Z)
  • Tockenizer 후: ZabdZabac (ab->Y)
  • Tockenizer 한 번 더: ZYdZYac

 

Architecture
  • Transformer architecture 사용 (Attention is all you need) + 3개 추가 바꾼 것
    • Pre-normalization[GPT3]:
      • output normalization 안하고
      • 훈련 안정성 높이려고, 각 트랜스포머 sub-layer의 input을 normalize
      • RMSNorm (2019) 
    • SwiGLU [PaLM]
      • ReLU 대신 SwiGLU로 대신 (성능 향상 목적으로)
      • PaLM의 4d 대신에 2/3*4d 차원 사용
    • Rotary Embeddings [GPTNeo]
      • absolute positional embedding 제거
      • rotary positional embedding 추가 (매 layer 마다)

 

 

Training
  • 2048 A100에서 21일간 훈련 진행.
  • 근데 시간 단축하기 위한 수많은 노력들이 들어있음.
    • AdamW, 코사인 훈련 스케쥴러
    • 캐쥬얼 멀티헤드 어텐션
    • 활성함수 수 줄이기

 

Result

1) Common Sense Reasoning

  • BoolQ, PIQA, SIQA, HellaSwag, WinoGrande, ARC, OpenBookQA => 의미 모호한 대명사 찾기, 객관식 등
  • LLaMa-65B > Chinchilla-70B (BoolQ 빼고 다 높음.)
  • LLaMa-65B > PaLM-540B (BoolQ, WinoGrande 빼고 다 높음.)
  • LLaMa-13B > GPT-3: 대부분 높다. 10배나 크기가 작은데

2) Closed-book Question Answering

  • Zero-shot, few-shot 모두 LLaMa-65B 좋고, LLaMa-13B gpt-3나 chinchilla보다 5-10배나 작은데 견줄만하다.

=> 쭉 정리하다보니 다 LLaMa 좋거나 견줄만한 성능 나왔다. 그래서 모델의 크기 대비 성능 유사 혹은 그 이상

 

다시 정리하면,

1) Tocken 전처리

2) Transformer + 3개 바꾼거

3) Training 속도 향상시킨거

4) public data 쓴거

 

4가지로 정리할 수 있을 것 같습니다 :)

 

 

* Reference

[1] BPE: https://ratsgo.github.io/nlpbook/docs/preprocess/bpe/

+ Recent posts