画像生成の制御手法一斉レビュー!
- 2023/02/18
- 13:56
最近乱立している画像生成の制御手法をレビューします。
モデルの形だけを見るとデュアルエンコーダーの変則U-Netのように解釈できるかもしれませんが、オリジナルのSDの重みが凍結されている点に注意する必要があります。
だたし、手法としてはControlNetよりもより洗練されており、ResNetとDown Samplingを繰り返しながらU-Netのエンコーダーに入力する仕組みになっています。
ResNetを採用したことにより、77Mという非常に少ないパラメタ数で制御が可能になります。(これはVGG16よりも小さいです。)
この記事の要約はこんな感じです。
- 2023年01月以降乱立している画像生成の制御手法をレビューします。
- 同じ結果を実現するために多彩なアプローチが取れるのは、機械学習の魅力です。
- 画像生成は流れが速いので、その気になれば誰でも新手法を提案できます。
画像生成に関する知識は素人同然ですが、頑張ります。
背景
Stable Diffusionに代表されるText-to-Imageモデルは、テキストプロンプトによって条件づけられた画像を生成するタスクにおいて高い性能を示します。
しかし、物体の位置や人物のポーズなどを正確に制御することは従来のText-to-Imageには困難です。
それは、自然言語のみによる条件づけでは、正確な制御を行うために十分な情報をU-Netに対して与えることができないからです。
そのため、ユーザーは好みの構図の画像が生成されるまで生成を繰り返す必要がありました。
(これはガチャと揶揄されます。)
そのような背景から、特に2023年01月以降、自然言語以外のモダリティを与えることによって画像生成を制御する研究が活発化しています。
便宜上、このような技術を生成制御と呼びます。
生成制御において用いられるモダリティはさまざまであり、代表的にはバウンディングボックス、セグメンテーション、キーポイント、線画等が用いられます。
しかし、画像生成は人類史上稀に見るホットな分野であり、毎日のように提案される新技術の立ち位置は全く整理されていません。
そこで本記事では、群雄割拠する生成制御手法を横断的にレビューし、各手法の技術的な立ち位置を明らかにすることを目指します。
注意:
- 本記事では、キャラクターや画風を学習する手法(Dreambooth、Textual Inversion、Hypernetwork、LoRA)や、テキストによって画像を編集する手法(Imagic、InstructPix2Pix)などは扱いません。
- この記事の作者はABaGの開発者なので、無学習での制御を信奉しています。
本編
各手法の説明に入る前に、便宜上、生成制御手法を有学習手法と無学習手法に大別します。
有学習手法
有学習手法は文字通り、テキスト以外の新たな入力モダリティによる制御を得るために、モデルのパラメタ更新を必要とする手法を指します。
有学習手法には以下の様な特徴があります。
- 学習を行うための準備(GPUやデータセット)が必要になる
- パラメタを新たに追加する場合、必要な計算量やVARMが増加しやすい
- 実現、制御が容易
GLIGEN
GLIGENはMicrosoftが開発した手法であり、2023年1月中旬に登場しました。この手法ではText-EmbeddingsとGrounding Data(BBoxやキーポイント等)を連結してGrounding Tokenを作り、それを受け取るようなGated Self-Attentionを新たにU-Net中に定義します。
そして、Cross-AttentionとSelf-Attentionを凍結して学習を行うことにより、Gated Self-AttentionのみがGroundingに対する誘導機能を得るという仕組みです。
筆者の感想:
アテンションに手を入れる発想は好きなんですが、モデルが公開されていないので何とも…。
この手法はかなり早く発表された記憶がありますが、モデルを公開しなかったことで後述するControlNetにシェアを奪われちゃったイメージがあります。
ControlNet
GLIGENが新規のパラメタをモデル内部に定義したこととは対照的に、ControlNetは制御のためのパラメタを外部に定義します。手順としては、エンコーダーとミドルの学習可能なコピーを作成し、ControlNetとして新たに定義します。
ControlNetの出力は解像度ごとにStable Diffusionのデコーダーに接続され、誘導を反映する仕組みになっています。
モデルの形だけを見るとデュアルエンコーダーの変則U-Netのように解釈できるかもしれませんが、オリジナルのSDの重みが凍結されている点に注意する必要があります。
従って、学習する必要があるのはControlNetの重みだけでよく、論文によれば学習に必要なVRAMは23%増、学習時間は34%増で済むそうです。
筆者の感想:
発表と同時にモデルがモデルが公開されたためよく流行りました。
2022年02月時点で最も流行っている手法だと思います。
(ところで、最近は手法の公開から流行までのスパンが短く、ついていくのが大変ですね。)
ネックはパラメタ数の多さで、最近はそれを改善する研究が増えてきている印象があります。
T2I-Adapter
T2I-Adaptiveは、Stable-Diffusionの重みを凍結し、新たに定義された外部パラメタを学習するという点でControlNetに類似した手法です。だたし、手法としてはControlNetよりもより洗練されており、ResNetとDown Samplingを繰り返しながらU-Netのエンコーダーに入力する仕組みになっています。
ResNetを採用したことにより、77Mという非常に少ないパラメタ数で制御が可能になります。(これはVGG16よりも小さいです。)
筆者の感想:
SDのU-Netに何かしらの情報を流し込んであげることで制御を試みるというアプローチは有学習手法では典型的です。
T2I-Adaperは設計上の類似点からControlNetと比較されることが多く、特にパラメタ数の少なさが長所として挙げられます。
なお、最近はさらにパラメタを削減したControlLoRAなるものも出現しています。
無学習手法
上に紹介した3手法はいずれも、何かしらの入力モダリティを扱うために新たなパラメタを定義・学習するアプローチでした。
無学習手法はその逆で、パラメタの定義や更新を必要としません。
無学習手法の特徴は以下です。
- 学習を必要としない
- 必要な計算量やVRAMが増加しにくい
- 実現や制御が(有学習手法と比較して)困難
ABaG
これは筆者が考えた手法なので論文にはなっていませんが、折角なので紹介します。
ABaGはAttend-and-Exciteに影響を受けた手法です。
そちらの解説は行わないので各自論文を読んでください。
手法の定式化は下図を参照してください。
ABaGは、単語と対応付いた入力モダリティ(この例ではBBox)を用いてアテンションマップから損失を求め、潜在空間を調整するというプロセスによって生成を制御します。
従って、この手法はパラメタを定義しない無学習手法であり、on-the-flyで動作するという点に特徴付けられます。筆者の感想:
発想が単純であるため、他のモダリティに対しても式次第で拡張が可能です。
しかし、後述するUniversal Guidanceと比較すると設計が稚拙であり、動作が不安定な問題があります。
これは、実行の度に学習率などのスイートスポットを探索する必要がある事を意味します。
Universal Guidance for Diffusion Models
Universal Guidanceはサンプリングメソッドを改良することで動作し、任意のモダリティで動作します。
定式化は下図を参照してください。
この手法では、特に式(3)、(6)をForward Universal Guidance、式(7)、(9)をBackward Universal Guidanceと定義しています。
forwardは特に難しいことはなく、Classifier Guidanceを応用して誘導を実現しています。
ただし、分類機fは多くの場合キレイな画像を用いて訓練されているため、DDIMの式(3)によって\hat{z}_{0}を導出しています。
backwardはよく分かりませんでした。
forwardのみだとプロンプトにマッチしなくなるため加えているそうなのですが、何でこれでいいのかよくわかんなかったです。
さらに、forwardとbackwardだけでは非現実的な画像が出ることがあるそうです。
この問題はs(t)のサイズを弄ってもあまり意味が無いらしく、対処するためにノイズを再注入します。
分類器は任意の物でよいらしく、論文中ではMobileNetやMTCNN、Faster-RCNNなど何でもアリでした。
また、複数の分類器を組み合わせることも可能らしいです。凄い。
筆者の感想:
むっず…出直します…。
一般の分類器をサンプリング時の誘導に用いるために細かく式が制御されており、すごいなぁと思いました。
皆さんご存知のように、現在のText-to-Image DiffusionではClassifier Free Guidanceがデファクトスタンダードで、Classifier Guidanceはオワコンだと思っていたのですが、今こうして再興するのを見ていると、過去の論文を学んでおくのも重要だなぁと感動しました。
あたまいいひとしゅぎょい~。
感想
一口に生成制御と言ってもその実現手法は様々であり、多様なアプローチを受け入れてくれる懐の深さがニューラルネットワークの面白い所なのかなと思います。
ちなみに私は、Stable Diffusionは既に十分に知識を獲得しており、サンプリング時の工夫のみで十分に大概の事はできると信じています。
なので、いたずらにパラメタ数を増やし学習を要求する手法は将来的には主流ではなくなるという考えを持っています。
とは言え、大多数のユーザーにとっては将来的に有用な技術よりも、不完全でも今動く技術の方が遥かに重要だと思います。
ではまた。