本記事では、DifFaceと呼ばれる機械学習手法を用いて任意の画像を超解像する方法をご紹介します。
出典: zsyOAOA/DifFace |
DifFace
概要
DifFaceは、Diffusion modelベースのblind face restoration技術です。
blind face restorationとは、低解像やボケなどの未知の劣化を持つ低解像度の顔画像から、高品質の顔画像を復元するタスクを指します。
従来技術では、トレーニングデータに複雑な劣化が含まれている場合、復元精度が低下する問題や、忠実度・知覚的損失・敵対的損失などの複数の制約が必要であり、これらの影響を安定させるために、煩雑なハイパーパラメータの調整が必要であるという問題がありました。
DifFaceでは、低品質画像(LQ)から高品質画像(HQ)への事後分布(posterior)を確立することにより、複雑な損失設計なしでロバストな復元を実現しています。
LQ画像から事前トレーニング済み拡散モデルの中間状態への遷移分布を設計し、モデルを再帰的に適用することで、中間状態からHQ画像へと徐々に遷移させます。この方法により、SOTAを達成しています。
出典: DifFace: Blind Face Restoration with Diffused Error Contraction |
詳細はこちらの論文をご参照ください。
本記事では上記手法を用いて、任意の画像を復元していきます。
デモ(Colaboratory)
それでは、実際に動かしながら任意の画像を復元していきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
環境セットアップ
それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
初めにGithubからソースコードを取得します。
次にライブラリをインストールします。
最後にライブラリをインポートします。
以上で環境セットアップは完了です。
Utility関数の定義
ここでは、出力結果の画像表示用のUtility関数を定義します。
Face Image Restoration
それでは、Blind Face Restorationを実施しています。
まず、顔部分のみを切り出した画像を復元していきます。
以下では、./testdata/cropped_faces
に保存されているテスト画像を復元しています。
復元結果を表示して確認します。
出力結果は以下の通りです。
Whole Image Enhancement
続いて、画像全体の復元を行っていきます。
以下では、./testdata/whole_imgs
に格納された画像を復元しています。
出力結果は以下の通りです。
まとめ
本記事では、DifFaceを用いたBlind Face Restorationを行う方法をご紹介しました。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - DifFace: Blind Face Restoration with Diffused Error Contraction
0 件のコメント :
コメントを投稿