본문 바로가기
Study/ML | DL

[Detection] Detection Foundation model 훑어보기

by Hoony-Daddy 2024. 11. 5.
728x90

 

이번 포스팅은 detection foundation model에 대해서 살펴보겠습니다. 아래는 foundation vision mode이 어떤것들이 있는지 robolow에서 나열한 내용입니다.

 

https://roboflow.com/model-feature/foundation-vision

 

Top Foundation Vision Models

Top Foundation Vision Models Foundation models are large models that you can use without prior training. You can use foundation models to auto-label data for use in training a smaller, real-time vision model.

roboflow.com

 

 

 

DINO

DINO의 풀네임은 Self-Distilation with no Labels입니다. 말그대로 self-supervised Learning을 적용하여 만든 foundation model입니다.  기존의 Language 도메인에서 self-supervised Learning을 이용하여 큰 효과를 보았기에 이를 vision 분야에도 적용해보면 어떨까하고 시작한 모델입니다.

 

Self-supervision으로 knowledge distillation을 사용하고 보통 Teacher와 student 모델의 아키텍처가 다르지만 DINO에서는 동일한 구조를 사용합니다. 또한 Teacher를 pretrained model을 사용하지 않습니다.

기본적인 SSL개념은 아래 포스팅참고하세요.

 

 

Self-Supervised Learning 훑어보기

기본적으로 Supervised Learning을 위한 Label확보는 많은 비용을 필요로 합니다. 그렇기에 representation정도는 unlabeled data만으로도 확보할수있지 않을까?하는 시작에서 나온것이 self-supervision입니다. sel

jaehoon-daddy.tistory.com

DINO는 위 포스팅에서 설명한 BYOL의 방법처럼 distilation 구조를 가지고 있지만 다른 점은 representation collapse를 방지하기 위해 centering, softmax layer의 sharpening을 활용합니다. centering의 경우 하나의 diemension이 우세해지는 것을 막아줄 수 있지만 uniform distribution의 함정에 빠질 수 있습니다. 이를 방지하기 위해서 sharpening을 적절히 섞어줍니다. 

* centering : 중간 값을 기준으로 pixel을 정리 (1,2,3,4,5) -> (-2,-1,0,1,2)

* sharpening : 선명도 향상시키는 방법, 경계부분 강화하거나 강조.

Teacher network는 student network와 같고 iteration만 student 이전으로 구성되어 있고 student 가중치에 EMA를 적용하여 사용합니다. 

 

 

 

 

이미지가 주어졌을때 T, S 네트워크각각 확률분포를 출력합니다($P_{s}, P_{t}$). 위의 공식은 이 때의 확률분포를 softmax function으로 정규화한 수식입니다.  

이 후 두 확률 분포의 cross entropy loss를 최소화하여 두 신경망의 출력 분포를 일치 시킵니다. 

DINO와 BYOL를 비교해봤습니다.

- BYOL과 마찬가지로 Teacher, Student network를 활용하고 teacher를 student의 ema로 업데이트.

- representation을 비교하는 BYOL와는 달리 에측 확률분포(logits)을 정렬.

- center, sharpening을 통해서 학습을 안정화

- mutli-crop augmentation을 적용해서 풍부한 representation을 학습

위에서 배운것을 기반으로 gpt에서 최종정리를 요청하였습니다.

 

 

 

DINO V2

 

dino v2에서는 총 142M개의 데이터를 모았습니다. (LVD-142M) 인터넷을 통해 불건전 이미지를 제외하고 총 1.2B의 이미지를 수집합니다. 이 후 중복이미지를 제거하고uncurated data에 대해서 curation을 진행합니다. 

- curate/ uncurate 모두 ViT를 통해 embedding을 진행합니다.

- uncurated data에 대해서 K-mean clustering을 수행합니다.

- 각 curated data에 대해서 가까운 N개의 uncurated data를 고릅니다.

 

Image-level objective

DINO 원래 논문에서 사용하기로는 student/teacher network에 각각 local/global feature를 구분해서 넣고, 나오는 output에 대해 consistency loss를 cross entropy term으로 적용했었습니다. Loss에 대한 최적화는 student에만 적용하고 teacher는 EMA로 파라미터 업데이트하는 것까지 동일하게 사용하였습니다.

 

patch-level objective

student에 몇개의 patch를 마스킹하고 teacher에는 masking이 없이 넣어 나오는 결과를 patch-wise하게 cross-entropy를 계산합니다. 기존의 SSL에서  contrastive learning과는 다르게 masked prediction 을 사용하였습니다.

 

Sinkhorn-Knopp centering

논문 에서는 DINO와 iBOT에서 사용한 centering단계를 개선한 방법이다. dino v2dptjsms 이 Sinkhorn-Knopp알고리즘을 3회 반복 실행합니다.

 

Untying head weights between both objectives

teacher와 student head가중치를 독립적으로 학습하도록 설정하는 것을 의미합니다. dino에서는 s, t는 동일한 구조를 사용하여 간접적으로 연결된 상태에서 학습되었습니다. 이는 teacher와 student가 동일한 representation을 같도록 목표하는 것인데, dino v2에서는 이를 untying(분리)합니다. 이를 통해 patch level에서 underfit되고 image level에서 overfit되는것을 막을 수 있다고 합니다.

 

