0
1

More than 1 year has passed since last update.

Stablediffusionで、【Depth map library and poser】を用いて手を修正しよう。

Posted at

概要

StableDiffusionなどのAI絵を使用していると、どうしても手がうまく描けないので困ってしまう。
そういった時に手をうまく修正する、Depth map library and poserを用いて手を修正しよう。

controllnetのダウンロード

Depth map library and poserを使うためには、controllnetが必要なので、以下手順でダウンロードする。

拡張機能から、sd-webui-controlnetを探して、インストールを押す。
スクリーンショット 2023-05-07 16.25.56.png

インストール中だと、画面が薄くなり、proccesingが進む。
スクリーンショット 2023-05-07 16.27.16.png

その後、Installedに、sd-webui-controlnetが出てくるのを確認する。
スクリーンショット 2023-05-07 16.29.19.png

その後、stablediffusionを再起動すると、Controllnetがimgtotxt,imgtoimgで選択できるようになる。
スクリーンショット 2023-05-07 16.44.37.png

モデルのダウンロード

ControlNetは専用のモデルが必要なので、以下リンクからダウンロードする。

しかい、ここを見るとたくさんモデルがありすぎる。。
スクリーンショット 2023-05-07 16.33.08.png

以下リンク先より、モデルの説明を抜粋。

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,を再起動する。
スクリーンショット 2023-05-07 17.05.57.png

すると、DepthLibralyという新しいタブが表示されるようになる。
スクリーンショット 2023-05-07 17.09.30.png

ちなみに、Handsをみると、さまざまな形の手の絵が記載されている。
スクリーンショット 2023-05-07 17.11.27.png

実際に修正する。

Add backgroundsから、修正したい内容の絵を選択する。
スクリーンショット 2023-05-07 17.14.53.png

00005-204196767.png
そして、画像のサイズと、Depthlibraryでのサイズを合わせる。ここでは1024x640だった。わからなかったらpinginfoとかで確認すること。

そして、Handsの中から、指定したい指を選択し、Addを押すと、右側で手が出てくる。
スクリーンショット 2023-05-07 17.20.45.png

この手をうまいこと元の絵と合わせて、それっぽい形にする。なお、修正用の手は左しかないので、右手の場合は必ず反転させること。(拡大縮小、反転、角度変更ができる。)
スクリーンショット 2023-05-07 17.23.42.png

その後、save pingを押すと、手の部分だけの画像が出てくる。
スクリーンショット 2023-05-07 17.27.48.png

その後、元の修正する画像をping info から、txt to txtに送る。
スクリーンショット 2023-05-07 17.30.17.png

そして、同じプロンプトやサンプラー、Seedなどを設定する。
スクリーンショット 2023-05-07 17.41.22.png

  • 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 Weight0.9~1.2付近
    • Starting Control Stepは、サンプリングステップの数が20なら0.19、30なら0.3あたりがいいらしい。

だが、これで出力すると、手を写すというか、そもそも手を映さない構図に変更された。
何が悪いのかはよくわからないですが、とりあえず手の部分が変なふうに見えることを回避させるらしい。

00026-204196767.png

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1