Contenu connexe Similaire à 【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation Similaire à 【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation (8) Plus de Deep Learning JP (20) 【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation1. 1
DEEP LEARNING JP
[DL Papers]
http://deeplearning.jp/
DreamBooth: Fine Tuning Text-to-Image Diffusion Models
for Subject-Driven Generation
Takeyuki Nakae, Shiga University
2023/03/03
8. 手法(数枚の画像のプロンプトの作成)
プロンプトには二つの候補
• [identifier]: 被写体に関連するユニークな識別子
例): 自分のペットの名前
• [class noun]: 被写体のおおよそのクラスを示すもの
例): dogやbird等
→論文では[class noun]を使用
しかし汎用的な単語※1(強い事前分布)を利用しても、学習時間の長期化・性能の低下
そのために、珍しい単語※2(Rare-token)を利用する。
Rare-tokenは3文字以下の単語から抽出し、T5-XXLトークナイザーの範囲(5000~10000)の
トークンをランダムサンプリングし使用するとうまくいく
8
例): 特定の犬を生成したい場合
• 汎用的な単語※1
unique dog
• 珍しい単語※2
xvg dog
14. 実験(Art Renditions)
14
• Art Renditions
被写体のオリジナルの芸術作品をレンダリングすることが可能
プロンプト例):
a painting of a [V] [class noun] in the style of [famous painter]
a statue of a [V] [class noun] in the style of [famous sculptor]
20. 実験(Ablation Studies)
• Prior Preservation Loss Ablation
提案損失であるPrior Preservation Lossをなくして実験を行った。
20
Prior Preservation Lossあり
多様性のある犬が生成できる
Finetuning前の生成画像
Prior Preservation Lossなし
入力画像の犬しか生成できない
21. 比較
• An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual
Inversion(Gal et al.)との比較
21
提案手法の方が入力画像に忠実
提案手法の方が入力画像に忠実
Notes de l'éditeur 書誌情報はこんな感じです。
8/25にarxivに掲載された拡散モデルの手法です。
選定理由は、自身の修士論文に関連しそうだったためです BreamBoothの概要としましては、数枚で拡散モデルを学習するということに焦点を当てています。
論文では拡散モデルの「個人化」と述べており、入力画像に映っている特定の物体や人物などを拡散モデルに生成させるように学習をさせます。
実際に論文上の図では特定の「チワワ?」の入力画像とそれに対応するプロンプトを学習することで、対応するプロンプトを入力すると、入力したチワワと見た目が同じ犬が、様々なプロンプトに合わせて生成されていることが確認できます。 この研究の背景として、
拡散モデルが学習した強力な事前分布をどうにか利用できないかという点がきっかけとなっています。
例えば、右の画像のような「赤の蝶ネクタイと紫のパーティー帽をつけたコーギー」という生成画像は、コーギーという犬の分布に対して、「蝶ネクタイ」や「パーティー帽」を結び付けており、さらに装飾品の色まで結びつけることができています。
この事前分布の強みは想像上のシーンの作成に活用することができます。例えば自分の飼っている犬を見たことのないシーンに登場させる等があります。
しかし先程のような見たことないシーンの生成に関しては2つ問題があります。
一つ目が「与えられた画像の被写体の外観を模倣する能力の欠如」という問題です。これは図1の様に生成したい目標画像があっても、一般的な学習済みモデルでは生成できないという問題です。図1では(小さくて見にくいですが)3の位置に大きな特徴のある黄色の時計を生成しようとしています。しかし一般的な生成モデルではいくら細かいプロンプトを入力しても、入力画像のような3に特徴のある画像を生成することができません。
この問題は拡散モデルの表現力に限界があることが原因だと考えられています。
この表現力を獲得するためには学習が必要ですが、その学習の際に問題が発生します。二つ目の問題点として、「与えられた画像の被写体に対する新しい表現の獲得の困難」があります。これは拡散モデルが入力画像に対して過学習を起こす問題で、図2のように拡散モデルが入力した画像しか生成しなくなります。図では似たような構造のダックスフンドしか生成していないことがわかります。 DreamBoothでは2つの問題を解決するためにいくつかの対策を立てました。
一つ目は数枚の被写体の画像を学習することで拡散モデルに被写体を生成させる方法です。これは入力画像を出力領域に埋め込む方法の提案です。
もう一つはその入力した数枚の画像に過学習を起こさせないための新たな損失関数の提案です。
本論文の新奇性は、被写体の画像の主要な特徴を維持したまま、異なる文脈で新たな表現に変換する面であり、この問題設定に取り組んだのはこの論部だと書いてありました。 この論文は拡散モデルの中でも前提知識として、cascaded diffusion modelsを利用しています。
この手法は64×64→256×256と256×256→1024×1024のように徐々に生成画像を拡大させる方法です。(論文ではSR module)
追加の特徴として2つの超解像モジュールに画像を入力する際にノイズ付与しさらに条件付けによる生成を行っています。
画像ではmodel2とmodel3で超解像を行い、下の矢印で条件付けとノイズの付与を行っています。
また条件付けはCLIPの言語モデルの埋め込みが利用されています。 それでは提案手法について説明します。
まず入力画像のプロンプトの作成について説明します。
論文ではプロンプトの作成に2種類の方法があり、[identifier]と[class noun]があります。
[identifier]は被写体に関連するユニークな識別子のことで自分のペットの名前などが挙げられます・
[class noun]: 被写体のおおよそのクラスを示すもので、dogやbirdなどのImageNetに付与されているラベルのようなやんわりとしたクラスになります。
本論文では [class noun]を利用して、入力画像のプロンプトを作成します。これは犬の場合「unique dog」などの既にある単語からオリジナルのラベルを作成する方法です。
しかし[class noun]でも、頻繁に使用される単語(論文では強い事前分布)を利用すると学習時間の長期化・性能の低下が発生することが実験上わかっているため、めったに利用されない珍しい単語(Rare-token)を利用します。
珍しい単語の選出基準として、3文字以下の単語から抽出かつT5-XXLトークナイザーの範囲(5000~10000)のトークンを選出します。
汎用的な単語を利用しない理由として、学習時にモデルが単語を元の意味から切り離す学習と、被写体を参照するための再分離の両方を行う必要があるため、学習が難しくなるためです。(極端な話、「青」のプロンプトと、入力画像が「灰色」である場合、推論時に色が絡まり、灰色と青色の被験者が混在する形になる)
また[identifier]は学習時間の増加+性能の低下が発生します。
そして珍しい単語も汎用的な単語も学習する際の挙動は同じようになる。また珍しい単語は弱い事前分布とも呼びます。 次に損失関数の提案について説明します。
数枚の画像による拡散モデルの学習の課題として、過学習と言語ドリフトがありこれを解決するためにPrior-Preservation Lossを利用します。
Prior-Preservation Lossは「数枚の微調整が開始された時点でモデルが事前分布を保持するようにするloss」です。
モデル自身が生成した画像やサンプルを用いて損失が計算されます。
損失関数の数式は上のようになっており、学習前のモデルの生成画像と微調整中のモデルの生成画像の違いを見るlossと、
微調整中のモデルの生成画像と入力画像の違いを見るlossを合計したものとなっています。
図を拡大するとこのような形になります。
上の部分では元画像と、Finetuning後の「A [V] dog」の生成画像で比較しており、
下の部分では、学習前のモデルの生成画像と微調整中のモデルの生成画像の比較を行っていることがわかります。 主な提案手法はこの二つですが、DreamBoothで使用しているcascaded diffusion modelsの超解像モジュールにも少し修正があります。
実験上で超解像モジュールをデフォルトで利用するとアーチファクトを生み出すことがわかりました。
具体的に図のNormal Noise(ノイズの付与をデフォルトに設定する)では画像が全体的にぼやけるアーチファクトが発生し、
No Finetuning(超解像モジュールを微調整しない)場合では高周波パターンが幻覚的になる問題が発生します。
このようになる原因として、SRモジュールは、被写体の詳細や質感に精通していないと考えられます。
この対策として、256×256への拡張を行うSR-moduleの微調整のノイズ増強のレベルを10-3から10-5に下げることで対象インスタンスのきめ細かいディテールを回復することができました。 本手法の実験(というよりDreamBoothができること)は、
再文脈化(recontextualization)
アートレンダリング(Art Renditions)
表情変換(Expression Manipulation)
視点合成(Novel View Synthesis)
アクセサリの付与(Accessorization)
プロパティの変更(Property Modification)
を行っています。
また画像に登場する[V]は画像に登場する被写体の固有識別子(珍しい単語で構成されたプロンプト)を表します。また実験に使用する画像は全てUnsplashと呼ばれる画像投稿サイトからのものです。 Recontextualization(再文脈化)は、モデルがテキストプロンプトに応じて入力した被写体を生成することができる能力です。
例は下の図で、実際に入力した画像のカバンと同じカバンの生成画像をプロンプトに応じて出力することが確認できました
リュックサックのバッチの部分も正確に再現できていることがわかります。 またDreamBoothは被写体の画風を変更することができます。
プロンプト例のように入力することで、ゴッホ風やミケランジェロが作ったような石像・ダヴィンチのような絵画を生成することができます。 またDreamBoothではの入力画像の被写体ににない表情を生成することができます。
下の画像の様に元の入力画像の被写体ににない表情を生成することができ、表情の範囲は広くいずれの例でも犬のアイデンティティは保てていることがわかります。
アイデンティティを保てている理由として、論文では犬にある非対称な白い筋が残っていることで主張しています。 またDreamBooth被写体を様々な視点で生成することができます。
画像からも複雑な毛並みが一貫して生成できていることがわかります。
他にも数枚の入力した被写体に、例のようなプロンプトを入力するとアクセサリを付与できることもわかっています。 また被写体のインスタンスプロパティを変更できます。図のように車の色を換えたり、犬と別の種の交配結果を生成することも可能です。
またDreamBoothでは他にもAblation Studyを行っています。
まずはテキストプロンプトの比較として、
画像に適用するテキストプロンプトを「クラス名詞なし」「誤ったクラス」「正しいクラス分布」にして実験を行いました。
クラス名詞なし(サングラスの画像にサングラスのプロンプトを入れずに固有のプロンプトのみを入れる)の場合、図のように入力した画像を学習ができない問題が発生します。
次に被写体に誤ったクラス(サングラスの画像なのに犬とラベル付けを行う)を付与した場合、図のように新しい被写体を生成できない問題が発生します。
この方法では新しい被写体が学習時に事前分布と関連させることが難しく、モデルの収束に時間がかかり、誤ったサンプルを生成する場合も多いらしいです。
誤ったラベルの場合学習時間を長くすると、「犬」というクラス名詞の事前分布を切り離すことができますが、その代償として、モデルによる犬の生成能力を失い、最終的には性能が低下する問題が発生します。
最後に正しいクラス(サングラスの画像にサングラスのプロンプトと被写体に対する固有プロンプト)を付与した場合は上手く画像を生成できることがわかります。 他にもPrior Preservation Lossの有無の比較を行っています。
図のVannila model はfinetuning前の生成画像です。
そして赤色の吹き出し(真ん中の画像)がPrior Preservation Lossなしで、青色の吹き出し(下の画像)がPrior Preservation Lossアリです。
この二つをVannila modelの生成画像と比較すると、Prior Preservation Lossがない場合、「A dog」と入力しても、以前に生成できていた犬を生成せずに入力画像の犬しか生成できなくなっています。
一方で提案手法では、様々な犬が生成できており、元の「犬」の学習を忘れずに入力画像の犬も学習前の犬も生成できることがわかります。
このためPrior Preservation Lossは事前分布を保存する効果があることがわかります。 またDreamBoothの類似手法として以前発表された「An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion(Gal et al.)」があります。
この手法は、狙った画像を生成できるようにテキストプロンプトを最適化する方法です。
比較を行うと我々の手法では、被写体の同一性を保つことに重点を置いていることがわかりました。
その証拠として具体的には小さいですが「猫の彫刻」において詳細なパターンが残っていることが挙げあられます。
さらにこれらのユニークなオブジェクトを同じ意味で様々なバリエーションを生成できることを見出しています。
これはGal et al.の方法では出力領域は固定されている、つまり元のモデルの表現力によって制限されている一方で、我々のアプローチがモデルの出力領域内に被写体を埋め込む点で違いが発生しています。このため我々の手法の方が様々なバリエーションを生成できます。
Gal et al.の論文で示された結果のほとんどは、被写体そのものを高忠実に細部を再現して合成するのではなく、被写体に関連する異なる属性を合成することに焦点を合わせている。 他にもDALL-E 2とvanilla Imagenとの比較を行っています。
この図ではレトロ調の黄色い目覚まし時計を生成する目標で、DreamBoothとDALL-Eなどを比較しています
上二つのDALL-E 2とvanilla Imagenはレトロ調の黄色い目覚まし時計を生成することができるものの、時計の文字盤の数字とは異なる3という数字を表現することができないことがわかります。このことから一般的に、プロンプトエンジニアリングを駆使しても、被写体の見た目を細かく制御することは非常に困難であることがわかります。
一方で本手法は、被写体の形状、時計の文字盤のフォント、時計の文字盤にある大きな黄色の数字3など、被写体の細かな情報が保存されていることが分かり、学習された時計の特徴を保存できていることがわかります。 ここまでDreamBoothのメリットを述べてきましたがしかしいくつかの限界があります。
一つ目は図のようにプロンプトを正確に再現できない問題です。図の(a)では「in the ISS」と「on the moon」でモデルに生成を行うと、月やISSのような風景が出力できないことがわかると思います。これは「moon」や「ISS」のような生成モデルがこれらの文脈に対して強い事前情報を持っていないか、主語と文脈の両方を一緒に表現することがモデルにとって難しいタスクである、などの理由が論文では考察されています。
2つ目は被写体の出力が変わる問題です。図の(b)ではバックパックの色が変わっていることがわかります。これを「文脈の色と被写体の色がもつれる」と呼んでおり、文脈が稀な時に発生することがあると論文では言われています。
3つ目は過学習の問題です。これは(c)の生成画像が入力画像に似ているという問題で、いくつかの事例で観察されています。
またこの図以外にも問題点として、入力した被写体が希少な事例や複雑な被写体では生成画像のバリエーションが少ないことが確認されました。これはモデルの事前分布が関連していると論文では推察されています。 最後に、
この論文は「数枚の画像とそれに対応するテキストを使って、与えられた被写体の新しい表現を合成するアプローチ」を提案しました。
このアプローチを達成するカギとして、
与えられた被写体を一意の識別子と結びつけて埋め込むこと
学習中に学習した他の視覚的概念を「忘れる」ことなく慎重に微調整する
被写体が何気なく撮影した3〜5枚の画像だけで達成できる
ことである。
これによって学習されたモデルは、入力画像の被写体の特徴を維持したまま事前に学習している拡散モデルの知識を利用することができ、様々なバリエーションの画像を生成することができました。 所感です。