Stable Diffusionで描いた人物の顔をGFPGANで補正する方法

  • URLをコピーしました!

高品質なイラストが生成できることで話題のStable Diffusionですが、人間を描かせると良い絵ができるまでにかなりの回数をトライしなければいけません。そこで、人の顔の画像を補正するAIであるGFPGANを使って、Stable Diffusionのイラストの顔を補正してみたいと思います。

また、以下の記事でStable Diffusionの使い方をまとめていますので、あわせてご覧ください。

以下のページで自然言語処理モデルGPT-3を使ったライティングツールCatchyで、Stable DiffusionのPromptを自動生成する方法について解説していますので、あわせてご覧ください。

目次

GFPGANとは

GFPGANは、GenerativeFacial Prior GANの略称で、ディープラーニングを使って古い写真やノイズが載っている写真に写っている人物の顔を復元するモデルです。
元々は実写の画像を補正するために用いられるモデルのようですが、今回はStable Diffusionで生成した2次元のイラストに適用してみたいと思います。

Stable Diffusion自体の使い方は以下のページで解説していますので、あわせてご覧ください。

GFPGANのインストール

インストールしたいディレクトリに移動し、GitHubからリポジトリをダウンロードします。

git clone https://github.com/TencentARC/GFPGAN.git

ダウンロードしたリポジトリのディレクトリに移動します。

cd GFPGAN

requirements.txtを使って必要なライブラリを一括インストールします。以下のコマンドを実行してください。

pip install -r requirements.txt
pip install realesrgan

セットアッププログラムを実行します。

python setup.py develop

GFPGANのバージョンが表示されたら完了です。

Finished processing dependencies for gfpgan==1.3.7

学習済みモデルの取得

学習済みモデルをダウンロードします。

https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth

ダウンロードしたら先ほどのGFPGANのディレクトリの以下の場所にモデルファイルを配置します。

(GFPGANのファイルが配置されているディレクトリ)\GFPGAN\experiments\pretrained_models

使い方

ここからは実際にGFPGANを使って顔の補正を行う方法を解説します。
先ほどダウンロードしたGFPGANのディレクトリ内に「inference_gfpgan.py」というファイルがあります。このPythonのファイルが実際にAIを使って補正を行う処理のファイルとなります。

入出力されるディレクトリ

補正したい画像を入れるディレクトリは以下となります。「inference_gfpgan.py」を実行する前に画像ファイルを入れておいてください。

(GFPGANのファイルが配置されているディレクトリ)\GFPGAN\inputs\whole_imgs

処理が完了すると以下のディレクトリに補正された画像が出力されます。

(GFPGANのファイルが配置されているディレクトリ)\GFPGAN\results\restored_imgs

実行方法

「inference_gfpgan.py」のファイルがあるディレクトリで、以下のコマンドを実行して画像を補正します。

python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2

初期状態でも「whole_imgs」のフォルダ内にはサンプルファイルが入っており、実行すると以下のように補正されたファイルが出力されます。

補正前

雑誌をスキャンしたような画像でノイズが載っています。

補正後

プログラムを実行するとノイズが除去されてきれいになりました。また画像サイズも大きくなっています。

StableDiffusionで生成したイラストの顔をGFPGANで補正してみる

ここからは実際にStable Diffusionで生成したイラストを補正していきます。

イラスト例1

まず1枚目はこちらのイラストです。

補正前

全体的に奇麗なイラストが描けたと思ったのですが、目のあたりが明らかに崩壊してしまっています。

補正後

GFPGANで補正をかけた後の画像がこちらです。目と鼻の周りが綺麗になり違和感がなくなりました。

イラスト例 2

続いて2枚目のイラストがこちらです。

補正前

このイラストも目と鼻のあたりがぼやけた感じになっています。

補正後

GFPGANで補正後の画像がこちらです。1枚目と同じく目、鼻、口周りが綺麗に修正されました。

安定した環境を手に入れるためにはローカルでの構築がおすすめ

Stable Diffusionを使用する際にGoogle ColaboratoryやWebサービスを利用されている方も多いかと思います。しかし、最近Google Colabの無料での使用範囲が大きく制限されたり、Webサービスでは月額費用がかかったりします。

欲しいイラストを生成するにはかなりの回数をトライする必要があるため、これらの制約に縛られることなく使用できるローカル環境を構築するのがおすすめです。

ローカルのPCに搭載するグラフィックボード

ローカルマシンで実行する上で重要になってくるのがグラフィックボードです。
Stable Diffusionでイラストを生成するために実行される推論処理を、グラフィックボード上のGPUを使って大幅に高速化することができます。
トライする回数が増えれば品質の高いイラストが生成される可能性が上がりますので、グラフィックボードは重要です。

Stable Diffusionで使用するためのGPUは2022年に新たにNVIDIAから発売されたRTX4000シリーズのGPUとVRAM12GB以上のものがおすすめです。最近は半導体不足も一服したこともあり、新しい製品ながら価格が下がりつつあります。

また、PCのパーツ交換等ができない方には、RTXを搭載したゲーミングPCがおすすめです。

HP ゲーミングデスクトップPC OMEN by HP 40L RTX 3070 Ti Core i7 16GB 1TB Win11 Pro

Pythonによる自動化、UIの作成

当ブログでもソースコードを公開していますが、Stable Diffusionを使用するためのコードはPythonで簡単に実装することができます。Pythonの初歩的なプログラミングを習得することで、Promptを自動で生成、組み合わせ変更してトライするプログラムを作成したり、他の方が配布されているオープンソースのUIを自分好みにカスタマイズすることも可能です。

Pythonのプログラミングを学びたい方には、初心者からでも挫折することなく習得できるオンラインスクールがおすすめです。

最近ではほとんどのスクールがオンラインに対応しており、好きな時に自宅で自分のペースで学ぶことができます。

まとめ

今回は人の顔の画像を高品質化するAI、GFPGANをStableDiffusionで生成した2次元イラストで補正してみるという実験でした。

明らかに顔の構造がおかしいような絵は無理でしたが、「ちょっと違和感があるあるな?」レベルのイラストであれば綺麗に補正できることがわかりました。「せっかく綺麗なイラストが出力されたのに顔周りだけがオシイ!」という場合にぜひ試してみてください。

以下のページで自然言語処理モデルGPT-3を使ったライティングツールCatchyで、Stable DiffusionのPromptを自動生成する方法について解説していますので、あわせてご覧ください。

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

\ Pythonのプログラミングを学びたい人には自宅で学べるUdemyがおすすめ!  /

講座単位で購入できます!

参考

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