开源大模型Codeformer实践指南——基于丹摩平台实现老旧照片修复

CodeFormer是一款利用深度学习技术,特别是人脸复原模型,实现高质量面部图像修复和增强的AI软件。此外,它还能处理视频中的各种问题,如模糊、抖动、颜色失真等,从而提供更清晰、更稳定的视频观看体验。

本文将使用丹摩平台复现CodeFormer,并实现老旧照片的修复。

一、浅谈CodeFormer

1.1、CodeFormer的主要功能

1. 人脸修复

CodeFormer能够高效地去除人脸图像中的噪声、马赛克、划痕等损坏元素,并恢复和增强图像的细节和色彩。这使得它在老照片修复、模糊照片清晰化等场景中具有广泛的应用价值。

2. 视频去码

除了处理静态图像外,CodeFormer还能对视频进行去码处理。它能够有效提升视频的清晰度、稳定性和色彩还原度,同时修复视频中的模糊、抖动和颜色失真等问题。这为用户提供了更加清晰、流畅的视频观看体验。

1.2、CodeFormer的工作原理

1. 自动编码器实现人脸变换

CodeFormer首先利用自动编码器(Autoencoder)的架构来学习和实现人脸图像的多种变换。自动编码器是一种无监督学习的神经网络,它通过编码器将输入图像压缩成较低维度的潜在表示(latent representation),然后通过解码器尝试从这个潜在表示中重建原始图像。在CodeFormer中,这个过程被用于执行诸如色彩增强、清晰度提升、去马赛克等多种修复和增强任务。这些变换使得图像在保持人脸特征的同时,显著提升了视觉质量。

2. 预训练VQGAN离散码本空间

为了更有效地处理人脸复原任务,CodeFormer采用了预训练的VQGAN(Vector Quantized Generative Adversarial Network)模型。VQGAN通过训练一个离散化的码本(codebook),将图像数据映射到一系列离散的向量表示上。这种表示方法不仅降低了复原任务的数据复杂度,还通过码本的先验知识为复原过程提供了丰富的人脸细节信息。通过将复原任务转化为Code序列的预测任务,VQGAN显著降低了复原结果的不确定性,使得复原出的人脸图像更加自然和真实。

3. Transformer全局建模

为了进一步增强模型对复杂图像退化情况的鲁棒性,CodeFormer结合了Transformer的全局建模能力。Transformer模型以其处理序列数据的强大能力而闻名,它能够捕捉长距离依赖关系,这对于图像和视频中的全局一致性恢复至关重要。在CodeFormer中,Transformer被用来分析整个图像或视频帧的Code序列,从而识别并修复那些由于严重退化而难以局部恢复的区域。这种全局建模能力使得CodeFormer即使在面对严重损坏的图像或视频时,也能进行有效的修复和增强。

二、Codeformer实践指南

目前,CodeFormer 尚未提供官方的在线使用平台,而本地部署又会非常的吃显卡的算力,所以本次使用丹摩算力平台为例子来部署 CodeFormer。

2.1、创建实例

首先进入丹摩平台:丹摩DAMODEL|让AI开发更简单!算力租赁上丹摩!

点击创建GPU云实例——创建实例:

由于CodeFormer的显存较大,如果使用自己的服务器,建议 NVIDIA GPU,民用卡 30、40 系列,商用卡 T4、V100、A10 等系列,这里推荐使用丹摩平台的RTX-4090实例,或者L40S、H800等实例。

硬盘可以就选默认系统盘100GB、数据盘50GB,基础镜像选择PyTorch2.1.2、Python3.10.13即可:

2.2、下载代码与依赖

创建好实例后,点击Jupyter打开实例。

进入控制台后,使用git clone https://github.com/sczhou/CodeFormer.git克隆CodeFormer仓库,如果遇到git clone报错或者超时,也可以选择本地下载压缩包后上传到丹摩平台,然后解压,克隆成功后的文件如下所示:

下载好代码文件后,开始安装相关依赖。

这一步熟悉conda的同学可以使用conda新建虚拟环境进行配置会方便很多。这里采用比较常规的pip安装

首先cd 进入CodeFormer项目文件夹:cd CodeFormer-master,然后输入pip install -r requirements.txt 根据requirements.txt 安装相关依赖:

其次,补充安装opencv、basicsr、scipy依赖:

pip install opencv-python pip install basicsr pip install scipy

然后执行如下命令,安装 basicsr 框架。

python basicsr/setup.py develop

在运行这一步时,可能遇见ImportError: libGL.so.1: cannot open shared object file: No such file or directory的问题,可能是因为libgl1库的问题,输入apt-get update && apt-get install libgl1安装即可

2.3、下载模型

下载好代码和依赖后,还需要下载预训练模型,可以通过本地下载然后上传的方式分别下载facelib和CodeFormer的预训练模型,下载地址如下:

facelib: Google Drive | OneDrive

CodeFormer: Google Drive | OneDrive

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

2.4、模型运行

整体增强(适合一张图片里有多个人脸)

cd 进入CodeFormer-master目录,然后输入命令

python inference_codeformer.py -w 0.7 -i /root/workspace/CodeFormer-master/inputimgs

其中/root/workspace/CodeFormer-master/inputimgs里预先放好了想要增强的图片:

运行之后,模型会在result目录下生成一张对应增强后的图片,效果如下,可以看到效果出奇,对比下来非常明显,人脸质量和细节有很大程度的提升:

单体增强(适合一张图片只有单人)

与整体增强类似,不过将0.7调为0.5,输入命令:

python inference_codeformer.py -w 0.5 -i /root/workspace/CodeFormer-master/inputimgs

修复的效果如下:

上色修复

上色修复需要运行的文件,输入指令:

python inference_colorization.py -i /root/workspace/CodeFormer-master/inputimgs

运行中如果遇到提示Downloading: "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer_colorization.pth" to /root/workspace/CodeFormer-master/weights/CodeFormer/codeformer_colorization.pth的提示,可以跟2.3相同的方式下载对应的pth模型然后放到CodeFormer-master/weights/CodeFormer目录当中。

上色修复的效果如下:

视频修复

另外,CodeFormer 还支持视频增强,去除马赛克等功能,部署依赖中需要提前安装 ffmpeg 应用。这里不再演示,感兴趣的同学, 可以自行找一些模糊视频进行尝试修复。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值