← Back to スタジオ真榊

Pixiv Fanbox

LLM生成で生きる「Openpose」 #2025年のControlnet

Published 04/12/2025, 11:36:24 AM · Edited 04/13/2025, 09:57:27 PM

LLM生成で生きる「Openpose」 #2025年のControlnet

こんばんは、スタジオ真榊です。今日は前回紹介したChatGPT4oやGeminiといったLLM系画像生成の超進化を受けて、副次的にControlnetの「Openpose」が非常に使いやすくなったことについて特集したいと思います。


Openposeは、棒人間のようなカラフルな「ボーン」(下図)をお手本画像から取り出して、人物の輪郭にとらわれず姿勢だけを制御できるControlnetです。プリプロセッサを使ってこのように四肢や顔の位置を抜きだすことで――


このように、おおむね同じ姿勢の画像を生成できます。AnytestやLineartのように線画を継承するCNだと、髪型や体形、服装まで引き継がれてしまいますが、Openposeは姿勢情報だけを継承できるのがポイント。プロンプトによって描かれる内容を大きく変更することができます。


ただ、思ったような姿勢のボーンを作るにはそれなりに手間が掛かりますし、たいていのコントロールは月須和・那々さんのAnytest v3&v4(※輪郭・線画は保持しつつ塗りをプロンプトで変化させられるCN)を応用することでなんとかなってしまうこともあり、個人的にOpenposeを使う場面は激減していました。ところが今回、ChatGPT4oなどLLMでの画像生成がかなり思い通りにできるようになったことにより、テキスト指示では難しいポーズや構図をOpenposeで出せることに気づきましたので、どれくらいのことができるかいろいろと検証してみました。


※Controlnetの基本的な使い方や種類などについてはこちらの記事にまとめてありますので、初めて触る方は併せてご参照ください。


目次

1.Openposeの基本

  ・Openposeはライセンスにご注意

  ・「Openpose editor」でポーズ編集

2.2025年現在の人気Openposeモデル

3.なぜLLMでOpenposeが復権するのか

  ・「ポーズ」ではなく「構図」を作る

4.LLMにポーズ写真を作ってもらう

  ・ポーズ写真からボーンを抜き出す

5.キャンバス全体の構図をコントロール

  ・「ムリヤリ黄金比」を試してみる

6.複数人がからむポーズをコントロール

7.終わりに



1.Openposeの基本

おさらいになりますが、Openposeはプリプロセッサに読み込ませた画像から、表情やポーズ、手の位置や形といった位置情報だけをボーンとして抽出し、同じポーズをした全く別の画像を生成できるControlnetです。このように、Controlnet画面でボーンを抜き出したい画像を読み込ませた後、プリプロセッサを選び、「💥」ボタンを押すことでボーン抽出することができます。


プリプロセッサは「openpose」とついたものを選べばOKです(上段に並んでいるメニューから"Openpose"を選択すると自動抽出されます)。handやfaceとあるのは、手や顔だけのボーンを抜くもので、fullが全身用。この中ではdw_openpose_fullが一番高性能かなと思います。


・Openposeはライセンスにご注意

従来のOpenpose技術のソースコードはカーネギーメロン大(CMU)のGitHubリポジトリで公開されており、非商用利用は無料ですが、商用利用には年間$25,000のライセンス契約が必要と明記されています。これをベースにしたツールやモデルを使って画像生成を行った場合、その成果物が商用利用(販売・広告収益・マネタイズ投稿など)に該当すると、法的にグレーまたはNGになる可能性が指摘されてきました。

年間$25,000のライセンス料というのは、例えばスポーツの分析に使うとか、映画制作に使うようなレベルの商用用途を想定していると思いますが、AIイラストユーザーも対象にならないとは誰にも言えません。


その点、プリプロセッサ「DW openpose full」に使われているDWpose技術はApache 2.0ライセンスなので、そうした心配をせず活用することができます。


少し古い記事ですが、DW openposeについてはこちらの特集で紹介しています。


ただ、便利な「DW」であっても、イラストからはなかなか正確にボーンを抜き出せないことが多いです。こちらの例のように、下半身がどこにあるのか見失ったり、パースの利いた手が奇形化してしまったりして、そのまま使えないことが多発します。もちろんうまくいくこともそれなりにありますが、「イラストより写真向け」の技術であることは押さえておきましょう。


