見出し画像

StreamDiffusionをControlNetに対応させて遊ぶ

注意

StreamDiffusionを素人改造した遊びです。
素人が週末に改造して遊んでいるだけですので正確性、品質などご容赦ください。
あくまで個人で改造して遊んでいるだけですので、本家様への問い合わせ等迷惑が掛からないようにお願います。

動機

VTuberのようなキャラクターで生配信をする際に、リアルタイムにプロンプトを変更して、猫耳を生やしたり、髪色を変えたりできると面白そう!

やったこと

StreamDiffusion v0.1.1はControlNetには非対応なのですが、どうしても検証したかったので、特定の条件下であればControlNetが動くように少し改造して動かしました。
他にもやってみたいという方もいましたので、コードを公開しておきます。
ただ、ControlNetは有用な技術ですし、公式でもissueに上がっているようなので、将来的には公式でも対応されるかもしれません。
素人改造でもいいから、今すぐCntrolNetで遊んでみたい!というレベルでよければお使いください。

使い方

StreamDiffusionのリポジトリをクローンし、StreamDiffusionが動作する環境を整えてください。v0.1.1で動作確認しています。

私のリポジトリのプログラムを取得し、以下のようにStreamDiffusionのexampleのフォルダに配置してください。


配置場所


必要に応じて、ctlnet_exampleの中にあるrequirements.txtを以下のコマンドでinstall してください。

pip install -r requirements.txt

exampleフォルダをカレントディレクトリにし、以下のコマンドで起動します。

python ctlnet_example/main.py

デフォルトのプロンプトを変えたい場合は、main.pyのこの辺りを変えてください。

また、以下のあたりのパラメタを変えることで、いくつか動作を変えることができます。

IP-Adapterが使用できます。
adapterをTrueにして、ip_adapter_image_filepathに画像を指定することで、適用できます。

cfg_typeは基本的にnoneのみ対応しています。一応fullでも動作しますが自信はないです。

keep_latentをTrueにすることで、潜在変数が固定されます。キャラクターが変わりにくくなります。Falseにすると、潜在変数が毎回変わるため、生成される画像がランダムになります。

基本的な遊び方

StreamDiffusionのexampleのimg2imgのように、キャプチャ用のウインドウが出ますので、CntrolNetのOpenpose用の画像の上にのせてEnterを押してください。

イメージ用のウィンドウに画像が表示されると思います。
初期値が悪い場合など?画像がノイジーになる場合があるので、その場合はもう一度やり直してください。

プロンプトを変えると、猫耳を生やしたり、メガネをかけたり、髪の毛の色を変えたりできると思います。

遊び方1.同じキャラクターでポーズやプロンプトを変えて遊びたい

keep_latent=Trueにしてください。
可能なら、キャラクターの画像を用意し、adapter=True, ip_adapter_image_filepathに画像を指定してください。


遊び方2.ポーズを決めて画像をたくさん表示させたい

keep_latent=Falseにしてください。
似たキャラクターをたくさん表示したい場合adapter=True, ip_adapter_image_filepathに画像を指定してください。
異なるキャラクターでよい場合、adapter=Falseにしてください。


参考

StreamDiffusion本体様

ありがとう あき先生

アキ先生による論文解説

とても分かりやすい。


この記事が気に入ったらサポートをしてみませんか?