AIで画像を透過して出力する方法

AIで画像を透過して出力する方法 AI/Stable Diffusion

クリスマスで使った人物絵が構図や表情も上手く描けたので、バレンタインやお花見でも使用したい。

でも改めて画像生成すると、うまく同じ画像にならない。ということはよく起こります。

そう言った時にキャラクターだけ抽出して透過画像にしてしまえたら、後から自分の好きな背景に組み合わせることができて楽だと思いませんか?

今回はそんな悩みを解決するために、背景を透過してキャラクターだけを描く方法を3パターン紹介したいと思います。

結果

・生成時には「ABG Remover」を使用

・出来上がった画像もしくはすでに持っている画像に対しては「rembg」を使用

・人間以外にもSDキャラや空想上の生物でも可能

・透過した絵を他と組み合わせることでより良い画像を簡単に作成可能

この記事を読むと

背景を透過して、キャラクターだけの画像を生成することが出来るようになります。

※記事内に広告が含まれています。

透過する3パターンの方法

透過の方法は3パターンあります。

「ABG Remover」と「sd_katanuki」は作成時に使用する方法です。

「rembg」は作成した画像に対して、出力した後に加工する方法になります。

方法使用タイミングその他
ABG Remover作成時背景の色を自由に変更可能
rembg出力した後背景との境を閾値で決定可能
sd_katanuki作成時シルエットのみ抜き出し可能

インストール

作りたい画像によって効果が変わるので3パターンともインストールしておくことをお勧めします。

1.「Extensions」タブから「Install from URL」を開きます。

2.「URL for extension’s git repository」に各機能のURLを記載し、「Install」ボタンを押します。

各URLは下記になります。

ABG Remover

https://github.com/KutsuyaYuki/ABG_extension

rembg

https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg.git

sd_katanuki

https://github.com/aka7774/sd_katanuki

3.「Installed」タブで「Apply and restart UI」 ボタンをクリックして適用して再起動します。

この時に各機能が含まれていることを確認してください。

【検証】実際に透過してみた

基準として作成した画像に対して、3パターンそれぞれで透過して結果を比較してみます。

基準画像の出力

下記のような女の子の画像を出力して、変化を確認してみます。

背景が上手く切り取れているか確認するために、髪の毛をロングにしてあります。

使用するプロンプトはこちらを使用しました。

プロンプト

upper body,
(best quality, masterpiece, 16k, ultra detailed, beautiful skin, professional lighting),
beautifully painted, 1 girl, young,20 years old, long hair, (beautiful gold hair:1.1), shiny hair, dark blue eyes, light smile, white skin

ネガティブプロンプト

flat color, flat shading, nsfw, retro style, poor quality, bad face, big breast,
big chest, bad fingers, bad anatomy, missing fingers, low res, cropped, signature,
watermark

出力結果 ABG Remover

ABG Removerでは生成時に設定することで、透過した画像を同時に出力します。

パラメータ紹介
パラメータ内容
Only save background free pictures元イラストと切り抜いた深度画(白黒)の表示と保存がされなくなります。
Do not auto save自動で保存されなくなります。
Custom Background切り抜いた画像に、「Background Color」の色の背景を追加します。
Background Color色を設定します。
Random Custom Background切り抜いた画像に、ランダムで色の背景を追加します。
出力結果

基本的な透過は出来ていますが、髪と髪の間などが上手く透過出来ていませんでした。

通常

ABG Remover

パラメータ違いによる出力結果

「Custom Background」のチェックを入れて、「Background Color」を青に設定します。

結果:背景が青で出力されました。

 

出力結果 rembg

rembgは、ABG Removerのように生成時の設定するのではなく、一度絵として出力した後に加工する方法になります。

txt2imgで画像生成後、「Send to extras」を押します。

「Remove background」という項目をクリックして、その中にある「Remove background」に「u2net」を選択します。

選択した状態で、Generateを押すと透過した画像が出力されます。

パラメータ紹介
パラメータ内容
Remove backgroundどの方法で透過するかを設定します。
基本的には「u2net」を選んでください。
Return mask深度画が生成されます。
Alpha mattingチェックを入れることで以下の細かい設定を行うことが出来ます。
Erode size値が小さすぎると対象と背景が分離されずに上手く透過されず、大きいと余計な部分まで透過されてしまいます。
Foreground threshold閾値がこの値以上のピクセルに対しては、対象として透過しないようにします。
Background threshold閾値がこの値以下のピクセルに対しては、背景として透過します。
出力結果

基本的な透過は出来ていますが、髪の毛等がデフォルト閾値だと一部背景として認識されています。

通常

rembg

パラメータ違いによる出力結果
Remove background

この画像では「u2net」と「silueta」以外では、体の部分まで背景として認識されていました。

u2net

u2net_human_seg

isnet-general-use

isnet-general-use

silueta

isnet-anime

u2netp

u2net_cloth_seg

画像に alt 属性が指定されていません。ファイル名: image-152-228x1024.png

Erode size

値を大きくすることで、髪の毛が対象として認識されています。

