Stable diffusion拡張機能のControlNetを使ってみました
写真やイラストからポーズなどの情報を取得してくれるStable diffusionの拡張機能「ControlNet」を使ってみましたのでログを残しておきます。
目次
導入
「ControlNet」の導入については下記の備忘ログを参照してください。
モデルをダウンロード
「ControlNet」を使うには、モデルを公式URLからダウンロードする必要があります。
今回使用する「control_sd15_canny.pth」、「control_sd15_depth.pth」、「control_sd15_openpose.pth」の3ファイルをダウンロード。
ダウンロードしたファイルは、「ControlNet」導入時に自動作成された下記フォルダに置いてください。
stable-diffusion-webui\extensions\sd-webui-controlnet\models
元画像を入手
今回使用する写真は、「ぱくたそ」さんのフリー素材を使用させて頂きました。
しかし、このまま使用すると生成される人物が右寄り&小さくなってしまいますので、ペイントソフトなどでトリミングして女性の位置を調整します。
では、各モデルで画像生成してみましょう。
各モデルで画像生成
写真の登録
GUIに「ControlNet」が追加されていますので、▼マークをクリックしてメニューを開きます。
メニューが開くと「ここに画像をドロップ ーまたはー ダウンロードしてアップロード」と表示されていますので、この部分にエクスプローラーからドロップするもよし、クリックしてアップロードするもよしです。
写真を登録するとこんな感じになります。
では、次に各モデルを使用してどんな画像が生成されるか見ていきましょう。
canny
このモデルは、元画像から線画を作成してくれます。
設定手順
①「ControlNet」を有効にするため「Enable」にチェック
②「Preprocessor」に「canny」を選択
③「Model」にダウンロードした「control_sd15_canny」を選択
④「Preview annotator result」をクリック
⑤ 線画が表示される
では、簡単なプロンプトを使って作画してみましょう。
Prompt
masterpiece, best quality, 1girl, street corner, hyperrealistic, 8k,
Negative prompt
easynegative, nsfw, bad anatomy, long_neck, long_body, longbody, deformed mutated disfigured, missing arms, extra_arms, mutated hands, extra_legs, bad hands, poorly_drawn_hands, malformed_hands, missing_limb, floating_limbs, disconnected_limbs, extra_fingers, bad fingers, liquid fingers, poorly drawn fingers, missing fingers, extra digit, fewer digits, ugly face, deformed eyes, partial face, partial head, bad face, inaccurate limb, cropped
既にお気づきと思いますが、「canny」は線画を元に作画するため元写真に近い画像が生成されます。服装も似てますね。
版権的には微妙になりますが(笑)、元画像そっくりに画像生成する時には非常に便利ですね。
depth
このモデルは、元画像から深度画像(遠近を明暗で表現)を作成してくれます。
設定手順
①「ControlNet」を有効にするため「Enable」にチェック
②「Preprocessor」に「depth」を選択
③「Model」にダウンロードした「control_sd15_depth」を選択
④「Preview annotator result」をクリック
⑤ 深度画像が表示される
では、「canny」と同じプロンプトを使って作画してみましょう。
「canny」とは異なり、ポーズや雰囲気は似ていますが、服装や鞄や帽子などが加わり、かなり雰囲気が異なった画像が生成されました。元画像をアレンジして画像生成する時には非常に便利ですね。
openpose
このモデルは、元画像からポーズ(骨格的なもの)を作成してくれます。
設定手順
①「ControlNet」を有効にするため「Enable」にチェック
②「Preprocessor」に「openpose」を選択
③「Model」にダウンロードした「control_sd15_openpose」を選択
④「Preview annotator result」をクリック
⑤ ポーズ画像が表示される
では、「canny」と同じプロンプトを使って作画してみましょう。
ポーズ以外は別物ですね。ポーズのみを利用したい場合はこのモデルを使うと便利ですね。プロンプトに「hatune miku」と付けると、ちゃんと「ミクさん」になります。
なぜかこの画像も帽子はかぶってますね? 手の位置がそうさせるのか。。
「openpose」の注意点としては、複雑なポーズだったり乗り物に乗っている場合などは正確にポーズ情報を抽出できないケースがあるようです。
ちなみに「depth」を使うと元写真に近い「ミクさん」になります。
元写真の影響を受けつつオリジナリティを出せる「depth」の利用価値は高く、個人的には「depth」がお気に入りです。
「canny」だと元画像そのまんまになったり、「openpose」だとポーズ情報が抽出できないような、バイクに乗っているシーンなどは「depth」が最適です。
深度画像はこんな感じ。
おまけ
あとがき
他にもモデルはたくさんありますが、確認が追い付かない状況です。
ChatGPTなどのAI系は時間単位で進化しているので、追い付くのは無理でしょうね(笑)
理解するより、ツールとして上手に使っていく方向で頑張っていきましょう(^^)b