cv.cm

AI · AI画像

画像から画像を作るAI(image-to-image)の仕組みは?

約10分で読めます

結論

画像から画像を作るAIは、純粋なノイズではなくあなたの画像から出発します。選んだ量のノイズを加え、プロンプトに従いながら取り除くため、強度が低ければ元の画像が保たれ、高ければ大きく変わります。マスクを使えば変更を一部の領域(インペイント)や新しく広げた縁(アウトペイント)に限定でき、深度マップ、ポーズ、エッジなどの制御画像を使えば、スタイルを変えてもレイアウトを固定できます。

深度マップ生成を開く

基本の考え方:途中までノイズを加えて、ノイズ除去する

拡散モデルは通常、純粋なランダムノイズからノイズを取り除いて画像を作ります。画像から画像は、その道のりの前半を飛ばします。あなたの画像にノイズを加えて絵が部分的に隠れる状態にし、残りのノイズ除去ステップをプロンプトとともに実行します。この方法はSDEditの論文で示され、拡散モデルが追加学習なしで、粗いスケッチや編集した写真を写実的な画像に変換できることが分かりました。

ノイズの量が最も重要な設定です。ツールによって、強度(strength)、デノイズ(denoise)、画像ウェイトなどと呼ばれます。ノイズが少なければ細かな質感しか変わりません。ノイズが多ければ形はほとんど消え、モデルは元の色やレイアウトにゆるく従うだけの新しい絵を作ります。

多くの実装では、強度は実際に実行されるステップ数も決めます。ツールが50ステップで強度0.8に設定されていれば、画像には約40ステップ分のノイズが加えられ、その40ステップ分のノイズ除去が行われます。

強度の値の選び方

正確な数値はモデルによって違いますが、0〜1のスケールを使うツールなら、下の範囲が出発点になります。画像ウェイトのスケールを使うツールは逆の場合が多く、ウェイトが高いほど元の画像が残ります。

強度元の画像から残るもの向いている用途
0.1〜0.3ほぼすべて:形、顔、色軽い修整、粒状感の追加、小さな質感の変更
0.3〜0.5構図と大半の細部照明やカラーグレーディングの変更、穏やかなスタイルの変更
0.5〜0.7レイアウトと主な形。細部は描き直される写真からイラスト、スケッチから完成画
0.7〜0.9大まかな色のかたまりと配置画像をゆるいレイアウトのヒントとしてだけ使う
1.0ほぼ何も残らないテキストから画像と同じ

強度は0.1刻みなど小さなステップで上げ、シードを固定して、強度だけの効果を見ましょう。スタイルが十分に変わる前に人物の顔が変わりすぎてしまうなら、強度だけでは道具が合っていません。制御画像を追加するか、背景だけにインペイントを使いましょう。

参照画像とスタイル変換

モデルに渡す画像のすべてが出発点になるわけではありません。多くのツールは、ノイズを加えずに結果を誘導する参照画像も受け付けます。参照画像は特徴量に変換され、テキストプロンプトと並んで働きます。IP-Adapterはよく知られたオープンな手法で、固定したテキストから画像のモデルに、画像特徴用の別のアテンション層を持つ小さなモジュールを追加し、画像プロンプトとテキストプロンプトを同時に与えられるようにします。ホスティング型ツールでは、イメージプロンプト、スタイルリファレンス、キャラクターリファレンスなどと呼ばれることが多いです。

絵のスタイルを変える一般的な方法は2つあります。

  • スタイルプロンプトを使った画像から画像:写真を開始画像にし、プロンプトで新しいスタイル、たとえば watercolor illustration, loose brush strokes, white paper を指定します。簡単ですが、強度が高いと顔や小さな細部がずれます。
  • 構造は一方の画像から、スタイルはもう一方から:制御画像(深度やエッジ)で写真のレイアウトを保ち、スタイル参照やプロンプトで見た目を決めます。強度を高くしても構図が安定します。
Start image: photo of a street market at dusk
Strength:    0.55
Prompt:      gouache painting of a street market at dusk, flat shapes,
             warm lantern light, limited palette of orange, teal and cream
Negative:    photo, text, watermark

指示としてではなく、仕上がりの姿として画像を描写してください。プロンプトは命令としてではなく画像キャプションと照合されるため、make this a painting より Gouache painting of a street market のほうがうまくいきます。編集ペアで学習した新しいモデルの中には指示を理解するものもあるので、使うツールがどちらを期待しているか確認しましょう。

インペイントとアウトペイント

