DINOv2: Learning Robust Visual Features without Supervision 정리

Plato·2024년 1월 24일
0

딥러닝

목록 보기
16/21

DINO 정리글을 읽고 이 글을 읽기를 추천함.

풀어내는 문제

  • 자기 지도학습으로 vision backbone을 만드는 문제

용어

  • curated 데이터 세트
    • 일반적인 컴퓨터 비전 데이터 세트를 concat하여 구성한 데이터 세트
    • 어떤 데이터 세트를 사용했는지는, 이 정리에서 생략함.
  • uncurated 데이터 세트
    • 웹 크롤링을 통해 얻은 이미지로 구성한 데이터 세트.
  • curated 구성 데이터 세트
    • curated 데이터 세트를 구성하는 세부 데이터 세트.
  • 증강 Curated 데이터 세트
    • curated 데이터 세트와 uncurated 데이터 세트를 아래에서 설명할 방법으로 혼합하여 얻은 데이터 세트.
  • global/local view

데이터 세트 구성

  • Uncurated 데이터 세트
    • 필터링
      • <img> 태그의 url을 사용하여 unsafe한 소스에서 얻은 이미지를 삭제함
      • 부적절한 사진과 중복 사진을 삭제하고 신원 식별이 가능한 얼굴을 블러 처리함
        • 사진 중복 여부 판단 방법: 해싱을 사용했다고 함. 자세히 나오지 않았으나 아마 <img> 태그의 url을 해싱하여 충돌이 일어나면 중복 사진이라 판단했을 거라 짐작함.
    • 필터링하여 12억 개의 이미지를 확보함
  • Curated 데이터 세트와 uncurated 데이터 세트 합치기
    • Image Copy Detection 네트워크를 사용해, curated 데이터와 거의 동일한 uncurated 데이터를 삭제함
      • Image Copy Detection 모듈은 자기 지도학습한 인공 신경망이고 벡터를 출력으로 가짐.
      • 이 임베딩 벡터간에 코사인 유사도를 기반으로, curated 데이터와 동일한 uncurated 데이터를 삭제함
        • 판단 기준: curated 데이터의 64 최근접 이웃이면 삭제.
          • 임계값을 설정하지 않고 제일 가까운 64개의 이미지를 삭제한 건 의외임.
    • curated 데이터와 유사한 이미지를, uncurated 데이터 세트에서 검색하여 증강 Curated 데이터 세트를 구성함.
      • 아래의 두 검색 방법 모두, 코사인 유사도를 '거리'로 사용함.
        • 코사인 유사도는 수학에서의 '거리'가 아니지만, 이 논문을 이해하는 데 중요한 내용은 아님.
      • 검색 방법 1: Sample-based Retrieval
        • 대상:
          • Curated 구성 데이터 세트 중에서 100만 개 이상의 이미지를 갖는 세트를 증강할 때 사용.
        • 방법:
          • Curated 이미지의 k 최근접 이웃을 추가함.
            • k=4 or k=32k=4 \text{ or } k=32를 사용
    • Cluster-based Retrieval
      • 대상:
        • 위의 검색 방법 1의 대상이 아닌 curated 데이터 세트.
      • 방법:
        • k-means 클러스터링을 통해, uncurated 데이터 세트를 100,000 개의 클러스터로 나눔.
        • curated 구성 데이터 세트에 속하는 3개 이상의 이미지와 "연관된" 클러스터에서 10,000개의 최근접 이웃을 추가함.
          • 이미지와 "연관된" 클러스터의 의미: 이미지에 제일 가까운 클러스터를 의미하는 것으로 보임.

