「動画の高画質化を無料で行いたい」
「動画に出てくる人間の顔画像を自動的に取得したい」
このような場合には、この記事の内容が参考になります。
この記事では、AI動画高画質化ツールでもあるCodeFormerについて解説しています。
本記事の内容
- CodeFormerによる動画高画質化
- CodeFormerによる動画内の顔認識・顔検出
それでは、上記に沿って解説していきます。
CodeFormerによる動画高画質化
CodeFormerとは、画像高画質化ツールとして公開されました。
主に、人間の顔を復元するということがその特徴でした。
その後、CodeFormerにReal-ESRGANが統合されました。
このことにより、人間の顔以外も復元することが可能になりました。
Real-ESRGANについては、次の記事で説明しています。
そして、2022年10月5日には動画の高画質化にも対応しました。
動画は画像を合わせたモノだと考えれば、この対応に驚きはありません。
気になるのは、その効果ですよね。
「どの程度まで、動画を高画質化できるのか?」
このことを確認するために、次の動画を利用しました。
[Street scenes, city in Japan, late 1940s]
https://archive.org/details/CLN-36-C-5_CAN_1?start=56
白黒の古い動画です。
1940年代の東京で撮影した動画になります。
この動画をCodeFormerで高画質化してみました。
処理前と処理後の比較動画は、以下となります。
結果は、驚愕の結果というほどではありません。
これは、白黒動画というのが関係している可能性があります。
ということで、カラーの動画を高画質化してみました。
そして、比較したのが以下の動画です。
白黒の場合より、カラーの場合の方が高画質化の効果を確認できます。
ただ、高画質化により元の動画より再生時間が伸びています。
原因は、フレームレートの違いかもしれません。
まだ、CodeFormerの動画高画質化は公開されたばかりの新機能です。
今後の機能改善により、再生時間が伸びる問題が解決されることを期待しましょう。
(※元動画のフレームレート自動算出などで対応できそうな感じはします)
あと、動画を高画質化する時間が結構長いです。
白黒動画は2時間程かかりました。
GPUにRTX 3090(24GB)を用いての結果となります。
したがって、マシンスペックにはある程度のレベルが求められます。
なんと言っても、動画編集と機械学習を同時に行うわけですからね。
以上、CodeFormerによる動画高画質化を説明しました。
次は、CodeFormerによる動画内の顔認識・顔検出を説明します。
CodeFormerによる動画内の顔認識・顔検出
ここで言う顔認識・顔検出は、リアルタイムの話ではありません。
動画内の顔を画像として切り出すことを指しています。
この顔画像を切り出すとういうことについて、説明します。
まず、動画を処理する場合には次のようなコマンドを利用します。
python inference_codeformer.py --bg_upsampler realesrgan --face_upsample --w 0.7 --test_path 動画パス --save_video_fps 24
上記を実行すると、「results」ディレクトリ以下に次のディレクトリ・ファイルが作成されます。
これは、白黒の古い動画を処理した場合の構成です。
mp4が高画質化された動画になります。
各ディレクトリには、次のような画像が保存されています。
cropped_faces | 動画の静止画から切り出した顔画像 |
final_results | 動画の静止画を高画質化した画像 |
restored_faces | 切り出した顔画像を高画質化した顔画像 |
「cropped_faces」の画像
「restored_faces」の画像
「cropped_faces」と「restored_faces」には、同じ枚数の画像があります。
そして、「final_results」には高画質化した全体となる画像が保存されています。
000000.png
「cropped_faces」と「restored_faces」にある顔画像のファイル名は、全体画像のファイル名と関連があるようです。
「000000.png」には、「000000_00.png」の顔を持つ人物が存在しています。
全体画像に複数の顔を認識できれば、次のように下2桁が連番となるようです。
これらの顔が検出できた全体画像は、以下となります。
001004.png
確かに、3つの顔が確認できます。
以上、CodeFormerによる動画内の顔認識・顔検出を説明しました。