見出し画像

キャラクター描き分け ComfyUI ワークフローの解説

割引あり

はじめに

この note は、ComfyUI というプログラムを使った画像生成AIの方法、特に私が作成した「キャラクターの特徴を混在させずに画像生成する方法」の仕組みと使用方法について説明している。

ここでは、ローカルPC上に構築するのを前提としており、もし手元のPCにグラボが無い場合や、VPSやColaboなどを利用したい場合はまた異なる手順となるかもしれないが、そこは検証していない。

なおこのワークフローはまだ開発中であり、誰にでも使いやすいと言える状況ではない事だけ最初に説明しておく。

ComfyUIとは

ComfyUI は、Stable Diffusion WebUI と同じく画像生成を行うアプリであるが、両者は画像生成に対してかなり異なるアプローチを行っている。
Stable Diffusion WebUI は、画像生成に必要なパラメータを全部見せ、ユーザーがそれらを入力し、機能のオンオフをコントロールして画像を生成する。

画像
Stable Diffusion WebUI(Forge版)

一方、ComfyUI は画像生成に必要な機能を「ノード」という形で分離し、ユーザーは自分で好きなようにノード同士を連結して機能と機能をつなげながらパラメータを入力し、画像を生成させる。
どちらも同じプロンプト・設定・モデルを使った結果としては、ほぼ同じものが出来上がる。

画像
ComfyUI

これはどちらが優れているかと言う事ではなく、画像を生成するにあたってのアプローチが違っているという話である。

ただどちらかといえば Stable Diffusion WebUI の方が初心者向けであり、最低動作させるために入力する部分はある程度限られているが、ComfyUI はデータの型についての認識や、プログラミング的な思考が求められる事も多々あり、覚える事も多いため、若干玄人向けである。

ではなぜ ComfyUI を使う人がいるかというと、Stable Diffusion WebUI だと手間がかかる作業や高度な事が、ComfyUI では半自動的に出来るからである。
この note で紹介する「キャラクターの描き分けワークフロー」も、原理的には Stable Diffusion WebUI でも作業可能だが、手作業だとかなりの操作の手間がかかり現実的ではない。しかし ComfyUI を使う事でボタン1つで作業が完了する。

複数キャラを生成する上での課題

通常の画像生成AIでキャラを作成する際に課題となるのは、複数のキャラの特徴をプロンプトで指定した際に、その特徴が混ざってしまう事だ。

例えば

  • 金髪の青目で学生服の男の子

  • ピンク髪ロングヘアで黄色目でビキニを着ている女の子

この二人の登場する絵を AI 描いて欲しいとする。
プロンプトは次のようにした。

masterpiece,best quality,
1boy,blonde hair,blue eyes,standing,school uniform,
1girl,pink hair,long hair,yellow eyes,standing,bikini,

その結果がこれである。

画像
二人とも制服でビキニは着ないし、男は黒髪

さらにチャレンジ

画像
なぜか黄色からピンクへのグラデーションになっているし、男は金髪にならない。目の色も指定と違う。

もうお分かりだろうが、タグを使って描いて欲しい絵の特徴を指定すると、どれがどちらの特徴を示すものなのか AI が判定出来ておらず、特徴が混ざった絵が出来てしまうのである。

Stable Diffusion ではタグではなく「英文」も使える。
英文だとこう

masterpiece,best quality,
A boy with blond hair and blue eyes in a school uniform,
A girl with long pink hair and yellow eyes wearing a bikini,

その結果がコレだ。タグの時よりかなり良い。でもだいぶ惜しい。

画像
女の子の目の色が合っていない、髪がロングではない。

再チャレンジ

画像
知らないお友達が増えたが、それは求めていない

見ての通りだが、全く言う事を聞かない。
狙った通りの複数キャラの絵を同時に出すのはかなりの試行回数が必要となり現実的ではない事が分かる。

ここでは試さないが、ADetailerという顔面修復を行う拡張機能がある(ComfyUI では FaceDetailer という名前)これを使った場合はもっと酷い結果が得られる。

機能を簡単に説明すると、一度生成した画像内から顔をAIで検出して検出した箇所を再度拡大してAIで描きなおす事で、壊れてしまった顔を綺麗に描きなおす機能だ。
これを使うと悪い場合は、男も女もオジサンもおばさんも、全員が美少女の顔になったりする。キャラの外見的な特徴だけではなく、表情(怒りや悲しみ)も、口の仕草(口を開けるやベロを出す)も全部混ざって、カオスな絵が出来る。

これらの事情から一般的に、AIで画像生成する人は複数キャラを生成しない傾向がある
生成した結果が担保できなくても良いケース(ランダム性のまま活用する、全員が同じ表情、全員微笑であるなど)の場合のみ、複数キャラを生成する事が多いように思う。

キャラ書き分けワークフローで出来る事

「指定されたプロンプトの特徴をごっちゃ混ぜ」にして出来上がった偶然性を楽しむのであれば良いが、どうしても描き分けた絵を出して欲しい場合は別なアプローチが必要となる。

それがこの ComfyUI を使った「キャラクターの描き分けワークフロー」だ。

先ほどまでの例に挙げたコンセプト(女の子=ピンク髪、金目、ビキニ+男の子=金髪+青目+学生服)も、このワークフローを使うと、以下のような絵として生成出来る。

画像
全ての要件が揃って生成されたAI画像

このように、キャラクターの特徴が完全に分かれた状態で画像生成が可能になる(手は壊れているが……)

今回はさらに、女の子はいじわるな顔(evil smile + grin)で金色ビキニ、男の子は恥ずかしがっている(shy)のプロンプトに追加し、完全にキャラごとに表情も異なっている事が分かるようにした。
当然、左右を入れ替えても特徴を維持したまま描き分ける事が可能。表情や特徴の混濁が起こらない。
表情を入れ替えると、とんでもないクズ男っぽくなる。

画像

では具体的なワークフローの利用方法の説明を行っていくが、ComfyUI自体が決して初心者向きとは言えない上に、ワークフローも少々説明が多いため難しい所があるかもしれないが、ここのコメントや、X 上のポストに対して質問をもらえれば、都度追記する形で補足したい。

もし実践的な導入よりも、技術的な内容だけを知りたい場合は「技術説明」を読むと、何をどうやっているのかが分かるだろう。

ここから先は

9,772字 / 70画像

PayPay |PayPayで支払うと抽選でお得

この記事が気に入ったらチップで応援してみませんか?

ピックアップされています

生成AI

  • 3本

購入者のコメント

4
二条城オンデマンド
二条城オンデマンド


【環境】
・windows
・python310
・pip24
・stabilitymatrix

>記事内カスタムノードインストール後comfyuiを再起動した後以下のエラーが出てしまいjsonファイルの読み込みやmanagerの表示が出来なくなってしまいました。
やったことはpipの再インストールとアップデートですが何れも状況の解決には至りませんでした。

WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Collecting openai

二条城オンデマンド
二条城オンデマンド

何か解決方法をご存じであればご教唆いただけますと幸いです。

pipix@シュガーナイト
pipix@シュガーナイト

たぶんですが、これは警告であって、エラーの原因ではなさそうに見えます。
別な場所にエラーが出てないでしょうか。
新規環境を作り直してもダメでしょうか。

pipix@シュガーナイト
pipix@シュガーナイト

ComfyUI の再起動や、Reload ボタンを押してワークフローを開きなおす、などで改善しませんでしょうか?

ログイン または 会員登録 するとコメントできます。
キャラクター描き分け ComfyUI ワークフローの解説|pipix@シュガーナイト
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1