😀

TecoGANをやってみた

2020/03/26に公開

TecoGANとは

TecoGAN(TEmporally COherent GAN)は、動画向けの超解像アルゴリズム。
名前の通り教師なし学習の一種のGANを動画に適用したもの。

元ネタの論文は以下。

https://arxiv.org/pdf/1811.09393.pdf

TecoGANを簡単に試せるOSSがGitHub上で公開されているので実際にやってみた。

インストール

CUDA

公式サイトからCUDAをダウンロードしてインストール。

TecoGAN

リポジトリをクローン。

git clone https://github.com/thunil/TecoGAN

仮想環境を作成。

cd TecoGAN
python -m venv venv

仮想環境をアクティベートして依存ライブラリをインストール。

source venv/bin/activate
pip install --ignore-installed --upgrade tensorflow-gpu
pip install -r requirements.txt

動作確認

学習済モデルのダウンロード

TecoGAN modelをダウンロードする。
runGan.pyの引数に0を渡すと自動的にダウンロードが始まる。

python3 runGan.py 0

ダウンロードには10分以上かかる。しばしご歓談ください。

画像処理

ダウンロードが完了したら、サンプルの画像(カレンダー)をTecoGANで処理してみる。
runGan.pyの引数に1を渡すと自動的に処理が始まる。

python3 runGan.py 1 

実行結果を以下に示す。左が処理前の画像、右が処理後の画像。

TecoGAN処理前 TecoGAN処理後
画像 <img width="500px" alt="処理前" src="/images/qiita/a5e25fe2-d78b-6491-59fd-2f4882189365.png"> <img width="500px" alt="処理後" src="/images/qiita/7a4e029b-f769-7f83-8822-4e3bc98b0fd0.png">
サイズ 180x144px 720x576px
(元の4倍)
出典:https://github.com/thunil/TecoGAN

画質評価

画質を評価する。
runGan.pyの引数に2を渡すと自動的に処理が始まる。

python3 runGan.py 2

実行結果は以下の通り。

,PSNR_00,SSIM_00,LPIPS_00,tOF_00,tLP100_00
0,22.838514,0.77990526,0.15833299,0.1028823,0.6481819
1,22.918787,0.78221714,0.16730282,0.10047257,0.07571839
(略)
36,23.433603,0.7989261,0.14277494,,
,Avg_PSNR,Avg_SSIM,Avg_LPIPS,Avg_tOF,Avg_tLP100
0,23.221691,0.7908746,0.15114386,0.1334446,0.16479945
,FolderAvg_PSNR,FolderAvg_SSIM,FolderAvg_LPIPS,FolderAvg_tOF,FolderAvg_tLP100
0,23.221691234691722,0.790874584301098,0.15114386017258102,0.13344460063510472,0.16479945182800293
,FrameAvg_PSNR,FrameAvg_SSIM,FrameAvg_LPIPS,FrameAvg_tOF,FrameAvg_tLP100
0,23.221691234691722,0.790874584301098,0.15114386017258102,0.13344460063510472,0.16479945182800293

PSNR、SSIMなどは画像評価指標。定義は、 https://dftalk.jp/?p=18111 などを参考すること。

2行目から5行目までの0~36番の数値は画像毎の画像評価指標である。
特に傾向はなく、ほぼ一定。

  • Avgはすべての画像の平均値。
  • FolderAvgは画像の格納されているフォルダごとの平均値。複数のフォルダを指定できる。
  • FrameAvgはおそらく画像のフレーム単位の平均値か。

考察

  • カレンダー以外の別の画像でも試してみたが、元の画像が小さく画質が悪いほど効果的であった。例えば元の画像が640x360px程度でそこそこ画質が良い場合は、PSNR~12、SSIM~0.5程度となりカレンダーの場合より劣化した。
  • TecoGAN処理後の画像を拡大すると、エッジは濃く、ベタ塗りは若干劣化しつつ解像度は上がっていることがわかる。

TecoGAN処理後
<img width="1000px" alt="処理後" src="/images/qiita/7a4e029b-f769-7f83-8822-4e3bc98b0fd0.png">

参考サイト

Discussion