27

この記事は最終更新日から1年以上が経過しています。

TecoGANをやってみた

TecoGANとは

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

元ネタの論文は以下。

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処理後
画像 処理前 処理後
サイズ 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処理後
処理後

参考サイト

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
kannkyo
Full stack engineer. (投稿はすべて個人の見解です)

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Azure Kubernetes Serviceに関する記事を投稿しよう!
~