CodeFormer 是一款强大的照片修复工具,可以修复各种照片损伤,例如划痕、污渍、撕裂等。本指南将介绍 CodeFormer 的在线使用、部署和本地使用。

一、在线使用

目前,CodeFormer 尚未提供官方的在线使用平台。但您可以通过以下方式体验 CodeFormer 的功能:

  1. Hugging Face Spaces: 在 Hugging Face Spaces 上,一些开发者已经将 CodeFormer 模型部署为在线演示。

平台地址: https://huggingface.co/spaces/sczhou/CodeFormer

  1. Relicate: Relicate 提供了一个模型市场,汇集了来自不同开发者的各种 AI 模型,用户可以通过简单的 API 调用或网页界面来使用这些模型 。

平台地址: https://replicate.com/sczhou/codeformer

二、本地部署

在线平台可以方便快捷的体验 CodeFormer 功能,但受限于国内网络环境,可能在线访问时速度不佳,同时存在付费的可能,所以我们有时也需要利用本地资源来部署 CodeFormer。

安装环境

硬件环境

  • 支持 GPU,CPU 构建,为了更快地响应速度和更佳的使用体验,建议使用 GPU 服务器。

本文以百度智能云 GPU 服务器为例进行安装部署,购买计算型 GN5 服务器, 配置 16 核 CPU,64GB 内存,Nvidia Tesla A10 单卡,搭配 100GB SSD 数据盘, 安装 Windows Server 2012 中文操作系统。

  • 如果您使用自己的环境部署,建议 NVIDIA GPU,民用卡 30、40 系列,商用卡 T4、V100、A10 等系列。服务器配置建议最低配置为 8 核 32 G 100G 磁盘,5M 带宽。

软件环境

  • Python >= 3.8

  • Pytorch >= 1.7.1

  • CUDA >= 10.1

  • Other required packages in requirements.txt

更多细节见仓库: https://github.com/sczhou/CodeFormer

安装步骤

购买服务器

  1. 登录 控制台 ,按需购买 云服务器 ,比如选择配置为 16 核 64G 带 1 张 A10 GPU 卡的实例。

  1. 选择 Windows 公共镜像,支持 Windows2019 及以上版本,本教程以 Windows2022 为例演示安装过程。

  1. 通过 VNC 登录实例,安装 GPU 驱动程序。

通过浏览器进入 NVIDIA官方驱动 下载地址,选择相应驱动下载进行安装。

安装 Python

CodeFormer 是以 Python 语言开发,并且运行在 Python 环境上,如果您的环境已经有安装 python,可以跳过此步骤,同时 建议创建一个虚拟环境来隔离项目依赖,防止与其他项目冲突。

本文以一个干净环境来演示操作过程,需要先进行 Python 版本安装。

Python 下载地址: https://www.python.org/dwonloads/

按照下图操作步骤进行安装,其中需要重点勾选“Add python.exe to PATH",这样我们可以在命令行中直接使用python命令,按照向导一步一步完成安装即可,本文中未列举的安装选项,可以直接选择默认。

安装完成后在命令行中输入python --version,可以查看到Python的版本。

安装Git

git 主要用于拉取项目源码,如果您本地已经安装,或者通过其他方式已获取到源码,此步骤也可以跳过。

Git 下载地址: https:/git-scm.com

按照下图操作步骤进行安装,根据向导提示一步一步完成安装即可,本文中未列举的安装选项,可以直接选择默认。

安装完成后,在命令中输入git --version可以查看到git版本信息。

安装 pytorch

CodeFormer 是一个基于 PyTorch 构建的模型,它依赖于 PyTorch 的各种功能,所以我们还需要安装 pytorch。

地址: https://pytorch.org/get-started/locally/

根据自己的服务器参数选择适合的 pytorch 版本,官方会给出安装命令,如下图。

复制安装命令到 Windows 命令行中执行安装。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

下载源码

CodeFormer 源码仓库: https://github.com/sczhou/CodeFormer

  1. 在 Windows 命令行窗口中执行如下命令下载源码。
git clone https://github.com/sczhou/CodeFormer

  1. 进入到源码目录,执行如下命令,安装 python 依赖包。
cd CodeFormer

pip3 install -r requirements.txt  

如果比较慢,可以指定国内源。

pip3 install -r requirements.txt  -i https://mirrors.aliyun.com/pypi/simple/

  1. 执行如下命令,安装 basicsr 框架。
python basicsr/setup.py develop   

时间有点久,要多等一会,如您遇到如下提示,可以执行pip install --upgrade setuptools来升级setuptools

下载模型

下载 CodeFormer 预训练模型。

python scripts/download_pretrained_models.py facelib

python scripts/download_pretrained_models.py CodeFormer

这里可能会遇到下载速度较慢,可以尝试手动从云盘下载:

facelib: Google Drive | OneDrive 

CodeFormer: Google Drive | OneDrive 

下载完成之后分别放在CodeFormer\weights\CodeFormerCodeFormer\weights\facelib目录下。

应用模型

面部修复(适用于图片中包含单张人像)

# For cropped and aligned faces (512x512)
python inference_codeformer.py -w 0.5 --has_aligned --input_path [image folder]|[image path]
  • -w 0.2: 权重参数,取值范围为[0,1],取值越小,则图像修复的质量更高,取值越大,则会产生保真度更高的图片

  • --has_aligned: 这个参数表示输入的人脸图像已经经过对齐处理。CodeFormer 需要对齐的人脸图像才能进行修复,如果你的图像已经对齐,则需要添加这个参数。

  • --input_path [image folder]|[image path]: 这个参数指定了输入图像的路径,可以是单个图像文件路径或包含多个图像的文件夹路径。

执行过程如下,输出的结果放在 results 目录中。

修复前后对比:

整体增强(适用于图片名包含多张人像)

python inference_codeformer.py -w 0.7 --input_path [image folder]|[image path]

修复前后对比:

执行后实际上会生成三个目录,其中 final_results 下存放的是最终结果图,如上图。 而在 cropped_faces 中存储的是经过裁剪和对齐的人像,比如原图中包含 9 张人像,cropped_faces 中就存放了 9 张原始的人像照片, 在 restored_faces 存放了修复后的 9 张人像照片。

修复前后对比:

上色修复

python inference_colorization.py --input_path [image folder]|[image path]

修复前后对比:

破损修复

python inference_inpainting.py --input_path [image folder]|[image path]

修复前后对比:

视频修复

CodeFormer 还支持视频增强,部署依赖中需要提前安装 ffmpeg 应用。

修复命令如下,这里不再演示,感兴趣的同学, 可以自行找一些模糊视频进行尝试修复。

python inference_codeformer.py --bg_upsampler realesrgan --face_upsample -w 1.0 --input_path [video path]

三、补充说明

  • 本文重点是以从源码开始介绍如何一步一步完成 CodeFormer 的部署,过程相对较长并且烦琐,网上也有一些爱好者针对以上步骤制作了一键部署独立包,并且有些还开发了操作界面,感兴趣的同学可以自行通过互联网进行搜索,这里不做说明。

  • CodeFormer 是一款强大的工具,但它并非万能。对于一些过于复杂的损伤,CodeFormer 可能无法完全修复。

  • 使用 CodeFormer 进行修复时,请注意版权问题。