windowsで動かしてみたシリーズでございます

過去にはvid2vidとかいろいろ動かしてみてるので今回もいけるでしょう

なお、TecoGANのGitHubリポジトリはこちら:

使用環境

  • windows 10 1809
  • 最新のAnaconda
  • RTX 2080 Ti

環境のセットアップ

tensorflowとpytorchが必要みたいですね。これはwindows使いには一番嬉しいパターンです。

あとopencvも必要なので、以前の記事のやり方にしたがってまずはanaconda環境でopencv3とtensorflowを入れます:

conda create -y -n tecogan -c conda-forge python=3.6 anaconda python-lmdb opencv
activate tecogan
conda install tensorflow-gpu

pytorchは公式のやりかたで簡単にインストールできますね

pip install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp36-cp36m-win_amd64.whl
pip install https://download.pytorch.org/whl/cu100/torchvision-0.3.0-cp36-cp36m-win_amd64.whl

あとはrequirements.txtでインストールすれば良いのかと思いきや、落とし穴があります。

注意1: numpyのバージョン

僕のanaconda環境ではデフォルトでインストールされるnumpyが1.15でした。requirements.txtではnumpy>=1.14.3となっているので問題ないように思えるのですが、python runGan.py 2という評価テストの実行で以下のエラーが出てしまいました:

Testing test case 2
Traceback (most recent call last):
  File "metrics.py", line 5, in 
    from LPIPSmodels import util
  File "D:\TecoGAN\LPIPSmodels\util.py", line 13, in 
    import torch
  File "C:\Users\user\AppData\Local\conda\conda\envs\tensor2tensor\lib\site-packages\torc
h\__init__.py", line 79, in 
    from torch._C import *
ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'

なんか調べるとnumpy 1.16にアップグレードしたら解決したよ!てのを見ました

なので以下のコマンドでnumpyを1.16にアップグレード:

conda install numpy=1.16

しかし問題は続きます

注意2: scikit-imageのバージョン

引き続きpython runGan.py 2の実行でエラーが出ます:

Testing test case 2
Traceback (most recent call last):
  File "metrics.py", line 5, in 
    from LPIPSmodels import util
  File "D:\TecoGAN\LPIPSmodels\util.py", line 12, in 
    from skimage.measure import compare_ssim
  File "C:\Users\user\AppData\Local\conda\conda\envs\tensor2tensor\lib\site-packages\skim
age\__init__.py", line 167, in 
    from .util.dtype import (img_as_float32,
  File "C:\Users\user\AppData\Local\conda\conda\envs\tensor2tensor\lib\site-packages\skim
age\util\__init__.py", line 8, in 
    from .arraycrop import crop
  File "C:\Users\user\AppData\Local\conda\conda\envs\tensor2tensor\lib\site-packages\skim
age\util\arraycrop.py", line 8, in 
    from numpy.lib.arraypad import _validate_lengths
ImportError: cannot import name '_validate_lengths'

今度はscikit-image関連のエラーのようです。privateなコンポーネントをimportするのは行儀が悪いのでこういうことになるのです。

pipでインストールされていたscikit-imageのバージョンは0.14.1だったので、下記コマンドで0.15.0にアップグレードです:

conda install -c conda-forge scikit-image

これでエラーは回避できます。

最後に、まだインストールしてない残りのモジュールをインストールします。

pip install -r requirements.txt

exampleの実行

READMEにある通り、exampleの実行は以下のコマンドでできます:

python runGan.py 0
python runGan.py 1
python runGan.py 2
  1. データ、モデルのダウンロード
  2. calenderデータの超解像を実行
  3. 結果のevaluation

という具合です。ただし、これらはpython内でunixシェルコマンド(wgetやunzipなど)を呼び出しているのでwindowsでは実行できません。

WSLでwindowsのバイナリを実行するという方法も以前書きましたが、実行されるpythonがwindows上のもの → subprocessコマンドで呼び出されるターミナルもwindowsのシェルになってしまい、今回は実行できません。

でもrunGan.py 0でやってることはwgetとunzipなので、各コマンドをWSLに手動コピペして実行しましょう。

runGan.py 1とrunGan.py 2はpythonを呼び出しているだけなので、上記記事の通りにWSL上でpython.exeへのaliasを作った後、runGan.py内で”python”となっているところを”python.exe”に書き換えましょう。

これで各コマンドが実行できます。

結果

入力データは動画から書き出した連番画像です。これはffmpegを使えば作成できます。

41枚の画像の変換に15秒弱ぐらいかかった気がします。

Testing test case 1
Using TensorFlow backend.
[1, 144, 180, 3]
[1, 576, 720, 3]
Finish building the network
2019-05-27 02:09:44.784414: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU
supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2019-05-27 02:09:44.972386: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found
 device 0 with properties:
name: GeForce RTX 2080 Ti major: 7 minor: 5 memoryClockRate(GHz): 1.755
pciBusID: 0000:01:00.0
totalMemory: 11.00GiB freeMemory: 9.03GiB
2019-05-27 02:09:44.979885: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Addin
g visible gpu devices: 0
2019-05-27 02:09:45.401648: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device
 interconnect StreamExecutor with strength 1 edge matrix:
2019-05-27 02:09:45.405607: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      0

2019-05-27 02:09:45.407833: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:
N
2019-05-27 02:09:45.410791: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Creat
ed TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 8702 MB memory) ->
 physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute cap
ability: 7.5)
Loading weights from ckpt model
Frame evaluation starts!!
Warming up 5
Warming up 4
Warming up 3
Warming up 2
Warming up 1
saving image output_0001
saving image output_0002
saving image output_0003
saving image output_0004
saving image output_0005
saving image output_0006
saving image output_0007
saving image output_0008
saving image output_0009
saving image output_0010
saving image output_0011
saving image output_0012
saving image output_0013
saving image output_0014
saving image output_0015
saving image output_0016
saving image output_0017
saving image output_0018
saving image output_0019
saving image output_0020
saving image output_0021
saving image output_0022
saving image output_0023
saving image output_0024
saving image output_0025
saving image output_0026
saving image output_0027
saving image output_0028
saving image output_0029
saving image output_0030
saving image output_0031
saving image output_0032
saving image output_0033
saving image output_0034
saving image output_0035
saving image output_0036
saving image output_0037
saving image output_0038
saving image output_0039
saving image output_0040
saving image output_0041
total time 3.3254575729370117, frame number 46

結果はresultフォルダに入ってます:

うんまあ、確かに超解像できてます。でもまだちょっと自分で動画用意して実行してみないとわからないですね。

 

(2019-05-28 追記)

関連記事

『君の名は』はキモいのか

フェイクだった時代の終焉

5月分のBanggoodクーポン Mi Pad 4 Plusもあるよ

Kindle Cloud Readerで洋書を読む時にgoogle翻訳を使う

シグマのフルサイズ超広角Artレンズを買った

numpyで3次元座標インデックスの配列を作る方法

コメント

コメントを返信する

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