・「Openpose editor」でポーズ編集

抽出したボーンはそのままトレースするだけでなく、拡張機能によってあとから自由に調整することができます。プリプロセッサでボーンを抽出したら、画面右側の「Edit」(※緑色のPマークがついていない方)をクリックすると、このようにSDwebUI openpose editorが起動します。reForge等にはデフォルトでインストールされているはずですが、該当部分にボタンがない場合は個別にインストールしておきましょう。

上の図のように、画像から自動的に四肢や顔の位置が抜き出され、画面右側にボーンとして表示されています。各ドット(点)を左クリックしてドラッグすれば位置を動かせますし、何もないところでドラッグすると複数のドットを範囲選択もできるので、地道な作業にはなりますが、好みのポーズを自分で作ることが可能です。SPACEかFキーを押しながらドラッグするとキャンバス移動、マウスホイールでズームイン/アウトができます。


キャンバス上に2人目以降の人物が検出された場合、左下にPerson1、2、3…と並びます。不要な場合や誤検出の場合は目のボタンを押して人物ごと非表示にしましょう。上の例では、背景のモンスターの部位が一部検出されてしまっています。このままにしておくと生成結果に悪影響があるので、点の上で右クリックして消しましょう。


「人物を追加」をクリックすると、このように雑な感じで棒人間が出てくるので、適宜ドラッグ操作して人物を増やすこともできます。ボーン配置が完成したら、左上の「Controlnetにポーズを送信」で、さきほどの検出結果に上書きされます。


2.2025年現在の人気Openposeモデル

次は、プリプロセッサで読み込んだボーンを読み込ませるOpenposeモデルについて。これまでさまざまなものが出ていますが、現在流行しているIllustriousXL用なら、Noobai向けのopenposeモデル「noob_openpose」が比較的強いかなと思います。こちらでDLでき、model/controlnetフォルダに保存することで使用できるようになります。DL時はファイル名がopenpose_preとなりますので、わかりやすいよう「noob_openpose」などとリネームして保存しておくとよいでしょう。


こちらもIllustrious向けOpenposeモデル。こちらもDL時「IllustriousXL_openpose」とリネームしておかないと、パッと見で分かりにくいです。


もちろん、ponyやAnimagineといった非Illustrious系のSDXLモデルで使えるモデルもいろいろと揃っています。代表的なものはこのあたり。


・thibaud / Openpose

・xinxir / Openpose

それぞれ、files and versionsから該当モデルをmodels/controlnetにDLすればOKです。(数ギガあるのですぐわかるはず)


3.なぜLLMでOpenposeが復権するのか

さて、なぜLLM系画像生成の隆盛がOpenposeの復権と結びつくのかと言いますと、「写真調のAI画像を思い通りの構図でラクに生成できるようになったから」です。


これまで、Openposeで使うボーンを用意するには、自分で撮影した写真やフリー素材、posemaniacsなどから抽出するか、手元のAI絵から抜き出すのが一般的でした。二次元イラストだと複雑なポーズになるほどプリプロセッサがうまく働かず、 このように何も検出されないこともあったからです。棒立ちのボーンをせこせこドラッグして作ることもできなくはないのですが、非常に面倒でした。


各プリプロセッサは基本的に写実的な画像で学習されているため、イラストよりも写真調の画像のほうが上手にボーンを抜き出せます。そこで、「ボーンを抜き出す専用のAI写真をLLMに頼んで作ってもらえばいいじゃないか」というのが今回の特集のポイント。人物のポーズを指定するだけでなく、その人物がキャンバス上のどの位置にいるかもコントロールしやすいので、構図をよりイメージ通りに構築することが可能になっています。


例えばこのような三面図画像をLLMに出してもらってボーンを抜けば、このように同じポーズのミナちゃんを生成することができました。(四肢の長さや体型も同じになる点に注意)


・「ポーズ」ではなく「構図」を作る

先日投稿したこちらのファンアートも、LLMを活用してOpenposeで作ったもの。左手の指輪に視線を送り、右手で口元を押さえる様子を真横からとらえた構図は、LLMとの会話の中で固めていきました。

