技術約11分で読めます

Anima-RGBAで透過PNGを直接出せるか試してみた

いけさん目次

11月2日に、Hugging FaceへAnima-RGBAというモデルが上がっていた。
画像生成モデルのAnimaで、背景が透明なPNG(RGBA画像)を直接出すためのVAEとLoRAの組み合わせだ。
透過素材を作るには白背景で出力してから背景除去ツールで切り抜くのが普通だが、生成の段階でアルファ(透明度)まで出るなら切り抜きの工程がいらなくなる。

ただ、モデルカードの作例は人物と食べ物の切り抜きだけだった。
ここでいう透過には、背景を抜く「切り抜き透過」と、ガラスや湯気のように素材自体が半透明になる「中間アルファの透過」の2種類がある。
前者の切り抜き素材なら背景除去ツールの代わりになるが、絵の中で透けて見える素材までアルファとして出るのか。
手元のM1 Max 64GBで、要素ごとにプロンプトを変えて出力し、アルファの値を調べた。

Anima-RGBAの基本情報

項目内容
配布localai0301/Anima-RGBA
公開日2026年11月2日
ライセンスApache-2.0
ベースcirclestone-labs/Anima
VAEvae/anima_rgba_vae.safetensors(508MB)
LoRAloras/anima_rgba_lora.safetensors(184MB)
今回使ったリビジョン493fbdecc6f926de89542d444d8a07cdcc31809c

VAEとLoRAの役割

VAEは、拡散モデルが作った潜在表現(画像を圧縮した中間データ)をピクセルの画像に戻すもので、AnimaはQwen-ImageのVAEを使っている。
元のVAEはRGBの3チャンネルしか出さないが、Anima-RGBAのVAEはこれを4チャンネルに広げてアルファも出すようにしたものだ。
潜在表現の形は元と同じ16チャンネル・1/8サイズなので、Anima本体はそのまま使える。

モデルカードによると、学習では透明な部分を白に合成したRGBとアルファをエンコーダーに入れている。
Animaは transparent background と書くと白背景の絵を描くので、それに近い潜在表現になるようにした、という説明だ。

ただ、素のAnimaが作る潜在表現は、このVAEが想定しているデータと少しずれている。
LoRAはそのずれを補正するためで、RGBA VAEで作った潜在表現を使い、AnimaのDiT部分だけを追加学習させている。
ランクは32で、学習は25,000ステップ回されている。

使い方とモデルカードに書かれている限界

既存のAnimaのComfyUIワークフローで変更する点は3つで、カスタムノードはいらないと書かれている。

変更点内容
VAELoad VAE で anima_rgba_vae.safetensors を選ぶ
LoRA通常のLoRAローダーで anima_rgba_lora.safetensors を強度1.0で適用する
トリガープロンプトに transparent background(または isolated on a transparent background)を入れる

背景が抜けないときは、LoRAの強度ではなくトリガーの重みを (transparent background:1.3) のように上げる、とある。
LoRA強度を1.5にすると、被写体の周りに半透明のゴミが出るそうだ。

モデルカードには、次の限界も書かれている。

限界内容
細かい半透明VAEは512pxのクロップで学習している。髪の細い毛束、ガラス、煙などの細かい半透明が一番弱い
アルファの値生成されるアルファはほぼ0か1の2値になる。シースルーの服はたいてい不透明になる
顔のアップ画面いっぱいのクローズアップでは、白背景が残ることがある。ほかのLoRAを重ねると頻度が上がる

作者のテストでは、8プロンプト×2シードの16枚がLoRAなしでも背景が透明になっていた。
ただし半透明の画素の割合は、LoRAなしで12.8%、LoRA 1.0で0.9%だった。
半透明の画素が少ないほど、切り抜き用途では白黒がはっきりしたきれいな素材になる。
ファインチューン版のAnimaにTurbo LoRA 0.8と画風LoRAを重ねた12ステップの構成でも、16枚とも透明になり、半透明の画素は3.5%だった。

検証環境

