【AI】顔・人物画像1枚を動画のように動かす【Thin-Plate Spline Motion Model for Image Animation】

人物画像一枚を動画のように動かしたいなあ
方法はいくつかあるだろうけど、今回はプログラムチックな方法でやってみるよ。

 

この記事ではThin-Plate Spline Motion Model for Image Animationっていう静止画と動画を組み合わせて、あたかも静止画の人物が喋っているような動画を作るっていうことをやってみます。

一番左の画像と真ん中の動画を組み合わせると3番目の動画になるっていう感じです。

これにはThin-Plate Spline Motion Model for Image Animationっていうものが使われているけど、今回はこれでどういったことができるのか?っていうことを見ていきたいと思う。

記事の内容
  • HuggingFaceから画像と動画を組み合わせて動かす
  • GoogleColaboratoryから画像と動画を組み合わせて動かす

    どんな風に画像を動かすことができるのか見ていきましょう。

    Thin-Plate Spline Motion Model for Image Animationを簡単に試す

    簡単に試すにはHuggingFaceから試してみるといいです。

    画面から以下の流れで画像と動画を使って試すことができます。

    流れ
    1. 画像の選択
    2. 動画の選択
    3. 画像と動画を組み合わせる

    ただ処理が結構重いのでちょっと時間がかかる。As it runs on the CPU, it takes ~ 3 minutes to generate final results.と書かれているように3分間ぐらいは待ってみましょう。

    GoogleColaboratoryで実行する

    GoogleColaboratoryはGPUを使うことができるので、プログラムに抵抗のない方はこっちで試してみることをお勧めします。

    コードの左側にある再生ボタンを上から順番に押していけば実行できます。

    そのまま実行するとHuggingFaceのサンプルであったものが使用されて生成されますね。

    サンプル以外の画像だとどうなるんだろう?
    ちょっと試してみようか。

    サンプルの画像と動画だと綺麗に生成されているけど、実際に他の画像や動画を使ってみるとどうでしょうか。

    生成前の画像と動画を切り取る

    Thin-Plate Spline Motion Model for Image AnimationのGoogleColaboratoryのプログラムにリサイズのプログラムも書かれているけど、ちょっと変な感じになるので自分で切り取ります。

    ポイント

    正方形で切り取るといいです。

    切り取るソフトは何でもいいですが、画像はPhotoshop、動画はPremiereProでやります。

    Photoshopで正方形に調整

    PremiereProで正方形に調整

    画像と動画を配置する

    画像と動画をassets配下に配置します。ドラッグアンドドロップで可能です。

    コードのsource_image_pathとdriving_video_pathを配置した画像のパスに変更しておきます。

    これで順番にコードを実行していくとこんな感じになりました。

    ちょっと崩れてしまっている部分もあるね。
    そうだね、そこまで完璧にはいかないね。

    そこまで自然にはいかなかったけど、画像一枚からここまでできるのは凄いですよね。自然な部分も垣間見えるからもうちょっと技術が進めばかなり自然になってしまいそうな気もする。

    もし試すなら以下の点は気を付けるといいです。

    配置
    • 画像と動画のサイズはできるだけ合わせる
    • 画像と動画の顔の位置をできるだけ合わせる

    何回かやってみたんですが、うまくいかないと画像がかなりよじれたり動かなかったりします。ここら辺も自然に調整してくれたら良かったんだけどまだまだのようです。

    まとめ

    Thin-Plate Spline Motion Model for Image Animationっていうものを使って画像一枚を動画と組み合わせて動かしてみたけど、結構凄かったですね。ただちょっとそこまで自然にはならないかな、っていうところもあります。

    デモやコードを見てみたかったら以下ですね。