Learning

논문리뷰 DINOv2: Learning Robust Visual Features without Supervision

SOTA computer vision models with self-supervised learning

2023
.
08
.
16
논문리뷰 DINOv2: Learning Robust Visual Features without Supervision

23년 4월 Meta AI에서 self-supervised learning을 사용하여 고성능 컴퓨터비전 모델을 학습하는 새로운 방법인 DINOv2를 공개했습니다.
LM(Large Language Model) 학습에도 활용되는 self-supervised learning 방법은 모델 학습 시 많은 양의 레이블이 지정된 데이터가 필요하지 않아 다양한 장점을 가지고 있습니다.

이번 포스트에서는 DINOv2를 통해 Self-supervised Learning 방식은 어떻게 탄생했는지, 어떤 구조와 장점을 갖는지, 그리고 그 결과는 어떤지 리뷰하도록 하겠습니다.

논문: https://arxiv.org/pdf/2304.07193.pdf
코드: https://github.com/facebookresearch/dinov2
데모: https://dinov2.metademolab.com

Self-supervised Learning의 필요성

논문 설명에 앞서 Self-supervised Learning(SSL)은 어떤 기술인지, 이게 왜 필요한 건지 간단하게 언급하고 가겠습니다.

Self-supervised Learning, SSL은 무엇인가?

SSL은 모델이 주어진 데이터를 더 잘 이해할 수 있도록 학습하는 과정을 말합니다.

Supervised Learning과 Self-supervised Learning 비교
Supervised Learning과 Self-supervised Learning 비교

위의 그림을 보면 왼쪽은 Supervised Learning(SL)은 사람이 별도로 부여한 정답을 활용하여 모델을 학습합니다. 그렇기에 Supervised, 즉 사람이 직접 정답을 지도하며 모델은 학습합니다.

반면 오른쪽의 SSL은 Self-supervised라고 하여, 데이터 스스로가 학습의 단서를 갖고 있다고 생각하고 수행하는 방식입니다. 그림처럼 이미지의 일부가 가려져 있을 때, 저 가려진 부분을 정확히 복원하는 학습을 하게 됩니다. 이 과정에서 사람이 딱히 레이블을 제공할 필요가 없기 때문에 어떤 환경에서나 활용할 수 있는 좋은 방법입니다. 물론 위의 그림처럼 빈칸을 추론하는 방법만 있는 것은 아니고, 여러 다양한 SSL 접근이 존재합니다.

SSL은 왜 필요한가?

우리가 흔히 아는 Object Detection, Segmentation 등의 기술은 모델을 활용한 세부적인 응용 분야로써 downstream tasks라고 부릅니다. 대부분의 산업에서 활용되는 모델은 각자의 downstream tasks를 잘 하는 모델이 필요한데, 처음부터 downstream tasks만을 위해 학습하기 보다는 SSL을 먼저 수행한 후 downstream tasks를 위해 학습하게 되면 더 좋은 성능을 얻을 수 있어 꼭 필요합니다.

SSL 학습의 효과
SSL 학습의 효과

SSL의 방식은 다양하지만, 그 과정에서 모델이 이미지를 온전하게 이해하게 된다는 가정을 실험을 통해 입증했습니다.

레이블도 필요 없어서 간편하고, 대부분의 경우 더 좋은 모델을 얻을 수 있기 때문에 무조건 고려해야 하는 분야처럼 보입니다.

오늘 리뷰할 논문 DINOv2는 SSL에서 기존 대비 더 우수한 결과를 얻었다고 하기 때문에 관심을 가질 필요가 있습니다.

Introduction of DINOv2

Meta, Google, OpenAI와 같은 거대한 기업에서는 요즘 Foundation models 연구에 한창인 것 같습니다. NLP에서는 GPT가 득세하고 많은 대중들의 사랑을 받았는데요, Computer Vision에서는 어떤 모델이 있을까요?

