同じ顔を量産できるControlNet「Reference only」の使い方。LoRA無しで同じ顔を生成できる。

ControlNet

Stable Diffusionのみで、同じ顔を出力するのは非常に難しく、出したい顔の画像で追加学習したモデルを作成(LoRA:Low-Rank Adaptation)し、それを利用する方法が主流でした。しかし、追加学習する手間やLoRaファイルの管理が必要でした。

ControlNetの「Reference only」を利用するとLoRA無しで同じ顔を出力することができます。今回は、そんなControlNet「Reference only」を使っていきたいと思います。

前回利用したControlNetの機能は、OpenPoseでした。「ControlNetとは何か?」、「ControlNetの他の機能も知りたい」という方は、参考にしてみてください。

ControlNet「Reference Only」とは

Reference Onlyとは、指定した画像の顔や、風景を元の画像に反映します!

指定した顔を維持して画像が生成できるのね

今まで同じ顔を出すのは、すごく難しかったんです

ControlNet「Reference Only」の使い方・流れ

着物を着た女性(左画像)をReferenceOnlyで指定し、顔を固定してプロンプトを変更し、顔を固定したまま服装を変えることができるか見ていきます。(右画像:出力結果)

元画像は、以前img2imgのInpaint機能を使って生成した画像を使います。作り方を知りたい方はこちらの記事になります。

元画像の読み込み

Stable Diffusionで過去に作成した画像であれば、生成に使用したプロンプトや設定パラメータは画像内部にメタタグとして残っているので、PNG Infoを使って読み込むことができます。「Send to img2img」で画像とプロンプトをimg2imgのパネルに転送します。

外部から取得した画像などを使用する場合は、その画像を生成するためのプロンプトを入力するか、Tagger機能でキーワードを抽出してください。Taggerについては後日取り上げたいと思います。

Reference Onlyパラメータの設定

画面の確認

いよいよ、ControlNet「Reference Only」の設定画面でパラメータを設定していきます。

ControlNetのパネルは、以下のような画面となっていると思います。

Control Typeに「Reference」というラジオボタンが存在しない場合は、ControlNetが古い可能性があるのでバージョンアップが必要になります。

パラメータの設定

以下のように設定していきます。ControlNetの各機能を使う宣言として、Enableにチェックを入れ、ControlTyepeで、どの種類の機能を使うのかを選択し、利用するプリプロセッサを選びます。文章で書くと難しそうですが、「使うと宣言して、使うものを選ぶ」のは直観的に必要と分かるので数回使えばマニュアルは不要になります。

  • Enable:ON
  • Pixcel Perfect:ON
  • Preprocessor:reference_only

指定する画像の選択

顔を固定する画像を指定したいのですが、画像を選択する場所が見当たりません。

「Upload independent control image」というチェックボックスがあるので、こちらを選択してください。画像選択のパネルが表示されますので、画像をドラッグ&ドロップか、領域をクリックするとファイル選択ボックスが表示されるので、ファイルを選択します。

プロンプト(prompt:呪文)の変更

元々のプロンプトはこちらになります。

best quality, ultra high res, (photorealistic:1.4), RAW photo, (upper waist:1.4), (bokeh:1.7),(Window light only:1.6), (in bright japanese-style room:1.5),(bright:1.5)
1japanese girl, (solo), (smile:1.2,open mouth:0.7), (dark brown eyes), natural skin, (brown updo hair,bangs),standing,
(blue silk floral kimono),(obi)

長々と書いていますがまとめると、「品質系、1人、立っている、着物・帯」です。

それでは、プロンプトの服装の部分着物・帯」を他のキーワードに変更してみます。

まずは、最初に例をあげたチアリーディングの服装の場合は、プロンプトを以下のように変更します。強調のため、(カッコ)で括って、重み(強調)「:1.3」を指定します。フォーマットは、「(キーワード:重み)」です(Stable Diffusion web UIの場合)。

best quality, ultra high res, (photorealistic:1.4), RAW photo, (upper waist:1.4), (bokeh:1.7),(Window light only:1.6), (in bright japanese-style room:1.5),(bright:1.5)
1japanese girl, (solo), (smile:1.2,open mouth:0.7), (dark brown eyes), natural skin, (brown updo hair,bangs),standing,
(cheerleader:1.3)

チアリーダー

cheer leader

飛行機の客室乗務員(CA)

flight attendant uniformstewardess uniform

メイド

maid costume

カフェ店員

Kyudo wear

左の画像は、背景もカフェに変わりました。右の画像は、青い着物と質感に引っ張られている印象でしたので、プロンプトに(white polo shir:1.2)を追加して右の画像を出力させました。

警察官

police uniform

宇宙飛行士

astronaut suit

壮大な宇宙にしては、背景が地味です。旧式の宇宙服のようです。

ウェディングドレス

wedding dress

陸上競技ユニフォーム

track and field uniform

背景が陸上競技場になるのが面白いです。

弓道

Kyudo wear

持っているものが微妙ですが。。。

まとめ

今回は、ControlNet「Reference Only」を使い、固定する顔の画像を指定して、元のプロンプトのキーワードを変更させることで服装を変えてみました。「まったく同じ顔か?」と言われると微妙なものもありますが、顔の特徴を捉えていると言っても良いかと思いました。理由は、今回生成した画像は何度も失敗を繰り返し没作品を排除して残ったものを掲載したのではなく、生成した一発目の画像になります。調整なしでここまで顔を寄せることができているため、かなりの精度ではないでしょうか?

LoRAで追加学習をしてモデルを生成してから、ようやく画像生成に取り掛かれる従来の手間を考えると、画像を1枚選択するだけの手軽さは素晴らしいです。

今後も、Reference Onlyは多用する機能だと思いますので、その際に作りこんだ画像で違いをご覧いただこうと思います。皆さんも是非使ってみてください。

コメント

タイトルとURLをコピーしました