拡散モデルでは、ニューラルネットワークのweightを利用してモデルが表現されます。このweightを足し合わせることで重みのマージができます。単純に重みに係数をかけて2つ以上のモデルを融合させます。
今回はポートレート写真で同じ乱数シードで異なるモデルを単純マージしてみます。階層マージはニューラルネットワークの各階層の重みを変更してマージをしますが、キリがないので単純マージで各階層のマージの割合を一定にして実行します。
モデル1
モデル2
同じポートレート写真で、かつ同じ乱数シードですが異なる女性が出てきました。
モデルは同じsafetensors形式で保存されており、それらを足し合わせることができます。
足し合わせる割合を1/2ずつにして画像を生成してみると、
0.5xモデル1 + 0.5xモデル2
全く同じシードですが、なんとなく雰囲気がちょうど半分になりました。
モデル1を75%、モデル2を25%の重みでマージしてみます。
モデル1の雰囲気が強く出ました。次に逆にしてみます。モデル2を75%にしてみます。
同様にモデル2の方が強く出ています。髪型もちょっとモデル1に近づいてるのが面白いですね。
今回は単純マージというテンソルの加算で実現できる方法を確認しました。
異なるスタイルをマージもできるのでいくらでもモデルを作ることができますね!