「元動画無しでディープフェイク動画を生成したい」
「顔を指定してGIFアニメを生成したい」
このような場合には、この記事の内容が参考になります。
この記事では、web UIで簡単にディープフェイク動画を生成する方法を解説しています。
本記事の内容
- 元動画無しでディープフェイク動画を生成する方法
- ディープフェイク動画生成手順
それでは、上記に沿って解説していきます。
元動画無しでディープフェイク動画を生成する方法
まず、この記事で言うディープフェイク動画の定義から説明します。
ディープフェイクとは、画像や動画における人の顔を著名人などの顔に入れ替える技術のことを言います。
その技術を用いて作成した動画をディープフェイク動画と言います。
一般的には、そのようにディープフェイク動画を定義します。
この定義のディープフェイク動画を生成したい場合は、次の記事をご覧ください。
しかし、ここではその定義とは少し異なります。
異なる部分は、元動画が存在しないという点です。
つまり、元動画から作成するディープフェイク動画と言えます。
その際には、次の技術を用います。
- AnimateDiff
- roop
AnimateDiffによって、GIFアニメ用の画像がフレーム数分だけ生成されます。
そして、それらの画像における顔部分をroopによって入れ替えていきます。
最後に、それらの画像を結合してGIFアニメを生成する流れになります。
GIFアニメはMP4動画に変換可能です。
それぞれともにweb UI拡張機能として提供されています。
ただし、web UIのバージョンについては注意が必要です。
必要なweb UIのバージョンは、次の記事で説明しています。
roopについては、若干インストールが複雑です。
web UI上で上記2つの拡張機能が動くようになれば、準備OKとなります。
以上、元動画無しでディープフェイク動画を生成する方法を説明しました。
次は、ディープフェイク動画生成手順を説明します。
ディープフェイク動画生成手順
AnimateDiffとroopともに処理に時間がかかります。
そのため、web UIを高速化しておくことをオススメします。
動画を作成する手順としては、以下の処理で分けます。
- AnimateDiffによるGIFアニメ生成
- GIFアニメのチェック
- 同じSEEDでroopの有効化
今回は、以下のGPUメモリで検証を行っています。
> nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader NVIDIA GeForce RTX 3090, 24576 MiB, 18561 MiB
まず、AnimateDiffだけを有効にして処理を実行します。
上記の「1」に該当する処理です。
そして、生成されたGIFアニメをチェックします。
「2」の処理ですね。
これは、チェックしてOKだったGIFアニメです。
GIFアニメの出来は、運の要素がかなり左右します。
そのため、ここでチェックを行って無駄を省きます。
そうしないと、NGのモノのままでroopの処理に突入してしまいます。
roopの処理だけでも、2分ほどかかります。
この2分の時間を無駄にしないために、チェックを行うということです。
なお、「1」の処理時間には30秒ほどかかっています。
Time taken: 32.96s Torch active/reserved: 9385/10586 MiB, Sys VRAM: 12960/24576 MiB (52.73%)
もし、チェックしてNGなら「1」の処理を再度行います。
もちろん、SEEDは変えましょう。
OKの場合であれば、「3」へ進みます。
SEED値をそのまま固定にします。
その状態でroopを有効にします。
このとき、入れ替えたい顔の画像をUP済みにしておきます。
この状態で「Generate」ボタンをクリック。
OKとなったGIFアニメが生成され始めます。
そこに追加で、roopの処理が実行されます。
すべて終わるまでに、次の時間がかかっています。
Time taken: 2m 23.54s Torch active/reserved: 9385/10586 MiB, Sys VRAM: 12960/24576 MiB (52.73%)
生成されたGIFアニメは、以下。
見事にモナリザの顔に入れ替わっています。
GIFアニメをMP4に変換すれば、このようにWebにも容易にUPできます。
(※GIFアニメのままだと容量が大きい)
以上、ディープフェイク動画生成手順を説明しました。