首页 游戏 软件 资讯 排行榜 专题
首页
AI
【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现

【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现

热心网友
14
转载
2025-07-25
该模型的目标是对严重退化(模糊)的人脸图像中进行盲人脸恢复。作者将前人提出的stylegan V2的解码器嵌入模型,作为GPEN的解码器;用DNN重新构建了一种简单的编码器,为解码器提供输入。这样模型在保留了styleganV2解码器优秀的性能的基础上,将模型的功能由图像风格转换变为了人脸超分辨率重建。想了解更多论文内容可以查看论文地址。

【第六届论文复现赛42题】 gpen盲人脸修复模型 paddle复现 - 游乐网

1 模型简介

该模型的目标是对严重退化(模糊)的人脸图像中进行盲人脸恢复。作者将前人提出的stylegan V2的解码器嵌入模型,作为GPEN的解码器;用DNN重新构建了一种简单的编码器,为解码器提供输入。这样模型在保留了styleganV2解码器优秀的性能的基础上,将模型的功能由图像风格转换变为了人脸超分辨率重建。想了解更多论文内容可以查看论文地址。

1.1 模型总体结构

【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现 - 游乐网        

该模型的总体结构如上图所示。左边的区域为生成器(Generator)的结构,绿色部分为编码器,中间的Mapping Network用于特征映射,这两部分为作者添加的结构。蓝色的部分为解码器,const为作者添加的噪声输入。最右侧的为对抗网络的鉴别器。其中解码器、鉴别器的结构与StyleGAN V2一致。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1.3 损失函数

该模型的损失函数可分为基础损失函数和修正损失函数。基础损失函数与作者论文中提到的内容相同。修正损失函数在论文中没有介绍,只在代码中体现。经过测试后发现,修正损失函数起到了非常重要的作用,用于抑制模型训练过程中的过拟合,且使模型对输入图像的噪声更具鲁棒性。有兴趣可以查看本项目的train.py文件中train()函数来了解该损失函数是如何实现的。接下来将主要介绍基础损失函数的组成。

该模型鉴别器的损失函数很简单,只有对抗网络中的对抗损失。而生成器的损失函数相对就比较复杂,由对抗损失La、内容损失Lc、特征损失Lf三部分构成。如下图所示:

【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现 - 游乐网        

对抗损失La在对抗网络中较为常见,要求鉴别器对生成器生成的图像的鉴别结果越接近1越好。内容损失Lc在该模型中,指的是生成图片与真实清晰图片间的L1范数距离,且作者采用Fast RCNN论文中提出来的SmoothL1 Loss来代替普通的L1-loss,这是因为smooth L1 loss让其对离群点、异常值不敏感,梯度变化相对更小,训练时更稳定。该模型用到的特征损失Lf和感知损失比较相似,主要的区别就是用到的模型不同。该论文计算Lf时用到的模型不是VGG网络,是前文提到的styleganV2 的鉴别器,通过该鉴别器对生成图片和真实图片计算特征图,进而计算特征损失。作者在论文中还提到上图中的α设置为1,β设置为0.02,但作者提供的代码中β值也设置为1。经过测试,该值选取为还是设置为1更好。

1.4 优化器

该模型采用Adam优化器进行优化。生成器的学习率设置为0.0016,鉴别器的学习率设置为0.0018,在训练过程中学习率采取固定值,不随训练批次下降。

1.5 数据集及数据预处理

GPEN模型训练集是经典的FFHQ人脸数据集,共70000张1024 x 1024高分辨率的清晰人脸图片,测试集是CELEBA-HQ数据集,共2000张高分辨率人脸图片。详细信息可以参考数据集网址: FFHQ ,CELEBA-HQ 。以下给出了具体的下载链接:

数据集下载地址:FFHQ,  CELEBA-HQ

这两个数据集只有分辨率很高的人脸图,而训练时需要成对的退化-清晰人脸图片,因此需要自行生成退化的图片。在读取了一张高分辨率清晰图片后,需要先用opencv的resize函数降分辨率到相应的分辨率上,通常降为512x512或256x256的分辨率。其中256x256图片对应的模型训练较快,512的需要256的三倍以上的时间。需要注意的是,该模型对opencv resize函数用的插值规则鲁棒性较差,需要指定使用cv2.INTER_NEAREST插值方式。之后将图片像素值规范到[0,1]之间,就可以进行图片退化操作。作者使用的退化模型如下图所示:

