DiffMorpherを使って、拡散モデルでモーフィングを行う

1.はじめに

 今回ご紹介するのは、現在の画像生成の主流である拡散モデルでモーフィングを行うためのDiffMorpherという技術です。

*この論文は、2023.12に提出されました。

2.DiffMorpherとは?

 拡散モデルは、これまでの生成モデルを上回る驚異的な画像生成品質を実現しました。 ただし、GAN と比較した場合の拡散モデルの顕著な制限は、潜在空間が高度に構造化されていないため、2 つの画像サンプル間をスムーズに補間するモーフィングが難しいことです。

 そこで、拡散モデルでもモーフィングを可能にするための開発されたのが、DiffMorpherという技術です。以下の図は、そのパイプラインです。

 ポイントとなるのは、2つの画像をそれぞれ2つのLoRAで学習させ、潜在ノイズLoRAパラメーターの両方の間を補完することです。そして、アテンション補間および注入手法、適応正規化調整手法、および新しいサンプリングスケジュールを追加することによって、スムーズなモーフィングを実現しています。

3.コード

 公開されているコードはローカルポートで動かす仕様になっているので、まずリモートで動かすためにngrokSing Up(無料です)し、下記のようにトークンを取得して下さい。

 この[リンク]をクリックするgoogle colabが表示されます。まず、colabのローカルポートをリモートで動かせようにするために、conf.get_default().auth_token = に取得したトークン(Your Authtoken)を記入して実行します。

 ログの最後に表示された、ngrok URL: NgrokTunnel:に続くURLを覚えておきます。

 

 次に、DiffMorpherを実行します。ログの最後に、Running on local URL: http://127.0.0.1:7860 が表示されたら完了です。

 

 先程のngrok URL: NgrokTunnel:に続くURLをクリックすると、別のタブにGUIが表示されます。input image A, input image B, Prompt for image A, Prompt for image Bを設定し、あとはRunボタンを押せばOKです。

 なお、下部にパラメータの設定の部分があり、Number of Frames(何枚で補完するか)、FPS(毎秒何枚の動画にするか)などを変更できます。

 

最初の設定のままやってみると、数分程度でこんな動画が作成できます。

 トランプ元大統領がバイデン大統領にモーフィングできました。

 拡散モデルの表現力がまた1つ上がりましたね。では、また。

(オリジナルgithub)https://github.com/Kevin-thu/DiffMorpher

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

アバター

ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。