TecoGANを試す

低解像度ビデオを高解像度ビデオに変換できる、というソフトウェアが話題になっていたので試してみた。

環境は以下。

・MS-Windows10 1809
・Intel Core i7 7700K
・GeForce GTX1070

コードはPythonで書かれているのでAnacondaを使用することにする。



とりあえず公式サイトからダウンロードしてインストール。
インストールしたら「Anaconda Prompt」を起動する。

こんなの。



Anacondaでは仮想環境を簡単に作ったり、切り替えたりすることができる。

まずは以下のコマンドでTecoGANで使用する環境を用意する。tcgnの部分は仮想環境の名前なので自由にしてよい。

しばらくすると各種インストールが完了するので、以下を実行し仮想環境に入る。

 

さて、仮想環境を作ったところで、githubからTecoGAN一式を入手、ZIPでダウンロードして適当な場所に解凍しておく。

https://github.com/thunil/TecoGAN

githubからダウンロードしたものにはテスト用のファイルなどが含まれておらず、本来であればrungan.py 0とすることで必要なファイルをダウンロードしてくるのだが、このコードはWindows向けに書かれていないため手動でmodel.zipをダウンロードする。他のもダウンロードしてもよいが、ご自由に。URLはrunGan.py内を参照のこと。

runGan.pyを開いたついでに、「python3」となっている部分を「python」に書き換えておく。

 

ここからは必要なパッケージを仮想環境に追加していくが、GPUで計算させる場合とCPUで計算させる場合でパッケージが異なる。

GPUで計算させる場合、NVIDIA製グラフィックチップでCUDA環境が必要なる。なんだかRADEONでどうこうする方法もあるようだが、今回は触れない。

まずはCUDA9環境から。CPUで計算させる場合は後のパートまで読み飛ばしてほしい。

 

GPUを使用する方法(CUDA9 + cuDNNv7.1環境)

大元の前提として必要なもの:
・CUDA9  ダウンロード
・cuDNN 7.1 ダウンロード

CUDA9についてはCUDA9本体とパッチが4つあるのですべてダウンロードし、順番にインストールを行う。

cuDNNはNVIDIAアカウントへの登録が必要だが、特に難しいものはないので登録して入手。最新版ではなく7.1.xをダウンロードすること。

cuDNNはzipを解凍後、”C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0″内の同名ディレクトリに中身をコピーすれば導入完了。

 

導入できたら、必ずAnacondaPromptを再起動してから次の手順へ。

以下コマンドで必要なパッケージを追加する。(base)でなく、最初に作成した仮想環境に入るのを忘れずに。

 

完了したら「動かしてみる」へ進む。

 

CPUで計算を行う方法

最初に作った仮想環境がアクティブになっていることを確認して、次のコマンドを実行する。

これで動くはずだが、やはりGPUを使用する場合と比べて大分遅い。

画像32枚処理時の参考値:
CPU:total time 55.7
GPU:total time 3.54

 

動かしてみる

あとはTecoGANを展開したディレクトリに移動し、

とすれば「LR」ディレクトリの「calender」が処理され「result」ディレクトリ内の同名ファイルに保存される。

calender以外の処理を試したければrunGan.py内のcalenderを別のディレクトリ名に書き換えればよい。

 

自前の動画を処理してみたい場合は、ffmpegを使用して以下のようにしてフレームをpngに切り出すことでTecoGANに処理をさせることができる。

出力結果を動画に戻す場合は次のようにする。

コーデックやフォーマットは適宜変更のこと。コマンド内の「24」はフレームレートなので、元の動画のフレームレートを入力する。

 

TecoGAN、元がそれなりの解像度で、意図して解像度が落とされているようなものについてはよく補完するけど、やっぱり元々荒かったり、ノイズが多いものについては少々難しいなとは思う。
いろいろ試してみたい。

 

最後に、動作チェックをした環境での「conda list」の結果を添付しておく。うまく動かない場合のバージョンなどの参考に。

 

 

GPU演算時

 

 

CPU演算時

 


コメントを残す

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