概要
StableDiffusionなどのAI絵を使用していると、どうしても手がうまく描けないので困ってしまう。
そういった時に手をうまく修正する、Depth map library and poser
を用いて手を修正しよう。
controllnetのダウンロード
Depth map library and poser
を使うためには、controllnet
が必要なので、以下手順でダウンロードする。
拡張機能から、sd-webui-controlnetを探して、インストールを押す。
インストール中だと、画面が薄くなり、proccesing
が進む。
その後、Installedに、sd-webui-controlnet
が出てくるのを確認する。
その後、stablediffusionを再起動すると、Controllnetがimgtotxt,imgtoimgで選択できるようになる。
モデルのダウンロード
ControlNetは専用のモデルが必要なので、以下リンクからダウンロードする。
以下リンク先より、モデルの説明を抜粋。
ip2p:プロンプトで画像を修正する「Instruct Pix2Pix」を使うモデル。
shuffle:画像をシャッフルし、再構成することで画像を生成するモデル。
depth:深度情報を元に画像を生成するモデル。
canny:画像の輪郭を抽出してそれを元に画像を生成するモデル。シンプルで分かりやすいのが特徴。
inpaint:画像の一部を修正する「Inpainting」を使うモデル。
lineart:線画を作成し、それを元に画像を生成するモデル。
lineart_anime:上記のlineartモデルのイラスト向け版。
mlsd:直線的な線を抽出して画像を生成するモデル。建物や部屋など構造物の画像を生成するときに便利。
normalbae:法線マップ(ノーマルマップ)を使って画像を生成するモデル。
openpose:人物のポーズを検出し、それをもとに棒人間を生成してポーズを制御するモデル。
scribble:落書きからリアルな画像を生成できるモデル。
seg:「セマンティックセグメンテーション」という手法を使うモデル。
softedge:ソフトな輪郭を使って画像を生成するモデル。ディテールを維持するのが得意で、色変更等に活用するとよい。
tile:高解像度の画像を生成するためのモデル
今回は、参考元の記事から、おすすめと書いてある
・ cannyモデル
・ openposeモデル
と、以後の手の修正で使用する
・ ontrol_v11f1p_sd15_depth.pth
をダウンロードする。
ダウンロードしたモデルを、stable-diffusion-webui\models\ControlNet
の中に移動させる。
Controllnetの細かい使い方はもっと他にもあるのだろうが、ここでは割愛する。
Depth map library and poserのダウンロード
今回使う拡張機能の公式ページは以下。
これを使うことで、手や指などを綺麗にすることができるらしい。
拡張機能のインストールは、拡張機能/Install from URL / URL for extension's git repository
に以下のurlを入力し、インストールする。
https://github.com/jexom/sd-webui-depth-lib.git
以下のようにinstalledときたら、stablediffusion,を再起動する。
すると、DepthLibraly
という新しいタブが表示されるようになる。
ちなみに、Hands
をみると、さまざまな形の手の絵が記載されている。
実際に修正する。
Add backgrounds
から、修正したい内容の絵を選択する。
そして、画像のサイズと、Depthlibraryでのサイズを合わせる。ここでは1024x640だった。わからなかったらpinginfoとかで確認すること。
そして、Hands
の中から、指定したい指を選択し、Add
を押すと、右側で手が出てくる。
この手をうまいこと元の絵と合わせて、それっぽい形にする。なお、修正用の手は左しかないので、右手の場合は必ず反転させること。(拡大縮小、反転、角度変更ができる。)
その後、save pingを押すと、手の部分だけの画像が出てくる。
その後、元の修正する画像をping info から、txt to txt
に送る。
そして、同じプロンプトやサンプラー、Seedなどを設定する。
- txt2imgタブにあるControlNetの項目を開きEnableにチェックを入れる
- Imageのタブに上の項で生成した手のPNG画像をドラッグアンドドロップする。
- PreprocessorをNone、Modelをcontrol_depthに設定する。
- Control WeightとStarting Control Stepを変更する。
- Starting Control Stepの値を0から上げることで、AIイラストの生成にControlNetが作用するタイミングを遅らせることができる。(参考記事:https://github.com/Mikubill/sd-webui-controlnet/pull/393)
-
Control Weight
は0.9~1.2付近
-
Starting Control Step
は、サンプリングステップの数が20なら0.19、30なら0.3
あたりがいいらしい。
だが、これで出力すると、手を写すというか、そもそも手を映さない構図に変更された。
何が悪いのかはよくわからないですが、とりあえず手の部分が変なふうに見えることを回避させるらしい。
参考サイト