Radford et al.과 같은 연구들이 있었지만 이 방식들은 모두 Text-guided Pre-training을 채택했습니다. 하지만 이 방식은 두가지 큰 문제가 있습니다.

  • 텍스트에는 주요한 정보(Rich information)만 포함되기 때문에 Pixel-level information은 학습이 되기 어렵다
  • Image encoder가 늘 텍스트를 필요로 하기 때문에(aligned text-image corpora) 이미지 단독으로 학습할 수 없다

그럼 텍스트 없이 학습을 시도한 연구는 없을까요? 물론 있었습니다만 그 연구들의 문제는

  • 데이터셋이 너무 작았거나(ImageNet-1k)
  • 데이터셋의 품질이 많이 떨어진다 (Uncurated)

그래서 DINOv2에서는 모두 준비했습니다.

iBOT과 같은 Image / Patch Level Discriminative Self-supervised Learning(SSL)

  • Image level은 서로 다른 이미지를 다르다고 구별하는 작업
  • Patch level은 이미지 내 서로 다른 patch들을 구별하는 작업
  • 한마디로 iBOT에다가 뭔가를 덕지덕지 붙였다

방대한 양의 정제된 데이터셋

  • 142M의 데이터셋

메모리 사용을 줄이면서도 빠른 학습 기법

  • 2배 빠르면서도 메모리는 3배 적게 쓴다

잠깐 Patch-level 학습의 결과물을 보면

각 이미지의 first PCA components를 시각화 한 결과

위의 그림과 같이 patch-level로 PCA를 분석했을 때 객체의 요소요소를 유의미하게 분류하는 것을 확인할 수 있습니다. 독수리가 있으면 독수리의 날개, 몸통, 머리가 서로 다른 색으로 나뉘는 것을 볼 수 있습니다. 이것이 바로 모델이 대상을 의미론적으로 이해했다(Semantically understand)고 볼 수 있는 근거입니다.

그럼 지금부터 DINOv2에서 무엇을 했는지 살펴보겠습니다.

Methods of DINOv2

위에서 언급했듯이 Foundation model이라 부른다면 그에 걸맞는 데이터셋과 모델이 필요합니다.

Data Processing

DINOv2에서의 데이터셋 curation 과정 - Curated(알려진 데이터셋)과 Uncurated(인터넷에서 모은 데이터셋)
DINOv2에서의 데이터셋 curation 과정 - Curated(알려진 데이터셋)과 Uncurated(인터넷에서 모은 데이터셋)

논문의 Table 15를 보면(in Appendix) 다양한 데이터셋으로부터 긁어 모아 총 142M의 데이터를 모았습니다. 논문에서는 이것을 LVD-142M 데이터셋이라고 부릅니다. 만든 과정은 아래와 같습니다.

  1. Collecting raw images: 인터넷에서 이미지를 열심히 모읍니다. 불건전 이미지들을 포함해 뺄 거 빼고 총 1.2B개의 이미지를 수집합니다. 이렇게 모은 이미지들이 uncurated data입니다.
  2. Deduplication: Copy detection을 통해 중복되는 이미지들을 열심히 제거합니다. 중복이거나 중복에 한없이 가깝거나 모두 제거합니다.
  3. Self-supervised image retrieval: 이제 인터넷에서 모은 uncurated data에 대해 curation을 해줄건데요, 과정은 아래와 같습니다.
    (a). Curated / Uncurated 모두 ViT-H/16 모델을 통해 embedding을 뽑아줍니다.
    (b). Uncurated data에 대해 K-mean clustering을 수행합니다.
    (c). 각 Curated 데이터에 대해 가장 가까운 \(N\)개의 uncurated data를 고르거나 아니면 가장 가까운 cluster를 찾고 그 안에서 \(M\)개를 고릅니다.
    (d). \(N\), \(M\)은 선택된 이미지들을 눈으로 직접 보면서 그 퀄리티에 따라 적절히 조정해 나갑니다.

이렇게 해서 총 142M개의 이미지를 얻었습니다. Curated data는 아까 말한대로 각기 다른 알려진 데이터셋을 모은 것인데, 데이터셋에 따라 as is(그냥 curated data 원본), sample(가장 가까운 데이터 찾기), cluster(가장 가까운 클러스터에서 샘플링) 방법 중 택했고 그 내용은 Table 15를 확인하시면 되겠습니다.