インペイントは、マスクした領域だけを変えます。置き換えたい領域にマスクを塗り(通常は白が変更、黒が維持)、モデルがプロンプトと周囲のピクセルの両方に合うように埋めます。RePaintは、通常の拡散モデルでも、ノイズ除去の各ステップで既知のピクセルを戻すことでインペイントできることを示しましたが、マスクで学習した専用のインペイントモデルのほうが、たいていなじみ方はきれいです。

  1. マスクは対象より少し大きめにして、モデルが縁をなじませられるようにします。
  2. 継ぎ目が目立たないよう、マスクの縁をぼかします(フェザーやブラー)。
  3. マスク領域とその文脈に向けてプロンプトを書きます。単に remove person ではなく、empty wooden bench in a park のように。
  4. 置き換えには中〜高めの強度、修復には低めの強度を使います。
  5. 大きな画像の中の小さな領域なら、切り抜いて拡大するオプション(only maskedやmask cropなど)を使い、モデルが高い解像度で処理できるようにします。

アウトペイントは、画像を枠の外へ広げます。キャンバスを拡大し、新しい空白領域をマスクして、モデルがシーンの続きとして埋めます。正方形の写真を16:9のバナーにするのに便利です。1回に画像の4分の1から半分ずつ広げましょう。一気に大きく広げると、物が繰り返されたり遠近感が崩れたりしがちです。

ControlNet型の条件付け:深度、ポーズ、エッジ

ControlNetは、固定した画像モデルの一部を学習可能なコピーとして追加し、追加の制御画像を読み込ませる手法です。制御画像が構造を固定し、プロンプトがその構造が何でできているかを決めます。原論文はエッジ、深度、セグメンテーションマップ、人体ポーズによる制御を示し、今では同じ考え方が多くのモデルファミリーにあります。

制御の種類入力固定されるもの主な用途
エッジ(Canny、線画)白黒の輪郭画像輪郭と細かな形商品や建物の形を正確に保ちつつ、素材と光を変える
深度グレースケールの深度マップ(近いほど明るく、遠いほど暗い)3Dのレイアウトと前後関係部屋や風景の空間を保ったまま絵柄を変える
ポーズ(OpenPose型)関節の棒人間スケルトン体の位置、手足、頭の向き新しいキャラクターを正確なポーズで描く
セグメンテーションクラスごとに1色の色分け領域空、道、人、物の配置場所領域ごとにシーンを配置する
ラフ/スケッチ手描きの粗い絵ゆるい構図落書きを完成画にする

多くのツールでは、各制御にウェイト(conditioning scaleなど)や、ノイズ除去ステップのどこで効かせるかの開始点と終了点を設定できます。ウェイトが高すぎると制御画像をそのまま写しすぎてしまい(たとえばエッジのノイズが硬い線になる)、低すぎると無視されます。明瞭な制御画像と中間的な値が、たいていいちばんうまくいきます。深度と姿勢のように2つの制御を組み合わせることもでき、その場合はそれぞれのウェイトを下げます。

写真から深度マップを作るには、深度推定モデルを使います。たとえば cv.cm の深度マップツールは、ブラウザ内で写真をグレースケールの深度画像に変換するので、深度制御として使えます。

よくある問題と対処法

  • 顔の人物らしさが変わる:強度を下げる、背景だけにインペイントする、顔やキャラクターの参照画像を使う。
  • 強度を高くしても色が元に近すぎる:開始画像が全体の色味を保っています。先に編集ソフトで色を動かすか、制御画像と高めの強度に頼りましょう。
  • インペイント後に継ぎ目が見える:マスクを大きくしてぼかし、プロンプトに周囲の文脈を含めます。
  • アウトペイント後に物が二重になる、歪む:広げる幅を小さくし、プロンプトでシーンの説明を繰り返します。
  • 結果がぼやける:強度が低すぎて細部が足りないか、画像が小さすぎます。先にアップスケールするか、mask cropオプションを使いましょう。
  • 権利:所有していない写真をスタイル変換しても、自分のものにはなりません。元の権利は残ります。

よくある質問

画像から画像のデノイズ強度とは何ですか?

モデルが描き直す前に、画像へ加えるノイズの量です。強度が低ければ元の画像はほぼそのまま残り、高ければモデルが大部分を置き換えます。

画像から画像とインペイントの違いは何ですか?

画像から画像は絵全体を変えられます。インペイントはマスクした領域だけを変え、それ以外はそのまま保とうとします。

スタイル変換にControlNetは必要ですか?

低〜中程度の強度での単純なスタイル変更には要りません。スタイルを大きく変えつつ、レイアウト、ポーズ、輪郭は正確に保ちたいときに、制御画像が役立ちます。

アウトペイントで縁に物が繰り返されるのはなぜですか?

新しい空間を、モデルが縁の隣に来る可能性が最も高いもの、つまり同じものの続きで埋めようとするためです。広げる幅を小さくし、新しい領域に何を出したいかを描写しましょう。

実在の人物の写真を画像から画像の入力に使ってもよいですか?

技術的には可能ですが、写真を使う権利と、多くの地域では本人の同意が必要です。誤解を招く、または害を与えるおそれのある実在人物の編集を、ブロックするサービスも多くあります。

AIチュートリアル一覧