手の補正に関する全部で6つの方法を検証してみた結果…

今回は、手の補正に関する方法を網羅して、ご紹介します。これらの方法は限られた状況では、実際に効果的ですが、万能ではありません。

にも関わらず多くの解説記事では成功例ばかりが強調され、効果が曖昧にされていることが多いです。それらの記事を鵜呑みにして、結果として多くの時間を無駄にしてしまいました。

でも、安心してください。この記事では、どの方法がどんな状況で役立つのか、そしてどんなときには効果が薄いのか、全部お伝えします。そう、正直に、隠さずに。貴重な時間を無駄にしないために。

メソッドおすすめ度
呪文(プロンプト)による制御
embeddingsによる制御
LoRAによる補正
ADetailerによる修正
ControlNetと深度(Depth)による制御
ControlNetとOpenPoseによる制御

呪文(プロンプト)による制御

呪文(プロンプト)を指定することで手の崩れを防ぐ方法です。主にネガティブ呪文(プロンプト)への指定になります。効果についてですが、そこまで高くはないですが、これらを指定して悪くなることも少ないので指定しておいて損はないでしょう。

手の補正に関する呪文(プロンプト)は次の通りです。

呪文(プロンプト)に指定
  • five fingers
ネガティブ呪文(プロンプト)に指定
  • deformed hand
  • extra_fingers
  • bad fingers
  • missing fingers
  • fewer digits,extra digit
  • liquid fingers

embeddingsによる制御

次はembeddingsによる制御です。もっともメジャーな手の補正に関するbadhandv4で検証してみます。

badhandv4 - badhandv4 | Stable Diffusion Embedding | Civitai
介绍(Chinese Version) 简介 此文本嵌入(text embedding)为 负面文本嵌入 。它能够在对画风影响较小的前提下改善AI生成图片的手部细节。如果它让你的模型表现得比以前更糟,请勿使用它。您可与其他负面文本嵌入一同使...

まずはbadhandv4を使わずに下記の呪文(プロンプト)で画像を生成してみます。

school uniform,Photo of Japanese girl.peace sign hand
EasyNegative

次にbadhandv4を使ってみます。

school uniform,Photo of Japanese girl.peace sign hand
EasyNegative,badhandv4

多少マシになる気がします。なぜだか、指だけではなく、顔の補正がされてて、入れておいて損はなさそうです。

bad-hands-5についても試してみます。

Bad-Hands-5 - Bad-Hands-5 | Stable Diffusion Embedding | Civitai
>>> UPLOADING/SHARING MY MODELS OUTSIDE CIVITAI IS STRICLY PROHIBITED* <<< The only authorized generative service websit...
school uniform,Photo of Japanese girl.peace sign hand
EasyNegative,bad-hands-5

これも多少マシになる気がします。個人的にはbadhandv4のほうが綺麗な気がします。

LoRAによる補正

次はLoRAによる補正を試してみます。ピースサインのLoRAがあったので試してみます。

LoRA Peace Sign✌ - v0.3 | Stable Diffusion LoRA | Civitai
LoRA Peace Sign✌ This is LoRA, designed to increase the accuracy of drawing the peace sign. Usage Use the AUTOMATIC1111'...
school uniform,Photo of Japanese girl.peace sign hand <lora:lora-dim8-peace_deliberate_v2:0.8>
EasyNegative

LoRAで品質が悪化しているので強度を調整してみます。

school uniform,Photo of Japanese girl.peace sign hand <lora:lora-dim8-peace_deliberate_v2:0.4>

LoRAによる補正はあまりおすすめしません。

ADetailerによる修正

拡張機能のADetailerを使った方法です。使い方についてはこちらを確認してください。

ADetailerの設定は次の通りです。

ADetailerで手を補正した結果は次の通りです。何も適用してない場合と比べてほとんど代わらないです。

ControlNetと深度(Depth)による制御

ControlNetを使った方法です。もしControlNetをインストールしてない場合は、次の記事を参考にインストールとDepthモデルのダウンロードを済ませてください。ただし、この手法はあまり効果が高くないので一旦、結果を確認することをおすすめします。

Depth Libraryを使って深度マップを作成します。深度マップとは画像の奥行きを表す画像のことです。ControlNetでは、深度を強制しながら画像を生成することができるのでそれによって手の構造に従って画像を生成するというアプローチになります。

深度マップの編集にはDepth Libraryという拡張機能が必要です。なのでDepth Libraryをインストールしてない場合はインストールしてください。レポジトリはhttps://github.com/jexom/sd-webui-depth-libです。

“txt2img”の画面に戻って作成した深度マップをControlNetのタブを開いて、作成した深度マップ画像をセットします。またControl TypeをDepthに選択して、Preprocessorは不要なのでnoneを設定します。最後にStarting Control Stepを0.45にすることでControlNetによる制御のスタート位置を開始45%の位置に設定します。

Depth Libraryによる制御を利用して生成された画像が次の通りです。

あまり制御が上手くいってないです。深度マップの作成は手間です。手間の割に精度が低いので深度マップを利用したControlNetによる制御はあまりおすすめしません。

ControlNetとOpenPoseによる制御

次はOpenPoseによる手法です。ControlNetがインストールされていることとOpenPoseモデルをダウンロードされている必要があります。もしそうでない場合は以下の記事を参考に準備を済ませてください。

加えてsd-webui-OpenPose-editorという拡張機能を使うので追加してください。

GitHub - huchenlei/sd-webui-openpose-editor: Openpose editor for ControlNet. Full hand/face support.
Openpose editor for ControlNet. Full hand/face support. - huchenlei/sd-webui-openpose-editor

これで準備は可能です。

それではOpenPoseによる制御を解説します。OpenPoseによる制御はポーズを指定しControlNetによって、そのポーズによる制限を加えた状態で画像を作成する方法です。ポーズには手の構造を含めることができるので、それによって手の形を制御するのが本手法です。

まずは”txt2img”タブのControlNetの設定タブを開きます。そして画像をセットして、以下の手順でOpenPoseでポーズの抽出を行いOpen Pose Editorの編集画面を開きます。

次に抽出したポーズを編集して正しいポーズに調整してみます。

  1. 不足している手の関節を追加して正しい位置に編集します。
  2. ControlNetにポーズを送信してポーズをセットします。

ControlNetの開始するタイミングを調整してみます。今回は最初の方に設定したいので0.25に設定しました。また、ControlNetのルールをもっと強くしたいのでControlNet is more importantを選択します。

結果ですがイマイチでした。ポーズの調整はかなり手間がかかります。にもかかわらず、結果の精度はあまり高くないのでこの方法もあまりおすすめはしません。

コメント

  1. embeddingsとADetailerの同時使用がいいかもしれませんね

  2. コメントいただきありがとうございます。