項目内容
マシンM1 Max 64GB(MPS)
UIComfyUI v0.30.1(--bf16-vae --bf16-unet)、カスタムノードなし
基準モデルanima-base-v1.0.safetensors
テキストエンコーダーqwen_3_06b_base.safetensors
VAEanima_rgba_vae.safetensors(比較用に元の qwen_image_vae.safetensors)
LoRAanima_rgba_lora.safetensors 1.0
キャラLoRAkeikana-animabase-v2_epoch140.safetensors 1.0(かなちゃん・けいちゃん)
Turbo LoRAanima-turbo-lora-v0.1.safetensors 1.0

共通の生成条件は、モデルカードの作例に合わせた。

項目値
解像度1024×1024(キャラLoRAの節だけ832×1216と1216×832)
ステップ・CFG30ステップ、CFG 4.5(Turboの条件だけ8ステップ、CFG 1.0)
サンプラー・スケジューラーer_sde / simple
プロンプトの先頭masterpiece, best quality, newest, safe,
ネガティブworst quality, low quality, score_1, score_2, score_3, blurry, jpeg artifacts

手元のComfyUI v0.30.1では、Qwen-ImageのVAEは comfy/sd.py の「Wan 2.1 VAE」の分岐で読み込まれる。
この分岐は、画像のチャンネル数をエンコーダーの最初の畳み込み(encoder.conv1)の重みの形から、デコーダーの出力チャンネル数を最後の層(decoder.head.2)の重みの形から判定している。
元のQwen-Image VAEはどちらも3チャンネルで、Anima-RGBAのVAEはどちらも4チャンネルになっていた。
実際に4チャンネルのVAEをそのまま読み込み、VAE Decode から Save Image へつなぐだけで、RGBAのPNGが保存された。

画像と数値の見方

この記事の画像は、出力したPNGを3通りに並べている。

並び表示内容
左市松模様の上に重ねた絵。市松が見える部分が透明
中(一部の節だけ)黒の上に重ねた絵。輪郭のにじみや、半透明になった服がわかりやすい
右アルファだけを白黒で表示したもの。白が不透明、黒が透明、灰色が半透明

数値は、PNGのアルファを0〜1にして画素の割合を数えた。

指標計算方法
α<0.5半分以上透けている画素の割合。ほぼ背景が抜けた面積
不透明α≥0.98の画素の割合
半透明率0.06<α<0.94の画素の割合。モデルカードの「semi-transparent pixels」と同じ範囲

モデルカードの作例をそのまま回してみた

最初に、モデルカードの作例のうち騎士(シード202)とショートケーキ(シード101)を同じ条件で出力した。
騎士は、VAEとLoRAの組み合わせを変えた比較にも使ってみた。
元のVAEとRGBA VAEのみの2枚は、同じモデル・同じシードで出した潜在表現を、VAEだけ差し替えてデコードしたものだ。

条件出力α<0.5半透明率画像で確認したこと
騎士、元のVAE(LoRAなし)RGB0%0%白背景の不透明な画像。アルファはない
騎士、RGBA VAEのみ(LoRAなし)RGBA76.1%7.3%白背景は透明になった。人物の周りに白いにじみの輪が残り、黒に重ねると縁が白く光る。外套の内側や鎧のすき間も半透明
騎士、RGBA VAE+LoRARGBA67.7%0.6%縁のにじみがなくなり、アルファはほぼ0か1。脚の間、剣と腕のすき間も透明
騎士、RGBA VAE+LoRA、トリガーなしRGBA62.4%1.0%transparent background を抜いても背景は抜けた。足元の影が白い不透明な帯として残り、周りに花びらのような小片が散った
ショートケーキ、RGBA VAE+LoRARGBA47.0%0.4%ケーキの外側の輪郭できれいに切り抜かれた
騎士、元のVAE(LoRAなし)
元のQwen-Image VAEでデコードした騎士。白背景の不透明な画像で、アルファの欄は全面白
騎士、RGBA VAEのみ(LoRAなし)
RGBA VAEだけでデコードした騎士。黒に重ねると輪郭が白く光り、アルファの外套部分が灰色
騎士、RGBA VAE+LoRA
RGBA VAEとLoRAで出した騎士。金の鎧と赤い外套が2値のアルファで切り抜かれている
騎士、RGBA VAE+LoRA、トリガーなし
トリガーなしで出した赤い騎士。背景は透明で、足元に白い影の帯が残っている
ショートケーキ、RGBA VAE+LoRA
RGBA VAEとLoRAで出したショートケーキの切り抜き

