Stable diffusion拡張機能のControlNetを使ってみました

写真やイラストからポーズなどの情報を取得してくれるStable diffusionの拡張機能「ControlNet」を使ってみましたのでログを残しておきます。

ControlNet使用

目次

 

導入

「ControlNet」の導入については下記の備忘ログを参照してください。

hastaluegoblog.hatenablog.com

 

モデルをダウンロード

「ControlNet」を使うには、モデルを公式URLからダウンロードする必要があります。

huggingface.co

 

今回使用する「control_sd15_canny.pth」、「control_sd15_depth.pth」、「control_sd15_openpose.pth」の3ファイルをダウンロード。

ダウンロードしたファイルは、「ControlNet」導入時に自動作成された下記フォルダに置いてください。

stable-diffusion-webui\extensions\sd-webui-controlnet\models

 

元画像を入手

今回使用する写真は、「ぱくたそ」さんのフリー素材を使用させて頂きました。

www.pakutaso.com

 

敬礼をする女性

 

しかし、このまま使用すると生成される人物が右寄り&小さくなってしまいますので、ペイントソフトなどでトリミングして女性の位置を調整します。

中央に移動させてトリミングした画像

では、各モデルで画像生成してみましょう。

 

各モデルで画像生成

写真の登録

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

control_sd15_cannyで作画

既にお気づきと思いますが、「canny」は線画を元に作画するため元写真に近い画像が生成されます。服装も似てますね。

版権的には微妙になりますが(笑)、元画像そっくりに画像生成する時には非常に便利ですね。

 

depth

このモデルは、元画像から深度画像(遠近を明暗で表現)を作成してくれます。

設定手順

①「ControlNet」を有効にするため「Enable」にチェック

②「Preprocessor」に「depth」を選択

③「Model」にダウンロードした「control_sd15_depth」を選択

④「Preview annotator result」をクリック

⑤ 深度画像が表示される

 

では、「canny」と同じプロンプトを使って作画してみましょう。

control_sd15_depthで作画

「canny」とは異なり、ポーズや雰囲気は似ていますが、服装や鞄や帽子などが加わり、かなり雰囲気が異なった画像が生成されました。元画像をアレンジして画像生成する時には非常に便利ですね。

 

openpose

このモデルは、元画像からポーズ(骨格的なもの)を作成してくれます。

設定手順

①「ControlNet」を有効にするため「Enable」にチェック

②「Preprocessor」に「openpose」を選択

③「Model」にダウンロードした「control_sd15_openpose」を選択

④「Preview annotator result」をクリック

⑤ ポーズ画像が表示される

 

 

では、「canny」と同じプロンプトを使って作画してみましょう。

control_sd15_openposeで作画

ポーズ以外は別物ですね。ポーズのみを利用したい場合はこのモデルを使うと便利ですね。プロンプトに「hatune miku」と付けると、ちゃんと「ミクさん」になります。

なぜかこの画像も帽子はかぶってますね? 手の位置がそうさせるのか。。

control_sd15_openposeで作画

「openpose」の注意点としては、複雑なポーズだったり乗り物に乗っている場合などは正確にポーズ情報を抽出できないケースがあるようです。

 

ちなみに「depth」を使うと元写真に近い「ミクさん」になります。

元写真の影響を受けつつオリジナリティを出せる「depth」の利用価値は高く、個人的には「depth」がお気に入りです。

control_sd15_depthで作画

「canny」だと元画像そのまんまになったり、「openpose」だとポーズ情報が抽出できないような、バイクに乗っているシーンなどは「depth」が最適です。

control_sd15_depthで作画

深度画像はこんな感じ。

control_sd15_depthの深度画像

 

おまけ

ミクさんライダー

 

あとがき

他にもモデルはたくさんありますが、確認が追い付かない状況です。

ChatGPTなどのAI系は時間単位で進化しているので、追い付くのは無理でしょうね(笑)

理解するより、ツールとして上手に使っていく方向で頑張っていきましょう(^^)b