Discriminative Self-supervised Pre-training

DINOv2 모델 자체는 정말 다양한 방법들을 도입해서 성능을 끌어올렸다고 합니다. 마치 몸에 좋다는 한약재를 몽땅 넣어 만든 한약같습니다. 이와 비슷한 느낌으로 YOLO 시리즈가 생각납니다. DINOv2를 설명하기 전에 DINO 구조부터 첨부합니다.

DINO 모델 구조 for single pair
DINO 모델 구조 for single pair

Image-level objective

Knowledge Distillation 방법을 활용합니다. 사이즈가 크고 잘 학습되어 있는 Teacher와 그보다 작은 사이즈(실제 학습해야 할) Student 모델 사이의 distillation을 Cross-entropy loss를 이용해서 합니다.

Patch-level objective

Student에 넣는 이미지는 몇개의 패치를 마스킹하고, Teacher에는 마스킹 없이 넣어 나오는 결과를 Patch-wise하게 Cross-entropy를 계산합니다. 아래와 같은 그림으로 이해하시면 될 것 같습니다.

Patch-level Objective 설명
Patch-level Objective 설명

그림에서는 이해를 돕기 위해 하나의 패치만 표시했지만 실제로는 더 많은 Masked patch가 존재합니다.

Untying head weights between both objectives

Weight tying이라는 개념이 생소하신 분도 계실 것 같아 설명을 드리면, 아까 위에서 Image-level, Patch-level 모두 cross-entropy를 계산했듯, cross-entropy를 계산할 때 쓰이는 tensor를 얻기 위해 몇개의 레이어로 구성된 head가 있을 것입니다. 그 head를 두 objectives가 서로 공유해서 쓴다는 뜻입니다.

Sinkhorn-Knopp centering

SwAV라는 논문에서 제안되었던 Sinkhorn-Knopp BN를 Teacher softmax-centering 대신 도입했다고 합니다. Teacher-Student domain gap을 좁히기 위한 방법인 듯 하지만 잘 이해하지는 못했습니다.

KoLeo regularizer

논문에서 소개되는 내용으로는 batch 내 여러 feature가 있으면 그 feature 사이의 거리를 최대한 균등하게 만드는 방법입니다. 물론 서로의 위치 관계는 바꾸지 않으면서 수행합니다.

Adapting the resolution

기존 많은 이미지 연구를 생각해보면 \(224\times224\) 사이즈가 많았습니다. 하지만 원본 이미지의 해상도가 큰데 이렇게 작게 리사이즈 하게 되면 작은 물체는 사라져서 보이지도 않습니다... 그래서 이 논문에서는 \(518\times518\) 사이즈도 도입을 했는데 아무래도 메모리도 많이 먹고 시간도 오래 걸리기 때문에 처음부터 이 해상도로 하는 것은 아니고 Pre-training 후반부에 잠깐 이 사이즈로 학습했습니다.

이렇게 많은 방법들을 다 적용하고 나니 성능이 많이 올랐다고 합니다. 이것을 알기 쉽게 정리한 표가 논문에 있습니다.

iBOT을 기준으로 각 방법을 누적하며 적용했을 때의 성능 변화. 맨 아래가 DINOv2
iBOT을 기준으로 각 방법을 누적하며 적용했을 때의 성능 변화. 맨 아래가 DINOv2

Efficient Implementation

