見出し画像

論文まとめ(第3回):DreamBooth

 ミエリンです。コンピュータビジョン分野においてTop-Tierの国際会議であるCVPR2023の開催に先立ち、採択された論文のリストが公開されています。投稿された9155本の論文のうち、通ったのは2359本(25.8%)。その中で、注目論文(Highlight)としてピックアップされたのが235本、受賞候補が12本となっています。採択率で見ると少なく思えますが、投稿数、そして採択された論文の数を考えるとかなり膨大です。前回のCVPR2022では、採択/投稿数は2067/8161(25.3%)だそうなので(参考)、投稿も採択も増加しているようですね。書く側はもちろん、査読する側もサーベイする側も大変です。
 さて、ちょうどいいので採択論文の中から適当に見繕って記事にしてしまおう……と目論んでいると、結構見知った論文が受賞候補にあったので目を通すことにしました。今回紹介するのは、テキストから画像を生成するtext-to-imageモデルを「個人化」する手法を提案するDreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generationです。

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation(CVPR2023)

図1 DreamBoothは少数の入力画像から被写体の外見を忠実に保ちつつ、異なる文脈で再生成できる(Fig.1より)

 この論文では、text-to-imageモデルを「個人化」するDreamBoothという手法を提案しています。個人化とは、生成モデルをユーザーの目的に特化させることを指します。本来text-to-imageモデルはプロンプトで生成画像を操作するものですが、ある被写体に対して、その外見を保ちながら異なる文脈(背景や姿勢など)で生成する能力は持っていません。図1のように、ある犬についてユーザーが示す数枚の画像から、その見た目を維持して背景や動作を変えた画像を生成するのが「個人化」であり、DreamBoothの目的です。

図2 DreamBoothの概要

 DreamBoothでは、与えられた特定の被写体の画像(3~5枚)に対して、Reconstruction Loss(RL)とPrior Preventing Loss(PPL)という2つの損失関数を用いてモデルのFine-tuningを行います。
 図2のような、ある犬の学習を例にすると、RLは"A [V] dog"というプロンプトで生成される画像と入力画像の差を表し、PPLは"A dog"というプロンプトに対する、Fine-turning前後の生成画像の差を表します。なお、[V]は被写体である犬の識別子であり、使用率の低い適当な単語のトークンが割り当てられます。
 Fine-tuningでは、RLの最小化で被写体の犬を[V]に関連付けながら、PPLの最小化でモデルが本来備える犬の生成画像の多様さを保存します。これによって、少数の画像から被写体の外見を学習しつつ、背景や姿勢といった無関係な情報に過剰適合するのを防ぎます。

図3 Prior Preventing Lossの有無の比較

 図3では、Fine-tuningにおいてPPLを適用しない場合(2行目)と適用した場合(3行目)を比較しています。PPLを適用しない場合、被写体の外見は忠実に再現できているものの、入力画像と同じような伏せた姿勢の画像ばかりが生成され、多様性がありません。一方、PPLを適用した場合は、外見の忠実度は少し損なわれますが、座る・立つなど様々な姿勢の画像が生成されています。
 また、"A [V] dog"における"dog"のように、被写体のクラスを表す名詞をプロンプトに加える場合と加えない場合、ランダムな名詞を加える場合の比較が行われており、正しいクラスの名詞を加えた方が入力画像により忠実な画像を生成できると論文中では述べられています。

 個人的な考察になりますが、以上のAblationから、
(1)少数の入力画像だけでは被写体の学習はできず、クラス名をプロンプトに追加することでモデルが持つ事前知識を引き出し、Fine-tuningを補助する必要がある
(2)RLのみでFine-tuningを行うと、モデルの持つ事前知識が入力画像への過剰適合によって損なわれ、生成画像の多様性や操作性が失われる
ということが、「個人化」が失敗する原因であると考えられます。深層学習では、新しいタスクの学習によって過去のタスクを忘れてしまう「破滅的忘却」という現象が知られていますが、同様に事前知識の「忘却」が発生しており、その「忘却」を事前に生成した画像を見て「思い出す」ことで防止するのがPPLの役割であると解釈できます。

図4 DreamBoothの失敗例

 DreamBoothの応用例は図とともに論文中に挙げられているのでそちらに譲るとして、最後に失敗例を見ましょう。リュックサックを入力画像とした場合のDreamBoothの失敗例が図4です。(a)は文脈の変換に失敗する例で、ISS(国際宇宙ステーション)や月面上といった、学習データが乏しいであろう背景への合成はできていません。(b)は文脈と外見の分離に失敗する例で、塩湖や青い布といった背景の色がリュックサックに移ってしまっています(環境光を考慮していると言えなくもないですが)。(c)は過剰適合の例で、一部の入力画像の背景が森に似ているので、"in the forest"というプロンプトに対してそれをそのまま出力してしまっています。
 その他にも、学習や文脈変換の難易度の偏りがクラス間で存在する(犬や猫などデータが充実しているものは簡単)点などが制限として挙げられています。

 DreamBoothはシンプルな手法ですが、定性的な変化は結構明確で面白いと思います。ただし、定量的な評価には苦労してそうな印象を受けました。生成画像の被写体に対する忠実度や多様性を計測する上で、CLIPよりDINOを使う方が忠実度の指標として望ましい、という議論を論文内でしていたりします。その説明には一理あるのですが、どうも「良い」指標を探している雰囲気を感じなくもありません。
 「個人化」とは言いますが、やりたいことは入力画像が持つ特徴のDisentanglementであり、破滅的忘却を防ぐ継続学習でもあります。そうした既存研究と「個人化」が接続する可能性もあるでしょう。
 著者らはGoogle Researchのチームです。プロジェクトページデータセットが公開されていますが、ソースコードは公開されてないようです。とはいえ、Stable DiffusionのFine-tuning法として既に定着していますから、実装例を見つけることは容易でしょう。
 付録も含め、論文には生成画像の図が豊富に載せられていますから、パラパラっと眺めているだけでも楽しく読めるはずです。プロジェクトページには論文の内容が簡潔にまとめられているので、そちらに目を通すだけでも十分理解できると思います。

おわりに

 DreamBoothはLoRAと組み合わせて利用される場合が多いですね。ユーザーの目的に合わせたインスタントな学習法が発展していくのは喜ばしいことです。
 最近は適当に論文名でググると、LLMで翻訳・要約したような記事に出くわすことが増えました。自分の記事には時事ネタや所感、文句をつい含めてしまうのですが、そういうものがないと機械的に生成される記事と見分けが付かなくなって来ている感じがします。もちろん、論文の概要が把握できる記事であれば、人が書こうが機械が書こうが読む側には関係の無いことなのですが。
 いくらかでも記事の内容を気に入っていただけたのであれば、フォローと「スキ!」をしていただけると嬉しいです。励みになります。

この記事が気に入ったらサポートをしてみませんか?