【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现
更新时间:2026-03-26 15:26:19
-
-
taptap官方最新客户端2026
- 类型:生活服务
- 大小:28.8m
- 语言:简体中文
- 评分:
- 查看详情
【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现
该模型旨在解决严重退化且模糊的人脸图像的盲式人脸恢复问题。作者将前人提出的StyleGAN V解码器嵌入至GPEN(Generator-Prediction Encoder)中,作为解码器的一部分;同时,使用DNN重新构建了简化编码器,为解码器提供输入数据。该模型在保留StyleGAN V码器优秀性能的基础上,实现了从图像风格转换到人脸超分辨率重建的转变。欲了解更多论文详情,请访问论文链接。
1 模型简介
该模型的目标是处理严重退化和模糊的人脸图像并实现盲人脸恢复。作者通过将前人提出的StyleGAN V解码器嵌入到GPEN中,为解码器提供了输入,并用DNN构建了一个简单编码器来支持解码器。这样做的结果是在保持StyleGAN V码器优秀性能的同时,扩展了模型的功能,使其能进行人脸超分辨率重建。欲了解详细论文内容,请访问论文地址。
1.1 模型总体结构

该模型的总体架构如上图所示。左边区域代表生成器(Generator),其包含绿色部分作为编码器,而中间的Mapping Network用于特征映射。这些部分是作者为了增强模型性能所添加的内容。蓝色的部分为解码器,同样由作者添加的噪声输入。最右侧的是对抗网络的鉴别器。值得注意的是,解码器和鉴别器的设计结构与StyleGAN V持一致。
1.3 损失函数
在这一部分中,我们将详细介绍我们提出的基于深度学习的图像处理模型的损失函数构造和功能。首先,需要明确的是,该模型的损失函数分为两大部分:基础损失函数与修正损失函数。基础损失函数遵循了我们在研究过程中所参考的一系列论文和研究成果。它的设定旨在捕捉图像识别任务中的基本误差,包括分类错误、位置偏差等常见问题。然而,值得注意的是,修正损失函数并非完全源自我们的研究论文。在实际的开发过程中,我们发现它的重要性远超乎预期。具体来说,这个修正损失函数的作用在于有效防止模型在训练过程中过度拟合到特定的数据集或任务上,从而提高模型的泛化能力。同时,它也增强了图像识别系统对噪声和模糊输入数据的鲁棒性处理能力。因此,在深入理解模型的工作原理时,基础损失函数是至关重要的。我们提供了一个简单的方法来探索这一部分:通过查看训练.py文件中的train函数,可以清晰地了解这个关键组件是如何实现的。这一步骤将有助于你对模型工作机制有更直观的理解和认知。
该鉴别器的损失仅包含在对抗网络中产生的对抗误差;相比之下,生成器的损失则更复杂,分为对抗损失L_a、内容损失L_c和特征损失L_f三部分。如上图所示。

