はじめに
Stable Diffusionは、AIを使って自然なイラストを生成できるツールです。
しかし、生成されたイラストの手が崩れてしまうことが、ままあります。
よくあるパターンは指の本数が5本ではなく、多かったり、少なくなった画像ですね。
そんなときは、ControlNetのdepth_hand_refinerという拡張機能を使って、手の崩れを修正しましょう。
本記事では、ControlNet depth_hand_refinerを使って、Stable Diffusionで生成された手の崩れを修正する方法を解説します。
- ControlNet depth_hand_refinerのメリット・デメリット
- ControlNet depth_hand_refinerのインストール手順
- ControlNet depth_hand_refinerを使った手の修正方法
ControlNet depth_hand_refinerとは?
depth_hand_refinerとはControlNet ver1.1.427で搭載された新しいプロセッサーです。
参照画像から、手を修復した深度データを作成し、深度データで手を修復する手法です。
深度データを参照するため、既存のADetailerを使った手の修正と比べて、精度の高い修正が可能です。
depth_hand_refinerのメリットとデメリットは以下の通りです。
ADetailerについては以下の記事で解説しています。
ControlNet depth_hand_refinerで手の崩れを修正する方法
depth_hand_refinerはControlNetの機能なので、ControlNetのインストールが必須になります。
以降で、手の修正までの手順を解説します。
ControlNetのインストール
以下手順でControlNetおよび、必要なモデルをインストールします。
- STEP1ControlNetのインストール
ControlNetのインストール方法については以下の記事をご参考ください。
ControlNetのインストール方法と使い方【ポーズの指定が出来る!】Stable Diffusion WebUIの使い方 はじめに Stable Diffusion WebUIの拡張機能である「ControlNet」のインストールから使い方までを紹介します。 ControlNetには様々な機能が搭載されていますが、今回は... - STEP2深度情報用モデルのインストール
ControlNet-v1-1モデルから、「control_v11f1p_sd15_depth.pth」をダウンロードします。
ダウンロードしたファイルは「webui」→「extensions」→「sd-webui-controlnet」→「models」フォルダーにファイルを保存します。
ControlNetのアップデート
depth_hand_refinerはControlNet ver1.1.427以上で使用できます。
古いverをお使いの方は、以下の記事を参考に拡張機能「ControlNet」を最新版に更新してください。
depth_hand_refinerで実際に手を修正してみる
- STEP1img2imgのinpaintタブに移動する
上部メニューの「img2img」をクリックし、中段にある「inpaint」をクリックします。
- STEP2手が崩れた画像をロードする
「ここに画像をドロップ」部分に手が崩れた画像をドラッグ&ドロップします。
またはクリックしてダイアログから対象画像を選択します。 - STEP3マスク(修正)エリアを選択する
今回は手を修正するので、手の部分を白く塗りつぶします。
右上のスライダーを調整することで、ブラシの大きさを変更できます。
塗りつぶすエリアは、手がすっぽり収まるように少し大きめに塗りましょう。
- STEP4ControlNetを有効化し、必要機能をチェックする
ControlNetの設定項目を展開し、「Enable」、「Pixel Perfect」、「Upload independent control image」をチェックする。
- STEP5inpaintでロードしたものと同じ画像をロードする
先ほどinpaintでロードした画像を、ControlNet側にもドラッグ&ドロップします。
またはクリックしてダイアログから対象画像を選択します。 - STEP6Control TypeおよびPreprocessorの設定
Control Typeから「Depth」をチェックします。
その後、Preprocessorから「depth_hand_refiner」を選択します。
CHECK事前に深度情報モデルをダウンロードしていれば、Modelに「control_v11f1p_sd15_depth」が設定されます。
- STEP7爆発アイコンをクリックする
PreprocessorとModelの間にある爆発アイコンをクリックします。
(初回は必要ファイルのダウンロードが実施されるので時間がかかります)深度情報が作成されると、ロードした画像の隣に深度画像が表示されます。
(指の本数など、正しく修正されていることを確認します)解析した深度情報 - STEP8プロンプトを記述する
修正する手に合ったプロンプトを記述します。
今回は、女性の手を修正するので「a gril hand」と記載しました。
その他、スタイルを記載すると修正精度が上がります。
今回はイラスト画像なので「illustration」と記載するのが良いですね。 - STEP9画像生成する
最後に「Generate」ボタンをクリックして画像生成します。
思った画像が一発で生成できるとは限らないので、「Batch size」をVRAMが許す限り大きくしましょう。
Denoising strengthの初期値が0.75と高めなので、少し下げると良い結果が得られます。
画像にもよるけどDenoising strengthは0.6以下がおすすめだよ。
実際に修正した画像は以下のようになりました。
修正前 修正後 深度情報の通り、指の本数が5本に修正されたね!
ここまでの手順についてYouTube動画を投稿しています。合わせてご参考ください。
まとめ
今回は、ControlNet depth_hand_refinerを使って手の崩れを修正する方法を紹介しました。
depth_hand_refinerによる手の修正は、かなり精度が高いことがわかりました。
AI画像生成って今でも手の描画が苦手ですからね。
もし手が崩れてお蔵入りとなってしまった画像があったら、depth_hand_refinerを使って修正してみましょう!
txt2imgでdepth_hand_refinerで使用したい場合には、以下の記事をご参考ください。
コメント