【Stable Diffusion】ControlNet depth_hand_refinerで手の崩れを修正する方法!

白衣の黒髪女性が手を振るAIイラスト

はじめに

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のメリットとデメリットは以下の通りです。

メリット
  • 精度の高い手の修正が可能
デメリット
  • ControlNetのインストールが必要
  • 修正までの工程が多い(慣れれば時間は、それ程かからない)
  • 深度データを使用するため、手が交差(重なっている)している場合は修正が困難

ADetailerについては以下の記事で解説しています。

あわせて読みたい
ADetailerで治せるのか?【手や顔を修正するコツを紹介】 Stable Diffusion WebUIの拡張機能である「ADetailer」のインストール・使い方を紹介します。 ADetailerを使用すれば、顔面崩壊してしまった画像を簡単に修正することが...

ControlNet depth_hand_refinerで手の崩れを修正する方法

depth_hand_refinerはControlNetの機能なので、ControlNetのインストールが必須になります。

以降で、手の修正までの手順を解説します。

ControlNetのインストール

以下手順でControlNetおよび、必要なモデルをインストールします。

  • STEP1
    ControlNetのインストール

    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」を最新版に更新してください。

あわせて読みたい
Stable Diffusionのアップデート方法を紹介します はじめに Stable Diffusion WebUIに入れた新しい拡張機能が、動かなくて困ったことはありませんか?もしかしたらStable Diffusion WebUIのバージョンが古いことが原因の...

depth_hand_refinerで実際に手を修正してみる

  • STEP1
    img2imgのinpaintタブに移動する

    上部メニューの「img2img」をクリックし、中段にある「inpaint」をクリックします。

    「img2img」と「inpaint」のクリックを促している
  • STEP2
    手が崩れた画像をロードする

    「ここに画像をドロップ」部分に手が崩れた画像をドラッグ&ドロップします。
    またはクリックしてダイアログから対象画像を選択します。

    修正したい画像をドラッグ&ドロップするよう促している
  • STEP3
    マスク(修正)エリアを選択する

    今回は手を修正するので、手の部分を白く塗りつぶします。

    修正したい範囲を塗りつぶすよう促している

    右上のスライダーを調整することで、ブラシの大きさを変更できます。

    塗りつぶすエリアは、手がすっぽり収まるように少し大きめに塗りましょう。

  • STEP4
    ControlNetを有効化し、必要機能をチェックする

    ControlNetの設定項目を展開し、「Enable」、「Pixel Perfect」、「Upload independent control image」をチェックする。

    「Enable」、「Pixel Perfect」、「Upload independent control image」のチェックを促している
  • STEP5
    inpaintでロードしたものと同じ画像をロードする

    先ほどinpaintでロードした画像を、ControlNet側にもドラッグ&ドロップします。
    またはクリックしてダイアログから対象画像を選択します。

    ControlNet側に修正したい画像をドラッグ&ドロップするよう促している
  • STEP6
    Control TypeおよびPreprocessorの設定

    Control Typeから「Depth」をチェックします。

    その後、Preprocessorから「depth_hand_refiner」を選択します。

    Control TypeとPreprocessorを設定するよう促している
    CHECK

    事前に深度情報モデルをダウンロードしていれば、Modelに「control_v11f1p_sd15_depth」が設定されます。

  • STEP7
    爆発アイコンをクリックする

    PreprocessorとModelの間にある爆発アイコンをクリックします。
    (初回は必要ファイルのダウンロードが実施されるので時間がかかります)

    爆発アイコンのクリックを促している

    深度情報が作成されると、ロードした画像の隣に深度画像が表示されます。
    (指の本数など、正しく修正されていることを確認します)

    灰色で解析した深度画像が表示されている
    解析した深度情報
  • STEP8
    プロンプトを記述する

    修正する手に合ったプロンプトを記述します。

    今回は、女性の手を修正するので「a gril hand」と記載しました。

    a gril handとプロンプトを追加している

    その他、スタイルを記載すると修正精度が上がります。
    今回はイラスト画像なので「illustration」と記載するのが良いですね。

  • STEP9
    画像生成する

    最後に「Generate」ボタンをクリックして画像生成します。

    Generateボタンのクリックを促している

    思った画像が一発で生成できるとは限らないので、「Batch size」をVRAMが許す限り大きくしましょう。

    Denoising strengthの初期値が0.75と高めなので、少し下げると良い結果が得られます。

    画像にもよるけどDenoising strengthは0.6以下がおすすめだよ。

    実際に修正した画像は以下のようになりました。

    パーカーを被って手を振る女性のAIイラスト
指が6本描画されている
    修正前
    パーカーを被って手を振る女性のAIイラスト
指が5本に修正されている
    修正後

    深度情報の通り、指の本数が5本に修正されたね!

ここまでの手順についてYouTube動画を投稿しています。合わせてご参考ください。

まとめ

今回は、ControlNet depth_hand_refinerを使って手の崩れを修正する方法を紹介しました。

depth_hand_refinerによる手の修正は、かなり精度が高いことがわかりました。
AI画像生成って今でも手の描画が苦手ですからね。

もし手が崩れてお蔵入りとなってしまった画像があったら、depth_hand_refinerを使って修正してみましょう!

txt2imgでdepth_hand_refinerで使用したい場合には、以下の記事をご参考ください。

あわせて読みたい
【Stable Diffusion】生成した画像の手をADetailerとdepth_hand_refinerで修正する方法 はじめに Stable Diffusionで生成した画像の手を、txt2imgで修正する方法を解説します。 今回はADetailerとdepth_hand_refinerを使って修正してみます。 ADetailerは手...
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

IT技術者でありDTMer
EDMの作曲を始めたところ楽しさに気づき、ロック以上にハマっています。
楽器はギターを弾いており、バンドではギタリストとしても活動しています。

コメント

コメントする

目次