Imagic
Abstract
Text-conditioned image editing has recently attracted considerable interest. However, most methods are currently either limited to specific editing types (e.g., object overlay, style transfer), or apply to synthetically generated images, or require multiple input images of a common object. In this paper we demonstrate, for the very first time, the ability to apply complex (e.g., non-rigid) text-guided semantic edits to a single real image. For example, we can change the posture and composition of one or multiple objects inside an image, while preserving its original characteristics. Our method can make a standing dog sit down or jump, cause a bird to spread its wings, etc. – each within its single highresolution natural image provided by the user. Contrary to previous work, our proposed method requires only a single input image and a target text (the desired edit).
近年、テキストを用いた画像編集が注目されている。しかし、ほとんどの手法は、特定の編集タイプ(例えば、オブジェクトのオーバーレイ、スタイル転送)に限定されるか、合成的に生成された画像に適用されるか、共通のオブジェクトの複数の入力画像を必要とするかのいずれかであるのが現状である。本論文では、複雑な(例えば、非剛体の)テキストガイド付き意味編集を単一の実画像に適用する能力を、初めて実証する。例えば、画像内の1つまたは複数のオブジェクトの姿勢や構図を、元の特徴を維持したまま変更することが可能である。例えば、立っている犬を座らせたり、ジャンプさせたり、鳥を羽ばたかせたりすることができます。- 本手法は、ユーザから提供された高解像度の自然画像内で、それぞれの物体を座らせたり、ジャンプさせたり、鳥を羽ばたかせたりすることができます。本手法は、従来とは異なり、1枚の入力画像とターゲットテキスト(編集したい内容)のみを必要とします。
あー、大前提が「高解像度の自然画像」なのかnishio.icon
It operates on real images, and does not require any additional inputs (such as image masks or additional views of the object). Our method, which we call “Imagic”, leverages a pretrained text-to-image diffusion model for this task. It produces a text embedding that aligns with both the input image and the target text, while fine-tuning the diffusion model to capture the image-specific appearance. We demonstrate the quality and versatility of our method on numerous inputs from various domains, showcasing a plethora of high quality complex semantic image edits, all within a single unified framework.
また、実画像上で動作するため、追加入力(画像マスクやオブジェクトの追加ビューなど)を必要としない。Imagic "と呼ぶこの手法は、事前に学習させたテキスト-画像拡散モデルを用いて、このタスクを行う。この方法では、画像特有の外観を捉えるために拡散モデルを微調整しながら、入力画像とターゲットテキストの両方に一致するテキスト埋め込みを生成する。我々は、様々なドメインからの多数の入力に対して、本手法の品質と汎用性を実証し、単一の統一されたフレームワーク内で、高品質の複雑な意味的画像編集の数々を紹介する。
3.2. Our Method
Given an input image x and a target text which describes the desired edit, our goal is to edit the image in a way that satisfies the given text, while preserving a maximal amount of detail from x (e.g., small details in the background and the identity of the object within the image). To achieve this feat, we utilize the text embedding layer of the diffusion model to perform semantic manipulations. Similar to GAN based approaches, we begin by finding meaningful representation which, when fed through the generative process, yields images similar to the input image. We then tune the generative model to better reconstruct the input image and finally manipulate the latent representation to obtain the edit result.
More formally, as depicted in Figure 3, our method consists of 3 stages: (i) we optimize the text embedding to find one that best matches the given image in the vicinity of the target text embedding; (ii) we fine-tune the diffusion models to better match the given image; and (iii) we linearly interpolate between the optimized embedding and the target text embedding, in order to find a point that achieves both image fidelity and target text alignment. We now turn to describe each step in more detail.
入力画像xと、編集したい内容を記述したテキストが与えられたとき、xのディテール(例えば、背景の小さなディテールや画像内のオブジェクトの同一性)を最大限に保持しつつ、与えられたテキストを満足するように画像を編集することが我々の目標である。この偉業を達成するために、我々は拡散モデルのテキスト埋め込み層を利用して意味的操作を行う。GANベースのアプローチと同様に、まず入力画像と類似した画像を生成する意味のある表現を見つけることから始める。次に、入力画像をよりよく再構成するために生成モデルを調整し、最後に編集結果を得るために潜在的な表現を操作する。
より具体的には、図3に示すように、本手法は、(i)テキスト埋め込みを最適化し、ターゲットテキスト埋め込み近傍の与えられた画像に最も適合するものを見つける、(ii)拡散モデルを微調整し、与えられた画像により適合するものを見つける、(iii)画像の忠実度とターゲットテキストの整合を共に達成する点を見つけるために、最適化された埋め込みとターゲットテキスト埋め込みの間を線形に補間するという三つの段階からなっています。次に、各ステップの詳細について説明します。
https://gyazo.com/8ec0bba130b5746c8b33d4292371ee43
Text embedding optimization. The target text is first passed through a text encoder, which outputs its corresponding text embedding x, where T is the number of tokens in the given target text, and d is the token embedding dimension. Then, we freeze the parameters of the generative diffusion model x, and optimize the target text embedding etgt using the denoising diffusion objective, x where x is the input image, x is a noisy version of x obtained using x. x are the pre-trained diffusion model weights.
This results in a text embedding that matches our input image as closely as possible. We run this process for relatively few steps, in order to remain close to the initial target text embedding, obtaining eopt. This proximity enables meaningful linear interpolation in the embedding space, which does not exhibit linear behavior when the embeddings are more distant.
テキスト埋め込みの最適化 ターゲットテキストはまずテキストエンコーダを通過し、その対応するテキスト埋め込みxを出力する。ここで、Tは与えられたターゲットテキストのトークン数であり、dはトークン埋め込み次元である。次に、生成拡散モデルxのパラメータを凍結し、ノイズ除去拡散目的語を用いてターゲットテキスト埋め込みetgtを最適化します。xは入力画像、xはxを用いて得られたxのノイズバージョン、xは事前に学習した拡散モデルの重さです。
この結果、入力画像とできるだけ一致するテキスト埋め込みが得られます。この処理を比較的少ないステップ数で実行することで、初期の目標テキスト埋め込みに近い状態を保ち、eoptを得る。このように近づけることで、埋め込み空間において意味のある線形補間が可能になります。
StableDiffusionの学習においてはテキスト埋め込みはCLIPのフリーズされたネットワークを使ってて「そこはいじらないで学習するね」ってやってるんだけど、Imagicのここのフェーズでは「StableDiffusionのデノイズ部分はフリーズして、テキスト埋め込みだけ修正するね」とやってる、発想の逆転nishio.icon
Model fine-tuning. Note that the obtained optimized embedding eopt does not necessarily lead to the input image x exactly when passed through the generative diffusion process, as our optimization runs for a small number of steps (see top left image in Figure 5). Therefore, in the second stage of our method, we close this gap by optimizing the model parameters θ using the same loss function presented in Equation 2, while freezing the optimized embedding. This process shifts the model to fit the input image x at the point eopt. In parallel, we optimize any auxiliary diffusion models present in the underlying generative method, such as super-resolution models. We optimize them with the same reconstruction loss, but conditioned on the target text embedding. The optimization of these auxiliary models ensures the preservation of high-frequency details from x that are not present in the base resolution.
モデルの微調整 なお、我々の最適化は少ないステップ数で実行されるため、得られた最適化埋め込みeoptは、生成拡散プロセスを経たときに必ずしも入力画像xに正確につながるとは限らない(図5左上の画像参照)。そこで、本手法の第2段階では、最適化された埋め込みを凍結しながら、式2で示したのと同じ損失関数を用いてモデルパラメータθを最適化することで、このギャップを解消します。この処理により、点eoptで入力画像xに適合するようにモデルをシフトさせる。並行して、超解像モデルなど、基礎となる生成手法に存在する補助的な拡散モデルも最適化します。これらの補助モデルは、同じ再構成損失で最適化されるが、ターゲットのテキスト埋め込みを条件とする。これらの補助モデルの最適化により、基本解像度には存在しない高周波の詳細情報をxから保存することができる。
https://gyazo.com/ed8980456950951fde27c0da368ccd7c
今度は先ほど作ったeoptを止めて、モデルパラメータを更新する、これは普通のSDの学習と同じnishio.icon
高周波成分(細部の詳細)を保存するための追加のモデルも学習している
Text embedding interpolation. Since the generative diffusion model was trained to fully recreate the input image x at the optimized embedding eopt, we use it to apply the desired edit by advancing in the direction of the target text embedding etgt. More formally, our third stage is a simple linear interpolation between etgt and eopt. For a given hyperparameter η P r0, 1s, we obtain (3) which is the embedding that represents the desired edited image. We then apply the base generative diffusion process using the fine-tuned model, conditioned on e¯. This results in a low-resolution edited image, which is then super-resolved using the fine-tuned auxiliary models, conditioned on the target text. This generative process outputs our final highresolution edited image x¯.
テキスト埋め込み補間。生成拡散モデルは、入力画像xを最適化された埋め込みeoptで完全に再現するように学習されたので、それを使って、目的のテキスト埋め込みetgtの方向に前進して、目的の編集を適用します。より正式には、我々の第3段階はetgtとeopt間の単純な線形内挿です。与えられたハイパーパラメータに対して、所望の編集画像を表す埋め込みである(3)を得ることができる。次に、微調整されたモデルを用いて、e¯を条件とする基本生成拡散処理を適用する。この結果、低解像度の編集画像が得られ、これをターゲットテキストを条件として微調整した補助モデルを用いて超解像する。この生成処理により、最終的に高解像度の編集画像x¯が出力される。
eoptで与えられた画像xが得られたので、入力する埋め込みテンソルをetgtの方に近づけていくと目的の編集が得られるnishio.icon
ここでは「小さい空間なら平坦とみなして良いだろう」という仮定が入っている
nishio.icon
img2imgと違ってダイナミックな変化が起きるな?と思っていたがそれはそうで、img2imgと違って与えた画像は、後で画像を生成するときの初期値に使ったりはしていない
顔などの高周波成分が保存されているのは、普通にSDした場合に消し飛ぶような顔の詳細を「補助モデル」が吸収しているから
NovelAIで作った実写でないアニメ絵を入れて上手く動かないのは、同じプロンプトを入れても生成されるものが大きく違いすぎているから
大きく違いすぎているためにSD側の学習があまり進まず、補助モデルが与えられた画像を丸覚えする方向に進んでしまった、それがアニメ絵で「全然変化してない出力」が出た理由