모델 구조를 떠나 학습 방법에도 다양한 옵션이 존재합니다. 하지만 전부 일일이 소개하기는 글이 너무 길어져서 아주 짧게만 소개하도록 하겠습니다. 자세한 내용은 가능하다면 추후 업데이트 하도록 하겠습니다.

  • FlashAttention: 메모리와 속도를 개선한 Self-attention이라고 합니다.
  • Nested tensors in Self-attention: 서로 다른 패치수를 가진 경우에도 global crop, local crop을 동시에 forward pass 할 수 있는 방법을 적용했다고 합니다. 덕분에 빠르게 학습이 가능합니다.
  • Efficient Stochastic Depth: Residual 방식은 정말 많은 네트워크에서 채택하고 있는데, 샘플링을 통해 일부 residual connection을 제거하는 방식을 도입했습니다. 약 40%정도 제거했다고 하는데 이게 효과가 좋다고 합니다.
  • Fully-Sharded Data Parallel (FSDP): PyTorch의 DDP를 알고 계신다면 이해가 쉬울 것 같습니다. DP, DDP에서는 마스터 노드(보통 0번 GPU)의 GPU Memory에 의존적인데 FSDP는 전체 GPU의 메모리를 충분히 활용할 수 있습니다 (기존에는 bounded by a single GPU but by the total sum of GPU across compute nodes).
  • Model Distillation: 위에서 distillation 이야기를 많이 했었습니다. 그 적용 방안으로 처음에는 가장 큰 버전(ViT-g)을 학습하고, 그 다음부터 학습하는 보다 작은 모델들은 이것을 Teacher network 삼아 학습하게 됩니다. 그렇게 해서 작은 모델에서도 좋은 성능을 낼 수 있게끔 했다고 합니다.

Results of DINOv2

역시 데이터의 힘은 위대하고 갖가지 좋은 방법을 다 도입한 노력은 결실을 맺기 마련입니다.

DINOv2 - Linear evaluation on ImageNet-1k of frozen pretrained features

Self-supervised Learning 만으로도 Weakly supervised 방법을 능가하는 모습을 보여줬습니다. 심지어 모델 사이즈는 동일하고 텍스트의 힘은 빌리지도 않았습니다. 개인적으로는 DINOv2가 어떤 혁신적인 새 방법을 제안했다고는 생각하지 않지만 모델 사이즈와 속도 등을 포함한 모든 방면으로의 개선 노력이 있었다는 점은 정말 박수쳐주고 싶습니다.

위의 task 말고도 Video Classification, Instance Recognition, Segmentation, Depth estimation에서도 기존 모델을 압도하는 결과를 보여줬습니다.

DINOv2 Demo1

Live Demo

Meta AI에서 공개한 Demo site에서는 Depth Estimation, Semantic Segmentation, Instance Retrieval 이상 3가지에 대한 데모를 제공하고 있습니다.

Semantic Segmentation은 Segment Anything Model에서 이미 체험한 성능과 큰 차이는 없지만, Depth Estimation, Instance Retrieval 에서 굉장히 우수한 성능을 보여주고 있어 체험하는 재미를 느낄 수 있습니다.

DINOv2 Demo segmentation

DINOv2 Demo Depth

DINOv2 Demo Retrieval

Conclusion

오늘은 모델에 데이터 자체를 잘 이해시키는데 필요한 SSL의 최신 논문 DINOv2를 가볍게 다뤄봤습니다.

이 연구는 데이터헌트에서도 활용가치가 매우 높습니다. 그 이유는

  • 좋은 Supervised Learning 결과를 얻기에는 다소 부족한 데이터 양
  • (많은 경우에) 모든 데이터가 먼저 들어오고 그 이후 레이블링을 진행하는 작업 구조

를 갖고 있기 때문입니다.

특히 두번째 이유에서 그 장점이 도드라지는데요, 레이블 된 데이터는 처음부터 많지 않기 때문에 처음에는 레이블 없이 가지고 있는 많은 데이터로 학습하는 SSL이 빛을 발하게 됩니다.
덕분에 작업자분들께 기존 방식보다 조금 더 나은 Pre-label을 제공할 수 있게 되었습니다.

Meta AI에서 Segment Anything Model (SAM)을 공개한지 얼마 안되어 DINO의 2번째 버젼을 공개했습니다. LLM에 대한 관심이 커지며 이를 응용한 AI 챗봇 구축사례와 도입 문의가 많아졌는데요. 컴퓨터 비전 분야에서도 LLM에 버금가는 강력한 성능의 Foundation model이 등장하고 있습니다. 점점 레이블이 없는 상태에서도 대규모 데이터를 이용하여 원하는 결과를 도출할 수 있는 모델이 나오면서 이제 다양한 산업에서 컴퓨터 비젼을 이용할 수 있는 길이 열리고 있다고 보입니다.

Talk to Expert