視線誘導的には、右上の目から一直線に左下の指輪へ向かう対角線をメインに、3分割構図(横方向と縦方向にキャンバスを三分割したとき、交点に目や指輪がくる)を意図しています。あまり正確ではありませんが、窓枠・指輪・目の位置がそれぞれおおむねキャンバスを三分割した位置にあり、対角線上に重要なモチーフが配置されているので、気持ち良い構図になる(といいな…)という発想ですね。粗密でいうと、左上や右下が寂しくなるので、右下に桜の花びらやマークを入れて視線が回るように誘導しています。

スレッタの瞳から指輪へ、その先のミオリネさんを想像させたあと、粗な左上でなく次に密な右下に巡り、中段右の光と花びらに行って、再び対角線に戻ってくる意図です。素人ですので、実際にできているかはわかりませんが…


LLMに頭の中のイメージを伝え、いろいろと相談しながら構図を提案してもらうと、このように気持ちのよい位置にメイン要素が配置されるボーンを作ることができることが実感できました。クリスタの場合、このアセットで上下三分割のグリッドを一発表示できるので、生成画像を少し拡大・ドラッグして視線が来てほしい要素がそのラインに乗るように調整してあげるだけでも見栄えがよくなると思います。

ちなみに、アセットを使って正確に引いた3分割ラインはここ。このように位置がずれていますので、本当は赤のラインではなく緑のラインに瞳や指輪、窓枠が来るように調整するとより気持ちのよい感じになるはずです(完全にぴったりだとそれはそれで気持ち悪そうですが)



4.LLMにポーズ写真を作ってもらう

さて、話を本題に戻します。LLMにポーズ写真を頼むのに特別なやり方があるわけではなく、下図のように日本語で自由に指示をすればOKです。このときはイメージをつかみたかったので「赤いロングヘアの~」と容姿を指示していますが、もちろんボーンを抜き出すときに容姿は関係ありません。(ただ、男女で身長や四肢の長さ、しぐさ等は異なりますから、性別は最終的に生成したいイラストと揃えておいたほうが無難です)


このケースだと、指輪(手の甲側)ではなく掌を見てしまっていますし、奥の人物との対比がうまくいっていません。そこで、このように細かく会話をしながら、理想の構図を作っていきます。

(※画像生成AIの学習データセットは基本的に構図が「正解」になっているものが多数を占めるので、何も指示しなくても、このように生成画像自体も三分割構図や一点透視などの結果が勝手に出てくることが多いです)


・ポーズ写真からボーンを抜き出す

そうしたら、このようにDW openposeプリプロセッサでボーンを抜き出して、あとはプロンプトを組んで画像生成するだけです。下図の例では、奥側の人物がイメージと違ったので、一人のイラストにすることにし、「Edit」から消しています。


Openposeの弱点として、生成モデルにやや無理な要求をして姿勢を制御するため、品質が下がりがちということがあります。Openposeの影響で画質が下がるようなら、Ending control stepを0.5~0.8程度に下げてみたり、Control weightを0.8前後にしてみたり、「Control Mode」を「Balanced(バランス)」から「Prefer Prompt(プロンプト重視)」に変更すると改善するかもしれません。逆に、ポーズをできるだけ正確に真似てほしい場合は「Prefer ControlNet(コントロールネット重視)」にしましょう。(※reForge以外だと"controlnet is more important"などの表記です)



5.キャンバス全体の構図をコントロール

Openposeの真価は、単にポーズを思い通りにできるだけでなく、画面上の配置も思い通りにできること。こちらのように、フィギュアスケートのポーズを再現してみます。


モチーフを中央にドンと置くのを「日の丸構図」と言うそうですが、あまり面白味がないので、キャンバスを横長にしてもらいます。ついでに「黄金比で」と注文しましたが、あまり思ったようにいきませんでした。


構図に於ける黄金比というと、こういう螺旋(フィボナッチ曲線)のことだと私のようなマンガオタクは思ってしまうのですが、いろいろと関連書籍で勉強していると、さほど難しく考えなくてもよいようです。「1:1:1」の三分割構図を基本としたら、「1:2になる位置に重要なモチーフが来るようにしてもいいけど、1:1.618(黄金比)の位置もけっこう気持ちいいよね」程度に考えておくくらいでいいのかもしれません。

