概要
動画の高解像度化モデルのTecoGANによるモザイク除去について解説してみます。
はじめに
現在、AI技術の発展により、
今まで機械ではできないとされていた人間による「経験の中で培った勘と知恵に基づく専門的な判断」が
コンピュータでも実現できるようになってきました。
AIによる作業の代替は、産業分野で注目されることが多いですが、
ネットに潜む職人の技術もAIで代替されようとされています。
PhotoShop職人や映像職人により、数々のアイコラが作られてきましたが、
近年発達してきた画像生成のAIにより、これらの職人の技を再現できるようになりました。
今回は、モザイク消し職人の仕事を代替可能な高解像度化技術について、解説紹介していきたいと思います。
TecoGANとは
概要
「TecoGAN」とは2018年11月にミュンヘン工科大学で発表された動画の高解像度化モデルのことを指します。
画像超解像技術は、既存の画像情報から欠けている画像詳細を再構成することによって、低解像度画像から高解像度画像を生成する技術のことです。
画像と比べて、ビデオ超解像技術はより複雑です。
詳細なフレーム画像生成を必要とするだけでなく、さらに、画像間の動きの一貫性も維持する必要があるからです。
「TecoGAN」は、直前のフレームの動きと低解像度フレームを元に、高解像度フレームを生成しています。これによって細部まで綺麗に生成することができ、フレーム間の時間的にも一致させています。
通常ビデオはズームすると画質が劣化しますが、TecoGANを用いることで画質を落とさずに拡大することができます。
アーキテクチャ
「TecoGAN」は、名前の通りGANのアーキテクチャを採用しており、
高解像度フレームを作成する生成器と、生成したフレームと本物を判別する識別器に分かれています。
生成器では、ホンモノに近いフレームの偽物を生成し、識別器では本物と偽物を見分ける学習をしています。
生成器
生成器では、直前のフレーム(Xt-1)と元の低解像度フレーム(Xt)と高解像度化した直前のフレーム(Gt-1)をインプットとしています。
ざっくりした処理としては、以下の様な感じで、ワープ処理とバイキュービック処理は既存の画像処理手法です。
- Xt-1とXtをもとにフレームの動き特徴量Fを生成
- 特徴量Fにワープ処理をしたGt-1を結合
- バイキュービック処理をしたXtとFを結合しGtを生成
識別器
対象フレームの前後を含めた3フレームで、生成された高画質フレームGと正解フレームYを識別機にかけます。低画質フレームXを条件として入力します。
識別器はGとYを比較して、生成したフレームとフレーム感のつながりが自然かどうかを判定します。
また、低画質フレームXも識別器にいれることで、つながりが自然でも低解像度であるものを外すように識別器が訓練されます。
実装再現
https://github.com/thunil/TecoGANにソースコードがGigthubで公開されているのでこちらをgit cloneします。
モデルの動作方法
学習済みのTecoGANモデルを実行するためのクイックスタートガイドが用意されています。
評価を実施するにはNvidia GPUが必要になります。
またtkinterも必要であり、python3-tkパッケージを介してインストールできます。
# Install tensorflow1.8+, pip3 install --ignore-installed --upgrade tensorflow-gpu # or tensorflow # Install PyTorch (only necessary for the metric evaluations) and other things... pip3 install -r requirements.txt # Download our TecoGAN model, the _Vid4_ and _TOS_ scenes shown in our paper and video. python3 runGan.py 0 # Run the inference mode on the calendar scene. # You can take a look of the parameter explanations in the runGan.py, feel free to try other scenes! python3 runGan.py 1 # Evaluate the results with 4 metrics, PSNR, LPIPS[1], and our temporal metrics tOF and tLP with pytorch. # Take a look at the paper for more details! python3 runGan.py 2
モデルの学習方法
・ 学習準備
次のコマンドを使用して、選択したディレクトリに学習データおよび検証データをダウンロードすることができます。
オンライン動画ダウンロードにはyoutube-dlが必要です。
# Install youtube-dl for online video downloading pip install --user --upgrade youtube-dl # take a look of the parameters first: python3 dataPrepare.py --help # To be on the safe side, if you just want to see what will happen, the following line won't download anything, # and will only save information into log file. # TrainingDataPath is still important, it the directory where logs are saved: TrainingDataPath/log/logfile_mmddHHMM.txt python3 dataPrepare.py --start_id 2000 --duration 120 --disk_path TrainingDataPath --TEST # This will create 308 subfolders under TrainingDataPath, each with 120 frames, from 28 online videos. # It takes a long time. python3 dataPrepare.py --start_id 2000 --duration 120 --REMOVE --disk_path TrainingDataPath
・ 学習開始
準備ができたら、runGAN.pyのTrainingDataPathを指定し、ダウンロードしたデータで学習を開始できます。
tensorboardのgifサマリーにはffmpegの別途インストールが必要です。
# Install ffmpeg for the gif summary sudo apt-get install ffmpeg # or conda install ffmpeg # Train the TecoGAN model, based on our FRVSR model # Please check and update the following parameters: # - VGGPath, it uses ./model/ by default. The VGG model is ca. 500MB # - TrainingDataPath (see above) # - in main.py you can also adjust the output directory of the testWhileTrain() function if you like (it will write into a train/ sub directory by default) python3 runGan.py 3 # Train without Dst, (i.e. a FRVSR model) python3 runGan.py 4 # View log via tensorboard tensorboard --logdir='ex_TecoGANmm-dd-hh/log' --port=8008
モザイク除去
ここまで「TecoGAN」について紹介してきましたが、モザイク除去技術への適用について紹介したいと思います。
「TecoGAN」は、通常動画全体の高解像度化に適用されますが、動画のモザイク部分のみに適用範囲を指定することでモザイク部分の解像度を上げ、モザイク加工前を再現することになります。
注意していただきたいのが、高解像度化技術の応用になりますので、低解像を下げてブロックノイズされたモザイクの復元は可能ですが、
黒く塗りつぶされたり、磨りガラスのようにぼかされたモザイクの復元をすることはできません。
また「TecoGAN」は、動画の高解像度化モデルであり、前のフレームをもとに解像度化処理をしているので静止画への適用はできません。
すでに「TecoGAN」を応用したモザイク除去ソフトjavplayerが公開されており体験版もありますので、こちらを利用していただくと容易にアルゴリズムを試すことができます。
このソフトの作成者は日本人であり、twitterも開設されておりhttps://twitter.com/Javski2、ソフトの解説やアップデート状況などを日本語で追うことができます。
終わりに
高解像度モデル「TecoGAN」の解説をしました。
[DeepNude]水着を丸裸にするAI技術DeepNudeを解説してみる、[ディープフェイク]簡単にフェイク動画作成ができるWebアプリを作ってみた[DeepFaces/FaceSwap]に引き続き、男性のロマンをAIで実現する系のコンテンツの紹介でした。
どうしても記事のアクセス数がそっち系の内容のほうが伸びるので投稿内容が偏り始めてしまった気がします。