【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现 - 游乐网        

其中I为清晰图像,先和退化核k进行卷积,产生退化,然后再添加高斯噪声nσ,最后再经过一种带有质量因子q的JPEG压缩算子进行压缩就得到了退化图像。将退化图像和真实清晰图像的像素值规范到[-1, 1]之间,就得到了一组训练数据。

1.6 训练细节

在训练策略上,经过测试,无需按作者在论文里提到的,先训练GAN Piror Network,直接对整体网络进行训练即可。

1.7 示例

下图从左到右依次是:生成的退化图像、恢复出的图像、真实清晰图像。

【第六届论文复现赛42题】 GPEN盲人脸修复模型 paddle复现 - 游乐网        

2 项目介绍

本项目基于paddlepaddle深度学习框架复现,我们将提供更加细节的训练流程,帮助有需要的人完成该模型的复现。

第三部分,我们将在3.1中介绍项目的代码结构,3.2中介绍用项目代码来复现模型的具体操作流程,3.3中对项目的代码细节进行介绍。

本项目复现精度如下表所示。该模型测试过程具有一定随机性,所以我在对比测试时固定了随机种子,下表中的测试数据是在同一组随机种子下得到的,如果更改随机种子,那得到的数据会有一定波动。

GPEN模型也集成到了PaddleGAN套件中,使用说明请参考说明文档.

3 开始复现

3.1 代码结构

GPEN/     |-- data_2/       #存放一些测试数据的文件夹    |-- 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,决定了模型针对的图片的分辨率,推荐选用256或512。如果要将size改为512,则要同时将mul改为2、narrow改为1,下面的操作步骤也是这样。

如果要改变训练的step数,需要修改max_iter 参数。

如果要从训练断点继续训练,则添加--pretrain参数为模型参数文件位置,并根据需要修改start_iter来保证训练日志的延续性。

In [ ]
!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
登录后复制    

模型只支持单卡训练。

模型训练需使用paddle2.3及以上版本,且需等paddle实现elementwise_pow 的二阶算子相关功能,使用paddle2.2.2版本能正常运行,但因部分损失函数会求出错误梯度,导致模型无法训练成功。如训练时报错则暂不支持进行训练,可跳过训练部分,直接使用提供的模型参数进行测试。模型评估和测试使用paddle2.2.2及以上版本即可。

3.2.3 模型评估

对模型进行评估时,在控制台输入以下代码:

运行之后,模型会加载--w路径下的模型参数文件,然后在测试集对其FID和PSNR指标进行评估。

In [2]
!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 模型单图像测试

对模型进行单图像的简单测试时,在控制台输入以下代码。

如果要在自己提供的模型上进行测试,请将模型的路径放在 -w 后面。如要修改测试的图片,请修改--img后的模型参数。

In [ ]
!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.webp
登录后复制    

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.webpFID: 151.78178552134233PSNR: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.webp
登录后复制    

3.3.3 调用脚本两步完成训推一体测试

测试基本训练预测功能的lite_train_lite_infer模式,依次运行下面两行代码:

第一行代码会下载并解压少量测试数据。第二行代码会先进行少批次的训练并保存参数文件,接着加载保存的参数文件生成推理模型,最后进行推理。

In [ ]
#准备数据!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'
登录后复制    
来源:https://www.php.cn/faq/1426766.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

openclaw在飞书测试报错access not configured.
AI
openclaw在飞书测试报错access not configured.

常见报错解析:“Access Not Configured”故障排除指南 许多开发者和团队成员在使用OpenClaw集成飞书时,都曾遭遇过一个典型的中断提示:“access not configured”(访问未配置)。该提示会明确显示您的飞书账户ID及一组唯一的配对验证码,并指出需要联系机器人所有

热心网友
04.02
OpenClaw 常用指令速查
AI
OpenClaw 常用指令速查

OpenClaw 常用指令大全与使用详解 openclaw status:此命令是查看OpenClaw系统整体健康状态的核心指令,执行后即获取服务运行状况的全面报告,是日常运维的首要诊断工具。 openclaw gateway restart:在修改网关配置后,必须运行此指令以重启网关服务,使配置文

热心网友
04.02
OpenClaw 操控浏览器
AI
OpenClaw 操控浏览器

