【Stable Diffusion】ControlNetで前処理(Preprocessor)を個別に行い、低VRAMでもDepthやOpenposeを使う方法!

こんにちは!悠です!

 

今回は私のように、GTX1660Ti(VRAM6GB)等の低スペックGPUでも、「Stable Diffusion」の拡張機能「ControlNet」でdepthやopenposeを使う方法について紹介していきます。

イラストを生成しなくてもプリプロセッサで作成される前処理画像を個別にダウンロードできるので、ハイスペックGPUを持っている方もぜひ真似してみてください!

 

アイキャッチ画像は「Hassaku」で生成しています。
スポンサーリンク
スポンサーリンク

「ControlNet」でCUDA out of memoryが出る原因

「ControlNet」を使っている最中にdepthやopenposeなどのモデルを使うと、VRAM6GBのGPUではCUDA out of memoryエラーが出ます。

これは簡単に言うと「使っているGPUのVRAMが足りず、処理が行えない」ために起こるエラーです。

ちなみにcannyは処理が軽いのか、VRAM6GBでも落ちません。

 

例えばdepthの場合、素材となる画像から深度マップを生成する前処理(Preprocessor)と、その深度マップをAIイラストに適用する処理を同時に行っているからVRAM不足になるんですね。

ですので、この2つの処理をそれぞれ個別に行えば、ロースペックGPUでもdepthやopenposeを使用できるようになります。

 

Preprocessorを個別に行う方法

Preprocessorを個別に行う方法は非常に簡単です。

 

ControlNetのタブを開き、ポーズを抽出したい画像をドラッグアンドドロップした後、EnableAllow Previewにチェックを入れ、Preprocessorの右にある火花マークをクリックします。

※素材画像はPixabayからダウンロードしています(リンク)。

 

Preprocessor Previewの欄にある画像を右クリックで保存してください。この際日本語を画像の名前に使わないようにしましょう。

次に素材画像を消して、今保存した処理画像をドラッグアンドドロップした後、PreprocessorをNoneにしてイラスト生成を行ってください。

 

これでCUDA out of memoryエラーが出ることなく、VRAM6GBでもControlNetを活用することができます。

 

ちなみに下記の深度マップを使うことで、

 

かなり再現度の高い次のような画像を生成できました。なお、モデルデータにはHassakuを使用しています。

 

まとめ

以上が、GTX1660Ti(VRAM6GB)等の低スペックGPUでも、「Stable Diffusion」の拡張機能「ControlNet」でdepthやopenposeを使う方法についての紹介でした。

そもそもControlNetはVRAM8GB以上のGPUの使用が推奨されているので、6GBではいろいろ無理があるんですよね( ;∀;)

RTX4070Tiが欲しいです!!!!

 

では、ここまで読んでいただきありがとうございました。

コメント