ピンボケや低画質の顔画像をもっとクリアにしたいと思ったことはありませんか?そんな悩みを解決してくれるのが、AI技術を活用した画像修正ツール「CodeFormer」です。Pythonを使えば、簡単にインストールしてすぐに活用できます。
本記事では、CodeFormerを使って顔画像を復元する方法を、分かりやすく解説します。古い写真やぼやけた画像を美しく蘇らせたい方は、是非この記事をご覧ください。
CodeFormerとは
CodeFormerは、AIを活用した顔画像の復元技術で、特に低画質やピンボケした画像の補正に優れています。主な特徴と利点をまとめると、以下のようになります。
主な特徴
- Transformerベースのモデル: グローバルな顔の構成をモデル化し、自然な復元を実現。
- 高品質な復元: 劣化した顔画像を鮮明にし、ディテールを強化。
- 制御可能な補正: 忠実度と品質のバランスを調整できる特徴変換モジュールを搭載。
- 古い写真やAI生成画像に最適: 特に古い写真やAI生成の顔画像の補正に効果的。
利点
- 高精度な復元: 重度の劣化にも対応し、自然な顔を再現。
- 簡単な導入: Python環境で手軽にインストール・使用可能。
- 高速処理: Nvidia T4 GPU上で平均10秒ほどで処理が完了。
- 多様な用途: 古い写真の修復、AI生成画像の補正、一般的な画像の高画質化に活用可能。
CodeFormerの公式サイト


CodeFormerの概要とソースコードは、Git上にある CodeFormer公式ページに掲載されています。本記事では、ここに記載されいている内容をできるだけわかりやすく解説したものになります。
https://github.com/sczhou/CodeFormer

インストールの前提条件
CodeFormerの公式GitHubページでは、Anaconda を使ったインストール方法が紹介されていますが、本記事ではWinPythonを使ったローカル環境へインストールする手順を紹介しています。
Python/CUDAのバージョン
動作に必要な環境は次の通りです。
必要な環境・ライブラリ | バージョンなど | 備考 |
---|---|---|
Python 環境 | Python 3.8.10 | |
Git 環境 | その時の最新版 | |
Pytorch | torch 2.4.1+cu118 | |
CUDA Toolkit | 11.8 | CPUで動かすならインストール不要 |
cuDNN | 8.9.7 | 8.9.0以上なら動作可能 |
インストール手順の概要
次の手順でインストールを行います。
Step1 Python動作環境の構築 | ①Python 3.8.10の環境準備 ②Gitの環境準備 ③CUDA Toolkit 11.8のインストール(GPUを使う場合) ④cuDNN 8.9.7 |
---|---|
Step2 DPIRのインストール | GitHubからCodeFormerをインストール後、各種モジュールをインストール |
Step3 各種モデルのインストール | 添付されているpython プログラムを実行することで、学習済みモデルがダウンロードされます。 |
インストール手順
Step1.Python動作環境の構築
「【最初の一歩】生成AI向けPython環境構築手順(スクリーンショットで解説)」の記載内容(①②③④)を実行してください。
Python環境構築手順の①~④をインストールしてください。
FFMPEGのインストールは不要です(使わないだけなので、インストールしても差し支えはありません)。
Step2.CodeFormerのインストール
あらかじめ、CodeFormerをインストールするための任意のフォルダを作成しておきます。今回は、Oドライブの直下に CodeFormerというフォルダを作成し、そこにインストールすることにします。
まず、コマンドプロンプトを開き、インストールしたいフォルダ(今回はOドライブ直下のCodeFormerフォルダ)に移動し、次のコマンドを実行します。
git clone https://github.com/sczhou/CodeFormer

CodeFormerのモジュールがダウンロードできたら、次は必要なモジュールをインストールします。
この時、GPUを利用するか否かによって、実行するコマンドが変わります。
CPUのみでCodeFormerを実行する場合
cd CodeFormer
pip3 install -r requirements.txt
python basicsr/setup.py develop
GPUを使ってCodeFormerを実行する場合
cd CodeFormer
pip3 install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
python basicsr/setup.py develop
NVIDIA RTX-4070 を使う場合、1~2秒程度で処理できますが、CPUだけで処理させる場合は、Core-i5 13400 のCPUスペックでも1画像に1分程度の処理時間が必要です。
Step3.各種モデルのインストール
続けて、次のコマンドを実行します。これで、必要なモデルが自動的にダウンロードされます。
python scripts/download_pretrained_models.py facelib
python scripts/download_pretrained_models.py CodeFormer

以上でモデルのインストールは完了です。
CodeFormerのフォルダ構成について

上図は、インストール後のフォルダ構成です。
inputs ォルダには、テスト用のサンプル画像が置かれていますので、CodeFormerの効果をすぐに試すことができます。
デモプログラムは、全部で3個用意されており、それぞれの概要は次の通りです。
ファイル名 | 説明 |
---|---|
inference_codeformer.py | 顔画像の復元を行うスクリプト |
inference_colorization.py | 白黒画像をカラー化するためのスクリプト |
inference_inpainting.py | 画像の欠損部分を補完するためのスクリプト |
CodeFormerデモプログラムの起動方法
コマンドプロンプトを開き、CodeFormerをインストールしたフォルダの直下に移動したあとで、デモプログラムを実行します。

顔画像の復元
まず最初に、カラーノイズを除去してみます。カラーノイズ除去は main_test_scunet_color_gaussian.py を使います。
python inference_codeformer.py -i <input_path> -o <output_path> option・・・
ちなみに、入力画像から顔が認識されると、その部分が切り取られ、512×512のサイズに縮小後に復元処理が行われます。そして、復元が完了した段階でアップリングされ、元の画像に合成されるようです。
オプション | デフォルト値 | 説明 |
---|---|---|
-i, --input_path | ./inputs/whole_imgs' | 入力画像、動画、またはフォルダのパス。動画の場合は .mp4 , .mov , .avi で終わる必要があります。 |
-o, --output_path | None | 出力フォルダのパス。指定しない場合は results/<input_name>_<w> になります。 |
-w, --fidelity_weight | 0.5 | 画質と忠実度のバランスを調整する重み。 |
-s, --upscale | 2 | 最終的な画像のアップスケール倍率。 |
--has_aligned | FALSE | 入力画像が既にクロップされ、位置合わせされた顔画像である場合に指定するフラグ。 |
--only_center_face | FALSE | 中央画像の中心に検出された顔のみを復元する場合に指定するフラグ。 |
--draw_box | FALSE | 検出された顔の周りにバウンディングボックスを描画する場合に指定するフラグ。 |
--detection_model | retinaface_resnet50' | 顔検出モデル。retinaface_resnet50 , retinaface_mobile0.25 , YOLOv5l , YOLOv5n , dlib から選択できます。 |
--bg_upsampler | None' | 背景のアップサンプラー。realesrgan を指定できます |
--face_upsample | FALSE | 強顔の復元後に再度アップサンプリングを行う場合に指定するフラグ。 |
--bg_tile | 400 | 背景アップサンプラーのタイルサイズ。 |
--suffix | None | 復元された顔のファイル名に追加するサフィックス。 |
--save_video_fps | None | 動画を保存する際のフレームレート。指定しない場合は入力動画のフレームレートが使用されます |
python inference_codeformer.py -i ./inputs/crop -o ./outputs --bg_upsampler realesrgan --face_upsample

復元結果だけを見ると綺麗に復元できているように見えますが、オリジナルと比べると別人のような印象を受けます。当然といえば当然ですが、さすがにここまでボケると復元は難しいようです。
オリジナル

ぼかし

復元後

白黒画像をカラー化
inference_colorization.pyを使うと、モノクロ画像をカラー化することができます。
但し、入力画像は512×512である必要があります。
python inference_colorization.py -i <input_path> -o <output_path> option・・・
オプション | デフォルト値 | 説明 |
---|---|---|
-i, --input_path | ./inputs/gray_faces' | 入力画像ファイルまたは画像フォルダのパスを指定します。デフォルトでは ./inputs/gray_faces が使用されます。 |
-o, --output_path | None | 出力フォルダのパスを指定します。None の場合、入力が単一画像なら results/test_colorization_img 、フォルダなら results/<入力フォルダ名> に保存されます。 |
--suffix | None | カラー化された顔画像のファイル名に追加するサフィックスを指定します。None の場合はサフィックスは追加されません。 |
python inference_colorization.py -i ./inputs/gray -o ./outputs

モノクロからカラー化することはできましたが、ちょっと顔つきが変わってしまいました。
オリジナル

モノクロ

カラー化

画像の欠損部分を補完
inference_inpainting.pyを使えば、欠損した画像を補完することができます。
こちらも、入力画像は512×512である必要があります。
python inference_inpainting.py -i <input_path> -o <output_path> option・・・
オプション | デフォルト値 | 説明 |
---|---|---|
-i,--input_path | ./inputs/masked_faces' | 入力画像ファイルまたは画像フォルダのパスを指定します。デフォルトでは ./inputs/masked_faces が使用されます。 |
-o,--output_path | None | 出力フォルダのパスを指定します。None の場合、入力が単一画像なら results/test_inpainting_img、フォルダなら results/<入力フォルダ名> に保存されます。 |
--suffix | None | 修復された顔画像のファイル名に追加するサフィックスを指定します。None の場合はサフィックスは追加されません。 |
python inference_inpainting.py -i ./inputs/mask -o ./outputs

インストール時に同梱されているサンプル画像だと綺麗に補正できるのですが、オリジナルの画像を試したところ、全く補完されませんでした。
オリジナル

欠損

補完後

まとめ
今回は CodeFormerについて、インストール方法と使い方を紹介しました。
CodeFormerによるボケ画像の復元は、かなり綺麗な仕上がりになるものの、あくまでもAIが推定しているだけなので、ボケ量が多いと元と異なる印象に復元されてしまいます。
モノクロ画像のカラー化は、カラーになるだけではなく、顔の輪郭そのものも変わってしまうため、ちょっと微妙です。
また、欠損部の補完についても、添付されていたサンプル画像では綺麗に復元されるものの、私が用意したオリジナル画像では、全く補完されませんでした。
従って、CodeFormerを使う場合は、ボケ画像の復元だけに限定して使うのがよさそうです。
コメント