MMagic 中的 DIC:基于迭代协作机制的人脸 8 倍超分辨率算法实战指南

发布时间:2026/9/28 6:41:04
MMagic 中的 DIC:基于迭代协作机制的人脸 8 倍超分辨率算法实战指南 媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载本文聚焦 OpenMMLab 生成式视觉工具箱 MMagic 中的人脸超分辨率算法 DICCVPR2020从论文思想、网络结构、配置文件到训练与测试命令结合仓库源码给出完整的实战级解析。读完本文你将掌握如何在 MMagic 中复现 DIC / DICGAN 在 CelebA-HQ 上的人脸 8× 超分实验并理解恢复分支与关键点估计分支迭代协作这一核心机制的代码实现。任务背景与算法定位DICDeep face super-resolution with Iterative Collaboration between Attentive Recovery and Landmark Estimation发表于 CVPR 2020属于**图像超分辨率Image Super-Resolution**任务其核心目标是解决严重退化的人脸图像的 8 倍超分辨率问题。在 MMagic 中它被收录于 configs/dic 目录相关文档为 configs/dic/README_zh-CN.md。早期基于深度学习与人脸先验的超分方法存在一个共同缺陷人脸先验如关键点 landmark、部件图 component map通常是由低分辨率或粗糙超分结果估计得到的先验本身不够准确进而限制了恢复效果。DIC 的解决思路是让两条循环网络迭代协作恢复分支负责人脸图像重建在每一步利用关键点先验生成更高质量的图像关键点估计分支以当前恢复结果估计更准确的人脸关键点反过来又提升下一轮恢复质量。两个过程相互促进、逐步提升形成恢复 → 关键点估计 → 更好恢复的正向循环。此外论文设计了一个注意力融合模块Attentive Fusion Module将面部各部件分别生成后按注意力聚合强化 landmark 热图对人脸恢复的引导作用。引用信息论文 BibTeX见 configs/dic/README.mdinproceedings{ma2020deep, title{Deep face super-resolution with iterative collaboration between attentive recovery and landmark estimation}, author{Ma, Cheng and Jiang, Zhenyu and Rao, Yongming and Lu, Jiwen and Zhou, Jie}, booktitle{Proceedings of the IEEE/CVF conference on computer vision and pattern recognition}, pages{5569--5578}, year{2020} }网络结构源码解析迭代协作如何落地MMagic 中 DIC 的完整实现位于 mmagic/models/editors/dic共包含 5 个源文件。整个模型由生成器DICNet与可选判别器LightCNN组成整体算法封装在DIC类中。DIC 算法类多损失协同训练DIC 继承自 SRGAN注册名为DIC其关键设计包括像素损失pixel_loss对生成器输出的每一迭代步 SR 结果计算与 GT 的 L1 损失对齐损失align_loss对每一迭代步估计出的关键点热图与 GT 热图计算 MSE 损失特征损失feature_loss可选使用预训练 LightCNN 提取特征计算感知损失GAN 损失gan_loss可选配合 LightCNN 判别器构成对抗训练。从 dic.py 可以看到模型通过train_cfg.pixel_init控制纯像素训练的迭代步数当self.step_counter self.pixel_init时才启用特征损失与 GAN 损失。训练流程中判别器以disc_repeat指定的次数重复更新见 dic.py。DICNet 生成器反馈块 沙漏网络DICNet 是生成器主体注册名为DICNet。其前向过程体现了迭代协作的具体形态见 dic_net.py输入低分辨率图像先经conv_first3×3 卷积 PReLU PixelShuffle 2×放大特征进入num_steps默认 4次迭代循环第一步由first_blockFeedbackBlockCustom提取初始特征后续每一步由FeedbackBlockHeatmapAttention结合上一步估计的人脸热图进行注意力融合恢复每步恢复结果经conv_last转置卷积 PReLU 3×3 卷积输出 SR 图像并与双线性插值的中间结果相加残差式输出随后由FeedbackHourglass沙漏网络从 SR 图像估计 68 点人脸关键点热图输出又作为下一步的引导返回所有迭代步的sr_outputs与heatmap_outputs列表训练时每一层都参与损失计算。关键子模块FeedbackBlock / FeedbackBlockCustom反馈块结构为模块输出回传给模块输入的循环样式通过维护last_hidden隐状态实现跨迭代的信息复用FeatureHeatmapFusingBlock注意力融合模块将特征按热图通道分组对热图做 softmax 后加权聚合面部各部件见 dic_net.pyFeedbackHourglass带反馈连接的沙漏网络用于人脸关键点估计。其输出热图被切分为两部分——前半用于生成 heatmap后半作为 feedback 回传见 feedback_hour_glass.py。值得注意的是 reduce_to_five_heatmapsDIC 利用人脸关键点做超分而不同数据集的关键点数量不同。该函数将原始关键点热图如 68 点归一化并聚合成 5 张热图分别对应左眼、右眼、鼻子、嘴、人脸轮廓统一后送入注意力融合模块。LightCNN 判别器MaxFeature 结构DICGAN 使用LightCNN作为判别器输入尺寸 128×128。它采用MaxFeature基础单元卷积输出双倍通道后切分逐元素取最大值形成判别力更强的特征选择器。分类头最终输出 1 维真假分数。此外预训练的 LightCNN 权重light_cnn_feature.pth也作为LightCNNFeatureLoss的特征提取器构成感知/特征损失。配置文件深度解读两种训练范式MMagic 为 DIC 提供两套开箱即用的配置均针对 CelebA-HQ 数据集、8 倍放大1. dic_x8c48b6_4xb2-150k_celeba-hq.py纯回归版本配置文件为 configs/dic/dic_x8c48b6_4xb2-150k_celeba-hq.py继承../_base_/default_runtime.py。核心要点配置项取值说明generatorDICNet, in_channels3, out_channels3, mid_channels48生成器通道数 48pixel_lossL1Loss, loss_weight1.0像素 L1 损失align_lossMSELoss, loss_weight0.1关键点热图对齐损失train_cfgIterBasedTrainLoop, max_iters150_000, val_interval2000迭代式训练optim_wrapperAdam, lr1e-4生成器优化器param_schedulerMultiStepLR, milestones[10000,20000,40000,80000], gamma0.5阶梯式学习率衰减val_evaluatorMAE / PSNR / SSIM, crop_borderscale评估指标该版本仅含像素损失与对齐损失不包含判别器与 GAN 相关配置。2. dic_gan-x8c48b6_4xb2-500k_celeba-hq.pyGAN 版本配置文件为 configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py继承上一配置并在其基础上叠加对抗训练增加判别器LightCNN(in_channels3)增加feature_lossLightCNNFeatureLoss使用预训练light_cnn_feature.pthloss_weight0.1criterionl1增加gan_lossGANLoss(gan_typevanilla, loss_weight0.005)train_cfg中设置pixel_init10000前 10000 迭代仅训练像素/对齐损失、disc_repeat2判别器每步更新 2 次采用MMSeparateDistributedDataParallel包装生成器与判别器使用分离优化器生成器 Adam lr1e-4判别器 Adam lr1e-5训练迭代数提升到 500_000milestones 调整为 [100000, 200000, 300000, 400000]。此外两套配置均设置data_preprocessor的均值为[129.795, 108.12, 96.39]、标准差为[255, 255, 255]用于输入归一化。数据流水线与数据集准备以 configs/dic/dic_x8c48b6_4xb2-150k_celeba-hq.py 中的训练流水线为例数据处理包含三个关键环节加载与缩放LoadImageFromFile加载 RGB 彩色 GT 图随后Resize到 128×128退化模拟再次Resize按1/8比例缩小并保持宽高比输出键img得到低分辨率输入16×16 级关键点热图生成GenerateFacialHeatmap以 GT 图为基准在 32×32 分辨率下生成高斯热图sigma1.0作为对齐损失的监督信号。验证与测试流水线valid_pipeline/test_pipeline不生成热图仅做加载与缩放inference_pipeline面向推理直接以img为输入键。数据集类型为BasicImageDataset训练/验证分别指向data/CelebA-HQ下的train_256/all_256与test_256/all_256batch_size24 GPU 下等效 8。需要特别说明训练集必须包含关键点标注因为训练流水线中的GenerateFacialHeatmap需要 GT 人脸关键点来合成热图标签。因此复现时需准备带关键点标注的 CelebA-HQ 数据。快速开始训练与测试以下命令与官方文档 configs/dic/README_zh-CN.md 保持一致完整训练/测试细节可进一步参考 docs/zh_cn/user_guides/train_test.md。训练# CPU 上训练 CUDA_VISIBLE_DEVICES-1 python tools/train.py configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py # 单个 GPU 上训练 python tools/train.py configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py # 多个 GPU 上训练以 8 卡为例 ./tools/dist_train.sh configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py 8其中tools/train.py与tools/dist_train.sh位于仓库根目录 tools 下。训练产出与日志保存在配置指定的work_dirs/dic_gan-x8c48b6_4xb2-500k_celeba-hq目录。测试# CPU 上测试 CUDA_VISIBLE_DEVICES-1 python tools/test.py configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py https://download.openmmlab.com/mmediting/restorers/dic/dic_gan_x8c48b6_g4_500k_CelebAHQ_20210625-3b89a358.pth # 单个 GPU 上测试 python tools/test.py configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py https://download.openmmlab.com/mmediting/restorers/dic/dic_gan_x8c48b6_g4_500k_CelebAHQ_20210625-3b89a358.pth # 多个 GPU 上测试 ./tools/dist_test.sh configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py https://download.openmmlab.com/mmediting/restorers/dic/dic_gan_x8c48b6_g4_500k_CelebAHQ_20210625-3b89a358.pth 8测试时通过 URL 直接指定预训练权重MMagic 会自动下载。若需测试非 GAN 版本模型dic_x8c48b6_g4_150k_CelebAHQ将配置与权重替换为对应文件即可权重与日志见下表下载列。评估协议与官方结果官方评估协议见 configs/dic/README_zh-CN.md在RGB 通道上评估评估前裁剪图像每个边界的scale即 8像素使用PSNR和SSIM作为指标这与配置中val_evaluator的crop_borderscale设置一致训练资源4 块 Tesla PG503-216 GPU。两个模型的官方结果如下算法scaleCelebA-HQ PSNR / SSIMGPU 信息下载dic_x8c48b6_g4_150k_CelebAHQx825.2319 / 0.74224 (Tesla PG503-216)模型 | 日志dic_gan_x8c48b6_g4_500k_CelebAHQx823.6241 / 0.67214 (Tesla PG503-216)模型 | 日志需要留意两点官方说明纯回归版本dic_x8c48b6_g4_150k_CelebAHQ的 PSNR/SSIM 更高GAN 版本追求视觉真实感因此像素级指标反而略低这与 GAN 超分的普遍规律一致在dic_gan_x8c48b6_g4_150k_CelebAHQ的日志数据中DICGAN 仅在 CelebA-HQ 测试集前 9 张图片上验证因此表中 PSNR/SSIM 与日志中的数值不同。小结DIC 是 MMagic 中人脸超分辨率方向的重要基线算法其迭代协作 注意力融合的设计在 mmagic/models/editors/dic 中有完整且可读的实现。通过两套官方配置你可以快速复现从纯回归到 GAN 对抗两种训练范式借助GenerateFacialHeatmap数据流水线、DICNet的多步迭代结构与LightCNN判别器可以深入理解人脸先验引导超分的完整链路。若需将 DIC 用于自定义数据集或调整放大倍数可在配置中修改scale、mid_channels、num_steps等关键参数并同步调整数据流水线中的缩放比例与评估器的crop_border。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载相关推荐揭秘AI-WriterRWKV模型驱动的中文小说智能创作引擎揭秘AI WriterRWKV模型驱动的中文小说智能创作引擎 AI Writer是一个基于RWKV架构的中文预训练生成模型专为玄幻和言情网络小说创作而生。这媒体生成计算机视觉深度学习人工智能大模型IDHS (I Dont Have Spotify)入门指南5分钟学会跨平台音乐链接转换终极教程 IDHS I Dont Have Spotify 入门指南5分钟学会跨平台音乐链接转换终极教程 还在为不同音乐平台之间的链接转换而烦恼吗IDHSI媒体生成计算机视觉深度学习人工智能大模型PaddleHub falsr_c 轻量级图像超分辨率模型基于神经架构搜索的 2 倍超分实战指南PaddleHub falsr_c 轻量级图像超分辨率模型基于神经架构搜索的 2 倍超分实战指南 falsr_c 是 PaddleHub 生态中一款基于 Fa人工智能大模型微调模型推理服务上一篇Supabase-CSharp与其他后端服务的对比为什么选择它下一篇Yew迭代器Rust Web应用中集合处理和转换的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考