Компьютерное зрение

Self-Supervised Vision: MAE, DINO, CLIP

GPT-4V понимает изображения через 10 лет развития supervised learning - и через 3 года self-supervised. MAE (2021) обучился на ImageNet без единого label за 31 часа на 64 GPU. DINOv2 (2023) без разметки превзошёл многие supervised модели на depth estimation, segmentation, retrieval. Self-supervised - не альтернатива supervised. Это следующий уровень.

  • Meta DINOv2: без единого labeled примера выдаёт сегментационные маски через attention - применяется в Meta AR glasses
  • OpenAI CLIP: фундамент DALL-E 2 и GPT-4V - image-text joint embedding обученный на 400M пар
  • Google ALIGN: 1.8 миллиарда noisy image-text пар - лучше CLIP на grounded visual задачах
  • Tesla FSD v12: self-supervised pretraining на 1 миллион часов dashcam видео без разметки

Предварительные знания

  • Vision Transformer: токенизация патчами, [CLS]-токен, self-attention
  • Автоэнкодеры и reconstruction loss (MSE на пикселях)
  • Cross-entropy, softmax с temperature, cosine similarity для контрастивных потерь
  • Понятие аугментаций изображений и transfer learning / fine-tuning
  • Vision Transformers
  • Object Tracking

Год, когда self-supervised vision догнал supervised

Современный self-supervised прорыв в зрении стартовал в 2020 году с двух контрастивных методов: MoCo (Kaiming He с соавторами, Facebook AI) с очередью негативов и momentum-энкодером, и SimCLR (Ting Chen с соавторами, Google) с большими батчами и сильными аугментациями. Оба показали, что без единого лейбла можно выучить признаки, конкурентные с supervised. В 2021 году подходы разошлись по семействам. Alec Radford с командой OpenAI выпустил CLIP, обучив image- и text-энкодеры контрастивно на 400 млн пар из интернета и открыв zero-shot классификацию. Mathilde Caron с соавторами из Facebook AI представила DINO: self-distillation без лейблов, у которой attention-карты ViT неожиданно выдавали сегментационные маски объектов. В конце 2021 года Kaiming He предложил MAE (Masked Autoencoders, опубликован на CVPR 2022) - закрыть 75% патчей и восстановить их, при этом энкодер обрабатывает лишь видимые 25%, что дало 3-4-кратное ускорение обучения. К 2023 году DINOv2 сократил разрыв с supervised до пары процентов на ImageNet и обогнал его на ряде transfer-задач.

MAE: закрыть 75% изображения и восстановить

2021 год. OpenAI обучил DALL-E на 250 миллионах размеченных пар изображение-текст. Meta в ответ: MAE (Masked Autoencoders) - те же возможности переноса знаний, ноль ручной разметки. Идея: закрыть 75% патчей изображения и заставить ViT их восстановить.

**Архитектура MAE.** Encoder ViT видит только видимые патчи (25% изображения). Decoder - лёгкий трансформер - восстанавливает пиксели замаскированных патчей по контексту. Ключевое: encoder никогда не видит маски - нет padding и пустых токенов. 75% маскирование создаёт достаточно сложную задачу, чтобы модель выучила семантику, а не текстуры.

**Почему 75%, а не 50%?** MAE авторы (He et al. 2021) проверили разные ratios: 75% оптимально. При 50% задача слишком лёгкая - модель выучивает текстурное extrapolation. При 85% - слишком мало контекста, и модель не может восстановить детали. 75% forcing semantic understanding, а не texture copying.

Почему encoder в MAE не видит mask tokens (замаскированные патчи)?

DINO: самодистилляция без labels

DINO (2021) обнаружил: если обучить ViT через self-distillation, attention карты выдают точные сегментационные маски объектов - без единой маски в обучающих данных. [CLS] токен кодирует семантику объекта, а не сцены.

**Mode collapse и centering.** DINO без centering коллапсирует: teacher и student оба предсказывают один класс для всех изображений. Решение: вычитать EMA center из teacher logits. Это forcing diversity - аналог BatchNorm, но для распределения по классам. DINOv2 (2023) добавил SwiGLU FFN и Layer Scale - улучшение HOTA на ImageNet с 79.9 до 84.5.

