余計な部分を消しゴムマジック!LamaCleanerでできる「修正」と「粗密」 (Pixiv Fanbox)
Content
こんばんは、スタジオ真榊です。世間がAdobeの画像生成AI機能「ジェネレーティブ塗りつぶし」に揺れている中、今夜は「消し」に特化したインペイントツール「LamaCleaner」についての検証記事をお伝えします。というのも、ジェネレーティブ塗りつぶしについて検証を行っていくに当たって、その前にどうしても触れておかざるを得ないツールだからなんですね。
「LamaCleaner」は、画像の中に映り込んだ余計なものをマスクすると違和感なく消してくれる「消しゴムマジックで消してやるのさ」的なツール。やろうと思えばSDwebUIのinpaint機能でも似たことができるわけですが、スピードや手軽さが段違いで、非常にスムーズに「消し」や「なじませ」ができます。一方で、今話題の「ジェネレーティブ塗りつぶし」は「消し」だけでなく「足し」もできるツール。普段の画像生成にそれぞれどのように活かせるか、前後編に分けて見ていきたいと思います。
LamaCleanerのインストール方法
LamacleanerはSDwebUI用の拡張機能ではなく、独立したインペイントツールです。約4.56GBの容量を必要とするため、インストール前に十分な空きがあるか調べておきましょう。
こちらで有償のワンクリックインストーラが配布されているほか、知識のある方はpipコマンドでインストールすることができます。ちなみに、Zuntanさん(@Zuntan03)が配布してくださっているインストーラを使うと非常に楽に導入できるので、特にこだわりのない方はこちらがおすすめです。
こちら(▲)を右クリック+「名前をつけてリンク先を保存」でLamaCleaner.batをダウンロードし、ダブルクリックで起動します。(起動した場所に『Tool』フォルダができ、インストールされます)
こちらの警告メッセージが出た場合は、「詳細情報」をクリック。
「実行」ボタンが押せるようになるので、クリックすればインストールが始まります。
インストール中のコマンドプロンプト画面はこんな感じ。SDwebUIの初回起動に比べればそんなに時間を掛けずにインストールが終わり、ブラウザで起動画面が立ち上がります。
ブラウザ上でいったんこのようなエラー画面が表示されますが、コマンドプロンプト画面ではインストールが継続していますので、慌てずに待ちましょう。
無事読み込みが終わると、ブラウザ上のエラー画面がこのようなツール画面に変化すると思います。次回からは同じように「LamaCleaner.bat」から起動すれば、この画面が立ち上がるので覚えておきましょう。
Lamacleanerの使い方
とにかくシンプルな使い勝手です。左上のボタンかドラッグアンドドロップ、またはCtrl+Vで画像を読み込ませたら、あとは画面上でマスクするだけで余計なものを消すことができます。
例えばこちらのメイドさんのイラスト。
足元をよく見ると足が3本できてしまっていますが、このようにドラッグして黄色いマスクを掛けると、しばらくキャンバスが明滅し…
わずか5秒ほどでこのように消すことができます。
余計な床の映り込みや右下のゴミも、さっと撫でるだけでこの通り。とにかくレタッチしやすくスピードも早いので、非常に満足度の高いUIとなっています。ちなみに、下のボタンにはそれぞれこんな機能があります。
【注意するポイント】
・LamaCleanerで修正した画像には、SDwebUIで生成した元画像のメタデータが含まれていません。プロンプトやSeed値などがわからなくなってしまうので、修正前の画像もちゃんととっておきましょう。
・デフォルトでは1回のストロークごとに自動で「消し」が発動してしまいますが、Ctrlキーを押しながらマスクすれば、複数ストロークで消す範囲を指定することもできます。
これは、両手の余計な指や中途半端に生成されたバッグを消してみたケース。右下のように広い範囲を消すと上手に背景と馴染ませられず、ぼやけてしまうことがありますが、指程度の細かな修正であれば非常に簡単に「消し」を入れてくれます。
修正を複数回繰り返すことでぼやけた部分がうまく処理されることもありますが、そこは運任せ。やればやるほど悪化することももちろんあります。大きいものを消したいのにうまくいかないときは、一度に全部消すのではなく、「一部を選択して消す」を繰り返してじわじわ攻めていくとうまくいくこともありました。
ちなみに、上の画像では左下に映り込んだ女の子も消そうと試みましたが、範囲が広すぎて何度やっても失敗。修正範囲が狭い場合や背景が単純な場合は消しやすいですが、その逆は得意ではないようです。
ショートカットキーと設定
「H」キーか、ツール画面右上のキーボードのようなボタンを押すと、ショートカットキーの一覧が表示されます。基本的に画面上のUIで完結できるので、一つ一つ覚える必要はないでしょう。便利なのは、スペースキーを押すとキャンバスをドラッグして好きな位置に移動できるようになることと、マウスホイールでキャンバスの拡大縮小ができることくらいでしょうか。
「S」キーか、ツール画面右上のボタンから設定(Settings)画面を開くこともできます。
「Manual Inpainting Mode」をオンにすると、1ストロークごとに「消し」が発動しなくなります。代わりにメニューの右端に消しゴムボタンが現れるので、マスクをしおわったらこのボタンを押すと「消し」が発動する仕様になります。
ただ、4箇所も5箇所も同時マスクして修正すると、うち何点かがうまくいかなかったときにやり直しがしづらいので、一度に消すのは一つの部分にしておきましょう。あくまで一つの被写体を複数ストロークで消すための機能です。
「Model」では、余計なものを消すときの学習モデルを変更することができます。デフォルトでは「Lama」になっていますが、他のモデルを選ぶこともできるようになっており、「消し」の効果がそれぞれ変化します。
例えば、「ldm」はlamaよりも動作が重く、より多くの GPU メモリを必要とするものの、より高品質な背景推測・修正をしてくれるモデル。「zits」はさきほどのバッグを消したときのようなぼやけが生じにくく、周囲から背景を推測して「lama」よりもより優良な結果を出してくれるモデルとのこと。それぞれの学習モデルを選ぶと、自動で必要なモデルをDLしてくれます。
ちなみに、sd1.5やanything4といったおなじみのモデルを選べば、sdwebUI上のインペイントのように、マスクした部分を別の被写体に置き換えることもできます。ただ、これらは学習モデルを自分で用意する必要がある上、コマンド指示でLama Cleanerにロードする必要があるので、少々面倒です。
ちなみに公式では、例のベンチの犬を狐に入れ替えるデモを見ることができます。
このように画面上部にプロンプトを入れ、「Dream」ボタンでマスク部分を入れ替えることが可能とのこと。
他にも、pix2pix機能を使って「髪の色を黒くして」などと指示する機能もあるようですが、無理してlamacleaner上でやるより、sdwebuiでやった方が手っ取り早いと思いますので、「置き換え機能」についてはこの記事では割愛します。
「Strategy」
設定画面では、「消し」を掛けるときにスピード重視か、品質重視かを選択することもできます。「オリジナル」が最も品質がよいかわりに遅く、デフォルトの「クロップ」が最も早いです。(※下の自動翻訳では『作物』になっているところがクロップ)
実践的な使い方
さて、基本が分かったところで、実践的には何に使えるの?という部分を検証していきます。
こちらの失敗イラストをLamaCleanerで修正してみましょう。
まずは一番目立つ謎の手の映り込みをマスクして、
消します。まだ不自然な影や肘のにじみがあるので、もう一度マスクして…
このように消すことができました。
さらに、このイラストを初めて見た人の気持ちになって、「余計なもの」を考えていきます。一見して分かるほどの破綻ではなくても、よく考えるとわけわからんものがAIイラストにはたくさん潜んでいます。
そもそもこんなに変なところだらけのイラストを採用しなければいいのですが、実験なのでそれはそれ。これらをLamaCleanerで修正するならこのような感じになります。
SDwebUIでこれらを一つ一つ直していたら日が暮れますが、LamaCleanerを使えば5分程度でこうした任意の箇所の修正ができるので、大変ありがたい!ただ、右下の「水没しているのをなかったことにする」ようなことは、「消す」というよりも「地面を描き足す」作業になるので、LamaCleanerでは上手にできません。
こういう部分はこのように、画像編集ソフトでよその地面をコピペして持ってきまして…(※左下の芝生を右下にコピペして、適当に端をけずっただけです)
i2iでアップスケールすれば多少ましになります。
このように、LamaCleanerのよいところはスピーディかつ要求どおりに余計なものを消してくれるところですが、さすがに一発で完成品レベルに馴染ませてはくれず、どうしても修正箇所ににじみやボケが出てしまいます。そこで、ポン出しした低解像度の段階でおおざっぱに「消し」を掛けてしまい、アップスケールによって不自然な部分を強制的に馴染ませてしまうのがおすすめです。
こちらの画像は、元画像(左)に映り込んだ余計な物体を削ったあと、Controlnetの「Tile」でアップスケールしたもの(右)。背景がシンプルなだけに、いい感じに馴染ませられますね。
LamaCleanerは「余計な指や四肢を消す」「余計な物体やゴミ、影を消す」「描き込まれすぎた詳細(シワなど)をほどよく馴染ませる」といった作業が非常に得意で、多少ぼやけが残っていても、うまくアップスケールすれば自然にすることができます。
一方、もともとない物体を描き込んだり、広範囲に及ぶ物体を消したり、複雑な構造の背景に馴染ませたりするのは苦手。そうした修正をしたい場合は、従来どおり画像編集ソフトによる加筆やinpaintと組み合わせた方が早いです。あくまで「i2i元を作る感覚」でささっと余計なものを消してあげる程度に使うのが、もっともスマートなLamaCleanerの利用法かなと思います。
余計なものを排除して「メッセージ性」を高める
さて、AIイラストの弱点としてよく言われるのが「手書きと違って創作者の意図(メッセージ性)を100%込めるのが難しい」ということです。Controlnetの登場でかなり思い通りの構図や描写が出せるようになったとはいえ、AIイラストはやはりある程度偶然性に頼った画作りにならざるを得ません。そのため、意図しない物体が映り込んでしまったり、視線誘導がうまくできなかったりして、伝えたいメッセージや魅せたいポイントが伝わりにくくなってしまうのですね。
例えばこのイラストでは、メインのモチーフであるリンゴのみずみずしさや女の子のかわいさ、そして女の子が見つめている「自分」との関係性をアピールしたいのが「主」。背景の美しさやインテリアの精密さは「従」の関係のはずです。しかし、手の破綻や空中浮遊するリンゴ、どういう位置関係かよくわからないインテリアや室内に茂る葉っぱ、だまし絵のような灯りといった破綻がそれらを押しつぶしてしまって、「いかにもAIイラスト」という感じの印象しか残りません。
見た人が「この女の子はどうしてこんな表情をしているのかな?」とか、「リンゴを持っている理由は何なのかな?」「どうしておめかししているのかな?」「どんな状況なのかな?」といった疑問を覚えても、キャンバスの中にはその答えが一切ありません。「ああ、偶然の産物だもんね」と片付けられて、じっくり見る価値のない画像になってしまっているのですね。
さきほどの川のイラストのように、見た人に雑念を生じさせてしまう部分をサクサクと消してアップスケールするだけでも、意図をより明確にすることができるはず。そういう意味でも、LamaCleanerはAIイラストを作る上で新しい武器になりうるツールと言えると思います。
AIイラストにおける視線誘導
さて、イラストのメッセージ性に加えて、最近気になっているのが「視線誘導」の要素です。
イラストや写真においては、例えば「粗密」を意図的に作ることで、注目させたい部分を目立たせることができます。人は要素が集中している「密」の部分、もしくは要素が拡散している「粗」の部分に目をやりやすいと言われており、それも、「全体が密の場合は粗の方へ、全体が粗の比率が高いときは密の方へ」人は視線を誘導されるというのです。
(▲粗密による視線誘導の例)
例えば人体や建物は要素が集まっているため「密」になりやすく、目を引きやすいとか、
背景にこうした放射状の線があると中心点(この場合はバニーちゃんの顔)に視線が集まりやすいとか言われます。人体の中でも、髪や衣装、瞳などは密になりやすく、肌は粗になりやすいそうです。
「粗密」とは関係ありませんが、明暗の対比、もしくは彩度の低い部分と鮮やかな部分を作ることで視線誘導する方法もあります。
これは画像編集ソフトでイラストの彩度を全体に落としてから、視線を集めたい部分を強調して視線誘導の意図を明確化した例(右)です。まずはメイン被写体に目が行くことが多いので、瞳周辺に目を引いてから、目に一番近い髪飾りの花→リボンに沿って右下の緑へ→緑から反対色のリンゴへ…と視線誘導して、最後に金色の飾り部分や写真立て周辺を見てくれたらな、という意図を彩度調整を使ってやってみました。
ちなみにこのイラスト、左手が2本になっているのにTwitterでご指摘いただくまで全く気づかず、あとで消しゴムマジックしてやりました。ありがとうLamaCleaner!
LamaCleanerで粗密を作れるか
さて、画像生成AIは教師データから優れたイラストの構図を学んでいるので、特に構図を指定しなくてもちゃんとそれらしい構図を作ってくれます。例えば「fisheye lens」(魚眼レンズ風)などとプロンプトで指定することもできて、一見破綻のない構図を作ることが可能。ですが、「粗密」についてはあまり意図した画作りをしてくれるわけではないのでは?というのが最近気になっているポイントです。
こちらの解説が非常~に勉強になるのですが、イラストレーターさんは本当にさまざまな意図を込めてカラーリングや構図などを詰めています。さすがに私のような素人にはここまでの工夫はできませんが、LamaCleanerを使って「いらない密部分」を取り除いていくことで、より高品質なイラストが作れるのではないか…というのが最近考えていることです。
特に「Tile」はあらゆる部分の低劣な詳細を捨てて、新しい詳細を描き込みまくる機能ですから、全体の「密」度が上がりがちです。なんでもかんでもTileアップスケールすればよいというのではなくて、特に魅せたい部分ではないところにはあえて「粗」を作ってあげるのがAIイラスト術のネクストステップになるのではないでしょうか。
私も勉強中の身なので「御覧ください、これがそのお手本です!」とお出しできないのが残念ですが、やろうとしているのはこういうことで…
Tileはなんでもかんでも情報を詰め込んで密にしてしまうきらいがあり、よく見ると密すぎて人体に見えない部分も出てきている(髪がビニールみたいに見える)のでそもそも修正が必要なんですが、LamaCleanerや人力マージを上手に使って不要な要素を減らしてあげると、単にクォリティの修正にとどまらない粗密の操作ができるのではないだろうかと思います。
これはわかりやすく顔周辺に目が行くようにしたのですが、月と集中線(放射線ぼかし)がわざとらしすぎてうまくいかなかった例です。月が見切れるC構図と組み合わせて、密な都市部分をわざとぼかして「粗」にしてみましたが、そう素人考えはうまくいかないようです。ものの本によると、わざとらしくキャンバスの一点に視線を集中させすぎたイラストは、そこで目が止まってしまって、キャンバス全体を眺め回してもらえないんだとか。
確かに、このイラストだとぼかすくらいならサイバー都市の書き込みをしっかり観てもらいたいような気もします。このイラストで粗密を作るなら、夜空を「粗」にするとか、さきほどのリンゴのイラストのように視線誘導するモチーフを作るとかが必要なのかもしれません。
いまのところなかなか「これだ!」という粗密を現出できていないのですが、全部が密すぎてメリハリがないと感じている方が私以外にももしいらっしゃったら、LamaCleanerをうまく使うのが解決の一歩になりそうだと感じています。また、AIが増やした意図のない被写体を消してあげることで、「ん?なんでこれをここに描くんだ?何か意味があるのかな?」と雑念を呼ばないような画面構成もできるはず。
ここまで来るとセンスの話になってくるのですが、ツールが充実してきたことで以前は気軽にできなかった工夫がどんどんできるようになってきているので、「しょせんAIが偶然生み出したイラスト」と言われない意図のある創作ができたらな、と日々苦心しています。
そんなわけで、余計な部分を消しゴムマジック!LamaCleanerでできる「修正」と「粗密」でした。次回はジェネレーティブ塗りつぶしとの兼ね合いについて実験できたらと思います。再見!