Stable Diffusion ControlNet:写真のポーズ再現と種類別の生成画像の比較

2024年2月14日

広告

ControlNetとは?

ControlNetは、Stable Diffusionの拡張機能で、参考写真と同様のポーズをキャラクターに取らせたり、顔の特定のスタイルを保ったまま様々な画像を生成したりすることができます。具体的には、以下のような使い方があります:

  1. 参考写真のポーズを再現: ControlNetを使用することで、キャラクターが参考写真と同じポーズをとることができます。
  2. 棒人間を使ったポーズ指定: “openpose"という拡張機能を活用して、棒人間のポーズを指定することができます。
  3. 参照元画像を活用したスタイルの維持: “reference"シリーズを使用することで、参照元画像と同じスタイルの画像を生成できます。

ControlNetの導入方法

以下は、Stable Diffusion web UIにControlNetを導入する手順です:

  1. Stable Diffusion web UIを起動し、「拡張機能(Extensions)」のタブを開きます。
  2. 「インストール済(Installed)」内の拡張機能を確認します。ControlNetがまだインストールされていない場合、以下のURLからインストールできます:ControlNetのリポジトリ
  3. インストールが完了したら、UIを再起動してControlNetを有効にします。

設定と効果

無料画像をネットから入手してください。
Copilotに無料画像サイトと入力すれば、教えてくれます。

Copilotの回答

さて、無料画像を探してみましょう。以下のサイトで高品質なフリー画像素材を見つけることができます:

  1. Pixabay: 4,300万点以上の高品質なフリー画像素材が提供されています。
  2. Unsplash: 1,000,000以上の無料画像がダウンロードできます。
  3. 写真AC: 約8,170,000点以上のモデルの許可済み人物写真素材が提供されています。

これらのサイトから選んで、素敵な画像を見つけてください!📸

今回、入手した画像は線路内に座り込む、女性の画像を使います。

画像を taggerに貼り付け、画像の要素を Send to txt2img を押して、プロンプトをはりつけます。

何も設定しない状態では、プロンプト通りにレール内に座る人が生成されます。
男性か女性なのか見分け難いので、プロンプトで女性を指示します。

コントロル・ネット未設定の場合、自由なポージングで画像が生成される。

OpenPose (ポージング)

OpenPoseは、リアルタイムで複数人数のキーポイントの検出とマルチスレッドができるライブラリです。 画像から人の体、手、顔などの合計130個のキーポイントを検出し、生成する画像に適用します。

使い方は、コントロールネットを開き、Enable にチェックを入れ 有効ににします。
画像を張り付ける場所が表示されますの、ポーズをさせたい画像を張り付けます。
張り付ける場所が、隠れている場合も有りますので、○○○○Imageにチェックを入れ表示させてください。

画像を張り付けて、花火のマークを押すと、棒人間の画像が表示されます。
この棒人間のデータは、保存が可能ですので、お気に入りのポージングデーターを集めて動画などに流用する事も出来ます。

OpenPoseを有効にした画像を下に張り付けます。 この設定をコントロールネット (Unit 0)番に入れた状態で、他の項目を見て行きます。

ポージングは上手く作動しているようですが、画像としては不満が残ります。

Tile/Blur (背景の固定)

Tile/Blurは画像を元に似たような背景画像を生成します。ビルや電線などの位置は元画像とよく似ていますが、草花が建造物に入れ替わったりもしますので、完全に背景が固定される訳ではないようです。

又、キャラクターの変更も行うことが出来ます、少女のキャラクターを、男性に変えたい場合は、おじさんになります。また、ショートヘアーやメガネといった特徴を指定すれば、その通りに変身できます。
ただし、OpenPoseを併用しないと、生成される画像は全く異なってしまいますので、OpenPoseと一緒に使うことをおすすめします。

canny (輪郭生成)

画像は輪郭に沿って生成されますが、意図しないものも一緒に生成されることがあります。
trainというネガティブプロンプトを指定すれば、列車は消えますが、輪郭の線に従って、別のものが生成される可能性があります。


depth (奥行)

画像生成には、深度情報を検出して、正しい奥行きを設定します。

マスクを利用すると、奥行きを調整できるだけでなく、不要な物の生成も防げるという特徴があります。

NormalMap

画像に影があると、その凹凸を検出して、生成画像に反映します。
より立体感のある画像を生成することができます。

MLSD

MLSDは直線の輪郭を検出して、画像に影響します。
直線の輪郭でない部分は単純化されやすいです。

Lineart

画像の輪郭を分析して、マスクを作成する機能を提供します。光の当たり方や影の付け方を調整して、リアルな効果を出しますが、色のバリエーションは少なくなる傾向があります。

SoftEdge

SoftEdgeは輪郭系の機能ですが、Modelが用意されていないため、現時点ではコントロールできません。生成される画像は通常のガチャ画像と同じになります。

Scribble/Sketch

これは、強調された輪郭線の画像です。輪郭線があまりにも太くて、レールが平らに見えてしまいます。
ベタ塗り画像に適しているかもしれませんが、あまり実用的ではないと思います。

Segmentation

Segmentationでは、人物や床、草、壁などのカテゴリーに応じて色分けして表示します。しかし、緑色であっても草花として表現されるわけではなく、単に一つのカテゴリーとして認識されるだけです。

Shuffle

シャッフルとは、ノイズのパターンをテクチャーに変換して、背景に重ねることで、見た目を大きく変化させることができる手法です。

inpaint

この機能はImage2Imageタブのinpaintと同じで、修正したい部分をマウスで適当に塗り潰します。このステップでは、修正したい部分を明確に指定することが重要です。具体的には、画像上でマウスをドラッグして、修正したい部分を選択します。選択した部分は色で塗りつぶされ、これが修正対象となります。
プロンプトで(Best Query, Masterpiece, 1 Girl)を指定すると奇麗な少女が再生成される。

InstructP2P

InstructP2Pは、合成機能に一種です。こちらもOpenPoseと併用して、キャラクターを固定して使います。プロンプトに廃墟(ruins)と入力すると背景とキャラクターに影響をあたえます。ゾンビと入力するとキャラクター側に重点を置き、変更が行わます、同じように、天国(heaven)と天使(angel)でも同じような結果となります。


その他、mikuと入力すると 初音ミクになりますし、ロボットと入力すればその通りになります、

Tile/Blurと同じように見えるかもしれませんが、キャラクターの変更だけならTileのほうがリアルです。キャラクターの変更はTileで、背景を含めた変更はInstructP2Pを使う様にしてください。

tileで変更した、(ゾンビ)

Reference

Referenceは、設定した画像に似ている画像を作ることができます。
使い方は、基準となる画像を貼り付け、Referenceを選択してください。
プロンプトで「傑作, 最高品質, 女の子1人, ソロ, 茶髪, ショートヘア, 笑顔, パンツ、Tシャツ、都会」などを記載します、設定をしないとランダムで生成されてしまいます。

この文章は微妙な違いがあります。髪型やシャツの柄、ズボンの素材などが異なります。しかし、設定を変えると、同じような画像が安定して生成されるようになります。
アニメーションや多数の画像を作るときには、便利な機能です。

ベストな組み合わせ

コントロールネットは、イメージに沿った画像を生成するのに便利な拡張機能ですが、画像の品質が低下する可能性があります。ADetailerなどの他の拡張機能と組み合わせて使うことをおすすめします。
また、ポージングにはOpenPoseが必要ですが、背景はお好みで選べます。イメージを変えたくない場合は、Tile/Blurが最適だと思います。
色々と試して、美しい画像を生成してください。