ホームページ > バックエンド開発 > Python チュートリアル > ディープフェイクをプレイするのはこれが初めてです

ディープフェイクをプレイするのはこれが初めてです

coldplay.xixi
リリース: 2020-11-13 16:55:24
転載
4285 人が閲覧しました

Python ビデオ チュートリアル コラムでは DeepFakes を紹介します。 ディープフェイクをプレイするのはこれが初めてです

ターゲット

これまでDeepFakesを触ったことがなかったのですが、突然Bilibiliの動画を投稿して遊んでみようと思います。やってみると結構面倒なので、落とし穴に遭遇したことを記録しておきます。

この記事の目的は、歌うトランプのビデオを私たちの同志チュアン・ジャングオに置き換えることです。

最終効果:

ビデオリンク: https://www.bilibili.com/video/BV12p4y1k7E8/

環境の説明

この記事で試した環境は、動作速度が速い Linux サーバー環境です。

Python 環境: Anoconda python3.7 バージョン

GPU: K80、12G ビデオ メモリ

DeepFake バージョン: 2.0

その他のツール: ffmpeg

資料の準備

まず第一に、The Singing Trumpのビデオと、Chuan Jianguo同志のビデオを1つ以上準備する必要があります。顔を変える素材として使用されます。

ビデオのセグメント化

まず、ffmpeg を使用してビデオ素材を複数の画像に分割します。

mkdir output
ffmpeg -i 你的视频.mp4 -r 2 output/video-frame-t-%d.png复制代码
ログイン後にコピー

ここでのビデオは mp4 である必要はなく、他の形式も使用できます。-r 2 は 2 フレーム、つまり 1 秒あたり 2 枚の画像が収集されることを意味します。あなた自身のビデオを試してみてください。最後に出力フォルダーに出力されますが、プレフィックスは任意で定義でき、名前は重要ではありません。

ディープフェイクでは顔の数が 200 を超えるかどうかを確認するメッセージが表示されるため、ここでさらにビデオを見つけるのが最善です。ここでは 3 つのビデオ、合計 6 つのビデオを用意しました。

ffmpeg -i sing_trump1.mp4 -r 2 sing_trump_output/st1-%d.png
ffmpeg -i sing_trump2.flv -r 2 sing_trump_output/st2-%d.png
ffmpeg -i sing_trump3.mp4 -r 2 sing_trump_output/st3-%d.png复制代码
ログイン後にコピー
ffmpeg -i trump1.webm -r 2 trump_output/t1-%d.png
ffmpeg -i trump2.mp4 -r 2 trump_output/t2-%d.png
ffmpeg -i trump3.mp4 -r 2 trump_output/t3-%d.png复制代码
ログイン後にコピー

完成するとかなり大きくなり、ごちゃ混ぜになると最大 3.7 G になります。

コードをクローンして依存関係をインストールする

ここでは特に言うことはありません。github からコードをダウンロードします。

git clone https://github.com/deepfakes/faceswap.git复制代码
ログイン後にコピー

次に、実際の状況に応じて環境をインストールします。ここでは、PC に CPU をインストールし、サーバーに nvidia をインストールします。

顔を抽出する

次に、すべての顔を抽出します。

python3 faceswap.py extract -i trump_output -o trump_output_face
python3 faceswap.py extract -i sing_trump_output -o sing_trump_output_face复制代码
ログイン後にコピー

顔を平手打ちされた後はこれで終わりです。

顔をフィルタリングする

次に、手動で不要な顔をすべて削除する必要があります。

#配置の変更

extract を呼び出して面を生成すると、保存用の校正ファイルが自動的に生成されます。元画像の顔情報。

顔を削除した後、顔を元の写真と位置合わせする必要があります。

ここでは、GUI ツール

python3 faceswap.py gui复制代码
ログイン後にコピー
を開いて、[ツール] の下の [配置] を選択します。

次に、

Remove-Faces を選択し、位置合わせファイルのパス、顔のパス、および元の画像のパスを入力します。

次に、緑色のボタンをクリックして開始し、実行します。

その後、

sing_trump_out も同じ操作を実行します。

トレーニングの開始

次にトレーニングを開始できます。

-m パラメーターは、モデルが保存される場所です。

python3 ./faceswap.py train -A sing_trump_output_face -ala sing_trump_output/alignments.fsa -B trump_output_face -alb trump_output/alignments.fsa  -m model复制代码
ログイン後にコピー

小问题

这里如果用gpu的话,我发现tensorflow2.2开始要用cuda10.1以上,但我这边儿没法装,所以需要用tensorflow1.14或者tensorflow1.15,这就需要deepfake的1.0版本才能用。

github.com/deepfakes/f…

训练截图

我发现faceswap1.0和master分支的操作是一样的,没太大变化。

我这里的速度大概是2分钟100个step。

转换视频

准备视频帧

首先要准备我们要转换的视频,然后把视频切分,这里就不是按照之前的帧数了。

ffmpeg –i sing_trump2.flv input_frames/video-frame-%d.png 
复制代码
ログイン後にコピー

这里我的视频是1分41秒。

转换完了大概有3050张图片,也就是差不多30帧的,然后一共7.1G(mac就256G真的有点儿遭不住)

再次对齐一遍

接下来,需要对我们要转换的视频图片再来一遍人脸对齐,首先抽脸。

python3 faceswap.py extract -i input_frames -o input_frames_face复制代码
ログイン後にコピー

然后再把多余的脸删掉,像前面的步骤一样的操作用gui工具选择Remove-Faces,然后进行对齐。

对每一帧进行AI换脸

通过convert命令进行转换

python3 faceswap.py convert -i input_frames/ -o output_frames -m model/复制代码
ログイン後にコピー

我这里的速度大概是每秒1张图片,不过真正的脸只有600多张,如果脸比较密集的话我估计可能没有那么快,所有的图片转换完大概是5分多钟(这个gpu当时有别的程序在跑真实可能会更快一点儿)。

效果

训练20分钟后

在训练了1200step之后,大概是这个样子,效果看着还不是很好哈,不过已经有点儿意思了。

训练一个小时后

训练一天以后

把图片合成视频

最后通过ffmpeg把图片合成一个视频。

ffmpeg -i output_frames/video-frame-%d.png -vcodec libx264 -r 30  out.mp4复制代码
ログイン後にコピー

这里合并完了我发现是2分钟,不过影响也不大,毕竟后面还要进行剪辑,用PR等软件再编辑一下就好了。

总结

看视频可以发现当脸比较小的时候,faceswap并没有识别出来脸,所以也就没有做替换,还是有点儿遗憾。

个人感觉整个deepfake的最费时间的流程其实就是在删掉多余的脸上面。

相关免费学习推荐:python视频教程

以上がディープフェイクをプレイするのはこれが初めてですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.im
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート