Stable Diffusionで生成したキャラクターの不自然な手を修正する方法 | DepthライブラリとControlNetの活用法

  • URLをコピーしました!

今回はStable Diffusionで生成したイラストの不自然な手を修正する方法を解説します。

Stable DiffusionのWebUIであるAUTOMATIC1111に、c and poser(深度ライブラリ)とControlNetをインストールし、これらを組み合わせることで実現できます。

今まで気に入ったイラストでも、手だけが失敗したためにボツになっていたものを復活させることができますので、ぜひ活用してみてください。

また、当ブログのStable Diffusionに関する記事を以下のページでまとめていますので、あわせてご覧ください。

目次

Stable Diffusionとは

Stable Diffusion(ステーブル・ディフュージョン)は2022年8月に無償公開された描画AIです。ユーザーがテキストでキーワードを指定することで、それに応じた画像が自動生成される仕組みとなっています。
NVIDIAのGPUを搭載していれば、ユーザ自身でStable Diffusionをインストールし、ローカル環境で実行することも可能です。
(出典:wikipedia)

AUTOMATIC1111とは

AUTOMATIC1111はStable Diffusionをブラウザから利用するためのWebアプリケーションです。AUTOMATIC1111を使用することで、プログラミングを一切必要とせずにStable Diffusionで画像生成を行うことが可能になります。

AUTOMATIC1111の公式リポジトリは以下となります。

ローカル環境

GPUを搭載したローカルPCでAUTOMATIC1111を使用する方法について、以下の記事で解説しています。

Google Colaboratory

Googleのクラウドコンピューティングサービス、Google ColaboratoryでAUTOMATIC1111を使用する方法については、以下の記事で解説しています。

Paperspase

定額制で高性能GPUを利用できるクラウドコンピューティングサービス、PaperspaceでAUTOMATIC1111を使用する方法については、以下の記事で解説しています。

ControlNetのインストール

Stable Diffusionの拡張機能であるControlNetをAUTOMATIC1111にインストールします。
手順は以下のページで解説していますので、事前に済ませておいてください。

Depth map library and poserのインストール

Stable Diffusionの拡張機能であるDepth map library and poserをAUTOMATIC1111にインストールします。
手順は以下のページで解説していますので、事前に済ませておいてください。

手の修正手順

ここからは実際にDepthライブラリを使って手を修正していく手順を解説します。

今回私が使用しているAUTOMATIC1111は古いバージョンを使っているため、最新のWebUIと若干画面デザインが異なりますが、UIの項目は同じです。

Depthデータの作成

AUTOMATIC1111を起動したら、「Depth Library」のタブを開きます。
そして「Add background image」をクリックし、修正したい画像を選択します。

画像を選択すると、以下のように右側のエリアに画像が表示されます。

修正したい画像のサイズに合わせ「width」と「height」を設定します。

赤枠の「Hands」タブをクリックします。以下のように手のポーズの一覧が表示されます。

使用したい手のポーズを選択します。選択すると中央のエリアに手のポーズの画像が表示されます。

手を選択した状態で「Add」をクリックすると、右側の修正したい絵の上に重ねて手の画像が表示されます。

元画像の上に表示された手の画像をクリックすると、以下のように枠線が表示されマウスで拡大縮小と回転ができます。

元のイラストと重ねて配置したい場所に移動し、サイズや向きを調整します。

完了したら「Save PNG」をクリックします。ファイルを任意の場所に保存してください。

ControlNetでの読み込み

先ほど作成したDepthデータをControlNetで読み込みます。

「img2img」タブをクリックします。

修正したい元画像をimg2imgのエリアにドラッグアンドドロップして読み込みます。

「ControlNet」の項目をクリックして、UIを展開します。

ControlNetの「image」のエリアに、先ほどの「Depth Library」のタブで作成したDepthデータの画像をドラッグアンドドロップして読み込みます。

Depthデータが読み込まれると、以下のように表示されます。

「Enable」にチェックを入れ、「Model」で「control_depth-fp16」を選択します。
「Preprocessor」は「none」のままにしてください。
「Canvas Width」と「Canvas Height」は元の画像サイズを設定します。

あとは通常どおり、モデル、VAE、プロンプトを設定します。設定内容は元画像生成時と同じものを使用します。

「Sampling method」と「Width」、「Height」も元画像と同じ値に設定します。
それ以外のパラメータは必要に応じて設定してください。

設定が完了したら、「Generate」ボタンをクリックします。
生成が完了すると、右側のプレビューエリアに手が修正された画像が表示されますので、保存してください。

動作確認

用意したデータ

修正前の画像データ

こちらが修正前の元となるデータです。全体的にきれいに描けているのですが、右手の指の部分だけが不自然な形状になってしまっています。

Depthライブラリで作成した深度データ

「Depth Library」のタブで作成した手の深度データです。こちらをControlNetに読み込みます。

実行結果

こちらが実行結果の画像です。手の微妙な角度も調整されており、違和感なく描画されきれいになりました。

まとめ

今回はDepth map library and poserとControlNetを使って、手の描画を失敗した絵を修正する方法について解説しました。手だけを修正することにより、成功率が劇的に向上しますのでぜひ活用してみてください。

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。

スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次