1

10(デフォルト値)

30

Foreground threshold

値を小さくすることで、背景の割合が多くなっています。

10

150

240(デフォルト値)

Background threshold

値を大きくすることで、背景と認識されて消されている部分が多くなっています。

10(デフォルト値)

100

240

出力結果 sd_katanuki

sd_katanukiでは生成時に設定することで、透過した画像を同時に出力します。

パラメータ紹介
パラメータ内容
Transparentチェックを入れると背景を透過した画像を出力します。
Whiteチェックを入れると背景を白くした画像を出力します。
Maskチェックを入れると深度画(白黒)を出力します。
Use FP32(for 16X0)使用しているグラフィックボードがRTX16X0の場合にチェックを入れます。
Alt mode白背景にした時などに上手く透過されず逆に破綻した画像になることがあります。その場合にチェックを外してください。
出力結果

通常

sd_katanuki

パラメータ違いによる出力結果

「Mask」にチェックを入れて、深度画を出力します。

3パターンの比較

3つを見比べてみるとデフォルト設定では、ABG Removerが一番きれいに背景を透過出来ています

しかし「rembg」では閾値を変えることで、対象と背景の境を変更できるので、値によってはABG Removerより上手く透過出来る可能性もあります。

そのため、画像生成時には「ABG Remover」を使用して、出来上がった画像もしくはすでに持っている画像に対しては「rembg」を使用することをお勧めします。

ABG Remover

rembg

sd_katanuki

人以外を透過して出力

人以外の画像も上手く抽出できるのかを確認していきます。

SDキャラ

透過方法:rembg

結果:SDキャラでも無事に認識されて透過出来ました。

ただし髪の毛の間などは、SDに関係なく上手く認識で来ていないので、ここに関しては手作業での修正が必要になりそうです。

通常

透過後

ドラゴン

透過方法:rembg

結果:人以外でも無事に認識されて透過出来ました。

しかし造形が細かいものだと、切り抜きが難しいようです。

通常

透過後

背景画像との合成

SDキャラとフリー素材(今回は静流作)を組み合わせてみます。

ここに文字を追加すれば、簡単にサムネが出来上がりますね。

また以前作った写真⇒絵とした画像に、上記のドラゴンを追加してみます。

追加する絵は下記の雪山の画像を使います。

ここにドラゴンを追加します。

空にいるドラゴンから、雪山にいるドラゴンに変化しました。

自分が撮った写真から作った絵に、空想の生き物を追加するのもとても楽しいですよね♪

写真から絵にする方法については下記を参考にしてください。

まとめ

今回は「ABG Remover」「rembg」「sd_katanuki」と言う3つ方法で、キャラクターだけ抽出して透過画像にする方法について紹介しました。

改めて4行でまとめると…

・生成時には「ABG Remover」を使用

・出来上がった画像もしくはすでに持っている画像に対しては「rembg」を使用

・人間以外にもSDキャラや空想上の生物でも可能

・透過した絵を他と組み合わせることでより良い画像を簡単に作成可能

フリー素材にStableDiffusionで描いたキャラクターを合わせて一枚のアイコンやヘッダーにしたい。

でもそのためには、描いたキャラの背景を別ソフトで削除したり、ペイントで消したりととても大変です。

そんな時でも、今回紹介した透過する方法を用いれば、簡単に透過することができます。

ぜひ透過したキャラクターをたくさん作成して、ほかの背景と組み合わせて素晴らしい絵をたくさん作ってみてください!!

StableDiffusionにお勧めのグラボ

ここまでの記事を読んでStableDiffusionを始めてみたいと思ったけど、どれを買ったか良いか分からない人向けに私の使っているグラボを紹介します。

私が使用しているグラボはNVIDIA GeForce RTX3060 搭載 グラフィックボード GDDR6 12GBになります。

StableDiffusionで絵を生成するときは、PCのCPUやメモリよりもグラボの性能が重要です。

StableDiffusionではVRAMが12GB以上であることが推奨されていますが、普通のゲーム用のグラボでは8GBのものが多いです。

経験上、一回のプロンプトで一発で望みの絵が出ることは少なく、10枚ぐらい出力してそこから近づけていく作業をします。

しかしVRAMが低いと1枚を生成する時間が長くなってしまいます(完全にVRAM依存ではないですが)

1枚の生成する時間が長いと、最終的なゴールまでの時間も多くかかってしまうので、推奨要領である12GBのグラボを買うことをお勧めします。

VRAMが低い=一度に計算できる数が少ない=生成速度が遅い

そのため解像度の高い絵を生成するのに時間がかかるだけでなく、生成できない可能性もあります(2GBや4GBなど)

Controlnet等、拡張機能を複数使用する場合やLora等の学習を行う場合は、より顕著にVRAMの差が出ます。

そのため単純にAIで出力してみたい。というだけでなく、その一歩先で色々やってみたい方は是非12GB以上を購入してみてください。

ちょっと試すだけなら、下記のような無料AI画像生成サービスを使うのも良いです。

コメント

タイトルとURLをコピーしました