モナリザは構図だけでなく、例えば顔面などの比率も横1:縦1.618になっているそうですが、ミクもマリオもなんでもかんでも1:1.618にすればいいというものではないはずです。モチーフと噛み合わなければ無理に黄金比にしようとしてもおかしくなってしまいますので、先におおまかなモチーフと構図を決めてしまってから、黄金比を活かせる部分があるか考えていくの程度で良いのかなと思います。(素人考えですが)


・「ムリヤリ黄金比」を試してみる

せっかくですので、さきほどのAIフィギュア写真を使って、「無理矢理黄金比を採用したイラスト」を作るとどうなるか試しました。クリスタなどの画像編集ソフトで、横縦比率が黄金比(1:1.618)となるようキャンバスを開き、このようにフィボナッチ曲線を重ねてみて、さきほどの画像を黄金比になるような場所に配置するだけです。


クリスタではこのような無料アセットもあるので、ご興味のある方はどうぞ。


できたら、フィボナッチ曲線のレイヤーは非表示にし、「画像を統合」。あとはControlnet画面にそのままコピペしてしまいます。DW openposeでボーン抽出すると、このようになりますね。


背後に伸ばした足先が遠近法のせいでやや足りない印象があったので、「Edit」からこのように足先のドットを伸ばし、「Controlnetにポーズを送信」しました。※後から考えるとしないほうがよかった


生成するとこのような感じになります。余計なことをしたせいで脚がむしろ伸びすぎてしまいました…。ボーンを戻して生成し直すか、ゆがみツールなどで調整します。

使用したプロンプトは以下の通り。

PP: 1girl, solo,sidelocks,(red-framed eyewear,semi-rimless eyewear:1.2),skating rink,figure skating dress ,on ice,elbow gloves,blue eyes,white pupils,wind,figure skating,outstretched arms,grin,standing on one leg, dynamic pose,miniskirt, hair between eyes,ponytail,shiny skin,black hair,white bow,medium hair,,,masterpiece,best quality,amazing quality, white pupils


歪みツールで伸ばした脚を調整するとこのような感じ。さきほどのフィボナッチ曲線にしっかりおさまりました。


このままだと余白が気になるので、さらにこのようにエフェクトを入れてみると面白いですね。フィボナッチ曲線に沿うことで気持ちのよいおさまりになります。


エフェクトはこちらのクリスタ用アセットを使いました。こうしたブラシをいろいろ持っていると、ちょっとした味付けが簡単にできて楽しいです。そのままではイラストとなじまないこともあるので、合成モードを変えたり(発光系やオーバーレイ、スクリーン、ハードライトなどが使いやすい)、不透明度をいじったり、余白をロックして上からグラデーションを掛けたりするとそれらしくなります。



はなはだ簡単ですが、完成です。足や腰など本当はもっとインペイントするなどして自然に作り込まないといけないのですが、まあ実験ということでご容赦ください。




ちなみに、こちらがよくある日の丸構図ですが、見比べるといかがでしょうか。この構図には作り手の意図が特に感じられないので、見た人もこの絵の何を楽しめばいいのかよくわからない感じになっていますね。こういうとき、構図やポーズによってイラストに動きや仕掛けを作ってあげるのに、Openposeはもってこいだと思います。


このように、わざわざOpenposeを使わなくてはならない場面というのは、基本的に通常のプロンプト指定では思ったような構図が出てきてくれないとき」です。もっと言えば、「絶対このポーズ・構図でないといけない理由があるとき」ということになるでしょうか。


画像生成でたまたま出てきた構図を引き継ぎたい場合なら、通常のimg2imgやanytestで写しとった方がうまくいくので、なんでもかんでもOpenposeが最適というわけではありませんし、LLMでポーズ写真を出すにもそれなりの手間が掛かるわけですから、毎回やるわけにはいきません。例えばAI漫画を作るときなどは、上手下手(かみてしもて)の概念やフキダシ・コマの都合などがあるため、キャラクターの配置や向きを作り込むのにOpenposeが役に立つかなと思います。


また、いわゆる「1girl」生成ではなく、複数人が絡む複雑な構図を完全にコントロールしたい場合も真価を発揮するはず。次の章で試してみましょう。


6.複数人がからむポーズをコントロール

複数人を描くイラストの場合、大きく分けて二つのやり方があります。1人ずつ生成するか、複数同時に生成するかです。


