BigGAN TF Hub を使ってモーフィング動画を自動で作ってみる

今回は、BigGANデモを使って、ランダムに選んだ画像でモーフィングする動画を自動で作ってみます。

こんにちは cedro です。

先回、BigGANデモで、サクッと遊んでみました のブログの最後に「これ映像関係の人とか、かなりイマジネーションがわくツールになるんじゃないかな」とコメントしたように、特にモーフィングのGIF動画は何度見ても面白いです。

そうした中で、次から次へランダムに画像を選んでモーフィングする動画を作ったら、かなり刺激的で面白いと思ったわけです。

しかし、先回ご紹介した方法だと、作るのにやたら手間が掛かるので、なんとかこれを自動化したいと考えました。

ということで、今回は、BigGANデモを使って、ランダムに選んだ画像でモーフィングする動画を自動で作ってみます。

 

早速、動かしてみる

コードの説明は後にして、早速動かしてみましょう。

BigGAN TF Hub Demo   に行き、Google account  でログインします。

まずは、先回同様、[ 1 ] から [ 5 ] までのボタンを順にクリックして、コードを実行して下さい。

 

そして、ページ上部にある、赤丸+コードをクリックします。

 

すると、コードを入力するセルが表示されます。ここに、下記のコードコピペします。

 

このコードコピーして、先程のセルに張り付けます。

 

後は、ボタンを押せばOK。デフォルトは、ランダムに選んだ画像から画像へ4秒間のモーフィング45回やって、3分間mp4ビデオを作成します。作成には3分半くらい時間が掛かり、ボタンクルクルが止まったら処理完了です。

ビデオの長さ length で調整出来、length=151分に相当します。生成画像の多様性を変化させたい場合は、truncation を調整します。値が低いと多様性は下がり(画質は向上)、値が高いと多様性は上がり(画質は低下)ます。

 

ボタンクルクルが止まったら、左側の目次があるところで、ファイルのタブを選択し、赤丸の更新ボタンを押します。

 

すると、BigGAN_video.mp4 というファイルが現れますので、右クリックダウンロードを選択すればダウンロードを開始します。ビデオの内容が気に入らなければ、再度ボタンを押せば、別のビデオが作成されます。エンジョイ!

 

どんなビデオが出来るのか


これは、length = 45, truncation = 0.2 で動画生成したもの(17.3MB)をそのままYoutubeにアップロードした例です。

 

これは、上記ビデオに音楽を付けてYoutubeにアップロードした例です。音楽を付けると雰囲気が出ますよね。なお、これを再生すると音が出るのでご注意下さい。

 

コードを説明します

冒頭の部分です。3–4行目は、ライブラリーのインポートです。ビデオ作成用 OpenCV乱数発生用 random をインポートします。

7行目 num_interps = 401回の画像間補完に使う画像数で、ビデオは10フレーム / 秒設定なので、1回の画像間補完は4秒掛かります。

9行目 length = 45画像間補完を行う回数で、時間に換算すると4秒/回 ×45回=180秒で 3分となります。つまり、length = 151分に相当します。

 

動画作成に関する設定の部分です。3行目動画コーデック mp4 を指定しています。5行目はコンテンツ仕様で、保存名毎秒のフレーム数画像サイズを指定しています。

 

画像間補完を行う部分です。基本的に、元のコードlength 回繰り返す仕様です。1回目noise_seed_Acategory_Aランダムに決めますが、2回目以降 noise_seed_Acategory_A は、その前のnoise_seed_Bcategory_Bのものを使い、連続した画像間補完になるようにしています。

 

ビデオ作成をする部分で、「 ims = 生成した40枚numpy.nadaray 」 を1フレームづつ直接ビデオに書き込んでいます。

4行目1フレーム取得し、6行目OpenCV への入力画像はBGRの順番ににする必要があるので RBGからBGRの順番に直し、8行目でビデオに書き込みます。

いかがでしたか。お気に入りのビデオに出会えましたかでしょうか。

今回、OpenCV動画作成機能を使ってみたのですが、これは便利ですねー。今まで、静止画を作ってからGIF動画を作っていたのですが、直接動画が作れるとすごく生産性が上がります。やっぱり、便利なものは、ドンドン使うべきですね、

では、また。

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)