見出し画像

【StableDiffusion】ControlNet anytestを使ってポーズを維持したイラスト作成してみた【ControlNet】

■記事の対象ユーザ

・サムネイル画像を作るのにキャラのイラストを入れたい
・でも絵が描けない
・3Dモデルもいじれない
・生成AIでどうにかできない?

Master of nothing skills.

■ようするに?

サムネ画像にあるようなポーズのメイキングを紹介していきます。


はじめに

私はnoteの記事やYoutubeの動画などでサムネイルなどを作る時に
自キャラLoRAを使ってサムネ用イラストを作っているのですが、
ポーズに関してはワイルドカードを使って色々なポーズをランダム出させていい感じのポーズを引いたら補正をするような方法で用意していました。
これがあまり効率的ではなく、それなりに時間がかかっていました。

今回、新しく公開された月須和さんのControlNet「anytest」のパワーで
任意のポーズで画像を作る難易度がグッと下がったので、驚きついでにメイキングを紹介していきます。

作ってあげる暇がなくてごめん

1.ポーズの撮影

今回の記事ではEasy Poseというポーズ作成ツールを使っていますが
他にも沢山方法があるので後述の付録1をみてみてね。

Easy PoseはSteamで購入できる有償のポーズ作成ツールです。
(先日セールで安かったのでつい買ってしまいました。)
ポーズのプリセットが豊富なこと、撮影用モデルの髪型や等身を多少変えられること、豊富な小道具(特に武器)を持たせられること、個人的にUIが使いやすいことなど色々あるので選定しているよ。

ゆるしてほしい・・・

今回は嘘パース風に手を強調した、手を上に掲げるポーズを作成するよ。

最終的に作りたいポーズと画角で撮影
嘘パースなので後ろから見ると・・・
撮影した画像を1024x1024サイズにトリミング

2.撮影したポーズの線画化

とりにくさん(@tori29umai)がAIを使ったお絵描きサポートを目的としたツールを公開されているんですが、この中の「線画化」と「線画入り抜き」機能でお手軽にいい感じの線画化することが出来るため使わせて貰っています。

EasyPoseで作成した画像を1024x1024pxでトリミングしたものを「線画化」タブに入れて「prompt分析」→「canny作成」→左下の「生成」ボタンとすると、右側に線画化した出力画像が出てきます。
右側の「出力先」ボタンで保存場所に飛べるのでそこから線画を回収するよ。

線画化
取り出した物

この線画でも十分なんだけど、「線画入り抜き」機能を使うと、線の強弱をいい感じに調整してくれるようになっているので、取り出した線画を
「線画入り抜き」タブの入力画像にインプット→「prompt分析」→「生成」
で同じように生成していきます。

線画入り抜き
入り抜き前後


3.線画の加工とイラスト変換

いよいよ線画をイラストに変換するんだけど、プロンプトで指定した服を着せたり、EasyPoseのモデルの髪型も調整したいのでもうひと手間加えます。

変換に使うanytestは線画が無い部分をプロンプトに合わせていい感じに補正してくれるので、PhotoShopの消しゴムを使って以下の加工をしておくよ。
・髪型をキャラに寄せるため前髪の毛先を消しておく
・元モデルの服に寄らないように服のラインを消しておく
・おへそも体のラインが出やすくなるので消しておく

入り抜き線画に消しゴムしたもの

入力画像の準備が出来たので、WebUIを開いてプロンプトを入れておくよ。

沢山書いてあるけど
・safe~absurdiresまではAnimagineXL3.1の推奨プロンプト
・kazuya_bros_khaulaは自キャラLoRAのトリガーワード
・fox ear~pleated skirtはキャラの外見と衣装のプロンプト
・outstretched hand~smileは今回のポーズと表情のプロンプト
なので、今回関係するのは実質は最後の1行くらいです

ほんとは狐のしっぽがついてくる

