Sobes.tech
Назад к вопросам
Middle — Senior
11

Что такое DINO и DINO-v2?

Компании, где спрашивали
GravityField
ПАО Газпром нефть

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

DINO — это self-supervised подход к обучению visual representation через дистилляцию без разметки, где student учится повторять выходы teacher. DINO-v2 — более современная и сильная версия, которая дает универсальные embeddings для изображений и часто лучше переносится на downstream-задачи. Важно понимать не только идею self-supervised обучения, но и зачем такие модели полезны на практике.

Определение:

DINO расшифровывается как self-Distillation with NO labels. Это метод self-supervised обучения, в котором две модели — teacher и student — учатся согласовывать свои представления на разных аугментациях одного и того же изображения, без ручных меток.

DINO-v2 — улучшенная версия этого подхода. Она обучается на очень больших наборах данных и дает более качественные и универсальные эмбеддинги, которые хорошо работают для классификации, поиска похожих изображений, сегментации и других задач, где важно хорошее feature representation.

Пример использования:

Например, если нужно построить систему поиска похожих изображений товаров без большого размеченного датасета, можно взять DINO-v2 как feature extractor, получить эмбеддинги изображений и затем искать ближайшие соседние вектора.

# Псевдокод: получение эмбеддингов изображений через DINO-v2
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModel

processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
model = AutoModel.from_pretrained("facebook/dinov2-base")

image = Image.open("product.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)

embedding = outputs.last_hidden_state.mean(dim=1)
print(embedding.shape)

Пояснение кода:

Код показывает типичный сценарий использования DINO-v2 как encoder’а для изображения. Сначала загружается processor для подготовки изображения и модель для извлечения признаков. Затем картинка приводится к нужному формату, прогоняется через модель, и на выходе получается тензор признаков.

Дальше embedding можно использовать для сравнения изображений: считать cosine similarity, кластеризовать объекты или подавать признаки в простую downstream-модель.

Ключевые моменты:

  • DINO — это self-supervised метод обучения visual representations без разметки.
  • Основная идея: student повторяет поведение teacher на разных аугментациях одного изображения.
  • DINO полезен тем, что learns strong features, которые можно переиспользовать на многих задачах.
  • DINO-v2 — более мощная и универсальная версия, ориентированная на качественные embeddings.
  • Такие модели часто используют как backbone для feature extraction, retrieval, clustering и transfer learning.
  • На собеседовании важно подчеркнуть разницу между обучением representation и решением конечной задачи с метками.