LoRAなしのにじみは、モデルカードの「LoRAなしではアルファがかすむ」という説明どおりだった。
トリガーを抜いた1枚でも背景は抜けた。

同じシードと条件で出したものの、騎士もショートケーキも、モデルカードに載っている作例とは別の絵になった。
モデルカードの騎士は青い外套だが、手元のM1 Maxでは金の鎧に赤い外套になり、配色や構図が変わっていた。

プロンプト

騎士(シード202)

masterpiece, best quality, newest, safe, 1boy, solo, transparent background, armor, holding sword, cape, full body, fighting stance

騎士、トリガーなし(シード202)

masterpiece, best quality, newest, safe, 1boy, solo, armor, holding sword, cape, full body, fighting stance

ショートケーキ(シード101)

masterpiece, best quality, newest, safe, no humans, transparent background, food, strawberry shortcake, fruit, still life

要素ごとに何が透けるか

透過素材で気になる11の要素を選び、それぞれプロンプトに入れて出力した。
条件はRGBA VAE+LoRA 1.0、トリガーの重み1.0で、シード101と202の2枚ずつ出した。
表の数値は「シード101 → シード202」の順に書いている。

要素α<0.5不透明半透明率画像で確認したこと
髪の毛先57.3%→66.2%41.9%→33.2%1.4%→1.1%広がった毛束の間は透明に抜けた。細い束まで不透明で、毛先が半透明になる部分はなかった。白いワンピースも不透明
囲まれたすき間84.1%→82.7%15.6%→17.0%0.5%→0.5%開いた脚の間は2枚とも透明。腕と胴の間は、シード101では透明に抜け、シード202では腕が胴に寄っていてすき間がほとんどない
ガラス78.5%→80.6%21.3%→19.2%0.3%→0.3%2枚ともワイングラスは出なくて、ボトル1本になった。中身より上の透明なガラス部分も含めて、ボトル全体が不透明
湯気66.5%→69.9%33.3%→29.8%0.4%→0.4%湯気はくっきりした白い塊として描かれ、不透明。シード101ではソーサーの下の灰色の影も不透明のまま残った
炎・魔法22.1%→39.9%77.4%→59.2%0.9%→1.5%炎は外側の輪郭で切り抜かれ、炎そのものは不透明。炎の切れ目は透明。人物と炎で画面が埋まり、下端は画面の縁で見切れている
透けた布58.2%→67.8%41.5%→29.0%0.5%→3.1%ベール越しに髪や脚が見える絵になったが、シード101ではアルファはベールの外側の輪郭まで不透明。シード202だけ、ベールの外側が半透明になった
羽70.9%→69.2%28.3%→30.0%1.3%→1.3%2枚とも蝶のような羽で、羽越しに体が見える描き方だが、アルファは羽全体が不透明。周りのきらめきや小さな蝶は1つずつ切り抜かれた
水しぶき・泡53.9%→65.5%44.6%→33.3%2.5%→2.0%しぶきと泡は不透明な粒として1つずつ切り抜かれ、粒の間は透明。水そのものは透けなかった
幽霊59.1%→63.7%40.0%→35.6%1.5%→1.2%体は半透明にならず、不透明な人物として描かれた。周りの青い鬼火は1つずつ切り抜かれた
影81.3%→83.6%18.5%→16.1%0.4%→0.4%シード101は人物の右後ろに青緑のドロップシャドウ、シード202は足元に灰色の楕円の影。どちらも不透明なベタ塗りの影になった
顔のアップ24.9%→38.1%74.9%→61.2%0.4%→1.1%シード101は顔が丸い枠に入り、枠の外だけが透明になった。シード202は髪の輪郭で切り抜かれ、頭のてっぺんと肩が画面の縁で見切れている
髪の毛先
シード101
長い赤髪をなびかせた少女の切り抜きとアルファ、シード101
シード202
長い青髪をなびかせた少女の切り抜きとアルファ、シード202
囲まれたすき間
シード101
腰に手を当てて脚を開いた制服の少女の切り抜きとアルファ、シード101
シード202
腰に手を当てて脚を開いたセーラー服の少女の切り抜きとアルファ、シード202
ガラス
シード101
赤ワインのボトルの切り抜きとアルファ、シード101
シード202
赤ワインのボトルの切り抜きとアルファ、シード202
湯気
シード101
湯気の立つコーヒーカップの切り抜きとアルファ、シード101
シード202
湯気の立つコーヒーカップの切り抜きとアルファ、シード202
炎・魔法
シード101
炎に囲まれた魔女の切り抜きとアルファ、シード101
シード202
炎に囲まれた魔女の切り抜きとアルファ、シード202
透けた布
シード101
ベールとシースルーのドレスの少女の切り抜きとアルファ、シード101
シード202
水色のベールとシースルーのドレスの少女の切り抜きとアルファ、シード202
羽
シード101
蝶の羽の妖精の切り抜きとアルファ、シード101
シード202
蝶の羽の妖精の切り抜きとアルファ、シード202
水しぶき・泡
シード101
水しぶきの中で跳ねる水着の少女の切り抜きとアルファ、シード101
シード202
水しぶきの中で跳ねる水着の少女の切り抜きとアルファ、シード202
幽霊
シード101
白い着物の幽霊と青い鬼火の切り抜きとアルファ、シード101
シード202
白いフードの着物の幽霊と青い鬼火の切り抜きとアルファ、シード202
影
シード101
青緑のドロップシャドウが付いた制服の少女の切り抜きとアルファ、シード101
シード202
足元に灰色の影がある制服の少女の後ろ姿の切り抜きとアルファ、シード202
顔のアップ
シード101
丸い枠に入った少女の顔の切り抜きとアルファ、シード101
シード202
ボブカットの少女の顔のアップの切り抜きとアルファ、シード202

