😀
TecoGANをやってみた
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