白背景でひとりずつ生成し、クリスタなどで合成するやり方は簡単ですが、身長や画角、視線が合わなかったりするので、NovelAIのv4インペイントで調整するか、加筆をする必要があります。キャラクターの容姿が混じったりすることがないのがメリットですが、ハグやキスなど、体が重なるポーズの場合はこの「ひとりずつ生成」は使えません。一方「2girls,hug...」式でいっぺんに生成しようとすると、それぞれの容姿や指示が混じってしまい、なかなかうまくいきません。


複雑なポーズを出したいときは、今回の「LLM&Openpose」の手法が役立ちます。残念ながら、ChatGPTやgeminiではR-18の画像生成が拒否されますので、性的な交わりの描写に使えるのはまだ先のようですが…とりあえず実例を見ていきましょう。


このように、3回の往来でポーズを作ることができました。ひじをもっと伸ばしてくれないと石破ラブラブ天驚拳にはならないわけですが(知らない人はググってください)、そこはopenpose editorでドットを動かせば済むので、そこまでLLMで厳格に作り込む必要はありません。


このように抽出でき…


肘部分もこのようにずらすことができました。表情が笑顔でイメージと違ったら、「Face」の目の形のボタンで非表示にもできます。


左の女性の奥側の手のボーンを拾い損ねているので、それも足しておきましょう。「Person1」のメニューを開くと「left elbow」がオフになっているので、オンにします。すると下図のように足りなかったドットとラインが補われるので、あとは正しい位置にドラッグすればおしまいです。簡単ですね。


上のボーンで生成すると、このような結果になります。

プロンプトはこちら。

PP:2girls,hand together,determined, shout,v-shaped eyebrows, looking at viewer, symmetrical docking, foreshortening, fire_background,aura,sparking,open mouth wide,hand_grab,interlocked fingers,holding hands


おおむね良い感じですね。特に、出したかった身長差がしっかり出ています。 symmetrical dockingの影響でなにやら胸がえっちな感じになりましたが…


手前の手がおかしいのは、複雑に指がからむOpenpose指示を守ろうとしてむしろ崩壊しているものと思われるので、Controlnetの適用強度やControlnet ending stepsを少し下げるか、NovelAIv4インペイントなどで直してしまうのが早いと思います。恋人つなぎはいまだに生成が難しい構造物の一つですね。


または、このように絡み合う手自体をEditで消してしまい、「hand_grab,interlocked fingers,holding hands,foreshortening」あたりの単語によってうまくいくことを祈る…といった方法もありです。Openposeによる手のコントロールは、体全体の姿勢コントロールに比べてまだそこまでの精度ではないので、ここは今後の技術アップデートを待ちたいところですね。



7.終わりに

というわけで、LLMのおかげでかなりOpenposeでできることが広がってきたように思います。先日作ったこちらのイラストも、一端無人の部屋をLLMで生成し、普段使いのモデルの画風にimage2imageしてから、Openposeでキャラクター位置と演技を決めて、インペイントするやり方で作りました。

細かいですが、部屋の右奥にさりげに配置している学生時代の集合写真も、Openposeを使って作っています。先に集合写真をLLMで出し、そのボーンを引き継ぐ形ですね。このやり方だと、この一枚だけで終わりではなく、同じ背景の中でキャラクターがさまざまな位置に立ち、さまざまな演技・表情をしている姿を連作として作れるはずです。


Openposeだけで細部まで作り込もうとするとなかなか大変ですが、工夫次第でまだまだ多様な使い道があろうかと思います。私のような素人は、むしろ構図をAI任せにしたほうがカッコイイイラストになるのですが(笑)、きちんとした構図の知識や表現したいビジョンがある人ほどこの技術は使いこなせるはずです。LLM画像生成の進化によって、depthなどOpenpose以外のCNモデルも脚光を浴びるかもしれませんね。


それでは今回はこのへんで。スタジオ真榊でした。



おまけ

スティールボールランアニメ化!メインビジュアルが黄金の回転デザインだと指摘されてて、おおっとなりました。


Attachments (34)

YQhsL50LR6xIlNoBbKaJTFc1.png

YQhsL50LR6xIlNoBbKaJTFc1.png

ko8PVr98VAam5eOinfoGuHh4.png