22枚とも背景は透明になり、白背景が残った出力はなかった。
背景として抜けた毛束の間、脚の間、しぶきの粒の間、炎の切れ目、小物の間は、アルファ0できれいに抜けている。

一方で、絵の中で透けて見えるように描かれたガラス、湯気、羽、幽霊の4要素(8枚)は、いずれも不透明だった。
ガラスのボトルでは、中身より上の透明な部分も白っぽい色で塗られて不透明になっている。
モデルカードの「アルファはほぼ2値で、シースルーの服はたいてい不透明」という説明と同じ結果になった。

影も、ドロップシャドウと足元の楕円のどちらも、不透明なベタ塗りの影として描かれた。
透過PNGを別の背景に重ねると、影は半透明にならず、色の付いた板のようになった。

モデルカードには「アップでは白背景が残ることがある」とあったが、今回の2枚では白背景は残らなかった。
代わりにシード101では、顔を丸いアイコン枠に入れて、枠の外を透明にする絵になった。

炎や顔のアップのように画面いっぱいに描く場合、画面の縁で見切れた絵がそのまま透過される。
手元の出力を見る限り、切り抜き素材にするなら full body などで周りに余白が出る指定にしておくほうが扱いやすそうだ。

プロンプト

すべて masterpiece, best quality, newest, safe, のあとに続けた。

髪の毛先

1girl, solo, transparent background, very long hair, floating hair, wind, white dress, looking at viewer, full body

囲まれたすき間

1girl, solo, transparent background, school uniform, hands on own hips, legs apart, standing, full body

ガラス

no humans, transparent background, wine glass, red wine, glass bottle, still life

湯気

no humans, transparent background, coffee cup, steam, saucer, still life

炎・魔法

1girl, solo, transparent background, witch, casting spell, fire, magic, glowing, upper body

透けた布

1girl, solo, transparent background, see-through dress, sheer fabric, veil, white dress, standing, full body

羽

1girl, solo, transparent background, fairy, fairy wings, insect wings, translucent wings, flying, full body

水しぶき・泡

1girl, solo, transparent background, water splash, bubbles, swimsuit, jumping, full body

幽霊

1girl, solo, transparent background, ghost, transparent body, floating, white kimono, full body

影

