DINOv2とは?ラベルなし画像から学び、画像検索や分類に転用できる視覚特徴の技術

DINOv2は、画像全体とパッチ単位の自己教師あり学習で汎用的な視覚特徴を獲得する技術です。教師・生徒モデル、データ選別、蒸留の仕組みと実験結果、画像検索や少量ラベル分類への応用を解説します。

参考文献

DINOv2: Learning Robust Visual Features without Supervision

Maxime Oquab, Timothée Darcet, Théo Moutakanni, Huy V. Vo, Marc Szafraniec, Vasil Khalidov, Pierre Fernandez, Daniel Haziza, Francisco Massa, Alaaeldin El-Nouby, Mahmoud Assran, Nicolas Ballas, Wojciech Galuba, Russell Howes, Po-Yao Huang, Shang-Wen Li, Ishan Misra, Michael Rabbat, Vasu Sharma, Gabriel Synnaeve, Hu Xu, Hervé Jegou, Julien Mairal, Patrick Labatut, Armand Joulin, Piotr Bojanowski

論文を見る

今回の論文

今回取り上げるのは、Maxime Oquab、Timothée Darcet、Théo Moutakanniら、Meta AI ResearchとInriaの研究者による「DINOv2: Learning Robust Visual Features without Supervision」です。2023年4月14日にarXivで初公開されました。研究分野はコンピュータビジョン、自己教師あり学習、視覚表現学習です。論文ページと本文のv2を参照しています。

この論文を選んだ理由は、「画像を理解するモデルを用途ごとに一から学習する」という開発の負担を減らす考え方が学べるからです。画像の特徴を取り出す部分を共通化し、その上に検索や小さな分類器を載せる設計は、小規模な画像アプリにも応用できます。この記事では、後続のDINOv3ではなく、DINOv2自身の学習方法と評価を扱います。

どんな技術か

DINOv2は、正解カテゴリや画像の説明文を学習目標に使わず、画像だけから汎用的な特徴を学ぶ技術です。学習後のモデルは、画像全体を表すベクトルと、画像の小さな領域ごとのベクトルを出力します。

たとえば、建物の写真を一つのベクトルへ変換できれば、その近くにあるベクトルの写真を検索できます。領域ごとの特徴を使えば、どこが道路でどこが建物かを判定するモデルの入力にもできます。DINOv2自身が自然言語で画像を説明したり、カテゴリ名を自動的に返したりするわけではありません。後段の検索処理や予測器が使いやすい「画像の表現」を作るモデルです。

中心となる考え方は、同じ画像の違う切り出しを見ても整合する特徴を学ばせることと、隠した領域の特徴を周囲から予測させることです。これに、大規模画像データの選別、学習の安定化、巨大モデルから小型モデルへの蒸留を組み合わせています。論文本文、3〜5節

課題

画像分類にはラベル、セグメンテーションには領域ごとの正解が必要です。しかし、社内に画像が大量にあっても、すべてへ正解を付けるのは難しいものです。分類用に作ったモデルが、検索や領域認識にもそのまま適しているとは限りません。

画像と文章の対応から学ぶ方法にも強みがありますが、説明文は画像のすべてを記述しません。「犬が走っている」という文章からは、足の位置や背景の細部まで学習信号を得にくい場合があります。DINOv2は、文章との対応を必要とせず、画像全体と局所領域の双方に使える特徴を目指します。

ただし、画像だけを大量に集めれば解決するわけではありません。同じような画像が多いと、学習対象が偏ります。また、教師と生徒の出力を単純に一致させるだけなら、すべての画像へ同じ出力を返しても目標を満たしてしまいます。多様なデータを選ぶことと、意味のある違いが残るように学習することが必要です。

実際の画像システムでは、検索用・分類用・領域認識用に別々の特徴抽出器を管理すると、更新や運用の負担が増えます。複数用途へ転用できる表現があれば、画像を読む部分を共有し、用途ごとの学習を後段へ集約できます。

用語解説