ko8PVr98VAam5eOinfoGuHh4.png

DQrqO3KdBTXAWfE7VHqL37eE.png

DQrqO3KdBTXAWfE7VHqL37eE.png

WBjKNKbkzMClCi2vMHgxO8yI.png

WBjKNKbkzMClCi2vMHgxO8yI.png

Kllnu3vMlUbsZ6e0AHORZgxp.png

Kllnu3vMlUbsZ6e0AHORZgxp.png

wT48UGKrcCJE8V9SgVQcNDB5.png

wT48UGKrcCJE8V9SgVQcNDB5.png

88MayxQUz7tQBaKnsn95SgXI.png

88MayxQUz7tQBaKnsn95SgXI.png

rpQ19867Of5FE2y4eR8By8Bi.png

rpQ19867Of5FE2y4eR8By8Bi.png

7Ox8KfiG6d6HLK0H1NGLE4F2.png

7Ox8KfiG6d6HLK0H1NGLE4F2.png

FtFncSVitv3ZB9cPURROCWCL.png

FtFncSVitv3ZB9cPURROCWCL.png

KgRc6xxdViLfLGOK0QSnJoL4.png

KgRc6xxdViLfLGOK0QSnJoL4.png

8VclwLksyuakpyxO0SnLjhu5.png

8VclwLksyuakpyxO0SnLjhu5.png

urwbZfg9BTqR401196QfPGdN.png

urwbZfg9BTqR401196QfPGdN.png

y04Qjulz0djjGY6qO8nK6Mw2.png

y04Qjulz0djjGY6qO8nK6Mw2.png

BrHlyQNShC5QuqlndtJ2RRpc.png

BrHlyQNShC5QuqlndtJ2RRpc.png

pYNUSRT7PLKR7IAQVCSLPuWd.png

pYNUSRT7PLKR7IAQVCSLPuWd.png

3H95i8TGULDOTJfS5hGs2kBX.png

3H95i8TGULDOTJfS5hGs2kBX.png

ihuxP6piXjSrlnSixOAG7QyX.png

ihuxP6piXjSrlnSixOAG7QyX.png

iNy6dGk43WUifjbX8mDYdGgh.png

iNy6dGk43WUifjbX8mDYdGgh.png

Q9qtbJEkTa0eoXYYfOUq4Cwu.png

Q9qtbJEkTa0eoXYYfOUq4Cwu.png

IsGJuiZJF2I0MzgJFbQ4y4LX.png

IsGJuiZJF2I0MzgJFbQ4y4LX.png

mwFpa8YbsdLw7lMLuCJz3gjg.png

mwFpa8YbsdLw7lMLuCJz3gjg.png

YhKqBp0nHmMQDZkBv6NpCBm7.png

YhKqBp0nHmMQDZkBv6NpCBm7.png

vyOpEQwnCWQCGsD9u60Dq5eB.png

vyOpEQwnCWQCGsD9u60Dq5eB.png

tcoyiF90HZCK0DhzsAseXWoy.png

tcoyiF90HZCK0DhzsAseXWoy.png

xdaRb2gAZ0JRHN5j0jOiUZxS.png

xdaRb2gAZ0JRHN5j0jOiUZxS.png

5tbnKFUVwFKxpd9VMO74OJ6t.png

5tbnKFUVwFKxpd9VMO74OJ6t.png

RdhT7iBQPSuZ9SjIKc7bBY1l.png

RdhT7iBQPSuZ9SjIKc7bBY1l.png

g9xFQIOJ9yigb7T9HRSYGUyw.png

g9xFQIOJ9yigb7T9HRSYGUyw.png

nKcmqyu1q74Y0OUCaREYdAZT.png

nKcmqyu1q74Y0OUCaREYdAZT.png

6I3urDIIr5p9zf3E8Sh9YOQD.png

6I3urDIIr5p9zf3E8Sh9YOQD.png

EAUPL31ANxW3liYT3qxX7pmM.png

EAUPL31ANxW3liYT3qxX7pmM.png

s2dUlTgzNZTPafw4vqScrCOj.png

s2dUlTgzNZTPafw4vqScrCOj.png

XM5nwLOV2dDlAdgYFYhbz6BF.png

XM5nwLOV2dDlAdgYFYhbz6BF.png