今回の論文
今回読むのは、Cornell UniversityのLuming Tang、Menglin Jia、Qianqian Wang、Cheng Perng Phoo、Bharath Hariharanによる「Emergent Correspondence from Image Diffusion」です。2023年6月6日にarXivで初版が公開され、NeurIPS 2023で発表されました。研究分野はコンピュータビジョン、拡散モデル、画像間の対応付けです。
原論文はarXivの公開ページから読めます。この記事は改訂版v2の本文を基にしています。
選んだ理由は、「画像を描くために学んだモデルを、画像を理解する特徴抽出器として使う」という転用の考え方が実践的だからです。対応点を大量に手作業で付けて再学習する前に、既存モデルの内部表現でどこまでできるかを試せます。
どんな技術か
DIFT(DIffusion FeaTures)は、学習済みの画像拡散モデルから、画像の場所ごとの特徴ベクトルを取り出す方法です。2枚の画像で特徴の近い場所を探すと、「こちらの猫の目は、あちらの猫のどこに当たるか」といった対応点を見つけられます。
入力は実際の写真でも構いません。画像へ適量のノイズを加え、ノイズ除去ネットワークを通し、その途中の特徴マップを使います。新しい対応付けモデルの学習も、画像を完成させるまでの反復生成も必要ありません。
この技術が扱うのは、画像全体が似ているかだけではなく、「どの場所が対応するか」です。別個体の同じ部位を探す意味的対応、同じ物体を別の視点から撮った幾何的対応、動画内で同じ部位を追う時間的対応を、特徴比較という共通の操作で扱います。
課題
色や模様が近い画素を探すだけでは、画像間の対応は安定しません。同じ目でも照明や向きで見え方が変わり、別の動物なら毛色や形も異なります。一方、似た色の背景を同じ部位だと誤認することもあります。必要なのは、外観の違いを許容しつつ、位置と部位の情報を保った特徴です。
対応点を教師ありで学習する方法には、画像ペアの正解位置を用意する負担があります。画像単位の分類や画像・文章の対応から学ぶ特徴も利用できますが、画像全体の意味が合っていても、細かな部位まで識別しやすいとは限りません。
たとえば画像編集では、1枚の帽子へ貼った模様を別の写真の帽子にも移したくなります。動画の注釈では、最初のフレームで指定した物体領域を後続フレームへ移せると作業を減らせます。どちらも「同じカテゴリを認識する」だけでは足りず、具体的な場所を特定する必要があります。
位置ごとの特徴を得る別の方向として、DINOv2の画像全体とパッチ単位の自己教師あり学習もあります。DIFTは生成用のノイズ除去学習から得た特徴を使う点が異なります。なお、今回の論文の比較対象は元のDINOであり、DINOv2との性能比較ではありません。
用語解説
- 視覚的対応(Visual Correspondence)
- 2枚の画像の位置同士を結び付けることです。別個体の「目」の対応と、同一物体の同じ点の対応は目的が異なり、DIFTでも特徴を抽出する設定を使い分けます。
- 拡散モデルとノイズ時刻
- 異なる強さのノイズを加えたデータから、ノイズを予測して画像を復元するよう学習する生成モデルです。時刻tはノイズ量に対応する指標で、DIFTでは生成を何回繰り返すかではなく、特徴抽出時にどれだけ画像を汚すかを決めます。
- U-Netと中間特徴マップ
- 空間解像度を縮小してから拡大する構造を持つネットワークと、その途中で得られる位置ごとのベクトル集合です。DIFTはU-Netのアップサンプリング側から特徴を取り、最終的なノイズ予測値ではなく、この内部表現を比較します。
- 潜在拡散とVAE
- 画像をVAEで小さな潜在表現へ圧縮し、その空間でノイズ除去を行う方式です。Stable Diffusionを使うDIFTでは、写真の画素へ直接ノイズを加えるのではなく、VAEで変換した潜在表現へ加えます。
- コサイン距離と最近傍
- ベクトルの向きがどれだけ似ているかを測り、最も近い候補を選ぶ方法です。DIFTでは元画像の指定位置の特徴に最も近い特徴を、相手画像の位置から探します。近い候補があっても、正しい対応が存在する保証にはなりません。
技術の仕組み
実画像を、モデルが学んだノイズ付き入力へ近づけます
拡散モデルは、きれいな画像だけを読むモデルではありません。ノイズ量の異なる入力からノイズを予測するよう学習されています。そのためDIFTは、実画像からいきなり特徴を取る代わりに、順方向の拡散過程を使って入力へノイズを加えます。
論文の式は次の形です。
x_t = sqrt(alpha_t) * x_0 + sqrt(1 - alpha_t) * epsilon
x_0は元データ、epsilonはランダムなガウスノイズ、alpha_tは時刻tに応じた混合比率です。Stable Diffusionではx_0が画像の潜在表現になります。元データをどれだけ残し、どれだけノイズを混ぜるかを調整して、U-Netが事前学習で見た入力に近づけます。
続いてx_tとt、条件付きモデルならテキスト条件をU-Netへ渡します。指定した層の特徴を保存すればよく、そこから何十段階も画像を生成し直す必要はありません。論文4節
ノイズ量と抽出層で、意味と細部のバランスを変えます
論文では、比較的大きいtとアップサンプリング側の早い層が意味的な特徴を、小さいtと後ろの層が細部を捉えやすい傾向を示しています。別々の猫の目を探す場合は毛色の違いを無視したいですが、同じ建物の撮影位置を合わせる場合は局所的な形状も重要です。
ただし、ノイズを増やしすぎると物体構造まで失われます。「多いほど意味理解が強い」という単純な規則ではありません。著者らはタスクごとにtと抽出層の組み合わせを探索しています。
意味的対応のDIFT_sdでは、Stable Diffusion 2.1に768×768の画像を入力し、t=261、0始まりのアップサンプリングブロック番号1を使います。出力は48×48の位置それぞれに1,280次元のベクトルがある特徴マップです。画素単位の位置を扱う際は補間しますが、補間によって細かな情報が新たに生まれるわけではありません。
また、この意味的対応の評価では、データセットで与えられたカテゴリ名を使い、「a photo of a cat」のような条件を指定します。対応点ラベルでモデルを学習していないことと、評価でカテゴリ情報も一切使っていないことは区別する必要があります。論文付録C.1
ランダムノイズの影響を平均化してから比較します
同じ画像でも、加えるノイズが違えば特徴が変わります。DIFTは異なるノイズで複数回特徴を取り、その平均を最終表現にします。論文の基本設定は8サンプルで、GPUメモリの制約がある場合は4サンプルに減らしています。
2枚の画像から特徴を得たら、元画像の指定位置のベクトルを取り出し、相手画像の各位置とのコサイン距離を計算します。最小距離の位置が対応点の予測です。特徴抽出と対応探索を分けているため、固定画像の特徴を保存し、ユーザーが複数の場所を指定した際に再利用できます。
なぜ生成学習で対応能力が生まれるのでしょうか。著者らは、ノイズから画像を復元するには各位置に有用な情報を持つ必要があるためだと考察しています。ただし、これは実験で確認された対応性能を説明する仮説であり、発生原理が証明されたわけではありません。論文3節・付録B
実験と結果
論文は、Stable Diffusion 2.1からのDIFT_sdと、ラベルなしImageNetで学んだADMからのDIFT_admを評価しています。比較にはLAIONで学んだOpenCLIPと、ImageNetで学んだDINOなどを使います。事前学習データを近づけた比較ですが、モデル構造や規模まで同一にした実験ではありません。
意味的対応では、集計方式をそろえて比べます
SPair-71kは、視点や大きさの変化を含む18カテゴリ・12,234テスト画像ペアで対応点を評価するデータセットです。PCKは、予測点が正解の近くに入った割合です。ここでは物体の境界ボックスの高さ・幅のうち大きい方の10%を許容距離にします。
表1の「画像ごとのPCKを平均する」条件では、次の結果でした。
| 特徴抽出法 | SPair-71k PCK per image(%) |
|---|---|
| DINO | 33.9 |
| DIFT_adm | 46.3 |
| OpenCLIP | 38.4 |
| DIFT_sd | 52.9 |
DIFT_sdはDINOより19.0ポイント、OpenCLIPより14.5ポイント高くなりました。一方、同じ表の教師ありSCorrSANは55.3%で、全体の値ではDIFT_sdを上回っています。「教師あり手法を全面的に超えた」とは読めません。
表2の「全キーポイントで集計する」条件では、DIFT_sdは59.5%です。52.9%と59.5%は同じモデルでも集計方式が異なる結果なので、混ぜて比較しないことが重要です。
さらにPF-WILLOWでは、画像ごとのPCK、同じ境界ボックス基準の許容距離0.1でDIFT_sdが81.2%、教師ありSCorrSANが80.0%でした。データセットによって優劣も変わります。論文表1〜3
動画では、別の拡散モデルの特徴が強くなりました
DAVIS-2017では、初期フレームの物体マスクを後続へ伝える評価を行います。領域の重なりを測るJと、境界を測るFの平均で、DINOは71.4、DIFT_admは75.7、DIFT_sdは70.0でした。
つまり、意味的対応で強いDIFT_sdが動画でも最良とは限りません。動画自体で追加学習していなくても特徴は転用できますが、初期のマスクを与えるラベル伝播評価であり、動画から物体を完全自動で発見する実験ではありません。
論文はHPatchesの視点・照明変化に対する幾何的対応や、JHMDBの姿勢点の伝播も検証しています。これらは同じ意味的対応用の設定をそのまま使う評価ではなく、タスクに応じた抽出設定と後処理を伴います。論文6節・表5
平均化には、精度と計算時間の交換があります
付録Bでは、平均化を外した場合、SPair-71kのキーポイント単位PCKがDIFT_sdで59.5%から57.9%へ下がっています。ノイズの平均化は役立ちますが、特徴抽出の実行量を増やします。
同付録のA6000で768×768の画像を処理する203ミリ秒というDIFT_sdの値は、平均化で増える時間を含まない例です。8サンプル平均化や対応探索まで含めたアプリの待ち時間として、そのまま使うべきではありません。論文付録B
何に使える?
論文で実際に示された用途は、画像間での編集の転写と動画ラベルの伝播です。それ以外の業務への利用は、特徴の性質から考えられる応用案であり、現場での検証が必要です。
1枚で指定した編集を、別の画像へ移します
論文の編集例では、編集したい領域内の対応点からホモグラフィという平面上の変換を求め、ステッカーなどを相手画像へ移します。別の写真や絵の同じ意味を持つ部位へ編集を移せると、各画像で位置を指定し直す手間を減らせます。
DIFTそのものが自然な編集画像を生成するわけではありません。対応を得た後の変形や合成が別に必要です。立体物の大きな変形を一つの平面変換で処理できるとも限りません。論文5.3節
動画アノテーションの下書きを作ります
最初のフレームで人が物体を指定し、特徴の近さで後続フレームへ注釈を移す支援ツールが候補です。全フレームを一から塗る作業を、提案された領域の修正へ変えられる可能性があります。長い遮蔽の後に復帰した物体や、同じ見た目の複数個体は別途評価します。
商品や設備の「同じ部位」を照合します
異なる商品の取っ手や、設備写真の同じ操作部を対応候補として提示する用途も考えられます。全体画像の類似検索では見逃す局所部位を比較できる点が利点です。ただし、意味的に似た部品を探すことと、型番が一致する部品を特定することは異なります。型番や傷の判定には別の根拠を組み合わせます。
開発や事業へのヒント
まず「1点を指定して対応候補を返す」機能から試します
小規模な試作なら、2枚の画像と指定点を受け取り、対応候補と類似度マップを返す構成が扱いやすいです。専用モデルを学習する前に、姿勢、背景、遮蔽を変えた画像ペアで、どの条件に強いか確認できます。
特徴抽出後はモデルの再実行なしで指定点を変えられるため、同じ素材へ繰り返し注釈する編集画面と相性があります。公開実装の特徴抽出・編集転写コードが処理の参考になります。
モデル名だけでなく、特徴の設定も保存します
重みのバージョン、入力サイズ、t、抽出層、テキスト条件、平均化サンプル数を保存します。これらが変わると、同じ画像でも特徴と対応結果が変わるからです。画像の拡縮や切り出し後の座標を元画像へ戻す処理も必要です。
参照画像の特徴を事前計算すれば応答時の処理を減らせますが、位置ごとの高次元特徴は容量が大きくなります。全画像を保存するか、よく使う素材だけを保存するかも設計項目です。
対応の誤りを、人が修正できるようにします
最近傍探索は、相手画像に部位が存在しない場合にも候補を返します。実装では、類似度や候補間の差、往復で同じ点へ戻るかといった判定を試し、不確かな結果を保留できるようにします。これらは論文の基本手法を基にした追加設計案です。
完全自動化の割合だけでなく、「何回のクリックで正しい位置へ修正できるか」を測ると、編集・注釈支援としての価値を評価できます。生成モデルの中間表現を、人の作業を減らす部品として使うことが開発上のヒントです。
限界
追加学習が不要でも、計算が軽いとは限りません。U-Netの実行とノイズ平均化にはGPUメモリと時間が必要です。すべての位置同士を比較すれば対応探索も増えるため、特徴抽出だけでなく保存・転送・比較を含めて測ります。
また、意味的対応で使う特徴マップは入力より粗い解像度です。小さなネジや傷、厳密な輪郭の位置には不十分な可能性があります。似た部位、左右対称の部位、対象が隠れている画像では誤対応も起こり得ます。
結果は事前学習データと条件に依存します。一般的な写真で得た性能を専門的な検査画像へそのまま当てはめられません。DIFT_sdの意味的対応ではカテゴリ名を条件に使い、tと層もベンチマーク上で選んでいるため、未知の画像を無調整で扱った成績とも区別します。
再現には、ノイズの乱数、入力前処理、モデルとライブラリのバージョン、評価の集計方式をそろえる必要があります。既存の画像生成APIが最終画像だけを返す場合は中間特徴を取得できず、ネットワーク内部へアクセスできる実装が必要です。
論文の結果は2023年時点のモデルと比較に基づきます。新しい拡散モデルや視覚エンコーダで同じ優位性が続くか、実時間動画や専門領域で使えるかは別途検証が必要です。
よくある質問
Q. DIFTを使うには、対応点を用意して再学習する必要がありますか?
A. 基本手法では不要です。学習済み拡散モデルの中間特徴を使います。ただし、用途に合うノイズ時刻や抽出層を選び、正解付きの画像ペアで精度を確認する作業は必要です。
Q. 画像生成と同じように、何十回もノイズ除去しますか?
A. いいえ。実画像へ指定時刻のノイズを加え、その入力から一度のU-Net実行で特徴を取ります。平均化する場合は異なるノイズ入力を複数処理しますが、画像完成までの反復生成とは異なります。
Q. 画像のカテゴリ名が分からなくても使えますか?
A. 特徴抽出は試せますが、論文の意味的対応評価で使ったカテゴリ条件と異なります。汎用プロンプトや推定カテゴリを使う場合は、それぞれの条件で対応精度を測ります。公開スコアがそのまま再現できるとは限りません。
Q. DINOv2より優れた画像特徴ですか?
A. この論文だけでは判断できません。比較対象は元のDINOであり、DINOv2ではありません。また、論文内でも意味的対応に強いDIFT_sdと、動画伝播に強いDIFT_admは異なります。実際に必要なタスクで比較します。
Q. 正しい対応が存在しない場合を自動で判定できますか?
A. 基本の最近傍探索だけではできません。最も近い候補は返せても、その候補が正しいとは限りません。実装では保留条件や人による確認を追加し、部位が隠れた画像などで誤採用率を検証します。
今日の学び
この論文は、外観や視点が変わる画像同士で、同じ部位や位置を正解対応ラベルによる追加学習なしに探す課題を扱いました。
実画像へノイズを加えて学習済み拡散モデルへ渡し、中間特徴を抽出・平均化して比較することで解こうとしています。ノイズ量と層を変えると、意味と細部のバランスも変わります。
開発へのヒントは、生成モデルを出力画像だけで評価せず、内部表現を編集・注釈・照合の部品として再利用することです。用途の正解を定義し、人が修正できる小さな機能から試すと、転用の価値を確かめやすくなります。