セーブポイント

特にジャンルの決まってない雑記です。

Lama Cleanerでローカルで消しゴムマジックをしてBB素材を作ろう

Lama Cleanerというローカルで簡単に画像から物体を取り除く編集ができるツールが便利なので紹介します。

github.com

必要なもの

インストール方法

まず適当な場所にLama Cleaner用の仮想環境をvenvで作ります。

$ python -m venv venv
$ cd venv
$ ./venv/Scripts/activate

別に必ずしも環境を分けなくてもいいですが、一応。

CUDAに対応しているGPUを持っていてそれをLama Cleanerで利用したい場合は、先にPyTorchを今作成した環境内にインストールしておきます。

$ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

公式のドキュメントではPyTorch 1.13.1が利用されているのですが、2.0.1でも問題なく動作していそうなのでこれでいいと思います。(手元で確認済み)

あとは、Lama Cleaner本体をpipでインストールするだけです。

$ pip install -U lama-cleaner

xFormersによる高速化

Lama CleanerではxFormersによる最適化を利用することができます。Lama Cleanerの動作自体かなり高速なのですが、対応しているGPUを持っているなら使っておくとよいでしょう。
先程作成した環境に以下でインストールすればOKです。

$ pip install -U xformers

Lama Cleanerを起動する際に起動オプションに --enable-xformers を追加してください

How to 起動

以下のコマンドで起動できます。(CUDA対応GPUを使う場合)
Windowsなら適当にバッチファイルとか書いておくと起動するのに便利です。

$ lama-cleaner --model=lama --device=cuda --port=8080

もしGTX 16xx系のGPUを使っている場合、起動オプションに追加で--no-halfが必要かもしれません*1。出力がいつも真っ黒の画像などになるときはこの設定をしてください。

初回起動時、自動で使用するモデルのダウンロードが開始されます。デフォルトでは~/.cacheWindowsの場合、%UserProfile%/.cache)以下に保存されるようになっているのですが、ユーザー名に日本語が入っていたりするとエラーが出ます(もしかしたら今は修正済みかも)。

エラーが出る場合、起動オプションに--model-dir=[適当なパス]を追加して自分でモデルのチェックポイントの保存先を指定してください。


Lama Cleanerを起動すると、ターミナル上に以下のような出力がされると思います。自分の環境では既にAnimeSegのプラグインが入っているので若干出力が異なると思いますが、ターミナル上にRunning on http://127.0.0.1:[port]の文言が出ていたら問題ありません。

起動時のターミナル画面

さっき起動オプションで指定したポートに対応するリンクが表示されていると思いますので、そこにアクセスします。

Lama CleanerのGUI

図のようなページが開けていれば、正しくLama Cleanerが動作しています。あとは、画面中央に画像をドラッグ&ドロップで簡単に使い始めることができます。

設定

Lama Cleanerのページを開いて右上の歯車ボタンを押すと細かい設定ができます。この中から、Manual Inpainting Modeをオンにしておくのが個人的にはオススメです。

実際に使ってみる

Lama Cleanerですが、リアルな画像の修正にもイラストの修正にも利用できます。

とりあえずこのフワちゃんを消してみます。

https://twitter.com/fuwa876/status/1643973999502970881?s=20

消したい部分をブラシでなぞって、

下のメニューバーの一番右にある消しゴムボタンを押します。

消しゴムマジックで消してやるのさ

消えました。

なんか霊圧は残ってますが割と自然だと思います。加工した画像はメニューバーの保存マークを押すことでダウンロードできます。

自動で背景除去をする

Lama Cleaner自体は画像から物を消すという編集ができるツールなのですが、他のツールをプラグインとして一緒に使うことができたりします。

ここで、Anime Segmentationを紹介したいと思います。

github.com

これは、イラストからキャラクターの切り抜きを自動化してくれるもので、精度もかなり高くて個人的に評価高めのツールです。これをLama Cleanerの中で利用することができます。

Lama Cleaner内でAnimeSegを利用するには、起動オプションに--enable-anime-segを追加するだけでよいです。必要なモデルは同様に勝手にダウンロードしてくれます。

AnimeSegの使い方は簡単で、画像を読み込んだら左上の方にあるプレステのボタンマークみたいなのを押すとAnimeSegが選べるようになっています。

これ

「AnimeSeg」を押すと、後は自動で背景を消してくれます。

これが

こんな感じ かわいいね

このケースでは若干背景が残っていますが、あとは自分でなんとかなるレベルかなと。とりあえずさっと背景消したいときには良いと思います。

以上、Lama Cleanerの紹介でした。

*1:半精度の演算に対応していないため