1girl, solo, transparent background, standing, shadow, drop shadow, school uniform, full body

顔のアップ

1girl, solo, transparent background, portrait, face focus, close-up, smile, looking at viewer

透けた布(ベール)に出た半透明度

22枚の中で、半透明の画素がまとまって出たのはシード202の透けた布の1枚だけだった。
下の画像は、その出力の画面左側のベール部分を等倍で切り出したもので、左が市松模様に重ねた絵、右がアルファ画像。

シード202のベール部分(等倍)
水色のベールの部分を等倍で切り出した画像。市松に重ねるとベール越しに市松がかすかに見え、アルファのベール部分は灰色
項目値
半透明の画素(0.06<α<0.94)画像全体の3.1%、1024×1024で約3.2万画素。ほとんどが画面左のベールの範囲にある
その画素のアルファ中央値204/255、10〜90パーセンタイルで160〜232
不透明度に直すと約6〜9割

市松模様に重ねると、ベール越しに市松がかすかに見える。
とはいえ不透明度は6割以上あり、ベールとしてはっきり透けているわけではない。
同じプロンプトのシード101では出なかった。

トリガーの重みを1.3に上げてみた

モデルカードには、背景が残るときはトリガーの重みを上げる、とあった。
今回は背景が残った出力がなかったので、代わりに不透明だった透けた布と炎で、重みを1.3にして出し直してみた。
プロンプトの transparent background を (transparent background:1.3) に変えただけで、ほかはシード101と同じ条件だ。

条件α<0.5不透明半透明率画像で確認したこと
透けた布、トリガー1.357.9%41.8%0.5%重み1.0のシード101とほぼ同じ絵。ベールは外側の輪郭まで不透明のまま
炎・魔法、トリガー1.323.6%75.8%1.0%炎の形は変わったが、炎は不透明のまま。下端は画面の縁で見切れている
透けた布、トリガー1.3
トリガーの重み1.3で出したベールの少女の切り抜きとアルファ。ベールは不透明
炎・魔法、トリガー1.3
トリガーの重み1.3で出した炎の魔女の切り抜きとアルファ。炎は不透明

トリガーの重みを上げても、透けて描かれた部分のアルファは下がらなかった。

空のワイングラス

ガラスでは、ワイングラスを出させるためにプロンプトを変更してみた。
最初の wine glass, red wine, glass bottle ではボトルしか出なかったので、empty wine glass と書いて空のワイングラスだけを指定した。
しかし出てきた画像は依然として赤ワインが入ったままで、グラス全体も不透明のままだった。

条件α<0.5不透明半透明率画像で確認したこと
空のワイングラス(シード101)79.1%20.7%0.3%empty と書いても赤ワイン入りのグラスになった。グラスの外側の輪郭まで不透明で、ワインより上のガラス部分は白っぽい色で塗られている
空のワイングラス
赤ワインの入ったワイングラスの切り抜きとアルファ。グラス全体が不透明

透明なはずのガラスが白っぽく塗られるのは、VAEの学習で透明な部分を白に合成した色を使っているからだと考えられる。
プロンプトやトリガーの重みを変えても、中身が透ける中間アルファは引き出せなかった。

プロンプト

すべて masterpiece, best quality, newest, safe, のあとに続けた。

透けた布、トリガー1.3

1girl, solo, (transparent background:1.3), see-through dress, sheer fabric, veil, white dress, standing, full body

炎・魔法、トリガー1.3

1girl, solo, (transparent background:1.3), witch, casting spell, fire, magic, glowing, upper body

空のワイングラス

no humans, transparent background, empty wine glass, glass, still life

キャラLoRA・Turbo LoRAと重ねてみた

モデルカードには、ほかのLoRAを重ねると白背景が残りやすくなると書かれていた。
そこで、AMIXA - Async’s MIX ANIMAを比較、base寄りで発色が良いAnima派生などで使ってきた、かなちゃん・けいちゃんのキャラLoRAと併用してみた。
プロンプトはその比較記事のものから white background, simple background を transparent background に置き換え、シード42で2キャラの構図は standing side by side, full body に固定した。

