だめだねMADの作り方

※2021年5月追記

最近?だめだねMADというものが流行っているそうで、その作り方を分かりやすくまとめてみました。

このだめだねMADはDeepFakeを利用して作られているそうで、DeepFakeについては各自で調べてみて下さい、結構興味深い分野です。

元ソースはYoutubeの「How to Make the Baka Mitai Dame Da Ne Meme (Complete Tutorial with Templates)」を参考にしています。

ちなみに、言うまでもないですが悪用は厳禁です、個人で楽しむ範囲でやりましょう。

今回GoogleDriveへのファイルのアップロードと、GoogleResearchが提供しているColabというサービスを利用しますので、Googleのアカウントが必要になります。

また私はGoogleChromeを使って進めたのでその他のブラウザで動作するかは保証しません、多分できるとは思いますが。

※2021年5月現在、作成方法が大きく変わって簡単になっています、一応古い情報も残しておきますが基本的には新しい方を参考にして下さい。

ーーーーー以下追記分ーーーーー

1.素材を用意する

まずはだめだねMADに必要な素材を用意します、必要な素材はだめだねさせたい画像のみとなります。

サイズについては256×256で形式はpngかjpg辺りを用意しておけばよいでしょう。

2.Colabにアクセスする

有志が作成したfirst-order-model-demo.ipynbを実行するために、GoogleResearchのColabへアクセスします。

このサービスを使ったことがない人には難しいと思いますが、操作としては簡単なのでスクショを交えて説明します。

3.スクリプトを実行する

ここからはColab上のスクリプトを順番に実行していきますが、2つしか無いので迷う事はないと思います。

1.1つ目のスクリプトを実行

まずは最初のスクリプトを実行します、以下の画像の左側にある再生ボタンを押して下さい。

最初に実行するスクリプト

ボタンを押した際に警告が出ると思いますが、「そのまま実行」を選択して続けて下さい。

実行はすぐに終わると思います、終わりましたら下のスクリプトを続けて実行していきます。

2.2つ目のスクリプトを実行

続きまして2つ目になります、同じ様に以下画像の再生ボタンを押して下さい。

次に実行するスクリプト、長いので画像は最初の方だけです

こちらは実行にそこそこ時間がかかりますので、気長に待ちましょう。

4.使用する画像と動画を設定する

2つ目のスクリプトの実行が終わると、下にページをスクロールすると以下の画像の様なものが表示されていると思いますので、ここでだめだねに使用する画像と、だめだねの元動画を指定します。

ここで画像と動画を選びます

画像については用意した自前の画像を使いたいので、Choose Imageと書いてある下のUploadボタンを押し、用意した画像を選択して下さい。

その下の動画については、一番左のメガネをかけたおじさんをクリックして選択しておきましょう、これがだめだねの元動画になります。

更にその下にはSettingsという項目もありますが、こちらはデフォルトのままで大丈夫です。

ここまで来ましたら、一番下にあるGenerateボタンを押しましょう、こちらの実行はかなり長いのでゆっくり待ちます。

(This may take several minutes to process…という表示に切り替わると思います)

5.完成した動画をダウンロードする

生成が完了すると表示が切り替わり、以下の画像の様になりますので、再生ボタンを押せば生成されただめだね動画がチェックできます。

Downloadボタンを押せばPCに保存できますので、これにてだめだねMADの作成は完了となります。

今回もフリー素材のおじいさんで生成しています

お疲れさまでした、以前と比べてかなり敷居が下がっていますので、誰でも簡単に作れると思います。

ーーーーー以下旧情報ーーーーー

※ここからの情報は古いので使えませんが、一応記録として残しておきます。

1.素材を用意する

まずはだめだねMADに必要な素材を用意します、必要な素材は以下の4種類。

  1. 使用したい画像ファイル(256×256のpng形式)
  2. DeepFakeの元となる動画ファイル
  3. vox-cpk.pth .tar
  4. vox-adv-cpk.pth .tar

1の画像ファイルについては自前で用意して下さい、自分の場合はMSペイントを使用して作成しました。

2~4のファイルはそれぞれダウンロードしておいて下さい。

また、1の画像ファイルはファイル名を02.pngに、2の動画ファイルについてはファイル名を04.mp4にリネームします。

これで一通りの素材の準備ができました。

2.GoogleDriveにファイルをアップデートする

次にここまでで用意した全ての素材を、自分のアカウントのGoogleDriveにアップロードする作業を行います。

GoogleDriveにアクセスしたら、マイドライブに移動します。

マイドライブ上で適当な場所を右クリック→新しいフォルダで新規フォルダを作成するか、左上に表示されている「新規」ボタンを押して新規フォルダを作ります。

フォルダ名は「first-order-motion-model」にして下さい。

作成したフォルダの中に移動して、用意した素材を全てドラッグ&ドロップでアップロードして下さい。

そうすると、フォルダの中には02.png、04.mp4、vox-cpk.pth .tar、vox-adv-cpk.pth .tarの4ファイルが存在する筈です。

3.Colabにアクセスする

有志が作成したfirst-order-model-demo.ipynbを実行するために、GoogleResearchのColabへアクセスします。

このサービスを使ったことがない人には難しいと思いますが、操作としては簡単なのでスクショを交えて説明します。

まず、上のリンクにアクセスしたら左に表示されている目次は見ないので、目次の右にある✕ボタンで非表示にします

4.スクリプトを実行する

いよいよスクリプトを実行していきます。

1.必要なファイルの追加

まず、最初に実行する部分だけ手作業でスクリプトを追加します。

!git clone https://github.com/AliaksandrSiarohin/first-order-model

