2024/06/29(土) [n年前の日記]
#1 [cg_tools] Lama CleanerをWindows10にインストールしてみた
画像の一部を消去/除去できるツール、Lama Cleaner を、Windows10 x64 22H2にインストールしてみた。
Webブラウザ上で、以下のような画面が表示される。エクスプローラ等から画像をドラッグアンドドロップすれば画像を操作できる状態になる。
以下のような感じで、画像の一部を除去/消去できる。
動作確認環境は以下。
Webブラウザ上で、以下のような画面が表示される。エクスプローラ等から画像をドラッグアンドドロップすれば画像を操作できる状態になる。
以下のような感じで、画像の一部を除去/消去できる。
- マウスドラッグで消したい部分を塗って、マウスボタンを離すと即座に消去処理が走る。
- 処理中は画面がフェードイン/フェードアウトを繰り返す。
- 画面下の、下向きの矢印のアイコンをクリックすると、画像を保存することができる。
動作確認環境は以下。
- Windows10 x64 22H2
- Google Chrome 126.0.6478.127
- Mozilla Firefox 127.0.2
- CPU : AMD Ryzen 5 5600X
- GPU : NVIDIA GeForce GTX 1060 6GB
- RAM : 16GB
◎ スタンドアローン版をインストール :
以下を参考にして、単体で動作する版をインストールしてみた。
_邪魔な部分を簡単除去 - Lama Cleaner|るぺったん
git と Python 3.10 が必要らしい。自分の環境は以下を入れていた。
インストールと起動を容易にするためのbatファイルが公開されていたので利用させてもらうことにした。ありがたや。
_SdWebUiTutorial/LamaCleaner.bat at main - Zuntan03/SdWebUiTutorial
LamaCleaner.bat を入手。DOS窓を開いて、LamaCleaner.bat を実行。今回は、C:\aiwork\lama-cleaner\ を作成して、その中に入れた。
やってることは、カレントディレクトリ内にToolディレクトリを作成して、中に Python の仮想環境を作成して、そこに色々インストールしていくらしい。最終的には 4.7GB ぐらいになった。
_邪魔な部分を簡単除去 - Lama Cleaner|るぺったん
git と Python 3.10 が必要らしい。自分の環境は以下を入れていた。
> git --version git version 2.45.1.windows.1 > python --version Python 3.10.10
インストールと起動を容易にするためのbatファイルが公開されていたので利用させてもらうことにした。ありがたや。
_SdWebUiTutorial/LamaCleaner.bat at main - Zuntan03/SdWebUiTutorial
LamaCleaner.bat を入手。DOS窓を開いて、LamaCleaner.bat を実行。今回は、C:\aiwork\lama-cleaner\ を作成して、その中に入れた。
やってることは、カレントディレクトリ内にToolディレクトリを作成して、中に Python の仮想環境を作成して、そこに色々インストールしていくらしい。最終的には 4.7GB ぐらいになった。
◎ NumPyでエラーが出る :
インストールできたように見えたのだけど、LamaCleaner.bat を実行すると、以下のエラーが出て使えない。
NumPy 1.x用のモジュールは、2.x で使えない、と言ってきてるっぽい。ググってみたら、2024/06 に NumPy 2.0.0 が公開されたようで…。
解決策をググったら、以下のページに遭遇。
_Python で numpy を使おうとして使えない場合の対処策(Windows 上)
Python の仮想環境に入って、NumPy を一度アンインストールしてから、バージョンを指定して再インストールすればいいのかな。2024/06/029現在の、NumPy 1.x の最終バージョンは 1.26.4 らしいので、ひとまずそのバージョンをインストールしてみることにする。
仮想環境に入る。
pipでアンインストールと再インストールをする。
仮想環境から抜ける。
これでエラーが出ないようになった。
A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.0 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0. Some module may need to rebuild instead e.g. with 'pybind11>=2.12'. If you are a user of the module, the easiest solution will be to downgrade to 'numpy<2' or try to upgrade the affected module. We expect that some modules will need time to support NumPy 2.
NumPy 1.x用のモジュールは、2.x で使えない、と言ってきてるっぽい。ググってみたら、2024/06 に NumPy 2.0.0 が公開されたようで…。
解決策をググったら、以下のページに遭遇。
_Python で numpy を使おうとして使えない場合の対処策(Windows 上)
Python の仮想環境に入って、NumPy を一度アンインストールしてから、バージョンを指定して再インストールすればいいのかな。2024/06/029現在の、NumPy 1.x の最終バージョンは 1.26.4 らしいので、ひとまずそのバージョンをインストールしてみることにする。
仮想環境に入る。
cd Tool\lama-cleaner venv\Scripts\activate
pipでアンインストールと再インストールをする。
python -m pip list python -m pip uninstall numpy python -m pip install numpy==1.26.4
仮想環境から抜ける。
deactivate
これでエラーが出ないようになった。
◎ 実行してみる :
LamaCleaner.bat を実行すると、以下のメッセージが表示される。
デフォルトで、ブラウザを起動して件のURLを開いてくれるようではあるけれど、最初のアクセス時は、まだ色々準備ができてないのにブラウザがアクセスしてしまうようで、「アクセスできない」と言ってくる。DOS窓上で「Press CTRL+C to quit」が表示された後、ブラウザの更新ボタンを押して再読み込みすればアクセスできる。
適当な画像をドラッグアンドドロップして、ロゴを消す処理をしてみたけれど、AMD Ryzen 5 5600X + NVIDIA GeForce GTX 1060 6GB の環境では、数秒で処理が終わってくれた。
http://localhost:7859/ - Platform: Windows-10-10.0.19045-SP0 - Python version: 3.10.10 - torch: 1.13.1+cu117 - torchvision: 0.14.1+cu117 - Pillow: 10.3.0 - diffusers: 0.16.1 - transformers: 4.27.4 - opencv-python: 4.10.0.84 - xformers: N/A - accelerate: N/A - lama-cleaner: 1.2.5 - rembg: N/A - realesrgan: N/A - gfpgan: N/A 2024-06-29 03:13:06.485 | INFO | lama_cleaner.helper:load_jit_model:102 - Loading model from: C:\Users\USERNAME\.cache\torch\hub\checkpoints\big-lama.pt Running on http://127.0.0.1:7859 Press CTRL+C to quit
- Webブラウザで、http://localhost:7859/ にアクセスすれば、Lama-Cleanerを利用できる画面が表示される。
- 終了は、DOS窓上で Ctrl + C でいいらしい。
デフォルトで、ブラウザを起動して件のURLを開いてくれるようではあるけれど、最初のアクセス時は、まだ色々準備ができてないのにブラウザがアクセスしてしまうようで、「アクセスできない」と言ってくる。DOS窓上で「Press CTRL+C to quit」が表示された後、ブラウザの更新ボタンを押して再読み込みすればアクセスできる。
適当な画像をドラッグアンドドロップして、ロゴを消す処理をしてみたけれど、AMD Ryzen 5 5600X + NVIDIA GeForce GTX 1060 6GB の環境では、数秒で処理が終わってくれた。
◎ Stable Diffusion web UIのファイルを使う方法もあるらしい :
Stable Diffusion web UIのPython仮想環境に、lama-cleaner をインストールしてしまうことで、ファイルを重複させずに済む方法もあるらしい。以下で解説されていた。
_Lama-CleanerをSD A1111に統合してインストールする方法について - Qiita
_Lama-CleanerをSD A1111に統合してインストールする方法について - Qiita
◎ Stable Diffusion web UIの拡張としてインストールしてみた :
Stable Diffusion web UIの拡張機能として、Lama Cleaner をインストールする方法もあるらしい。試してみた。
_Lama-cleanerをWebUIの機能拡張タブに追加する|juno
_aka7774/sd_lama_cleaner: Lama Cleaner 1111 Extension for Windows
Extensions タブの、Install from URL を選んで、以下を入力してインストール。
インストール後、Stable Diffusion web UI を再起動すると、「LamaCleaner」というタブが増えている。クリックして選択。
初回時は、「Install / Update」をクリックして、仮想環境のPythonに対して lama-cleaner モジュールをインストールしないといけない。失敗する時があるらしいので、何度か挑戦。Stable Diffusion web UI を再起動。
次回からは、「Start」を押せばDOS窓が開いて、Lama Cleaner が待ち受け状態になるはずなのだけど、「venv/Scripts/lama-cleanerが見つからない」とエラーを出してきた。
自分の環境では、以下の場所に Stable Diffusion web UI をインストールしてあるので…。
lama-cleaner.exe は以下の場所にあった。
Stable Diffusion web UI の画面の、LamaCleanerタブの中に、「Start Command」という欄があるので、前述のパスで一部修正。
これで、「Start」をクリックするとDOS窓が開いて、Lama Cleaner が待ち受け状態になった。下の「Open」をクリックすれば、Lama Cleaner を操作するための領域がWebブラウザ上で表示される。
さて、この Start Command の指定を永続化したいのだけど…。以下のファイルに、設定した内容は残っているようではある。
webui\extensions\sd_lama_cleaner\scripts\lama_cleaner_tab.py を眺めた感じでは、start_cmd.txt がある場合は、そちらを参照してコマンド文字列を取得しているように見えるのだけど…。関数 get_start_command() 内で読み込んでるように見える。
しかし、いくら試しても、Webブラウザ(Google Chrome, Firefox)上では反映されない…。おかしい。
lama_cleaner_tab.py を書き換えて、Webブラウザ上でのウィジェット(?)の並びが変化することは確認できたし、print() を入れまくって、こちらが指定したい文字列を読み込んでいることも確認できた。しかし、Start Command の入力欄の文字列は、ずっと変わらない…。何故。
何度も何度も、lama_cleaner_tab.py を書き換えて動作確認してみたり、Webブラウザ上のUIを再起動してみたりしているうちに、何かの拍子に件の入力欄が書き換わってくれた。ただ、何が絡んでいて更新されたのか分からない…。
_Lama-cleanerをWebUIの機能拡張タブに追加する|juno
_aka7774/sd_lama_cleaner: Lama Cleaner 1111 Extension for Windows
Extensions タブの、Install from URL を選んで、以下を入力してインストール。
https://github.com/aka7774/sd_lama_cleaner.git
インストール後、Stable Diffusion web UI を再起動すると、「LamaCleaner」というタブが増えている。クリックして選択。
初回時は、「Install / Update」をクリックして、仮想環境のPythonに対して lama-cleaner モジュールをインストールしないといけない。失敗する時があるらしいので、何度か挑戦。Stable Diffusion web UI を再起動。
次回からは、「Start」を押せばDOS窓が開いて、Lama Cleaner が待ち受け状態になるはずなのだけど、「venv/Scripts/lama-cleanerが見つからない」とエラーを出してきた。
自分の環境では、以下の場所に Stable Diffusion web UI をインストールしてあるので…。
C:\aiwork\stable-diffusion-webui-forge\webui_forge_cu121_torch21\
lama-cleaner.exe は以下の場所にあった。
C:\aiwork\stable-diffusion-webui-forge\webui_forge_cu121_torch21\system\python\Scripts\lama-cleaner.exe
Stable Diffusion web UI の画面の、LamaCleanerタブの中に、「Start Command」という欄があるので、前述のパスで一部修正。
# CPUを使う場合。--device=cpu を指定。 start C:/aiwork/stable-diffusion-webui-forge/webui_forge_cu121_torch21/system/python/Scripts/lama-cleaner.exe --model=lama --device=cpu --port=7870 # NVIDIA製GPUを使う場合。--device=cuda を指定。 start C:/aiwork/stable-diffusion-webui-forge/webui_forge_cu121_torch21/system/python/Scripts/lama-cleaner.exe --model=lama --device=cuda --port=7870
これで、「Start」をクリックするとDOS窓が開いて、Lama Cleaner が待ち受け状態になった。下の「Open」をクリックすれば、Lama Cleaner を操作するための領域がWebブラウザ上で表示される。
さて、この Start Command の指定を永続化したいのだけど…。以下のファイルに、設定した内容は残っているようではある。
(Stable Diffusion web UIインストールフォルダ)\webui\extensions\sd_lama_cleaner\start_cmd.txt
webui\extensions\sd_lama_cleaner\scripts\lama_cleaner_tab.py を眺めた感じでは、start_cmd.txt がある場合は、そちらを参照してコマンド文字列を取得しているように見えるのだけど…。関数 get_start_command() 内で読み込んでるように見える。
しかし、いくら試しても、Webブラウザ(Google Chrome, Firefox)上では反映されない…。おかしい。
lama_cleaner_tab.py を書き換えて、Webブラウザ上でのウィジェット(?)の並びが変化することは確認できたし、print() を入れまくって、こちらが指定したい文字列を読み込んでいることも確認できた。しかし、Start Command の入力欄の文字列は、ずっと変わらない…。何故。
何度も何度も、lama_cleaner_tab.py を書き換えて動作確認してみたり、Webブラウザ上のUIを再起動してみたりしているうちに、何かの拍子に件の入力欄が書き換わってくれた。ただ、何が絡んでいて更新されたのか分からない…。
[ ツッコむ ]
以上です。