ControlNetを使わずに出力するとこんな感じの画像が出来るよ

キャラLoRAなし
キャラLoRA+Flat LoRAあり
(そうかも)
ControlNetの設定

入力画像を指定して、anytest_v4のanimagine用のdim256版を選択。
それ以外はデフォルトのパラメータのままにして画像を生成するよ。

完成品がこちら

4.服やポーズを調整する

この時点でも既にいい感じなんだけど、
・線画から消した影響で腰に当ててた腕が表現できていない
・ジャケットをもっとフワッと着せたい
・手とか表情は変えたくない
ということで、調整していくよ。

PhotoShopの50%グレーのブラシで出力画像の修正したい部分を塗りつぶしていきます。左側は手を腰に当ててほしいのでそれっぽく塗りつぶし、
右側はジャケットが広がってほしい辺りまで塗りつぶします。

こんな感じ

塗りつぶし画像ができたら、再びWebUIに戻り
入力画像に指定して、anytest_v4のマージモデルを選択。

めざとい

anytestはバージョンによって効果の強弱が変わるので、いくつか試して
いい感じの変換になるものを選んでいるよ。
詳しくは後述の付録2をご覧ください。

ControlNetの設定

この時、最初の変換でつけ忘れてた「aqua_nail」とFlatLoRAをプロンプトに足してます。

付け忘れすまない

完成した画像がこちら、塗りつぶしたの意図通り腰に腕を当てれてますし
ジャケットもいい感じにフワっと着れています。

胸のhalter cross neckが制御むずかしすぎるんよ
完成品と入力画像との差分

おわりに

以上、出したいポーズをツールで作って、AI-Assitantやanytestの力を借りて
いい感じのサムネ用画像を作るメイキングでした。
今回は(嘘パースがあるとはいえ)比較的簡単なポーズだったので、anytest無しでも作れますが、言語化が出来ない複雑なポーズについてはこのanytestが効果を発揮できると思いますので、是非お試しください。

最後に手順に沿って生成した画像を並べてみるよ。
 1枚目:EasyPoseの出力
 2枚目:AI-Assistantで線画化したもの
 3枚目:ペイントツールで不要な部分を消したもの
 4枚目:3枚目からanytestでイラスト変換したもの
 5枚目:修正したい部分をグレーで塗ったものの
 6枚目:5枚目からanytestで書き換えたもの
 7枚目:背景を切り抜いたもの

付録1:ポーズ撮影用のツールについて

本記事ではEasyPoseを使っていますが、ポーズ撮影には様々な方法があるので、ここでは私の知っている範囲でご紹介しておきます。

なんでもは知らない、知ってることも試す時間がない

VRoid Studio

Blenderが使えなくてもゲームのキャラメイクの感覚でVRMが作成できるツール。作成したモデルを出力して後述のFumiFumiとかで使える他、VRoid Studio自体にもポーズのプリセットや撮影機能があります。

デフォルトのポーズプリセットは数が少なく物足りないんだけど、
Booth等でポーズ集を提供してくれている方もいるので拡張が可能よ。

こんな感じ

FumiFumi

スマートフォンでVRMファイルのポーズを変更して撮影できるツール。
本来はスマホで撮った写真とVRMキャラでお出かけ写真とかとるツールっぽいのですが、VRMさえスマホに入れておけば出先でポーズが作れます。
ポーズプリセットがわりと豊富なのも嬉しいところ。
ただ、スマホ版しかないので自宅では流石にPCのツールの方が早いです。
こちらも追加ポーズが提供されてるのを見かけるね!

こんな感じ

Design Doll

デッサン用の人形を作り、ポーズを作ることのできるPCツール。
無料体験版でもツール自体は使えるのですが、有償版で使えるようになる
投稿型のポーズサイト「ドールのアトリエ」からのポーズ読み込み機能が強いです。

こんな感じ

POSE MANIACS + CLIP STUDIO