Adapting the resolution

높은 해상도로 학습시키는 것은 작은 물체의 성능때문에 매우 중요하지만 메모리의 문제가 있습니다. 이를 위해 사전 학습이 끝나는 짧은 시간 동안 이미지의 해상도를 518x518로 높입니다.

 

KoLeo regularizer 

공간에서의 균형과 다양성을 유지하도록 하는 역할을 합니다.

 

Efficient implementation

self-attention layer의 메모리 사용량과 속도를 개선하기 위해 자체 버전의 FlashAttention을 구현했습니다. 

flashattention은 q,k,v 행렬의 전체를 한 번에 처리하지 않고, chunk로 나누어 계산합니다. 이를 통해 메모리 사용량을 줄이고 cache hit를 최적화합니다. 

 

- Ref

https://junia3.github.io/blog/dino2 , https://kimjy99.github.io/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0/dinov2/#koleo-regularizer

 

 

 

CLIP(Learning Transferable Visual Models From Natural Language Supervision)

close-set detector와 open-set detector 용어정리 먼저하겠습니다.


close-set detector는 학습된 class외의 데이터는 처리하지 못하는 detector를 뜻합니다. 반대로 open-set detector는 모델이 학습한 class외의 데이터도 처리할 수 있는 모델입니다. 보통 zero-shot model은 open-set detector의 성격을 가집니다. 위에서 언급한 Dino는 ssl로 학습한 representation model이기에 open-set detector도 될 수 있고 close-set detector도 될 수 있습니다.

open vocabulary detection model은 학습되지 않은 객체에 대해서도 탐지할 수 있는 모델로 (zero-shot, open-set detector의 성격을 지님) text embedding representation에 기반해 설계합니다. 

Grounded Data는 데이터에서 텍스트(언어)와 이미지(시각적 정보)가 연결된 데이터를 뜻합니다.

 

CLIP에서는 인터넷에서 가져온 4억개의 (image, text)쌍으로 구성된 dataset을 활용하였고 이는 batch에서 N개의 positive pair와 $N^{2}$, N개의 negative pair를 얻을 수 있습니다.

 

  • image와 text를 하나의 공통된 space로 보냄
  • positive pair에서의 유사도(cosine similarity)는 최대화
  • negative pair에서의 유사도는 최소화(cosine similarity)
  • CE loss를 사용하여 학습

이와 같은 contrastive learning과정을 통해 CLIP은 multi-modal embedding space를 학습하게 된다.

 

zero-shot transfer

clip을 이용해서 zero-shot model을 만들 수 있습니다. 

이미지가 주어지면 데이터셋의 모든 class와의 (image, text) 쌍에 대해 유사도를 측정하고 softmax를 취한 후 가장 높은 확률의 쌍을 출력합니다.

구체적으로는 아래 그림과 같이, 각 class name을 "A photo of a {class}." 형식의 문장으로 바꾼 뒤, 주어진 이미지와 유사도를 모든 class에 대해 측정하는 방식입니다. 

 

Ref : https://greeksharifa.github.io/computer%20vision/2021/12/19/CLIP/

 

 

GLIP

GLIP는 Grounded Data를 사용해 Open Vocabulary Detection을 목표로 학습된 모델입니다. 텍스트-이미지 관계를 학습하여, 학습되지 않은 텍스트(클래스 이름)도 기반으로 객체를 탐지할 수 있습니다.

CLIP에서 영감을 받아 grounded data를 활용해 multi-modal concept을 object detection task에 적용한 모델입니다.

CLIP에서 open-set detector의 장을 열었지만 이는 Image Classification, Text-image retrieval Task만 적용됩니다. 이 multi modal 정보를 detection에도 활용한것이 GLIP입니다.

 

'

CLIP에서는 Text, Image가 별도의 encoding과정을 거치고 마지막 logit을 구하는 과정에서 fusion됩니다.(matrix multiplication)

GLIP의 경우 위의 그림처럼 encoding과정에서 부터 feature fusion이 이뤄집니다.(early stage fusion)

 

학습과정은 다음과 같습니다.

- Teacher model을 gold data(human-annotated)로 학습

- Teacher model을 image-text data에 inference하여 pseudo label data를 생성

- Student model이 Gold data + psuedo label을 통해 학습

 

Ground Dino

 

 

Grounding DINO는 DINO와 GLIP의 특징을 잘 결합한 모델입니다. 위의 그림에서 알수있듯이 text, feature각각의 backbone에서 feature를 추출합니다. Feature Enhancer에서는 Deformable self-attention은 이미지 피쳐를 향상시키는데 활용되고, vanilla self-attention은 텍스트 피쳐를 향상시키는데 활용됩니다.

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

cross-modality decorder는 이미지랑 텍스트 feature 결합하는 기능으로 구성되어지는데 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 레이어가 있는데, 더욱 정교한 정렬 과정을 위해서 텍스트 정보를 쿼리에 삽입합니다.