画像生成AI(Stable Diffusion)を使って画像内の人物の顔を高画質化する

本記事の目的

低画質な画像に苦しむ人が減り、世界がより平和になってほしいとの思いから本記事を書きました。

 

※厳密には高画質化というよりは、低画質な肌を高画質な肌で上書きする

 

 

手順概要

 1.PCを用意

 2.グラボを用意

 3.各種ツールインストール(Python, Git, Stable Diffusion web UI版)

 4.画像生成用のモデルを用意してStable Diffusionへ導入

 5.画像を用意

 6.Stable Diffusionのimg2imgのinpaintを実施

 7.上手く行くまで6を繰り返す

 

 

以下、手順

 

1.PCを用意

 ・普通にゲーム出来るようなPCならなんでもいいと思われる。

 ・Windowsは可。Macは不明。

 ・筆者のPCはCPU:i7、メモリ32GBだが、グラボが重要なので恐らくCPUやメモリはそこまで重要じゃない。

  Stable Diffusionで生成しようとする画像のサイズによっても変わるとは思うが、

  試しに適当にStable Diffusion動かしたらCPU消費18%、メモリ2GBくらいの消費だった。

  

 

2.グラボを用意

 ・筆者はRTX3060(メモリ12GB)

 ・生成しようとする画像のサイズによって大きく変わると思うが、筆者の利用だと現状特に不満なし。4090だと超早いらしい。

 ・今グラボ安くなってるので、取り敢えず現状で試してみて超遅いようだったらグラボ買い替えるのがよさそう。

 

 

3.各種ツールインストール(Python, Git, Stable Diffusion web UI版)

 ・簡単に言うと、

   - Python(プログラム動かすためのツール)

   - Git(ネット上から自動で良い感じにデータ落としてくれるツール)

  をインストールして、その後でGitを使ってネットからStableDiffusion一式を落とす。

 ・Stable Diffusion 導入 とかでググられたし。

 ・Stable Diffusionも色々種類があるが、ローカルで比較的自由にやれるのでweb UI版が良いと思う。

 

 

4.画像生成用のモデルを用意してStable Diffusionへ導入

 ・例えば、civitaiからchilloutmixを落として、そのモデルファイルを

   C:\StableDiffusion\stable-diffusion-webui\models\Stable-diffusion

  とかに配置する。

  (正確には、フォルダはインストールした場所によって変わる)

 ・リアル系で高品質なモデルなら恐らくなんでもよい。

  モデル毎に商用利用禁止、など規約があるのでネットに公開などする前に必ず確認する事。

 

 

5.画像を用意

 ・肌を高画質化させたい画像を用意する。

 ・Stable Diffusionの処理時間を短縮する為に、その画像から顔の周辺を切り出す。

 ・例えばこのように

  

 

 