사전학습 방법

  • Image-level 목표
    • DINO에서 사용한 목표와 동일. 자세한 내용은 DINO를 정리한 글을 참고하자.
    • CLS 토큰에 부착한 헤드의 output간에 cross entropy를 손실 함수로 사용.
  • Patch-level 목표
    • iBOT에서 사용한 목표
    • 선생 모델만 global view를 받는 Image-level 목표와는 다르게, 학생 모델과 선생 모델 둘 다 동일한 view를 입력으로 받음. 다만 학생 모델에 입력을 줄 때는, 입력 patch 일부를 가리고 선생 모델에 입력을 줄 때는, 입력 patch를 가리지 않음.
      • patch-level 목표를 계산할 때, 두 모델이 global view와 local view 중 어느 것을 입력으로 받는지 명시하지 않음. Appendix에는 iBOT의 코드를 사용했다고 나와있으니, iBOT 논문이나 코드를 읽어야 알 수 있을듯.
    • 학생 모델 마지막 레이어의 가려진 patch feature와 선생 모델 마지막 레이어의 대응되는 patch feature간에 cross entropy를 손실 함수로 사용
  • 위 두 목표의 weight를 "untie"함
    • 두 손실 함수를 결합할 때 사용하는 weight를 독립적으로 튜닝했다는 얘기로 보임. 정확히 어떻게 결합했는지 찾을 수 없었음. 다중 목표를 최적화할 때, 선형 결합을 종종 사용하기에 필자는 두 손실 함수를 선형 결합했다고 가정함.
  • Sinkhorn-Knopp centering
    • 선생 모델의 출력에 Sinkhorn-Knopp normalization을 적용했다고 함
      • 필자는 Sinkhorn_knopp normalization은 무엇인지 모름. 다만, DINO에서 사용한 centering을 이 normalization으로 대체했다고 함.
  • KoLeo regularizer
    • "Uniform span of the features within a batch"를 갖도록 유도하는 regularization 방법이라 함
      • Uniform span이 무엇인지 모르겠고 구글링해도 찾을 수 없었지만, 아래의 식을 보면 어떤 의미인지 유추해 볼 수 있다.
    • Regularization 식
      • Lkoleo=i=1nlog(dn,i) where dn,i=minjixixjL_{koleo} = −∑^n_{i=1}log(d_{n,i}) \text{ where } d_{n,i} = min_{j \neq i} ‖x_i − x_j ‖
      • 이 식은, 최근접 이웃과의 거리의 로그 합에 -1을 곱한 것이다. 그렇기에 이를 최소화하면, 최근접 이웃과의 거리의 로그 합이 최대화된다. 즉 한 batch의 feature 벡터들이 멀리 떨어지도록 유도한다. 이는 다양한 feature를 생성하도록 유도하는 것으로 볼 수 있다.
  • Adapting the resolution
    • 사전 학습의 후반부에 입력 이미지의 해상도를 높여서 학습했다고 함.
      • 필자가 생각하는 사용 이유: 이미지의 해상도를 높이면 모델 성능이 좋아짐. 다만 입력 이미지의 해상도를 시작부터 높이면 학습 시간이 늘어나기에, 적절한 순간에 해상도를 높여서 학습하고 싶었을 것. 해상도를 높이면 정보량을 키우는 것이니, 이미 학습을 진행한 모델이 이 정보를 더 잘 처리할 수 있을 거라는 생각을 해봄.

Distillation

  • 큰 모델을 학습한 후, 작은 모델에 distill함
  • self-distillation을 사용하여 사전 학습하기에, distillation의 사용은 직관적임
  • 큰 모델을 고정해서 선생 모델로 사용
  • 큰 모델을 학습할 때와 다르게 선생 모델의 파라미터는 고정돼 있기에, 학생 모델 파라미터의 exponential moving average (EMA)는 학습에 영향을 주지 않음. EMA는 학습 이후, 모델을 평가하기 위해 사용함. 즉 평가 동안에 사용할 앙상블 모델을 만들기 위해 학생 모델의 EMA를 사용함.
  • iBOT 손실 함수(Patch-level 목표)를 계산할 때, 두 개의 global view를 사용했다고 함.

결과

  • CLIP 계열의 모델과 비슷하거나 나은 성능을 보임
  • MAE와 다르게 미세 조정 없이 downstream 작업에서 좋은 성능을 보임
    • 여기에서 미세 조정은, 백본 네트워크의 파라미터를 학습하지 않았다는 얘기로 보임.

0개의 댓글