TecoGAN(Temporally Coherent GANs)の超解像変換で画像を低解像度から高解像度にできるようなので試してみる
やってみた
やること
試すのはgithubのTecoGAN
Paper: Learning Temporal Coherence via Self-Supervision for GAN-based Video Generation
変換前の低解像度画像 180*144(pngファイル)
変換後の高解像度画像 720*576(pngファイル)
縦横それぞれ解像度が4倍の画像に変換できた
画像ソフト(Gimp)で4倍に拡大した画像、正解画像との比較をしてみる(スライダーを左右に移動可能)
左:4倍拡大画像(Lanczos3) ⇔ 右:超解像画像(TecoGAN)
左:正解画像(GroundTruth) ⇔ 右:超解像画像(TecoGAN)
動画をTecoGANで変換してみた
512×512の元動画をTecoGANで2024×2024に拡大
左:4倍拡大(Lanczos3) ⇔ 右:4倍拡大(TecoGAN)
TecoGANの方が少しシャープかな・・・
やりかた(使い方)
実行環境
- Linux Ubuntu 18.04 LTS (Windows10 (1903) + WSL)
python環境を構築
pythonは3.7
以降はこのpython仮想環境(activateした状態)で作業
$ virtualenv -p python3.7 venv37
$ source venv37/bin/activate
(venv37)$
必要なもろもろをインストール
tensorflowはバージョンを指定しないと2系がインストールされるので1系を指定
$ pip install tensorflow-gpu==1.15
unzipも入れておく
ダウンロードしたデータの解凍に使うので、unzipがなければインストールしておく
$ sudo apt install unzip
TecoGANの準備
githubからTecoGANをclone
$ git clone https://github.com/thunil/TecoGAN.git $ cd TecoGAN
TecoGANで必要なものは下記でインストール
$ pip install -r requirements.txt
インストールされたものを確認(抜粋)
$ pip freeze Keras==2.3.1 matplotlib==3.1.2 numpy==1.17.4 opencv-python==4.1.2.30 pandas==0.25.3 scikit-image==0.16.2 scipy==1.3.3 tensorflow-gpu==1.15.0 torch==1.3.1 torchvision==0.4.2
データの準備
下記を実行すると学習済みモデル、テストデータなどがダウンロードされる
$ python runGan.py 0
ダウンロードが完了すると下記のようになる(数十分かかった)
TecoGAN/ HR/ bridge/ calendar/ city/ face/ foliage/ room/ walk/ LR/ bridge/ calendar/ city/ face/ foliage/ room/ walk/ model/ TecoGAN.data-00000-of-00001 TecoGAN.index TecoGAN.meta
実行
推論(低解像度→高解像度の変換)をするには下記を実行する
$ python runGan.py 1
30秒ほどで実行完了
$ python runGan.py 1 Testing test case 1 WARNING:tensorflow: ~中略~ 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_0041 total time 35.60395073890686, frame number 46 $
実行完了すると下記のようにresults配下に超解像変換された画像が出力されている
TecoGAN/ results/ calendar/ output_0001.png ... output_0041.png log/ logfile.txt
他の画像で超解像変換を試すには
TecoGAN/runGan.pyの70行目で、入力画像のディレクトリ(–input_dir_LR)として’TecoGAN/LR/calendar’が指定されているので、ここを任意のディレクトリに書き換えて、中にpngファイルを配置して推論を実行すればよい
elif( runcase == 1 ): # inference a trained model dirstr = './results/' # the place to save the results testpre = ['calendar'] # the test cases ★ココを別のディレクトリにする
とりあえず静止画像の変換として試したが、動画を変換したい場合はffmpegで全フレームを静止画として抽出して超解像変換し、またffmpegで連結して動画に戻せばよい模様