🦖

DinoV3 の特徴量を可視化してみたらすごかった話

に公開

はじめに

はじめまして!
株式会社エクサウィザーズ、先端技術開発グループ (WAND) のChai です。

2025年8月に、Meta が自己教師あり学習による画像特徴抽出モデルDinoV3 を公開しました。

本稿では DinoV3 が抽出した特徴量を主成分分析 (PCA) で 3 次元に圧縮し、

  • シーン全体 (PCA_scene)
  • 人物全体 (PCA_human)
  • 顔領域 (PCA_face)

という 3 つの粒度で可視化する実験をしてみたので、その結果をご共有します。

PCA のベクトル空間がどのように変化し、何が強調されるのかを比較することで、DinoV3 の内部表現の理解を深めることが狙いです。

最後に、DinoV3 のサイズがどれほど内部表現に影響を与えるのかも軽く検証しました。

PCA学習のために以下の画像を利用しました。

1. シーン全体に対して PCA を適用する (PCA_scene)

本稿で主に使っているDinoV3 はパラメータ数300M のViT-L/16 distilled です:
https://huggingface.co/facebook/dinov3-vitl16-pretrain-lvd1689m

まずは先ほどの画像をDinoV3 に入力し、その出力 (1024 dim) を PCA (3 dim) に射影します。
そのPCA空間 (PCA_scene) に含まれる各主成分は、今回の検証画像では「人物」「パソコン」「机」などが想定されます。

下記の図を見ると、PCA_scene では、想定通り「人物」や「パソコン」などのクラス、比較的大きなクラスとして扱われる傾向があり、顔や体などの細かいクラスは表れにくい傾向がみられます。


PCA_scene の可視化結果

2. 人物領域に対して PCA を適用する (PCA_human)

ここで人物の顔や手の部位などのより細かいクラスを識別するために、人物の領域を切り抜いて、その領域を対象に同様にPCAの学習してみます。

具体的に、下記の図の左側にある3人の人物のDinoV3 ベクトルをそれぞれのマスクでフィルタリングし、 PCA で 3 次元に縮約します。この PCA 空間をPCA_humanとします。マスクはDinoV3 の出力サイズに合わせて量子化されます。

想定される効果は以下のとおりです。

  • PCA_human 空間では、顔・手・体幹など人物の主要パーツが異なる軸として表現される。

実際に PCA_human の中で前節の PCA_scene と同じ画像で可視化を行った結果が以下のとおりです。


PCA_human の可視化結果

PCA_human の可視化結果では、頭部が紫・ピンク色、体幹が緑色、腕が薄い紫色で表現されました。
人物以外の領域は、おおむね同じ背景色になっています。

3. 顔領域に対して PCA を適用する (PCA_face)

更に細かい特徴を見るため、今度は顔領域のマスクを作成し、そのマスク内の DinoV3 特徴のみで PCA を学習します。こちらの空間を PCA_face と呼びます。具体的に、3人の人物のDinoV3 ベクトルを、下記の図の右側にある量子化されたマスクで抽出し、 PCA で 3 次元に縮約します。

想定される効果は以下のとおりです。

  • PCA_face では、目・耳・口など顔の細部パーツがさらに分離して表現される。

実際に PCA_faceの中で前節の PCA_scene と同じ画像で可視化を行った結果が以下のとおりです。


PCA_face の可視化結果

PCA_faceでは以下のように細部パーツが分離して表現されました:

パーツ
ミックス
水色
口元・目元 緑色
青色
赤色

4. DinoV3 のサイズの影響

本稿では DinoV3-ViT-L を集中的に分析してきましたが、異なるサイズの DinoV3 でも同様の分析が可能です。
下記に表示している通り、モデルのサイズが大きくなると、PCA_facePCA_human の空間内に表現できる顔のパーツが多くなります。


DinoV3 サイズ別のPCA_human 空間

PCA_human DinoV3-ViT-S+ DinoV3-ViT-L DinoV3-ViT-7B
表現できるパーツ 頭、体幹、腕 頭、体幹、腕 毛髪+眉毛+ひげ、顔の肌、体幹、腕


DinoV3 サイズ別のPCA_face空間

PCA_face DinoV3-ViT-S+ DinoV3-ViT-L DinoV3-ViT-7B
表現できるパーツ 毛髪、顔、首 毛髪、耳、額、顔、顎、首 毛髪、耳、額、顔、眉毛+目元+ひげ、顎、首

結論と考察

  • PCA_scene では「人物」クラスが一つの大きな塊として投影され、背景や小物と区別される。
  • PCA_human にすると「頭部」「上半身」「手」など、人物内部の構造が色分けされる。
  • PCA_face では「口」「目」「鼻・額」など、より微細な顔パーツが分離する。

今回の検証では、シーン全体 → 人物 → 顔 と領域を限定すると、
DinoV3 が保持している潜在情報がより細かいクラスに分解されて可視化されることが分かりました。

本アプローチは、物体検出やセマンティックセグメンテーションの前段階のアノテーション理解にも応用可能だと考えられます。

加えて、DinoV3 のサイズが大きいほど含まれている潜在情報が多くなることも分かりました。

DinoV3 の特徴空間の表現力は想像以上に豊かでした。今後も社内で多角的な検証を継続し、より実践的な応用につなげていきます。

画像ソース:

  1. https://www.pexels.com/photo/photograph-of-men-having-conversation-seating-on-chair-1015568/
  2. https://www.pexels.com/photo/man-in-blue-top-819530/
  3. https://www.pexels.com/photo/people-looking-at-laptop-computer-1595391/
エクサウィザーズ Tech Blog

Discussion