GPEN训练怎么开始?FFHQ数据对准备与参数设置指南
GPEN人像修复增强模型镜像
本镜像基于GPEN人像修复增强模型构建,预装了完整的深度学习开发环境,集成了推理及评估所需的所有依赖,开箱即用。
1. 镜像环境说明
| 组件 | 版本 |
|---|---|
| 核心框架 | PyTorch 2.5.0 |
| CUDA 版本 | 12.4 |
| Python 版本 | 3.11 |
| 推理代码位置 | /root/GPEN |
主要依赖库:
facexlib: 用于人脸检测与对齐basicsr: 基础超分框架支持opencv-python,numpy<2.0,datasets==2.21.0,pyarrow==12.0.1sortedcontainers,addict,yapf
2. 快速上手
2.1 激活环境
使用以下命令激活预设的 Conda 环境:
conda activate torch25该环境已配置好所有必要的依赖项和路径,无需额外安装即可运行。
2.2 模型推理 (Inference)
进入项目主目录并执行推理脚本:
cd /root/GPEN场景 1:运行默认测试图
不带任何参数直接运行,将处理内置的测试图像(Solvay_conference_1927.jpg):
python inference_gpen.py输出文件为output_Solvay_conference_1927.png,保存在当前目录下。
场景 2:修复自定义图片
将你的照片上传至/root/GPEN目录,并通过-i参数指定输入路径:
python inference_gpen.py --input ./my_photo.jpg生成结果会自动命名为output_my_photo.jpg。
场景 3:自定义输出文件名
你可以同时指定输入和输出路径:
python inference_gpen.py -i test.jpg -o custom_name.png这非常适合批量处理或集成到其他流程中。
提示:推理结果默认保存在项目根目录,建议提前备份重要文件。支持常见格式如
.jpg,.png,.bmp。
3. 已包含权重文件
为了确保用户可以立即进行推理而无需等待下载,镜像内已预置完整模型权重:
- ModelScope 缓存路径:
~/.cache/modelscope/hub/iic/cv_gpen_image-portrait-enhancement - 包含组件:
- GPEN 主生成器(Generator)
- FaceXLib 驱动的人脸检测模型(RetinaFace)
- 关键点对齐模块(Dlib 或 FAN-based)
这些权重覆盖了从低清模糊图像到高清细节恢复的全流程处理能力。首次运行推理时若未检测到本地权重,系统会自动从 ModelScope 下载。
4. 训练准备:FFHQ 数据对构建指南
虽然镜像默认支持推理,但如果你希望微调或从头训练 GPEN 模型,需要准备好高质量的“高清-低清”图像对。以下是详细的准备步骤。
4.1 数据集选择:为什么是 FFHQ?
FFHQ(Flickr-Faces-HQ)是一个广泛使用的高分辨率人脸数据集,包含 70,000 张多样化、高质量的人脸图像,分辨率为 1024×1024。它被广泛用于 StyleGAN、GPEN 等生成模型的训练。
GPEN 官方推荐使用 FFHQ 作为高清源图像(Ground Truth),然后通过人工降质方式生成对应的低质量输入图像(Degraded Input),构成监督训练所需的成对数据。
4.2 构建图像对:如何生成低质量图像?
由于真实场景中的退化过程复杂,直接采集配对数据困难。因此,通常采用合成退化策略来模拟现实中的模糊、噪声、压缩等问题。
推荐使用以下两种主流方法之一来生成低质图像:
方法一:RealESRGAN 内置退化管道
RealESRGAN 提供了一个强大的退化模块(bsrgan.py或realesrgan_degradation.py),可模拟多种真实退化类型:
- 多尺度下采样
- 各向异性高斯模糊核
- JPEG 压缩失真
- 加性噪声(泊松/高斯)
- 色彩抖动与亮度变化
操作示例:
# 先克隆 RealESRGAN 仓库 git clone https://github.com/xinntao/Real-ESRGAN.git cd Real-ESRGAN # 安装依赖 pip install basicsr facexlib lmdb opencv-python pyyaml # 使用 BSRGAN 进行退化(生成低清图) python realesrgan_degradation.py \ --input ../GPEN/datasets/ffhq_512/high_quality/ \ --output ../GPEN/datasets/ffhq_512/low_quality/ \ --scale 4 \ --batch_size 8这样就能得到一组与原始高清图严格对齐的低清图像。
方法二:手动组合 OpenCV 退化链
适合想更精细控制退化过程的用户。以下是一个简单的 Python 示例:
import cv2 import numpy as np import os def add_blur_noise_compression(img): # 高斯模糊 ksize = np.random.choice([5, 7, 9]) img = cv2.GaussianBlur(img, (ksize, ksize), sigmaX=2.0) # 添加噪声 noise = np.random.normal(0, 10, img.shape).astype(np.float32) img = np.clip(img.astype(np.float32) + noise, 0, 255).astype(np.uint8) # JPEG 压缩 encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), np.random.randint(20, 50)] _, buffer = cv2.imencode('.jpg', img, encode_param) img = cv2.imdecode(buffer, cv2.IMREAD_COLOR) return img # 批量处理 FFHQ 图像 hq_dir = '/root/GPEN/datasets/ffhq_512/high_quality' lq_dir = '/root/GPEN/datasets/ffhq_512/low_quality' os.makedirs(lq_dir, exist_ok=True) for fname in os.listdir(hq_dir): if fname.lower().endswith(('.png', '.jpg', '.jpeg')): path = os.path.join(hq_dir, fname) img = cv2.imread(path) img = add_blur_noise_compression(img) cv2.imwrite(os.path.join(lq_dir, fname), img)这种方式灵活性强,便于调试不同退化强度的影响。
4.3 数据组织结构
训练前请按如下格式整理数据目录:
/root/GPEN/datasets/ffhq_512/ ├── high_quality/ │ ├── img_00001.png │ ├── img_00002.png │ └── ... └── low_quality/ ├── img_00001.png ├── img_00002.png └── ...并在训练配置文件中正确指向这两个路径。
5. 训练参数设置详解
GPEN 的训练脚本位于/root/GPEN/train_gpen.py,其性能高度依赖于合理的超参数配置。以下是关键参数说明与推荐值。
5.1 分辨率选择
GPEN 支持多种分辨率版本,包括 256x256、512x512 和 1024x1024。对于大多数应用场景,512x512 是最佳平衡点——既能保留足够细节,又不会导致显存爆炸。
# 推荐训练命令(512 分辨率) python train_gpen.py \ --model gpen_bilinear_512 \ --dataroot ./datasets/ffhq_512 \ --batch_size 8 \ --lr_g 0.0001 \ --lr_d 0.0001 \ --epochs 100 \ --save_freq 10注意:1024 分辨率需至少 24GB 显存(如 A100),普通设备建议使用 512 或更低。
5.2 学习率设置
- 生成器学习率 (
--lr_g):建议初始值为1e-4,可在后期衰减。 - 判别器学习率 (
--lr_d):一般与生成器相同或略低(如5e-5),避免判别器过强导致训练不稳定。
5.3 优化器与损失函数
GPEN 默认使用 Adam 优化器:
optimizer_G = torch.optim.Adam(generator.parameters(), lr=opt.lr_g, betas=(0.9, 0.99)) optimizer_D = torch.optim.Adam(discriminator.parameters(), lr=opt.lr_d, betas=(0.9, 0.99))损失函数组合包括:
- L1 Loss:保证像素级重建精度
- Perceptual Loss(VGG-based):提升视觉感知质量
- GAN Loss:增强纹理真实感
你可以在options/train_options.py中调整各损失权重。
5.4 训练技巧与建议
| 技巧 | 说明 |
|---|---|
| 预热训练 | 初始阶段关闭判别器训练,先让生成器学会基本重建 |
| 梯度裁剪 | 防止 GAN 训练中梯度爆炸,设置max_grad_norm=1.0 |
| 学习率衰减 | 每 50 个 epoch 衰减一次(乘以 0.5)效果较好 |
| 定期验证 | 每 10 个 epoch 在验证集上生成样例图,观察进展 |
小贴士:训练过程中可通过 TensorBoard 查看损失曲线和生成样本,路径为
./logs/。
6. 总结
本文详细介绍了如何基于 CSDN 星图提供的 GPEN 人像修复增强模型镜像,开展从推理到训练的完整工作流。
我们首先了解了镜像自带的环境配置和快速推理方法,接着重点讲解了如何准备 FFHQ 数据集并构建高质量的高低清图像对。最后,给出了训练过程中的关键参数设置建议和实用技巧,帮助你在实际项目中高效启动 GPEN 模型的训练任务。
无论你是想快速部署一个人像增强服务,还是打算深入研究 GPEN 的训练机制,这套开箱即用的镜像都能显著降低入门门槛,提升开发效率。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。