对抗损失La(Adversarial Loss)在对抗网络(GANs)中非常常见,它要求鉴别器对生成的图像判别结果越接近于好。内容损失Lc(Content Loss)在该模型中指的是生成图片与真实清晰图片间的L数距离,并且作者采用了Fast RCNN论文中提出的Smooth LLoss来代替普通的LLoss,这是因为Smooth LLoss使其对离群点、异常值不敏感,梯度变化相对更小,训练时更加稳定。特征损失Lf(Feature Loss)和感知损失Lp(Perceptual Loss)比较相似,主要的区别在于用到的模型不同。该论文中计算特征损失Lf时用到的模型不是VGG网络,而是前文提到的StyleGAN别器,通过这个鉴别器对生成图片和真实图片进行特征图计算,进而得到特征损失。此外,在论文中还提到了α值(Alpha Value)设置为β值(Beta Value)设置为但作者提供的代码中β值也设定为测试表明,选择α值或β值均为参数组合效果更佳。总之,这个模型通过Smooth LLoss、特征损失Lf和感知损失Lp来提高生成图像的质量,并且根据实验结果推荐了特定的参数设置(α= β=以获得更好的训练效果。
1.4 优化器
该模型使用Adam优化器进行训练,生成器的学习率为鉴别器的学习率为保持固定不变,不随训练批次调整。
1.5 数据集及数据预处理
GPEN模型训练集采用FFHQ高清人脸数据集(包含张素清晰人脸图像),测试集则基于CELEBA-HQ数据集(含有高分辨率人脸图片)。详情信息请查阅相应数据集网址:FFHQ, CELEBA-HQ。以下是具体的下载链接。
数据集下载地址:FFHQ,CELEBA-HQ
这两个数据集只有分辨率很高的人脸图像,而训练时需要成对的退化和清晰的人脸图片。因此,我们需要自己生成退化的图片。首先,读取一张高分辨率清晰的图像后,使用OpenCV的resize函数将其降分辨率至指定分辨率。其中,片通常训练较快,但需要的时间是三倍以上。为了避免模型对插值规则不鲁棒性的影响,我们应该在使用resize函数之前指定使用cvINTER_NEAREST插值方式。接下来,将处理后的图像像素值规范化到[之间,然后进行退化操作。作者使用的退化模型如下图所示:

首先,我为清晰图像(I)与退化核(k)应用卷积操作,以生成退化图像;接着,通过添加高斯噪声(nσ)来模拟实际场景中的干扰,并对其进行JPEG压缩(采用质量因子q),最后得到的组合即是退化后的图像。将这些退化图像与原始清晰图像的像素值统一调整到[- 区间内,便构成了训练数据集。
1.6 训练细节
经过测试,在训练策略上,直接对整体网络进行训练比先训练GAN Prior Network更为高效。
1.7 示例
下图从左到右依次是:生成的退化图像、恢复出的图像、真实清晰图像。
2 项目介绍
该项目使用PaddlePaddle进行深度学习模拟,详述训练步骤,助你轻松复现模型。
第一部分,我们将详细介绍项目的整体架构。第二部分,展示如何使用项目代码来进行模型的重现步骤。第三部分,详细剖析项目的源码细节。
本项目复现精度表如下。测试过程具有随机性,因此我在对比时固定了随机种子以保持一致性和稳定性。表中数据是同一组随机种子下生成的。如果更改随机种子,可能会导致测试结果有波动。具体参数为:FFHQ: CELEBA-HQ: FID:PSNR:模型参数文件为data/dataG_weight_best.pdparams。
GPEN模型也集成到了PaddleGAN套件中,使用说明请参考说明文档.
3 开始复现
3.1 代码结构
GPEN/ - data_存放一些测试数据文件夹 - data_loader/存放数据预处理相关代码 - model/存放GPEN模型结构相关的代码 - loss/存放损失函数计算相关代码 - metric/存放评估指标(FID,PSNR)相关代码 - test_tipc/存放tipc相关文件 - ckpts/训练时生成的文件夹,用于保存训练过程中的模型参数 - samples/存放训练过程中生成的测试图片,展示模型变化 - train.py调用时执行模型训练 - test.py调用时进行模型评估 - predict.py用模型测试单张图片 - export_model.py用于生成tipc推理模型 - infer.py用于tipc进行图像推理 - readme.md项目说明文档,登录后可复制
3.2 具体操作
3.2.1 解压数据集
运行下面的kenel来解压数据集: In []
!unzip -oq /home/aistudio/data/data142237/00000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/01000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/02000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/03000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/04000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/05000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/06000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/07000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/08000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142237/10000.zip -d data/train/ !unzip -oq /home/aistudio/data/data142946/celehq.zip -d data/test/登录后复制
3.2.2 训练模型
对模型进行训练时,运行以下代码:
训练过程中会在ckpts/文件夹下生成train.log文件夹,用于保存训练日志。
如果你想要调整模型的参数,主要可以修改以下几点:size、mul和narrow。这些参数决定了你的图片处理分辨率。建议你选择为最佳大小。如果需要将size设置为请务必同步调整mul到及narrow设为
如果要改变训练的step数,需要修改max_iter 参数。
若需在训练中断处继续,应在命令中加入--pretrain 参数指定参数文件路径,并调整start_iter确保日志连续。
!python train.py --size 256 --mul 1 --narrow 0.5 --start_iter 0 --max_iter 150000 --batch_size 2 --train_path data/train/ --test_path data/test/celehq登录后复制
模型只支持单卡训练。
在进行模型训练时,需要确保你使用的PaddlePaddle版本不低于为了充分利用这一功能,还需实现elementwise_pow的二阶算子相关特性。尽管如此,如果你遇到无法正常运行的问题,比如某些损失函数求出错误梯度的情况,那么建议暂不尝试此训练过程,转而使用提供的模型参数进行测试。评估和测试阶段则可以继续使用PaddlePaddle版本更高版本。
3.2.3 模型评估
对模型进行评估时,在控制台输入以下代码:
- 运行后,模型从指定路径加载参数,并在测试集上评估FID和PSNR。
!python test.py --w data/data142946/G_256_weight_best.pdparams --test_path data/test/celehq --size 256 --mul 1 --narrow 0.5登录后复制
3.2.4 模型单图像测试
对模型进行单图像的简单测试时,在控制台输入以下代码。
如果你打算在自己的模型上进行测试,记得将其路径放置在命令选项中。同时,如果你想改变图片供测试使用,请调整--img后的参数设置。
!python predict.py --size 256 --mul 1 --narrow 0.5 --w data/data142946/G_256_weight_best.pdparams --img data_2/GPEN/predict/test_img.png登录后复制
3.3 Tipc
3.3.1 导出inference模型
以下命令将生成预测所需的模型结构文件model.pdmodel和模型权重文件model.pdiparams以及model.pdiparams.info文件,均存放在inference/GPEN/目录下。 In []
!python export_model.py --model_path data/data142946/G_256_weight_best.pdparams --save_dir inference/GPEN登录后复制
3.3.2 开始推理
推理结束会默认保存下模型生成的修复图像,并输出测试得到的FID和psnr值。
样例图片和对应的修复图像可查看1.7的示例。
输出示例如下:
result saved in : data/GPEN/predict/test_img_predict.png FID: 151.78178552134233 PSNR:21.65281356833421登录后复制 In []
!python infer.py --model_file inference/GPEN/model.pdmodel --params_file inference/GPEN/model.pdiparams --img data_2/GPEN/predict/test_img.png登录后复制
3.3.3 调用脚本两步完成训推一体测试
测试基本训练预测功能的lite_train_lite_infer模式,依次运行下面两行代码:
```python import requests# 第一行: 下载与解压少量测试数据 requests.get('https://example.com/data.zip') with zipfile.ZipFile('data.zip', 'r') as zip_ref: zip_ref.extractall# 第二行: 批量训练模型,保存参数文件,并加载进行推理 model.train params.save_model loaded_params = Params.load_from_file(params.model_path)# 第三行: 使用加载的参数进行推理 predictions = loaded_params.predictions(data) ```
#准备数据!bash test_tipc/prepare.sh ./test_tipc/configs/GPEN/train_infer_python.txt 'lite_train_lite_infer'登录后复制 In []
#运行测试!bash test_tipc/test_train_inference_python.sh ./test_tipc/configs/GPEN/train_infer_python.txt 'lite_train_lite_infer'#'lite_train_lite_infer'登录后复制
以上就是【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现的详细内容,更多请关注其它相关文章!
