sd-scripts icon indicating copy to clipboard operation
sd-scripts copied to clipboard

画像のアルファチャンネルをlossのマスクとして使用するオプションを追加

Open u-haru opened this issue 10 months ago • 3 comments

透過画像のアルファチャンネルをlossのマスクとして利用出来るようにします。

  • デフォルトだとImage.open().convert("RGB")の際にアルファチャンネルが消えて単色の背景(灰色?)が設定されるため、学習したモデルにも背景が移りやすい
  • 背景を学習させないために、lossに対してアルファチャンネルをマスクとして適用することで透過部分のlossを0にする
  • alpha_maskオプションで使用

ControlNetで使われていた(?) apply_masked_lossを少し変更して使用しています。

例: tmpb2pm9slo (Layer Diffusionを用いて生成)

透過画像30枚をそのまま学習データとし、alpha_maskをon/offでそれぞれ800step程度学習 image

u-haru avatar Mar 29 '24 09:03 u-haru

SD1.5では上手く動いていますが、SDXLでの検証がVRAM不足により行えていません…😭

u-haru avatar May 08 '24 09:05 u-haru

ありがとうございます。原理的にはSDXLでもそのまま動きそうですね。こちらで検証したいと思います。時間でき次第確認、マージいたします。

kohya-ss avatar May 08 '24 12:05 kohya-ss

お手数おかけします…🙏🙏🙏

u-haru avatar May 08 '24 15:05 u-haru