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 の出力分布を 、teacher の出力分布を とすると、loss は cross-entropy です。
Teacher は student の exponential moving average として更新されます。
ここで、 は momentum coefficient です。この式の気持ちは、「teacher を急に変えず、student の安定した平均として target を作る」というものです。さらに centering と sharpening によって、すべての入力が同じ分布へ collapse することを防ぎます。
関連ページ
主なソース
- DINO: https://arxiv.org/abs/2104.14294
- DINO GitHub: https://github.com/facebookresearch/dino