Почему teacher network в DINO обновляется через EMA, а не через backpropagation?

CLIP: картинка и текст в одном пространстве

OpenAI CLIP (2021) обучен на 400 миллионах пар изображение-текст из интернета. Результат: zero-shot классификация, где промпт 'a photo of a cat' сравнивается с embedding изображения. ImageNet Top-1: 76.2% без единого примера из ImageNet в обучении.

**CLIP limitations.** CLIP плохо работает с fine-grained задачами: различить Toyota Camry от Honda Accord он не может. Причина: интернет-тексты не содержат детальных описаний марок автомобилей - только 'car', 'vehicle'. ALIGN (Google, 2021) обучил тот же контрастивный подход на 1.8 миллиарда пар - лучше на grounded tasks, хуже на zero-shot из-за шума в данных.

Как CLIP классифицирует изображение в zero-shot режиме без примеров нового класса?

Contrastive Learning: SimCLR, MoCo и выбор негативов

SimCLR (Google, 2020) и MoCo (Facebook, 2020) заложили фундамент self-supervised contrastive vision до DINO и MAE. Принцип: два аугментированных вида одного изображения - позитивная пара. Все остальные изображения в батче - негативы. Задача: сближать позитивы, отталкивать негативы в embedding space.

**Collapse и решения.** Без негативов SimCLR коллапсирует: модель выдаёт одинаковый вектор для всех изображений. BYOL (Bootstrap Your Own Latent) решает это без негативов - через asymmetric architecture (predictor на одной стороне). Барлоу Twins - через decorrelation матрицы признаков. MAE и DINO - через reconstruction и distillation. Collapse - центральная проблема SSL.

Self-supervised модели уступают supervised по качеству

DINOv2 на ImageNet: 86.5% top-1 без labels vs 88.6% supervised ViT-L - разрыв 2%, а не 10%. На transfer задачах DINOv2 часто превосходит supervised: предобученный на интернете без labels он видит более разнообразные признаки чем модель, оптимизированная под 1000 ImageNet классов.

Labels - это bottleneck: они кодируют только то, что аннотатор считал важным. Self-supervised обучение на 400M изображений выдаёт более богатые признаки для downstream задач.

Почему MoCo использует очередь (queue) негативных примеров вместо обычного большого батча?

Ключевые идеи

  • MAE: encoder видит 25% патчей, decoder восстанавливает оставшиеся 75% - 3-4x быстрее при обучении
  • DINO: student-teacher self-distillation с EMA teacher - attention карты дают сегментацию без labels
  • CLIP: contrastive image-text обучение на 400M пар - zero-shot через text prompts
  • SimCLR/MoCo: аугментации одного изображения = позитив, остальные = негативы - collapse без кардинальных мер
  • SSL vs Supervised: разрыв сократился до 2% - self-supervised даёт более богатые признаки для transfer

Связанные темы

Self-supervised обучение строится на ViT архитектуре и ведёт к мультимодальным моделям.

  • Modern Architectures — ViT - основа MAE и DINO: patch tokenization, position encoding, attention
  • Object Tracking — Re-ID embeddings для DeepSORT улучшаются через SSL contrastive pretraining
  • Vision-Language Models — CLIP embeddings - фундамент для VLM: DALL-E 2, GPT-4V, LLaVA

Вопросы для размышления

  • MAE восстанавливает пиксели, DINO предсказывает distribution - какой pretext task лучше подходит для downstream segmentation? И почему?
  • CLIP обучен на интернет-тексте. Как это влияет на bias модели и какие downstream задачи пострадают больше всего?
  • DINOv2 превосходит supervised на depth estimation. Почему 'безразметочная' модель лучше справляется с задачей, требующей понимания 3D?

Связанные уроки

  • cv-15 — Re-ID embeddings из трекинга улучшаются через self-supervised contrastive обучение
  • cv-05 — ViT архитектура - основа MAE и DINO
  • cv-17 — CLIP embeddings - фундамент Vision-Language Models следующего урока
  • cv-11 — Диффузионные модели используют masked denoising - аналог MAE в генерации
  • dl-17 — Self-supervised pretraining формализовано в курсе DL
  • ml-01
Self-Supervised Vision: MAE, DINO, CLIP

0

1

Войти