1.はじめに
今回ご紹介するのは、現在の画像生成の主流である拡散モデルでモーフィングを行うためのDiffMorpherという技術です。
*この論文は、2023.12に提出されました。
2.DiffMorpherとは?
拡散モデルは、これまでの生成モデルを上回る驚異的な画像生成品質を実現しました。 ただし、GAN と比較した場合の拡散モデルの顕著な制限は、潜在空間が高度に構造化されていないため、2 つの画像サンプル間をスムーズに補間するモーフィングが難しいことです。
そこで、拡散モデルでもモーフィングを可能にするための開発されたのが、DiffMorpherという技術です。以下の図は、そのパイプラインです。
ポイントとなるのは、2つの画像をそれぞれ2つのLoRAで学習させ、潜在ノイズとLoRAパラメーターの両方の間を補完することです。そして、アテンション補間および注入手法、適応正規化調整手法、および新しいサンプリングスケジュールを追加することによって、スムーズなモーフィングを実現しています。
3.コード
公開されているコードはローカルポートで動かす仕様になっているので、まずリモートで動かすためにngrokにSing Up(無料です)し、下記のようにトークンを取得して下さい。
この[リンク]をクリックするgoogle colabが表示されます。まず、colabのローカルポートをリモートで動かせようにするために、conf.get_default().auth_token = に取得したトークン(Your Authtoken)を記入して実行します。
ログの最後に表示された、ngrok URL: NgrokTunnel:に続くURLを覚えておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
%cd /content/ !git lfs install !git clone https://huggingface.co/spaces/microsoft/HuggingGPT %cd /content/HuggingGPT/ !pip install -r requirements.txt !pip install gradio !pip install --upgrade pyngrok import os from pyngrok import ngrok, conf # ngrokトークンを設定 conf.get_default().auth_token = "Your Authtoken" public_url = ngrok.connect(7860) print(f"ngrok URL: {public_url}") |
次に、DiffMorpherを実行します。ログの最後に、Running on local URL: http://127.0.0.1:7860 が表示されたら完了です。
1 2 3 4 |
! git clone https://github.com/Kevin-thu/DiffMorpher.git %cd DiffMorpher ! pip install -r requirements.txt ! python app.py |
先程の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
コメントを残す