今回は星野源さんと吉岡里帆さんの
中間画像、あいの子を作ってみました。


解説動画はこちら




これに使用したのは
前にも紹介したfacemorpherを用います。


さてここからはやり方です。
コードはGoogleColabで
試せる様になっています。

まずはライブラリのインストールです。
!pip install facemorpher

次にdlibを動かすために必要な
datファイルをダウンロードします。
!wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 -O shape_predictor_68_face_landmarks.dat.bz2

ダウンロードが終わると
colabでファイル確認ができると思います。

ダウンロードを終えたら
ファイルの解凍です。
!tar jxf shape_predictor_68_face_landmarks.dat.bz2

これでbz2からdatになりました。

続いて環境変数のセットアップです。
!export DLIB_DATA_DIR=/content

最後に画像様のフォルダを作成しましょう。
!mkdir img

これで準備が整いました。

画像はimg配下にフォルダをいくつか作り
その中にpngやjpg形式で入れています。

平均顔のコードの実行方法ですが
まずはライブラリのインポートです。
import facemorpher

メソッドの実行方法としては
次の様になっています。
facemorpher.morpher(画像パス, plot=True,num_frames=フレーム数,out_frames=out_folder,out_video='動画ファイル名')


画像のパスを指定
import glob

img_path = glob.glob('img/*.*')
print(img_path)
あいの子画像作成
out_folder = '/'
facemorpher.morpher(img_path, plot=True,num_frames=30,out_frames=out_folder,out_video='ファイル名')
プレビュー用関数
import imageio
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML

def video_show(video):
    mov , video = [] , imageio.mimread(video)
    fig = plt.figure(figsize=(10,10))
    for i in range(len(video)):
        img = plt.imshow(video[i], animated=True)
        plt.axis('off')
        mov.append([img])
    anime = animation.ArtistAnimation(fig, mov, interval=100, repeat_delay=1000)
    plt.close()
    return anime
    
HTML(video_show('ファイル名').to_html5_video()) 

これで作成した動画をプレビューまでできます。

あいの子の画像などは
是非動画でご覧ください

それでは