mieki256's diary



2024/12/01() [n年前の日記]

#1 [cg_tools] Inpaint anythingを試用

画像生成AI Stable Diffusion web UI reForge の img2img を使っていて、人物と背景をマスクで塗り分けるのが面倒臭いなと感じてきた。こういう作業こそAIでどうにかしてほしい…。何か良いツールは無いものか…。

ググってみたら、Stable Diffusion web UI用の拡張、Inpaint anything が使えそうな気がしてきた。
_Uminosachi/sd-webui-inpaint-anything: Inpaint Anything extension performs stable diffusion inpainting on a browser UI using masks from Segment Anything.
_Stable Diffusionで指定部分だけ変更できる拡張機能『Inpaint Anything』の使い方! | romptn Magazine
_【Stable Diffusion】Inpaint Anythingの使い方!特定の領域に自動でマスクを作成 | イクログ
_【超便利】Inpaint Anythingの使い方 前編【stable diffusion】 - YouTube
_【超便利】Inpaint Anythingの使い方 後編【stable diffusion】 - YouTube

Windows10 x64 22H2 + Stable Diffusion web UI reForge で使ってみた。 *1

インストールとモデルデータのダウンロード :

インストールは、Stable Diffusion web UI の拡張機能タブから行える。リストを読み込んで「anything」と検索欄に打ってやればリストアップされるので、インストールボタンを押す。インストールができたら Stable Diffusion web UI reForge を再起動。

インストールに成功すると Inpaint anythingタブが追加されるのでそれを選択。

セグメントで分けるためにはモデルデータが必要になるので、使いたいモデルデータを選んでダウンロードボタンを押す必要がある。モデルデータは、以下の場所に配置される。
Stable Diffusion web UI reForgeインストールフォルダ\extensions\sd-webui-inpaint-anything\models\

今回ダウンロードしたモデルデータは以下。
sam2_hiera_base_plus.pt308.5MB323493298 byte
sam2_hiera_small.pt175.8MB184309650 byte
sam_vit_l_0b3195.pth1.2GB1249524607 byte
sam_vit_b_01ec64.pth357.7MB375042383 byte
sam_hq_vit_l.pth1.2GB1254865805 byte
sam_hq_vit_b.pth361.8MB379335069 byte
FastSAM-x.pt138.2MB144943063 byte
FastSAM-s.pt22.7MB23832055 byte
mobile_sam.pt38.8MB40728226 byte
  • huge, large, base のモデルデータがあって、_h, _l, _b とファイル名につけてある。ファイルサイズは、huge > large > base になっている。
  • あるいは、large > base > small > tiny の順になっている場合もある。
  • hq とついているのは高品質な結果を出す、らしい。
  • Fast とついているのは、処理が早い。精度は甘くなる。

使い方 :

  1. 画像をエクスプローラ等からドラッグアンドドロップすれば読み込まれる。
  2. セグメント分割するためのモデルデータを選んで、Run Segment Anything ボタンをクリック。
  3. そこそこ時間がかかって処理が行われる。セグメントで分割された画像が出てくる。
  4. マスクとして使いたい領域の上でマウスの左クリック。もしくはドラッグ。点や線で指示されたセグメントが選択された領域扱いになる。
  5. Create Mask をクリック。マスク領域が作成される。

マスク領域の上には、マウスクリックやマウスドラッグで何かしらを描いていける。このレイヤーをスケッチと呼んでいるららしい。

3つのボタンの意味は以下。
  • Expand mask region : マスク領域を1ドット広げる。
  • Trim mask by sketch : マスク領域から、スケッチに描かれた分を取り除く。
  • Add mask by sketch : マスク領域に、スケッチに描かれた分を追加する。

マスク領域ができたら、Inpainting で、マスク領域内を別の画像上で置き換えることができる。

ただ、この Inpainting をするためには、更にモデルデータが必要で…。どれかしらを選んで処理をすると、もしかするとモデルデータをダウンロードして処理してくれるのかもしれない。

ただ、どこにモデルデータが配置されるのか分からなかった。README.md には、以下に置いてある、と書いてあるのだけど…。中を覗いても見当たらない…。
C:\Users\(USERNAME)\.cache\huggingface\hub\

Mask only を使えば、Get mask でマスクを作成して、img2img に送ることもできる。

出力フォルダ :

インストール直後は、生成画像は以下に記録されるらしい。
.\outputs\inpaint-anything\

ただ、設定を変更すれば、img2img の出力フォルダに切り替えることもできる。設定 → Inapint anything。

*1: ハードウェアスペックは、CPU : AMD Ryzen 5 5600X, RAM : 32GB, GPU : NVIDIA GeForce GTX 1060 6GB。

以上、1 日分です。

過去ログ表示

Prev - 2024/12 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project