6.Stable Diffusionのimg2imgのinpaintを実施

 ※以下設定内容は一例であり、要素や重さやパラメータの変更次第では、もっと良くなる可能性がある。

  もし良い感じの設定が見つかったら、@must2step(twitter)まで教えてもらえると嬉しい。

 

 ①Stable Diffusionをインストールしたフォルダで、webui.batをダブルクリックして実行する

  ※サイトなどによってここは微妙に違うと思う。Stable Diffusionが開ければなんでもいい。

  

 

 ②上記を実行すると黒い画面(コマンドプロンプト)が立ち上がりStable Diffusionが起動される。

  黒い画面の中にある以下のような記載をコピーし、

   Running on local URL:  http://127.0.0.1:6789

  ブラウザのアドレスバーに貼り付ける。

  そうすると、Stable DiffusionのUI画面が開かれる。

   

 

 ③Settingタブを開く

  Stable Diffusion>Clip skip を2にする

   

 

   

 

   

 

  Sampler parameters>Eta noise seed delta を31337にする

   

 

   

 

  Apply settingsを押して変更した設定を適用させる

   

 

 ④Stable Diffusion checkpointは、4でDLし配置したモデルを選択する

 ⑤img2imgタブを開く

   

 

 ⑥Promptに以下を記載する

 baldhead, (no-eyebrows:1.1), (no-eyes:1.1), beautiful detailed cheek, beautiful detailed skin texture, extremely detailed skin texture, (RAW photo, best quality), (realistic, photo-realistic:1.4), masterpiece, an extremely delicate and beautiful, extremely detailed, 2k wallpaper, Amazing, finely detail, extremely detailed CG unity 8k wallpaper, ultra-detailed, highres

 

 ⑦Negative promptに以下を記載する

 ugly, painting, sketch, (worst quality:2), (low quality:2), (normal quality:2), lowres, bad anatomy, bad hands, fewer digits, extra digit, normal quality, *1, *2,  collapsed eyeshadow, multiple eyeblows,  holes on breasts, covered nipples, underwear, (mouth:1.1), (eyes:1.2),(eye:1.2), (multeyes:1.1) (eyebrows:1.3), (nose:1.7), hair, (Mole:1.2), pearl, rip, no eyes

 

  

 

 ⑧inpaintタブを開く

   

 

 ⑨画像をドラッグアンドドロップなどで入れる

   

 

 ⑩画質を上げたい箇所をドラッグして黒塗りにする。

   

 

 ※塗る箇所に関するポイントは、

  ・目、鼻先、口、眉、耳等の肌色ではないないし複雑なパーツは塗らないようにする

   (そこを編集してしまうと別人になってしまうため)

  ・上記箇所の直近部分の際までは塗らないようにする

   (後述のMask blurによってなんとかなるため)

  ・狭い領域に影がある部分(目下、鼻筋、鼻下、唇直下等、顔の輪郭部分)は塗らないようにする

   (影の生成が上手く行かない事が多いため)

 

 塗る時のポイントは、

  ・戻るボタンがあるため、小刻みに塗っていくようにする

  ・画像生成で上手く行かない場所があった場合は、塗り方を見直す

 

 

 ⑪以下のようにパラメータを設定する

 

  ・Resize mode Resize and fill

  ・Mask blur 8

  ・Mask mode Inpaint masked

  ・Masked content original

  ・Inpaint area Whole picture

  ・Only masked padding, pixels 20

  ・Sampling method SPM++ SDE Karras

  ・Sampling steps 20

  ・Resize by できれば1以上である程度大きい値

    - 元画像に対して、何倍のサイズで画像を生成するか。

    - ある程度大きい方が生成画像の質が高まるが、大きすぎると消費するグラボのメモリが大きくなってメモリエラーで生成出来ない事があるため、自分のグラボ性能と相談しながらできる限り大きい倍率にする。

    - 筆者は2000×2000とか生成しようとしたらメモリエラーになった。

    - Resize toは自分で数字を入れなければならないため、Resize byの方が便利。

  ・Batch count 自由。

    - 画像を生成する枚数。筆者は4~100の中で変えている。

    - プロンプトや設定を試行錯誤する段階では4などを使い、方向性が定まったら8~100で大量に生成してあとで生成物をチェックする。

    - グラボの性能によって生成時間は大きく変わるため、自身のグラボ性能と相談しながら決める。

    ※元画像を変えた後Resize byのサイズが前画像のままになっておりエラーになる時があるので、そういう時はResize byのバーを少し動かして最新のサイズを反映させる。

  ・CFG Scale 6

  ・Denoising strength 0.75

  ・Seed -1

  ・Script None

   

 

 ⑫上記設定を入れたら、Generate

   

 

  Batch countで設定した枚数の画像が生成されるので、結果をチェックする。

  なお画像は以下のようなフォルダに保存されるので、ファイルそのものを見たい時はこちらを開く。

   

 

  ※フォルダアイコンからもジャンプ可能

   


 

 

7.上手く行くまで6を繰り返す

 ・パラメータさえあっていれば、画像の黒塗りの仕方が肝です。

 ・黒塗りの仕方が微妙だと、鼻筋が曲がったり頬がこけたり目が頬に生成されたりします。

 ・現状、ホクロが結構な量出てしまう。恐らくNegative次第で消せるとは思うが…

 ・もしもっと良い設定などを見つけましたら、@must2step(Twitter)に教えてもらえますと幸いです。

 

 

注意事項

 ・画像生成用モデルファイルの利用規約は必ず読んだ上で利用してください。

  例えば商用利用禁止、画像の公開時にモデル名を明記する事、グロ禁止、など色々あります。

 

・生成した画像を公開する場合、法律を守ってください。

 

・タレントの画像に対し実施し公開したり、本人の名前やタグやIDを入れて公開するなどの野蛮な行為はやめましょう。そういう事をしていると供給される画像の画質が更に低くなるか、投稿されなくなります。

 

・校正してないから後で直すかも

 

 

検索用:

 Stable Diffusion

 Stable Diffusion web UI

 低画質 高画

 高画質化

 肌、テクスチャ

*1:monochrome

*2:grayscale