Компьютерное зрение
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
Год, когда 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