自己教師あり学習
人手で付けた正解の代わりに、データ自身から学習目標を作る方法です。DINOv2では同じ画像の別ビューや、隠していない画像を見た教師の出力が目標になります。下流の分類器までラベル不要という意味ではありません。
Vision Transformerとパッチ特徴
画像を小さな区画であるパッチに分け、Transformerで処理するモデルです。画像全体を集約するclass tokenと、位置ごとのpatch tokenがあり、DINOv2は両方へ学習目標を設定します。
教師・生徒モデルとEMA
教師の出力を目標にして生徒を学習する構成です。大規模モデルの自己教師あり事前学習では、教師を生徒の重みの指数移動平均(EMA)で更新します。最近の生徒を滑らかに平均した教師が、急変しにくい目標を作ります。
表現の崩壊
違う画像でも同じ特徴を返し、画像間の違いを失う状態です。出力一致だけを目指す学習で起こり得るため、DINOv2では教師の出力の偏りを抑え、特徴空間の広がりを促す仕組みが重要になります。
凍結特徴と線形評価
画像エンコーダの重みを更新せず、出力特徴の上に小さな線形分類器だけを学習する評価です。DINOv2の汎用性を測る基準であり、分類器には正解ラベルを使います。エンコーダ全体を調整するファインチューニングと区別する必要があります。

技術の仕組み

画像全体の意味と、領域の特徴を同時に学びます

学習では同じ画像から大きな切り出しと小さな切り出しを作り、教師と生徒に与えます。画像全体の学習目標であるDINO損失は、違う切り出しから得たclass tokenの出力を一致させます。

ここで一致させるのは、単なる生のベクトルではありません。学習用の投影ヘッドを通し、複数の学習可能なプロトタイプへのスコアを確率分布へ変換して比較します。プロトタイプは人が指定した「犬」「建物」といったカテゴリではなく、学習中に形成される比較先です。

生徒の分布をp_s、教師の分布をp_tとすると、DINO損失は次の形です。

L_DINO = - Σ_k p_t(k) log p_s(k)

教師が高い重みを付けたプロトタイプに、生徒も高い重みを付けるほど損失が小さくなります。これにより、画像の一部しか見えていなくても、別の切り出しと整合する全体表現を学びます。

局所領域にはiBOTの目標を使います。生徒へ渡す画像の一部パッチを隠し、隠していない画像を見た教師が同じ位置に出した分布を予測させます。ピクセル値を元どおり描くのではなく、教師のパッチ表現を予測する点が重要です。DINOv2では画像全体用とパッチ用の投影ヘッドを分け、大規模学習で異なる目標を扱いやすくしています。論文本文、4節

出力の偏りと、特徴の過度な集中を抑えます

教師は勾配で直接更新せず、生徒の重みのEMAで更新します。それだけでは出力の崩壊を防ぐには不十分なため、教師の分布にSinkhorn-Knoppによる正規化を使います。バッチ全体で少数のプロトタイプばかりが使われる偏りを抑える役割があります。

さらにKoLeo正則化を加えます。正規化した画像特徴について、バッチ内で最も近い別画像の特徴との距離を調べ、その距離が過度に小さくなるのを抑えます。すべての画像を無条件に遠ざけるというより、特徴が狭い場所へ集中するのを緩和する追加の目標です。分類だけでなく、ベクトルの近さで画像を並べる検索にも関係します。

学習用の画像を、視覚的な類似度で選びます

論文のLVD-142Mは約1億4,200万枚の画像からなる学習データです。約12億枚の候補画像と、整理された既存画像データを起点に、重複を除き、画像の類似度を使って学習対象を選びます。

具体的には、自己教師ありで学習した別の画像モデルでベクトルを計算します。大きな参照データでは各画像の近傍を取得し、小さな参照データでは対応するクラスタから画像を選びます。候補を無作為に拾うだけでは埋もれやすい種類の画像も、学習集合へ取り込みやすくする仕組みです。

評価用画像の近重複も学習候補から除去します。また、既存の整理済みデータを参照に使うため、「画像カテゴリや説明文を学習目標にしない」ことと「データ選定に人間の整理した情報が一切関わらない」ことは同じではありません。論文本文、3節

大きく学び、小さなモデルへ移します

最初に約11億パラメータのViT-gを学習し、それを固定した教師として小型モデルへ蒸留します。この段階では教師を生徒のEMAで更新しません。代わりに、最終的な小型モデルとして生徒のEMAを使います。事前学習時の自己蒸留と、小型化のための蒸留では、教師の扱いが違います。

学習の計算負担には、メモリ効率のよいAttention、異なる長さの切り出しをまとめて処理するsequence packing、モデル状態をGPU間で分割するFSDPなどで対応します。また、最後の短い期間だけ画像解像度を518×518へ上げ、局所タスクで必要な細部を補います。