条件α<0.5不透明半透明率出力の状態
かなちゃん、RGBA LoRAあり(832×1216、30ステップ)81.0%18.7%0.5%サイドポニー、青いシュシュ、アホ毛が出た。切り抜きは2値で、腕と胴のすき間も透明
かなちゃん、RGBA LoRAなし(VAEのみ、30ステップ)78.7%11.9%12.7%白いシャツと肌が半透明になり、黒背景に重ねるとシャツが灰色になる。輪郭の外には白いにじみ
かなちゃん、RGBA LoRA+Turbo LoRA(8ステップ)78.7%20.9%0.7%8ステップでも2値の切り抜きになった。ネクタイがリボンに変わったほかは特徴が出た
2キャラ、RGBA LoRAあり(1216×832、30ステップ)81.8%17.8%0.6%2人とも切り抜かれ、2人の間も透明。右はけいちゃんで、左は黒に近い茶色の長髪
かなちゃん、RGBA LoRAあり
RGBA LoRAありのかなちゃんの全身。市松、黒、アルファの3枚並びで、2値のきれいな切り抜き
かなちゃん、RGBA LoRAなし(VAEだけRGBA)
RGBA LoRAなしのかなちゃんの全身。黒に重ねるとシャツが灰色に沈み、アルファの服と肌の部分が灰色
かなちゃん、RGBA LoRA+Turbo(8ステップ)
RGBA LoRAとTurbo LoRAで8ステップで出したかなちゃんの全身の切り抜き
2キャラ、RGBA LoRAあり
並んで立つ2人の少女の切り抜きとアルファ。右は金髪に青いリボン、左は黒に近い茶色の長髪

キャラLoRAとTurbo LoRAを重ねても、4枚とも背景は抜け、白背景が残る出力はなかった。
RGBA LoRAを抜くと、キャラLoRAを適用していても白い服や肌が半透明になり、VAEの差し替えだけでは切り抜き素材にならなかった。

プロンプト

かなちゃん(3条件とも同じ)

masterpiece, best quality, safe, 1girl, solo, kanachan, brown hair, side ponytail, ahoge, brown eyes, school uniform, full body, standing, looking at viewer, transparent background

2キャラ

masterpiece, best quality, safe, 2girls, multiple girls, kanachan, keichan, standing side by side, full body, looking at viewer, smile, school uniform, transparent background

ネガティブ(この節の4枚で共通)

worst quality, low quality, blurry, lowres, jpeg artifacts, bad hands, bad anatomy, fused fingers, fused legs, fused limbs, extra arms, extra legs, conjoined twins, deformed face

暗い背景に重ねたときの輪郭

白背景で出力した画像を背景除去ツールで切り抜くと、暗い背景に置いたときに輪郭へ白いフチが残ることがある。
Anima-RGBAの出力がどうなるか、紺色(RGB 20, 30, 80)の上にアルファで重ね、髪の輪郭を3倍に拡大した。
対象は、要素ごとの節の髪の毛先(シード101)と、前節のかなちゃん(RGBA LoRAあり)だ。

髪の毛先(シード101)、3倍
赤い髪の毛先を紺色の背景に重ねて3倍に拡大した画像
かなちゃんの頭頂、3倍
かなちゃんのアホ毛とシュシュの周りを紺色の背景に重ねて3倍に拡大した画像

どちらも輪郭に白いフチは出なかった。
幅1〜2画素の細い毛束やアホ毛の先も途切れないで残り、その間には紺の背景がそのまま見えている。

生成時間

手元のM1 Max 64GBで、キューに入れてから画像を受け取るまでの秒数を測った。

条件解像度ステップ秒
Anima-Base+RGBA LoRA(要素ごとの22枚)1024×102430264〜265
Anima-Base+キャラLoRA+RGBA LoRA832×121630262
Anima-Base+キャラLoRA+RGBA LoRA+Turbo LoRA832×1216841

手元のM1 Maxでは30ステップだと1枚あたり4分半ほどかかり試行錯誤には重いが、Turbo LoRAを重ねて8ステップまで落とすと41秒まで縮む。
切り抜き精度を保ったまま生成時間を大幅に削れるので、実用上はTurbo LoRAとの併用が扱いやすそうだ。

参考リンク