
同じ顔でポーズだけ変えたい…
どうやって出来るの?
画像生成していて同じ顔のまま別のポーズに変えたい時ってありますよね。
そういった時にControlNet内にあるReference Onlyの機能を使うことで可能になります。
この記事では、ポーズだけ変える方法について解説します。
Reference Onlyで同じ顔にする

Reference Onlyを使用する場合は、ControlNetを導入する必要があります。
簡単にControlNetを導入する方法について、こちらの記事で解説しているので分からない方は読んでみてください。
ControlNetタブの右側にある逆三角形の部分をクリックして開いてください。
「Single Image」内をクリックしてから同じ顔にしたい画像をアップロードしてください。

「Enable」にチェックを入れてControlNetを有効にしてください。

Preprocessor項目内をクリックして「reference_only」を選択してください。

選択したら以下の画像のように、Preprocessor項目のみに切り替わります。

設定が完了したら「Generate」ボタンを押して画像生成してください。
以下の画像のように、「reference only」を使用することで同じ顔を維持したまま別のポーズで画像を生成することが出来ます。

「Control Weight」項目では数値を変更することで違った画像生成をすることが出来ます。

以下ではControl Weightの数値を「0」と「1」で生成した結果になります。
「2」の数値では「1」の数値と変わらない画像生成結果になっていたので省いています。
「0」の数値では、元画像よりも後ろ髪の長さが変わっていて少し違っていたので
「1」の数値にした方がいいと思います。

呪文でポーズを変える方法

Reference Onlyを使用してポーズだけを変えることが出来る1つ目に呪文を加える方法があります。
例えば、プロンプト内に「chair , sitting , smile , open-mouth」の呪文を追加して、椅子に座って笑顔になっているポーズを指定します。

以下は画像生成した結果になります。
元画像と同じ顔を維持しつつ違うポーズにさせることが出来ました。
このようにReference Onlyを使ってポーズに関する呪文を追加することで
同じ顔を維持したまま画像生成することが出来るので参考にしてみてください。

Openpose Editorでポーズだけを変える方法

ポーズだけを変える2つ目の方法に拡張機能である「Openpose Editor」を使用したやり方があります。
Openpose Editorを使用することで、イメージしているポーズを作成して画像生成することが出来ます。
Openpose Editorを導入する方法は、右上にある「Extensions」をクリックしてから「Install from URL」をクリックしてください。

URL for extension’s repository内に「https://github.com/fkunn1326/openpose-editor.git」のURLをコピペしてから「Install」ボタンを押してください。

「Installed」をクリックしてから「openpose-editor」がインストールされているか確認してください。

「Settings」をクリックしてから「Reload UI」ボタンを押してStable Diffusion Web UIを再起動してください。

再起動後に「OpenPose Editor」のタブが追加されているのでクリックしてください。

点の部分を移動させてポーズを作成してください。
作成したら「Send to txt2img」ボタンを押してください。

すると、txt2imgのControlNet内にある「ControlNet Unit 0」に自動で画像がアップロードされます。
「Enable」にチェックを入れてください。

Preprocessor項目内で「none」を選択してから、Model項目内で「openpose」を選択してください。

次にReference Onlyも設定します。
「ControlNet Unit 1」をクリックしてから同じ顔にさせる画像をアップロードしてください。
「Enabel」にチェックを入れて2つ目のControlNetを有効にします。

Preprocessor項目内で「reference_only」を選択してください。
これで設定は完了したので「Generate」ボタンを押して画像生成します。

以下は画像生成した結果になります。
1つ目にOpenpose、2つ目にreference only、右側はこれら2つを組み合わせて生成した結果になります。
上手く作成したポーズとreference onlyの顔と同じように生成することが出来ました。
このようにOpenPose Editorを使用して同じ顔でポーズを変えることも出来るので是非試してみてください。

Openposeでポーズを変える方法

ポーズだけを変える方法の3つ目として、OpenPoseを使用する方法があります。
「ControlNet Unit 0」をクリックしてから参照するポーズ画像をアップロードしてください。

例えば、アップロードした画像が横768縦1152なら同じように設定します。
WidthとHeightの項目で数値を合わせるか、またはHires.fixを使用している場合はHires.fixの数値場所を確認して同じ数値にしてください。

「Enable」にチェックを入れてください。

「Preprocessor」の項目では、アップロードした画像がプリプロセッサーでない画像の場合は「openpose_full」を選択してください。
写真やアニメなどの画像素材ならこの方法を選択します。

プリプロセッサー画像(棒人間)をアップロードしている場合は「none」を選択してください。

プリプロセッサー画像とは単純に何かと言いますと、例えば「openpose」機能なら画像生成した後に棒人間のような画像を指します。
このプリプロセッサーの画像を保存してControlNet内に画像をアップロードして使用する場合はPreprocessor項目内では「none」を選択するようにしてください。

以下の画像のようにLineartの機能なら線画のような画像が一緒に生成されるのですが、これもプリプロセッサー画像になります。
他には「Canny」「Depth」などがありますが、それぞれの機能によってプリプロセッサーの画像は変わります。

設定が完了したら「Model」項目内で「openpose」を選択してください。

次にreference onlyを設定しましょう。
「ControlNet Unit 1」をクリックしてから同じ顔にする画像をアップロードしてください。
「Enable」にチェックを入れて「ControlNet Unit 1」を有効にします。

Preprocessor項目内で、「reference_only」を選択して画像生成してください。

以下の画像は生成した結果になります。
元画像と同じ顔でOpenposeで指定したポーズに変えることが出来ました。
このようにOpenposeでもキャラの顔を固定してポーズだけ変えることが可能なので参考にして画像生成してみてください。

まとめ

ポーズだけ変える方法について解説しました。
ControlNetにあるReference Onlyを使用することで、同じ顔でポーズだけ変えることが出来ます。
・呪文を追加する
・OpenPose Editorを使用する
・Openposeを使用する
ぜひ記事を参考にしてポーズを変えてみてください。