一番上の方に!git clone ~ と書かれている部分がありますが、ここは編集が可能なので、既存の1行の上に以下の1行を追加して下さい。

!pip install PyYAML==5.3.1

追加しましたらこの様な形になります。

!pip install PyYAML==5.3.1
!git clone https://github.com/AliaksandrSiarohin/first-order-model

後はマウスをこの灰色のエリアに乗せると左側に実行マーク(三角形の再生マークの様なアイコン)が出てきますので、それを押すだけです。

これをひたすら順番に実行していきます。

スクリプトの実行結果は以下の通りになります、結果はそのスクリプトの真下に表示されますので分かりやすいかと思います。

Collecting PyYAML==5.3.1
  Downloading https://files.pythonhosted.org/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz (269kB)
     |████████████████████████████████| 276kB 16.5MB/s 
Building wheels for collected packages: PyYAML
  Building wheel for PyYAML (setup.py) ... done
  Created wheel for PyYAML: filename=PyYAML-5.3.1-cp36-cp36m-linux_x86_64.whl size=44621 sha256=57d401ad808bb794945e5c86a2dd7a27d06205630d314959c8be7d03029fd305
  Stored in directory: /root/.cache/pip/wheels/a7/c1/ea/cf5bd31012e735dc1dfea3131a2d5eae7978b251083d6247bd
Successfully built PyYAML
Installing collected packages: PyYAML
  Found existing installation: PyYAML 3.13
    Uninstalling PyYAML-3.13:
      Successfully uninstalled PyYAML-3.13
Successfully installed PyYAML-5.3.1
Cloning into 'first-order-model'...
remote: Enumerating objects: 256, done.
remote: Total 256 (delta 0), reused 0 (delta 0), pack-reused 256
Receiving objects: 100% (256/256), 72.13 MiB | 39.69 MiB/s, done.
Resolving deltas: 100% (128/128), done.

2.ディレクトリの移動

次に実行するスクリプトと結果はこちらです。

cd first-order-model
/content/first-order-model

3.GoogleDriveのマウント

3番目に実行するスクリプトでは、簡単に言うとこのColabから自身のGoogleDriveにアクセスする許可を与えます。

from google.colab import drive
drive.mount('/content/gdrive')

こちらを実行すると実行結果にリンクが表示されますので、クリックして下さい。

Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=****

Enter your authorization code:

クリックすると新しいタブが開いて、この様な画面が出てくると思います。

既にGoogleアカウントにログインしているのであれば自身のアカウントが表示されていますので、そのアカウントをクリックします。

次の画面では色々と書いてありますが、要するにGoogleDriveへのアクセスを許可するかどうかを聞かれているので、素直に「許可」ボタンを押下します。

最後にこの様なページが表示されますので、右側の2重の板の形のアイコンをクリックして、コードをコピーします。

コピーしたコードをColabの先程実行したスクリプトの結果に表示されているEnter your authorization code:の下のテキストボックにペーストしてエンターを押すと、結果が以下の様に変化すると思います。

Mounted at /content/gdrive

4.画像と動画のロード

次に実行するコードは長いので最初の一部分だけ抜粋です。

import imageio
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from skimage.transform import resize
from IPython.display import HTML
import warnings
warnings.filterwarnings("ignore")

source_image = imageio.imread('/content/gdrive/My Drive/first-order-motion-model/02.png')
reader = imageio.get_reader('/content/gdrive/My Drive/first-order-motion-model/04.mp4')

実行時間は少し長いですが待ちましょう、結果には左側に02.pngの画像ファイルが、右側には04.mp4の動画ファイルの中身がプレビューされていると思います。

今回私はフリー素材集の中から頂いたおじいさんの写真を使用していますので、左側にはおじいさんが表示されています。

5.モデルの作成とチェックポイント

後もう少しですが、以下のスクリプトのみ結果が表示されないので気をつけて下さい。

from demo import load_checkpoints
generator, kp_detector = load_checkpoints(config_path='config/vox-256.yaml', 
                            checkpoint_path='/content/gdrive/My Drive/first-order-motion-model/vox-cpk.pth.tar')

実行ボタンのぐるぐる?が消えていれば実行完了していますので、次に行きましょう。

6.画像アニメーションの実行

最後になります、以下のスクリプトを実行しましょう。

from demo import make_animation
from skimage import img_as_ubyte

predictions = make_animation(source_image, driving_video, generator, kp_detector, relative=True)

#save resulting video
imageio.mimsave('../generated.mp4', [img_as_ubyte(frame) for frame in predictions], fps=fps)
#video can be downloaded from /content folder

HTML(display(source_image, driving_video, predictions).to_html5_video())

こちらも時間がかかりますが、待っていると結果に04.mp4の動きをしている02.pngの画像が表示されます。

5.完成したファイルをダウンロード

完成したファイルをダウンロードしますが、左のフォルダアイコンをクリックして出てくるリストの中で「generated.mp4」を右クリック→ダウンロードで保存できます。

これでだめだねMADの動画素材が完成しました、私の場合は以下の様な結果になりました。

すごいうにょうにょしていますがそれっぽい動きです

保存した動画ファイルには音声が付いていないので、後は動画編集ツール等で音声を付けてあげましょう。

こちらのだめだねテンプレートを使用してもOKです、こっちの方が簡単にできますね。

以上でだめだねMADの作り方は終わりです、だめだねさせたい画像を使ってやってみて下さい。

“だめだねMADの作り方” への3件の返信

  1. ディレクトリの移動のところで進みません。
    [Errno 2] No such file or directory: ‘first-order-model’
    /content
    ってなるんですけどどうしたらいいですか。

コメントを残す

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