今回は画像生成AI初心者向けの話題で、タイトルの通り
をまとめてご紹介するという内容になっています。
皆さんご存じのとおり手や指の描写は画像生成AIの最大の弱点の一つとして有名ですよね。ただこの弱点は最初期から知られていたということもあり、今となっては様々な解決策が考案されています。
…まあ何も知らないと未だに指がグチャグチャのイラストが生成されてしまうことも多く、初心者の方からしたらつまづく原因になっていると思うのですが、解決策を知っていればかなりの確率できれいな手・指をしたキャラクターを生成できるという点は知っておいて損はないでしょう。
そこでここでは手や指の描写でお悩みの初心者の方向けに比較的簡単にできる対策に絞って一通りご紹介してきますね。
手や指がきれいな美少女イラストのサンプル
まずはじめに、今回ご紹介する方法を複数併用して生成した美少女イラストのサンプルをいくつか掲載します(使用モデル:FlatAddiction)。
いずれも手を比較的正確に生成できていることがお分かりいただけると思います。ただ一応言っておくとしっかり対策しても成功率は案外低めなので、上記のようにきれいな手を出すにはある程度の試行錯誤・ガチャが必要でした。その点はご留意頂ければと思います。
下準備:Stable Diffuison web UIとControlNet拡張機能が必要
さてサンプルをご覧頂いたところで早速コツをご紹介したいところですが、その前に今回ご紹介する方法を使うためには次の2つの下準備が必要です。
- Stable Diffusion web UIを導入して使えるようにしておく
- 上記のweb UIにControlNet拡張機能を導入して使えるようにしておく
Stable Diffusionを手軽に使うためにはStable Diffusion web UIというツールがあると便利なので、まだ触ったことがないよという方は下記の記事をご覧いただき導入を済ませておいてください。
また今回ご紹介する方法のうちの一部ではControlNetも使います。ControlNetはweb UI用の拡張機能をインストールすれば手軽に使うことができます。
ControlNet用のモデルは何種類もありますが、手や指の場合は特に「Openpose」モデルと「Depth」モデルがあると便利なのでその2つを忘れずに導入しておいてください。
AIにきれいな手・指を描かせるための簡単なコツまとめ
ではここから綺麗な手・指のキャラクターを生成するためのコツについて解説してきます。初心者の方でも比較的簡単にできそうな方法に絞ると次の表のようなものが挙げられます。
方法 | 効果 | 手軽さ |
---|---|---|
指の描写に強いモデルを使う | そこそこ | 手軽 |
ネガティブプロンプトを工夫する | 弱い | 手軽 |
手・指用のembeddingsを使う | 弱い | 手軽 |
拡張機能「Depth map library and poser」を使う | そこそこ | 面倒 |
Inpainting機能を使って指を修正する | 場合による | やや面倒 |
それぞれ詳しく見ていきましょう。なおそれぞれ効果に強弱があるので、一つだけ使うのではなく適切なものを併用するのがベストです(※今のところ「これ一発で解決!」というような方法はありません)。
指の描写に強いモデルを使う
まず一つ目は指の描写に強いモデルを使うことです。
今は美少女イラスト用の良質なモデルが数多く出回っており、以前と比べれば指の描写に強いモデルが多くなりつつあります。いかんせん数が多すぎて私はほんの一部しか試せておらず「これを使えば間違いない!」というモデルはご紹介できないのですが、最近のモデルであればどれを使っても昔のモデルほど酷い有様になる可能性は少なく、「これは惜しいなぁ」と思うレベルの比較的マシな指になると思います。
ただ現状としては手や指を完璧に描けるモデルというのはなかなか聞かないですし、モデルの選定だけでは指が変にならない保証は全くないので他の方法と併用することは必須だと言えます。
ネガティブプロンプトを工夫する
次に二つ目はネガティブプロンプトを工夫することです。ネガティブプロンプトとは生成する画像に含めてほしくない要素を指定するためのプロンプトで、これをきちんと記入することで画像のクオリティを上げることが可能です。
例えば、手や指のクオリティを上げるネガティブプロンプトとしては次のようなキーワードが挙げられます。
ただしこれらのキーワードをネガティブプロンプトに入れても大きな改善は見込めないでしょう。あくまでも「書かないよりはマシ」程度だと思ってください。
手・指用のembeddingsを使う
三つ目は手や指を改善するためのembeddingsを使うことです。embeddingsとは画風の細かい調整を行うための小さなモデルのことで、主にネガティブプロンプトにembeddingsの名称を記入することで機能します。
手や指を改善するためのembeddingsはいくつかあり
- bad-hands-5
- negative_hand Negative Embedding
(※ダウンロードページに大人向けの画像があるのでリンクはしません)
などが有名です。しかしこちらも手軽に導入できる反面「ないよりはマシ」程度の効果なので、他の方法と併用するのが望ましいと言えます。
拡張機能「Depth map library and poser」を使う
四つ目はweb UI用の拡張機能「Depth map library and poser」を使うことです。この拡張機能については既に下記の記事で詳しくご紹介しているのですが…
簡単にご説明すると、これはControlNetの「Depth」モデル用の手の画像が多数用意されている拡張機能です。Openpose Editorなど他の拡張機能と併用することで真価を発揮し、上手く使えばきれいな手を描かせることができます。
例えばDepth map library and poserとOpenposeEditorを使って下記のような画像を生成し、それをMulti ControlNet機能を使って同時に適用すると次のように手の崩れが少ないイラストを生成できました。
Depth map library and poser | OpenposeEditor | 生成結果 |
---|---|---|
ただこの方法は
- 結構手間がかかって面倒くさい
- 全体的な絵柄が若干崩れる可能性がある
- 手の形によっては成功率が悪くなる場合がある
(例:手の形がパーのときは成功しやすいが、チョキのときは成功しづらいとか)
といった欠点があります。上手く使い分けましょう。
Inpainting機能を使って指を修正する
最後に五つ目として、指が崩れてしまった場合はInpainting機能を使って修正するのも有効です。Inpainting機能については下記の記事で詳しくご紹介したのでここでは説明は省略しますが…
この機能を使うと例えば「他はバッチリなのに指が1本多い!惜しいなぁ…」といった場合にweb UIの中で簡単な修正を行うことができます。
具体例:指が1本多い場合の修正
では実際の具体例として、指が1本多い場合の修正例を挙げてみようと思います。元画像は下記のような感じです。
まずはじめに元画像をInpaintingにそのまま突っ込んでもあまりよい結果は得られないので、Photoshop等の画像編集ソフトで不要な指をザックリと消します。まあPhotoshopを本気で使えばこのくらい修正できてしまうのですが、ここではそれは本題ではないので消し方は雑で構いません。例として私はブラシツールとスポイトツールを使って不要な指を簡単に塗りつぶすだけの修正を行いました。
そうしたらこの画像をInpaintタブに入れて、いま修正を行った部分にマスクをかけます。
あとは呪文を記入して何回かガチャを引くと、次のように手が修正されてきれいなピースサインになったイラストが生成されました。
おわりに
以上、画像生成AIに手や指を上手く描かせるコツについて解説しました。もちろん上の方でも書いた通り、これらのコツを使っても成功率は100%にはならないのですが、それでも何もしない場合よりもかなり成功率が上がるはずです。イラスト生成が捗ると思いますのでぜひ皆さんも実際に試してみてください。
この記事が何かしら参考になれば幸いです。