見出し画像

Stable Diffusion - ControlNet入門(1) ControlNetとは?

割引あり

このシリーズでは、より意図した通りの画像を生成するのに役立つ Stable Diffusion の拡張機能『ControlNet』の概要について解説します。今回は第1回目として、ControlNet の概要やできることを解説していきます。

ControlNetの概要

ControlNet は、2023年2月に論文「Adding Conditional Control to Text-to-Image Diffusion Models(テキストから画像への拡散モデルへの条件制御の追加)」で発表された Stable Diffusion の派生拡張技術です。プロンプトに加えて画像や姿勢を入力することで、プロンプトのみでは指示できない複雑な構図や、文字で説明することが難しいポーズ、元画像のキャラクターを再現した画像などを生成することが可能になりました。
主な開発者は論文の主著者である lllyasviel 氏(Zhang Lvminさん)で、2023年12月現在、lllyasviel 氏の GitHub や Hugging Face で技術の詳細やモデルが公開されています。現在の最新版は1.1です。
https://github.com/lllyasviel/ControlNet-v1-1-nightly
また Mikubill 氏が ControlNet をAUTOMATIC1111で使用するための拡張機能をオープンソースで公開しています。

ControlNet は、Stable Diffusion の拡散モデルによる空間的条件制御を追加するニューラルネットワークの技術ですが、いくつかの「プリプロセッサ」から構成されています。これは ControlNet の特徴で、t2iによる画像生成の条件制御として働きます。画像からポーズを抽出する「openpose 」や、輪郭線を抽出する「canny」などをまとめて「プリプロセッサ」と呼びます。各プリプロセッサを目的に応じて使い分けることで、t2iでは制御が難しい構図や姿勢などを制御し、より意図した通りのイラストを生成することができます。

i2iとの違い

「画像とプロンプトをもとにして新たな画像を生成する」と聞くと i2i を想像するかと思いますが、 i2i と ControlNet は完全に別の技術です。

i2iは画像全体の特徴を捉えて類似画像を生成するのに対し、ControlNetは画像上の情報(線画、境界線、姿勢、深度情報など)を解析し、より詳細な制御に基づいて画像生成を行います。
i2i の記事で試したように、Denoising strength の値を増やすことで画像の雰囲気を保ったまま構図やキャラクターに変化をつけることができますが、Denoising strengthは画像生成におけるノイズ除去パラメータです。構図やキャラクターを変える機能はありません。


<img2imgの例>元画像
<img2imgの例>生成した画像

ControlNetは、画像とプロンプトをもとにして新たな画像を生成する技術です。i2iとは異なり、画像上の情報(線画、境界線、姿勢、深度情報など)をコンピュータビジョンによって「プリプロセッサ」として事前に解析し、その情報を空間的制約条件にして制御に基づいて画像生成を行います。つまり特定の要素の特徴のみを画像から抜き出して画像を生成することができます。例えば、このように元画像のポーズを再現することができます。

元写真
openposeで抽出したポーズの座標
生成画像

これは「openpose」というプリプロセッサで、写真の人物のポーズと表情を3D座標(正確には各関節の行列)として抽出し、それを参考にキャラクターにポーズをとらせた画像を生成することができる機能です。1枚目がフリー素材サイト「Pexels」からダウンロードした画像、2枚目が openpose で抽出した人間の姿勢、3枚目が生成された画像です。生成画像の姿勢のみが元画像の通りで、人物や服、画像の雰囲気は全く異なっている拡散モデルによる生成になっていることがわかります。
このように、ControlNet はプリプロセッサによる制約条件を導入することで、より自在に画像を生成することができるパワフルな技術です。

ControlNet 入門シリーズでは、次回から ControlNet の導入方法を解説していきます!

img2img 入門シリーズはこちらから。

※本ブログは発売予定の新刊書籍に収録される予定です。期間限定で先行公開中しています。
メンバー向けには先行してメンバーシップ版をお届けします
Stable Diffusionをお手軽に、しかもめっちゃ丁寧に学べてしまう情報をシリーズでお送りします。
メンバーは価値あるソースコードの入手や質問、依頼ができますので、お気軽にご参加いただければ幸いです!

この下にGoogle Colabで動作する「AUTOMATIC1111/Stable Diffusion WebUI」へのリンクを紹介しています。
メンバーシップ向けサポート掲示板はこちら!応援よろしくお願いします!

ここから先は

80字
この記事のみ ¥ 0〜
期間限定!PayPayで支払うと抽選でお得

応援してくださる皆様へ!💖 いただいたサポートは、より良いコンテンツ制作、ライターさんの謝礼に役立てさせていただきます!