利用時は学習用のプロトタイプ予測ヘッドではなく、画像エンコーダの特徴を使います。画像検索なら全体特徴を保存して近傍検索し、領域認識ならパッチ特徴へ予測器を載せます。論文本文、5節、著者の公開実装

実験と結果

論文は、画像全体の分類、画像同士の検索、セグメンテーション、深度推定などで、凍結した特徴がどれだけ役立つかを検証しています。以下の値はv2本文の結果です。比較モデルの大きさや事前学習データも異なるため、すべてを損失関数だけの効果と解釈することはできません。

エンコーダを固定した分類でも高い精度が出ました

ImageNet-1kの線形評価では、224×224入力のDINOv2 ViT-g/14がTop-1正解率86.5%でした。比較されたiBOT ViT-L/16は82.3%、OpenCLIP ViT-G/14は86.2%です。ここでの86.5%は、ラベルなしでカテゴリ名を当てた結果ではなく、凍結特徴の上にラベル付きで線形分類器を学習した結果です。

同じDINOv2 ViT-g/14を224×224で全体ファインチューニングすると88.5%になりました。追加調整にも効果はありますが、固定した特徴だけでも強い分類器を作れることが示されています。論文本文、表4・表5

検索と領域認識には、異なる工夫が効きました

表3の損失項の比較では、KoLeoを加えた条件でOxford-Mの画像検索mAPが55.6から63.9へ、8.3ポイント改善しました。mAPは正しい画像を検索順位の上位に集められるかを評価する指標です。一方、ADE20kのセグメンテーションmIoUは47.2から47.1で、改善していません。

マスク付きパッチ予測の有無を比べると、ADE20kのmIoUは44.2から47.1へ2.9ポイント改善しました。mIoUは各カテゴリの予測領域と正解領域の重なりを測ります。この条件ではOxford-MのmAPは64.3から63.9へわずかに下がっています。

つまり、検索に向く特徴の広がりと、領域認識に向く局所特徴は、同じ指標だけでは測れません。この比較は最終モデルより短い学習で行われており、最終性能の表と混ぜて読むべきではありません。論文本文、表3

転用先によって得意・不得意があります

凍結特徴を使う別の線形評価では、DINOv2 ViT-g/14はiNaturalist 2021で85.7%、OpenCLIP ViT-G/14は76.0%でした。一方、Places205のシーン分類はDINOv2が67.5%、OpenCLIPが69.8%で、DINOv2が下回りました。

また、ViT-L/14への蒸留では、ImageNet-1kの線形評価がスクラッチ学習の84.5%から86.3%へ改善しています。最大モデルをそのまま配備せず、学習成果を小さいモデルへ移す方向も実験で裏付けられています。論文本文、表7・図5

何に使える?

以下は、論文が示した特徴の性質から考えられる応用案です。個々の業務での効果が、この論文で検証されたわけではありません。

画像を入力にする、類似画像検索

商品写真、設備写真、素材画像などをベクトル化し、似た画像を探すアプリに使えそうです。画像に適切なタグがなくても、画像同士を比較する検索の入口を作れます。ただし、「同じ型番」と「見た目が似た別製品」は別の正解なので、型番検索では独自の評価が必要です。

小さな分類器を載せる社内ツール

点検写真をカテゴリへ振り分けるような用途では、エンコーダを固定して特徴を事前計算し、その上の分類器だけを学習する構成が候補になります。分類ルールの変更時に、特徴抽出からやり直す負担を抑えられます。少量ラベルでの有効性は業務データで検証する必要があり、論文のImageNet評価だけでは保証できません。

領域特徴を使う画像処理の土台

画像の場所ごとに特徴が得られるため、部位の対応付けやセグメンテーション、深度推定の入力に使えます。全体を一つのベクトルにするだけでは失われる位置情報を使える点が利点です。論文の特徴可視化は可能性を示しますが、正確な輪郭や深度を得るには、用途に合った後段モデルと評価が必要です。

開発や事業へのヒント

「画像を読む部分」と「業務の判断」を分けます

小規模なプロダクトでは、公開済みエンコーダで特徴を作り、検索や分類を後段へ置く構成から試す価値があります。モデル全体の再学習を前提にせず、画像前処理、検索対象、分類器を個別に改善できます。

特徴を保存する場合は、モデルの種類、重みのバージョン、画像の切り出し方、入力解像度を一緒に記録します。同じベクトル次元でも、モデルや前処理が変われば比較の意味が変わるためです。

