Stable Diffusion – 2種類のInpaint


Inpaintは背景などを維持しながら画像の一部を消したり置き換えたりする技術です。
Google翻訳でInpaintを訳してみると"修復する"と訳されます。

Stable DiffusionにもInpaint機能は存在しますが
大きく分けて2種類のInpaintが存在します。

ここではその2種類について説明しようかと思います。

2種類のInpaint

2種類のInpaintは以下の通りです。

  1. CompVisのStable Diffusionに標準で同梱されているもの(以下、標準 Inpaint)
  2. Huging FaceのAPI経由で使用するもの(以下、Huging Inpaint)

おおざっぱに機能の違いを説明するとプロンプトの使用です。
1はプロンプトで指定することができません。物体を消す一択です。
2はプロンプトで指定することができ任意のものにすり替えることができます。

以下が実際に試してみた結果です。

標準 Inpaint

Huging Inpaint

メリットとデメリット

標準 InpaintとHuging Inpaint どちらも長所と短所があります。

標準 Inpaintはプロンプトが使えません。消す一択ですね。
しかし全体的な変化がほとんどありません。

Huging Inpaintは置き換えるものをプロンプトで指定することができます。
魅力的ですね。まだ精度にかなり不安はあります(実はキノコを出そうとしました)がいずれ改善されていくと思います。
デメリットとしては変化してほしくない部分も変化してしまうところですね。
画質が悪化しているようにも見えます。

使い方の違い

標準Inpaint

GitHubからStableDiffusionをとってくるとScriptのところにInpaint.pyが同梱されています。
これを使用することで動作させることができます。

モデルは以下で取得します。

wget -O models/ldm/inpainting_big/last.ckpt https://heibox.uni-heidelberg.de/f/4d9ac7ea40c64582b7c9/?dl=1

以下のリンクに飛んでも構いません(注意:いきなりダウンロードが始まります)

https://heibox.uni-heidelberg.de/f/4d9ac7ea40c64582b7c9/?dl=1

コマンドは以下の通りです。

conda activate ldm
python scripts/inpaint.py --indir 入力画像フォルダパス --outdir 出力先フォルダパス --steps 75 

入力画像フォルダには元画像とマスク画像の2種類が必要です。
参考までに先ほど実行したものの元画像とマスク画像を貼っておきます。

元画像

ファイル名はexample.png

マスク画像

ファイル名はexample_mask.png

Huging Inpaint

HugingFaceのアカウントとトークンの作成が必要です。
巷にたくさん説明がありますのでそちらをご参照ください。

ちなみに僕のスクリプトをGitHub Gistに載せておきます。

GitHub Gist – Zeikomi552

実行コマンドは以下の通りです。

conda activate ldm
python scripts/inpaint2.py --init-img "example.png" --mask-img "example_mask.png" --out-img "00002.png" --ddim_steps 75 --H 512 --W 768 --strength 0.75 --seed 99999 --model-id "runwayml/stable-diffusion-v1-5" --accesstoken "YOUR_ACCESS_TOKEN" --prompt "Mashroom " 

有名な画像修復に挑戦

画像修復で有名なのは何といってもコレ。
心優しきアマチュア民間人のおばあさんが善意で教会の絵画の修復を行ったものです。
完成度の高いこの修復は多くの観光客を集めアートの新ジャンルを確立しました。

Photos via BBC.

僕も2種類のInpaintを駆使しこちらの画像修復にチャレンジしてみようかと思います。
しかし痛みがひどいですね。ですがご安心ください。今回は最新技術です。

結果

おおざっぱに修正していったら服ははだけ顔が真っ黒に。
差し替え可能なInpaintを使って顔を書き替えたら出来の悪いはめ込みになってしまいました。
おばあさんもきっとこんな気分だったんでしょうね。

少し丁寧に修正したものが以下。
白い点がどうやら模様と認識されるようで細かく指定すると取り除くことができませんでした。

こういうのはプロに任せとけという話ですね。

おまけ(高画質化AI)

蛇足ですが仕上がった画像に他の画像を高画質化するAI技術も組み合わせてみます。

GFPGAN

おわり

AIアート C# DXの設計書 Git GitHub GitHubサーベイ MovingWordpress Python stablediffusion Twapi Visual Studio VSCode Wordpress WPF ソフトウェア開発実演 ツール データサイエンス フォロワーを増やしたい ブログ収益化 ブログ記事整理プロジェクト プログラマーとは プログラミング プロジェクトマネジメント ワードプレスの引っ越し 僕が会社をやめた理由


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です