如何通过 OpenClaw 实现 Chrome 浏览器自动化操控 在软件开发与自动化测试领域,持续学习是常态。本文旨在详细介绍如何利用 OpenClaw 连接并控制一个已开启的 Chrome 浏览器实例,实现点击、文本输入、文件上传、页面滚动、屏幕截图以及执行 JavaScript 等自动化操作。整

热心网友
04.01
# OpenClaw QQ 机器人接入完整指南
AI
# OpenClaw QQ 机器人接入完整指南

项目概述 你是否希望将强大的 AI 助手带入日常聊天?本教程将指导你完成搭建流程,让你能在 QQ 上直接调用 OpenClaw 智能助手,实现无门槛的 AI 对话体验。 架构说明 ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ QQ 用户 │ ─

热心网友
04.01
OpenClaw 保姆级 window部署
AI
OpenClaw 保姆级 window部署

一 下载并安装Node js,全程保持默认设置 首先,请前往Node js官方网站的下载中心:https: nodejs org zh-cn download。根据您的操作系统(Windows Mac Linux)下载对应的安装程序。运行安装向导时,整个过程非常简单,您只需连续点击“下一步”按钮

热心网友
04.01

最新APP

火柴人传奇
火柴人传奇
动作冒险 04-01
街球艺术
街球艺术
体育竞技 04-01
飞行员模拟
飞行员模拟
休闲益智 04-01
史莱姆农场
史莱姆农场
休闲益智 04-01
绝区零
绝区零
角色扮演 04-01

热门推荐

判断流浪动物是否友好时以下哪种信号是错误的
游戏攻略
判断流浪动物是否友好时以下哪种信号是错误的

支付宝蚂蚁庄园2026年4月4日今日最新答案揭晓 今日蚂蚁庄园小课堂的首道题目是:在判断流浪动物是否友善时,以下哪一种信号解读是不正确的? A、狗狗摇尾巴就一定代表友好 B、瞳孔放大通常表示恐惧 正确答案 狗狗摇尾巴就一定代表友好 详细解析 许多人存在一个普遍误区,认为犬类摇尾巴一定是开心和亲近的信

热心网友
04.04
他趣如何结婚
手机教程
他趣如何结婚

他趣:如何从真诚交友顺利走向婚姻殿堂 他趣并非直接促成婚姻的魔法钥匙,但它确实扮演着至关重要的角色——为众多单身人士搭建了一座从线上认识到线下相恋,最终携手步入婚姻的可靠桥梁。这个平台汇聚了真实且有婚恋意图的用户,让原本可能无缘相遇的两个人,有了相识、相知直至相守的珍贵机会。 第一步:完善个人资料,

热心网友
04.04
洛克王国世界必入手宠物与技能搭配推荐指南
游戏攻略
洛克王国世界必入手宠物与技能搭配推荐指南

洛克王国世界开荒攻略:首日必抓精灵与阵容搭配详解 《洛克王国世界》开服第一天,所有训练师的核心目标非常明确:高效利用初期时间,组建一套既能轻松探索地图,又能平稳应对各类战斗的精灵队伍。选择正确的开荒阵容,能让你的冒险之旅事半功倍;若选择不当,则可能陷入被动,浪费宝贵资源。那么,哪些宠物是玩家公认的“

热心网友
04.04
洛克王国世界精灵克制关系指南
游戏攻略
洛克王国世界精灵克制关系指南

洛克王国全属性克制关系解析:掌握十八系胜负关键 进入洛克王国,你将探索一个由18种精灵属性构成的丰富对战世界:普通、草、火、水、光、地、冰、龙、电、毒、虫、武、翼、萌、幽、恶、机械与幻系。各属性之间存在着复杂而精准的克制与抵抗规则,这对新手玩家而言可能显得纷繁复杂。本文旨在全面解析洛克王国属性克制表

热心网友
04.04
佣兵小镇乔丝琳怎么获得?佣兵小镇乔丝琳养成攻略
游戏攻略
佣兵小镇乔丝琳怎么获得?佣兵小镇乔丝琳养成攻略

光系核心英雄乔丝琳养成全攻略:从获取到毕业的深度指南 一、乔丝琳获取途径与资源投入规划 作为光系核心输出英雄,乔丝琳的获取时机非常明确,她将在服务器开区第3天通过专属转盘活动正式登场。玩家需要为其规划清晰的培养路径:起步品质建议至少达到红2,而终极目标则是彩4完全体毕业。 大额投入方案(适合追求极速

热心网友
04.04