Skip to main content

DINO

DINO (self-DIstillation with NO labels) は、ViT に対して self-distillation 系の self-supervised learning を確立した model です。「ラベルなしで学習した ViT の attention map が、object segmentation に近い意味的な領域を勝手に捉える」ことを示し、self-supervised vision representation の地位を一気に押し上げました。

構造

  • 同じ image から global / local の複数 crop を作る
  • Teacher は global crop しか見ない
  • Student はすべての crop を見て teacher の出力に近づける
  • Teacher は student の EMA

Centering と sharpening

Collapse を避けるために、teacher 出力に centering (バッチ平均を引く) と sharpening (低い temperature) を組み合わせます。

  • Centering: 均一分布への偏りを防ぐ
  • Sharpening: 平坦化を防ぐ

両者のバランスで、trivial collapse を避けます。

創発する semantic attention

DINO で学習した ViT の最終層 attention map は、object boundary に沿って活性化することが知られています。これは、self-supervised なのに semantic segmentation 的な情報が自然に出てくることを意味し、後続の DINOv2 / DINOv3、SAM の image backbone、open-vocabulary 系 model に大きな影響を与えました。

数式で見る DINO の teacher-student loss

DINO は、student network と teacher network の出力分布を一致させる self-distillation として書けます。Student の出力分布を psp_s、teacher の出力分布を ptp_t とすると、loss は cross-entropy です。

L=kpt(k)logps(k)\mathcal{L}=-\sum_k p_t^{(k)}\log p_s^{(k)}

Teacher は student の exponential moving average として更新されます。

θtmθt+(1m)θs\theta_t \leftarrow m\theta_t+(1-m)\theta_s

ここで、mm は momentum coefficient です。この式の気持ちは、「teacher を急に変えず、student の安定した平均として target を作る」というものです。さらに centering と sharpening によって、すべての入力が同じ分布へ collapse することを防ぎます。

関連ページ

主なソース