評価セットを、機能ごとに作ります

分類で高い精度が出ても、同じ商品を検索できるとは限りません。論文でもKoLeoとパッチ予測は、検索とセグメンテーションで異なる効果を示しました。

商品検索なら、背景だけが似ている画像や、形が似た別型番を評価へ含めます。点検分類なら、照明、撮影機器、現場が変わった画像で確認します。汎用特徴の採用判断を、単一の公開ベンチマークから業務の失敗例へ移すことが実装上のヒントです。

データ量を増やす前に、偏りを調べます

DINOv2のデータ選別は、枚数だけでなく多様性が重要だと示しています。独自データで追加学習するなら、重複画像が多くないか、一部の製品や撮影条件が過剰に含まれていないかを先に確認できます。

論文と同規模の選別基盤を再現する必要はありません。画像のクラスタを調べ、少ない条件のサンプルを追加し、評価画像と学習画像を分離するという考え方は、小さい開発にも持ち込めます。これは論文からの設計上の示唆です。

限界

DINOv2の大規模事前学習は、小さな画像アプリの開発と同じ計算規模ではありません。巨大モデル、億単位のデータ、分散学習を扱う必要があります。著者のコードで学習を高速化しても、公開済み特徴を利用することと、学習全体を再現することには大きな差があります。

学習データのLVD-142Mは公開実装のように配布されていないため、同じ事前学習結果を完全に再現するには制約があります。特徴はデータ分布にも依存し、特殊な材質、微小な傷、専門的な画像で同様に使えるかは別途検証が必要です。

DINOv2は画像だけの表現モデルなので、文章から直接画像を探す共通の画像・言語空間は提供しません。自然言語検索を作るなら、言語と対応させる別のモデルや学習が必要です。

また、パッチ特徴は画素そのものの細かさではありません。小さな物体や厳密な境界では、解像度、後段の予測器、局所的な追加処理が性能を左右します。エンコーダを固定したセグメンテーションでも、予測器の学習コストがなくなるわけではありません。

推論時にも、解像度を上げればパッチ数と計算負担が増えます。小型モデルと大型モデルの精度、特徴の保存容量、画像の登録速度、検索の待ち時間を、実際のデータで比較する必要があります。論文本文、公開実装とモデル

よくある質問

Q. DINOv2は画像にカテゴリ名を自動で付けられますか?

A. 基本の出力は画像特徴です。カテゴリ名を返すには、ラベル付きデータで分類器を学習するなどの後段処理が必要です。論文の線形評価も、分類器にはImageNetのラベルを使っています。

Q. CLIPやSigLIPと同じように、文章で画像検索できますか?

A. DINOv2だけではできません。画像同士の特徴比較はできますが、文章を同じ空間へ変換する言語エンコーダを一緒に学習していないためです。検索の入力が画像か文章かに応じて、モデルの役割を選びます。

Q. 利用するために、大量の画像で事前学習し直す必要がありますか?

A. 公開済みのエンコーダで特徴を抽出するなら不要です。まず凍結特徴で検索や分類器を作り、現場データで不足を確認してから追加学習を検討できます。分類器を作る場合は、用途に応じたラベルが必要です。

Q. 画像全体の特徴とパッチ特徴は、どう使い分けますか?

A. 画像単位で順位を付ける検索や分類には、全体特徴が扱いやすいです。画像のどの場所かを扱う領域認識や対応付けには、パッチ特徴を使います。細かな位置の判断では後段モデルも含めて評価します。

Q. 公開ベンチマークの精度が高ければ、商品検索にも有効ですか?

A. 有力な候補にはなりますが、保証はありません。分類の正解と、検索で求める「同一商品」の正解は異なります。背景、色違い、類似形状の別製品を含む検索評価を用意し、必要な区別ができるか確認します。

今日の学び

この論文は、用途ごとのラベル付けや大規模な再学習に頼りすぎず、複数の画像タスクへ転用できる特徴を作る課題を扱いました。

画像全体の自己蒸留と、マスクしたパッチの特徴予測を組み合わせ、データの選別と特徴の広がりの制御で解こうとしています。さらに、巨大モデルの成果を小型モデルへ蒸留しました。

開発へのヒントは、画像を読む共通部分と業務判断を分けること、そして分類・検索・領域認識を別々に評価することです。汎用特徴を土台にすると、後段の小さな処理や業務データの整備へ改善の力を向けやすくなります。