豊富な筋肉ポーズが掲載されているPOSE MANIACSは
お絵描きツールのCLIP STUDIOのデッサン人形と連携することができるため
好みのポーズをしたデッサン人形を撮影するという方法があります。

Webcam Motion Capture

チマチマツールを使うのは性に合わねぇ!!という方はモーションキャプチャという手もあります。Webcam Motion CaptureはWebカメラだけで全身モーションキャプチャができるため、自分が好きなポーズをしているところを録画しておいて画像を切り出せば肉体言語で解決ができます。

ただし、自分の身体で出来ないポーズは無理なので(ベキベキッ!!ギャー!!

blender

blenderと和解せよ

手書き

そもそも自分の思い描いたポーズを直接線画に落とし込めるのであれば
ツールは必要ないのです。

園児から成長させていない画力

付録2:ControlNet「anytest」について

気づかれたからには生かしてはおけない

私のLoRA記事でも何度か紹介している、月須和さん(@nana_tsukisuwa)
が公開されているControlNetです。

ひとくちにどんなControlNetか説明するのが難しいんだけど、
私が観測した範囲では次の様な機能を持っています。

1.入力画像のスタイル変換ができる

入力画像を与えたプロンプトでスタイル変換することができます。
LoRAを組み合わせるとより強く効果が出せます。

2.線画に対して色を塗れる

線画をインプット画像に与えるとプロンプトに応じて着色ができます。
(以下のツイートはv1の説明ですがv3/v4も同様の効果があります。)

3.線画の一部を与えると余白部分をいい感じに生成してくれる

今回の記事で消しゴムで線画を消していた部分がこれに当たるよ。
消すだけじゃなくて当然加筆して調整することもできるよ。

4.塗りつぶした箇所を加筆・修正できる

今回の記事でジャケット部分の修正をしていた部分がこれに当たるよ。
線画だけじゃなくてイラストにも効果があります。

5.塗りつぶしで構図を作ると構図指定で画像を生成できる

雑な線画の下書きで画像生成できるScribbleと似た効果も持っているよ。
元画像ベースではなく、1から作る時に重宝するね。

6.低画質画像の補正

ノイズやぼかしの入った画像を与えた時にそれを除去する効果もあるよ。

7.【応用】線画ラフから背景を作成する

AIずきんの野火城さん(@nobisiro_2023)が検証されたものを引用させていただきます。塗りつぶしではなくScribbleと同じ使い方をしても効果を発揮。
(野火城さんもまとめ記事書かれるそうなので後日リンク張ります)

8.【応用】白黒漫画の着色

こちらも野火城さん(@nobisiro_2023)の検証内容の引用となります。
恐ろしいのは1枚のイラストじゃなくてコマ割りされてるものが
ちゃんと処理できているところ・・・。
(野火城さんもまとめ記事書かれるそうなので後日リンク張ります)
↑大事なことなので

9.【応用】入力画像の複雑なポーズを維持できる

EasySdxlWebUiを公開されているZuntanさん(@Zuntan03)の検証の引用となります。今回の私の記事のポーズはanytestなしでも再現できますが、
この例の通り自然言語で説明できない難しいポーズも出来ちゃうようです。

10.【実験】後付けでモノを持たせる

ここからは私(@dodo_ria)の検証内容の引用となります。

だって名前とアカウント名が

4の塗りつぶし箇所の加筆を使って後から盾だったりモン〇ターボールだったりを持たせてみた例。

11.【実験】後から服を着せ替える

3の線画の余白部分の生成を使って着せ替えをしてみた例。
腕部分の様に、服を着た時に身体のラインが変わらない部分は消さなくても対応してくれます。

逆に服装に関するプロンプトを無しにして、ip-adapterやreferenceで
別の衣装を指定した場合がこちら、雰囲気は出してくれるけど流石に厳密には真似てくれないことは分かりました。ip-adapter/referenceの限界・・・!

12.【実験】イラスト変換+服の着せ替え

1のスタイル変換を使ってポーズ作成ツールからイラスト変換し
その後、4の塗りつぶし箇所の修正を使って着せ替え。
ポーズの作成には少し手間取りましたが、塗りつぶし→変換はほぼ数分の話・・・。

13.【実験】Rodinで生成した複雑な衣装の3Dモデルを変換

こちらは失敗例、静止画から3Dを作れるRodinに複雑な衣装を食わせた結果をanytestで復元できないかを検証したものですが、流石に3D化の時点で荒くなりすぎているため無理でした。

ポリゴン数を多くできる有料版を使うとか、出来たモデルを手元のBlenderで高画質でレンダリングするとかすれば改善するかも・・・?

ダウンロード元とファイルについて

月須和さんのHuggingFaceからダウンロードできます。

anytest_v3のファイル一覧

ファイル名に「_am_」と入ってる方は「AnimagineXL」向け
おなじく「_pn_」と入ってる方は「PonyDiffusion」向け
となっているよ。
「dim」については後述しているからそちらを参照にしてね

まずは次の2つのベース使ってみて、他は後からでもいいと思います。
anytest_v3:CN-anytest_v3-50000_fp16.safetensors
anytest_v4:CN-anytest_v4-marged.safetensors

【検証】anytest_v3とv4の効果の違いについて

下記の引用ツイートのとおり、v3は入力画像に対して忠実。
v4はv3に比べるとプロンプトやLoRAに対して忠実。というのが
ざっくりした違いです。

またv4だからv3よりすごいぞー!かっこいいぞー!って訳ではないので
用途に応じて使い分けるようなことが大事。

記事で使った画像でControlNetのモデルと設定だけを変えた時
どんな感じになったかを参考に掲載しておくね。

anytest_v3 は CN-anytest_v3-50000_fp16
anytest_v4 は CN-anytest_v4-marged
をそれぞれ適用してるよ

EasyPose画像の変換:v3はモデルに寄る
線画からの変換:服のラインがあると引っ張られるのがわかる
消しゴムした線画からの変換:シャンク〇!指が!
塗りつぶし後の修正:ここはv3もv4も好みのレベルになってくる

【検証】dim毎の効果の違いについて

dimは値が大きいほどプロンプトの影響が大きくなるような動きをします。
同じ入力画像に対してdimを変えた時にどうなるかを見てみるね。

v3もv4も理屈は同じなのでv4のdim64~256の3種類での変化を確認するよ。
dim64:CN-anytest_v4-marged_am_dim64
dim128:CN-anytest_v4-marged_am_dim128
dim256:CN-anytest_v4-marged_am_dim256

EasyPoseの変換
線画からの変換
消しゴム後の線画からの変換
塗りつぶし画像からの変換

dimの大きさはv3/v4の違いみたいに線画の忠実度にはそこまで影響しないみたいで、消しゴム後の補正の様に何もない部分をプロンプトで埋める部分に作用しているように感じます。dim256だと「腰に手を当てる」ってプロンプトが反映されてますよね。

この先はキミの目で確かめてくれ!・・・ダメ?

【検証】WeightとEndingStepについて

ControlNetはどの程度強く適用するかのWeight指定と、
何ステップまでControlNetを適用するかのStep指定ができます。

StableDiffusionの画像生成においては割と最初の方のステップで構図やポーズは固まってくるので、anytestの構図のについても実際はEndingStep=0.3とかでも十分反映されます。一方でWeightを弱めると構図を決める最初の部分もあまり適用されなくなるので画像の引用力が下がります。

EasyPoseの画像を入力にしてanytest_v4を適用した時に、
それぞれの値を変更してみた表を作ったので参考にどうぞ。

Ending Control Step変えてもほとんど変わらないです
ちなみにControl weight = 0.0

以上。長すぎる付録(本編)でした。

この記事が気に入ったらサポートをしてみませんか?