新闻详情

新闻详情

首页 / 资讯中心 / 详情

MMagic 人脸超分 DIC 算法全解析:迭代协作恢复机制、配置详解与训练实战

发布时间:2026/9/28 6:32:55来源:尧图网络
MMagic 人脸超分 DIC 算法全解析:迭代协作恢复机制、配置详解与训练实战
媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】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点击查看免费下载DICDeep Face Super-Resolution with Iterative Collaboration是 2020 年 CVPR 上提出的人脸超分辨率Face Super-Resolution, FSR算法其核心思想是让图像恢复与关键点Landmark估计两个循环网络在多次迭代中互相促进、逐步提升。本文以 MMagic 仓库中 configs/dic/README.md 为主体结合 mmagic/models/editors/dic 下的完整源码与两套官方配置文件系统讲解 DIC 的算法原理、网络结构、损失设计、配置参数与训练/测试实战命令帮助读者在 MMagic 中直接复现人脸 8 倍超分。一、算法背景与核心思想论文Deep Face Super-Resolution with Iterative Collaboration between Attentive Recovery and Landmark EstimationCVPR 2020任务图像超分辨率Image Super-Resolution模型仓库位于 configs/dic。近年的深度学习方法借助人脸先验facial priors在严重退化人脸图像的超分上取得了不错的效果但已有方法对先验的利用并不充分landmark 和 component map 等面部先验通常由低分辨率或粗超分图像估计而来先验本身不够准确进而影响了恢复性能。DIC 正是针对这一问题提出的解决方案两个循环网络迭代协作一个分支负责面部图像恢复recovery另一个分支负责关键点估计landmark estimation。在每个循环步中恢复分支利用关键点先验生成更高质量的图像而更清晰的图像反过来又促进更准确的关键点估计二者在迭代中互相增强iterative information interaction。新的注意力融合模块Attentive Fusion Module将面部组件facial components分别生成再以注意力方式聚合从而强化 landmark 图对恢复过程的引导。从 MMagic 的模型注册表看DIC 的实现分布在 mmagic/models/editors/dic 目录下核心模块包括顶层模型 dic.pyDIC、生成器 dic_net.pyDICNet、关键点分支 feedback_hour_glass.pyFeedbackHourglass以及判别器 light_cnn.pyLightCNN。二、模型顶层设计DIC 如何组织迭代训练MMagic 中的DIC模型定义在 mmagic/models/editors/dic/dic.py它继承了SRGAN并在此基础上扩展出两个专属损失align_loss热图对齐损失与feature_loss基于 LightCNN 的特征感知损失MODELS.register_module() class DIC(SRGAN): def __init__(self, generator, pixel_loss, align_loss, discriminatorNone, gan_lossNone, feature_lossNone, train_cfgNone, test_cfgNone, init_cfgNone, data_preprocessorNone): ... self.align_loss MODELS.build(align_loss) self.feature_loss MODELS.build(feature_loss) if feature_loss else None self.pixel_init train_cfg.get(pixel_init, 0) if train_cfg else 0关键设计点多步输出forward_tensor中生成器返回sr_list与heatmap_list两个列表长度等于迭代步数默认 4 步。训练时全部返回用于计算各步损失推理时只取最后一步sr_list[-1]。判别器延迟启动pixel_initif_run_d()要求self.step_counter self.pixel_init才运行判别器即在训练初期默认前 10000 步只做像素级恢复与关键点对齐让生成器先收敛到稳定的重建质量再引入对抗训练。判别器更新频率disc_repeattrain_step中按disc_repeat默认 2次更新判别器且判别器输入使用sr_list[-1].detach()断开梯度。从 tests/test_models/test_editors/test_dic/test_dic.py 的单元测试可以验证迭代训练的实际行为两次train_step后返回的日志变量包含loss_pixel_v0~loss_pixel_v3、loss_align_v0~loss_align_v3、loss_feature、loss_gan、loss_d_real、loss_d_fake共 10 项正好对应 4 个迭代步的逐级像素损失与热图对齐损失以及对抗训练的判别损失。三、生成器 DICNet 源码拆解反馈块与注意力融合DICNet定义在 mmagic/models/editors/dic/dic_net.py其构造函数参数即对应配置文件中的可调项参数默认值说明in_channels3输入图像通道数RGBout_channels3输出图像通道数mid_channels64主干网络中间特征通道数官方配置为 48num_blocks6反馈块中上下采样模块数量hg_mid_channels256Hourglass 中间通道数hg_num_keypoints68关键点数68 点人脸 landmarknum_steps4迭代步数upscale_factor8上采样倍数detach_attentionFalse热图是否从当前计算图分离prelu_init0.2PReLU 的初始斜率num_heatmaps5融合模块使用的热图组数num_fusion_blocks7注意力融合模块中残差块数量前向流程见forward清晰地体现了迭代协作输入先经过interpolate双线性插值到 128×128 作为全局残差基线conv_first卷积 PReLU PixelShuffle(2)做浅层特征提取第 0 步由FeedbackBlockCustom输出初始 SR 特征后续每一步由FeedbackBlockHeatmapAttention结合上一步的关键点热图输出特征conv_last转置卷积 卷积得到当前步的 SR 图像与全局残差相加该 SR 图像送入FeedbackHourglass估计 68 点关键点热图同时返回隐藏状态last_hidden作为下一步的反馈输入。其中两类核心模块值得展开1. 反馈块FeedbackBlock。整体结构呈模块输出回流到自身输入的闭环----- Module -----上方箭头回流。FeedbackBlockCustom作为第一个反馈块会直接把输入特征写入last_hidden作为后续反馈FeedbackBlockHeatmapAttention则在反馈块中嵌入FeatureHeatmapFusingBlock。2. 注意力融合模块FeatureHeatmapFusingBlock。源码位于同一文件的FeatureHeatmapFusingBlock类它先将特征经 1×1 卷积扩展到num_heatmaps × in_channels通道再通过GroupResBlock分组卷积groupsnum_heatmaps让每组特征独立对应一个面部组件最后对热图做softmax得到注意力权重逐通道加权求和完成组件分别生成、注意力聚合attention nn.functional.softmax(heatmap, dim1) feature feature.view(batch_size, self.num_heatmaps, -1, w, h) * attention.unsqueeze(2) feature feature.sum(1)四、关键点估计分支FeedbackHourglass 与五组面部热图FeedbackHourglass定义在 mmagic/models/editors/dic/feedback_hour_glass.py采用递归式 Hourglass 网络深度 4Hourglass(depth-1)递归构造估计 68 点人脸关键点并将网络的中间隐藏状态作为反馈传入下一步形成预处理 → Hourglass → 反馈的闭环。更关键的是reduce_to_five_heatmaps函数它将 68 点或 Helen 数据集的 194 点关键点热图归约为 5 组组件热图与num_heatmaps5严格对应左眼left eye右眼right eye鼻子nose嘴mouse人脸轮廓face silhouette归约时先按通道最大值归一化clamp_min_(0.05)防止除零再按各组关键点的热图求和。该函数同时支持detach开关开启后热图从计算图中分离阻断关键点分支梯度回流到恢复分支可作为训练策略的调节项。五、判别器与特征损失基于 LightCNN 的对抗与感知约束DICGAN带 GAN 的 DIC 变体的判别器LightCNN定义在 mmagic/models/editors/dic/light_cnn.py输入尺寸 128×128。其基础模块MaxFeature采用双通道特征取最大的 max-feature 策略卷积/线性层输出2 * out_channels通道再按通道分成两份取逐元素最大值形成非线性特征选择。特征损失LightCNNFeatureLoss定义在 mmagic/models/losses/feature_loss.py它加载预训练的light_cnn_feature.pth冻结参数、requires_grad_(False)作为特征提取器在特征空间计算预测图与 GT 的 L1或 MSE距离pred_feature self.model(pred) gt_feature self.model(gt).detach() feature_loss self.criterion(pred_feature, gt_feature)其中 GT 特征做了detach()只引导生成器向 GT 特征对齐。六、数据管线关键点热图从哪来训练时所需的 landmark 热图由数据增强变换GenerateFacialHeatmap生成实现在 mmagic/datasets/transforms/generate_assistant.py依赖face-alignment库源码中assert has_face_alignment明确要求安装在 CPU 上运行FaceAlignment(LandmarksType._2D)检测 2D 关键点将 128×128 原图上检测到的关键点按size_ratio缩放到热图尺寸训练配置为 32×32并以sigma默认 1.0为高斯半径生成逐关键点热图use_cacheTrue时以{image_key}_{key}为键缓存热图避免重复检测。训练管线见 dic_x8c48b6_4xb2-150k_celeba-hq.py 的train_pipeline按如下顺序构建样本LoadImageFromFile读取 GT 图像color_typecolorRGB 通道序cv2 解码Resize到 (128, 128)bicubicpillow 后端Resize缩放 1/8保持宽高比输出键为img即生成 16×16 的低分辨率输入GenerateFacialHeatmap基于 128 尺寸 GT 图生成 32×32 关键点热图sigma1.0PackInputs打包。验证/测试管线与训练管线一致但不生成热图推理不需要 landmark 监督另有一套inference_pipeline供推理使用。数据集使用BasicImageDatasetdata_rootdata训练集为CelebA-HQ/train_256/all_256验证/测试集为test_256/all_256。七、两套官方配置全面解析DIC 在 MMagic 中提供两套配置继承关系为dic_gan-x8c48b6_4xb2-500k_celeba-hq.py以dic_x8c48b6_4xb2-150k_celeba-hq.py为_base_后者再继承../_base_/default_runtime.py。7.1 纯重建版dic_x8c48b6_4xb2-150k_celeba-hq.py配置文件 只包含生成器与两类损失无对抗组件model dict( typeDIC, generatordict( typeDICNet, in_channels3, out_channels3, mid_channels48), pixel_lossdict(typeL1Loss, loss_weight1.0, reductionmean), align_lossdict(typeMSELoss, loss_weight0.1, reductionmean), train_cfgdict(), test_cfgdict(), data_preprocessordict( typeDataPreprocessor, mean[129.795, 108.12, 96.39], std[255, 255, 255], ))训练配置要点train_cfgIterBasedTrainLoopmax_iters150_000每 2000 步验证一次优化器MultiOptimWrapperConstructorOptimWrapper生成器Adam(lr1e-4)学习率MultiStepLRmilestones[10000, 20000, 40000, 80000]gamma0.5评估器MAEPSNR/SSIMcrop_borderscale即评估前裁剪边界 8 像素default_hooks每 2000 步保存 checkpoint含优化器状态日志每 100 步输出一次。7.2 GAN 版dic_gan-x8c48b6_4xb2-500k_celeba-hq.py配置文件 在基类配置之上叠加判别器、GAN 损失与特征损失model dict( typeDIC, generatordict( typeDICNet, in_channels3, out_channels3, mid_channels48), discriminatordict(typeLightCNN, in_channels3), pixel_lossdict(typeL1Loss, loss_weight1.0, reductionmean), align_lossdict(typeMSELoss, loss_weight0.1, reductionmean), feature_lossdict( typeLightCNNFeatureLoss, pretrainedpretrained_light_cnn, loss_weight0.1, criterionl1), gan_lossdict( typeGANLoss, gan_typevanilla, loss_weight0.005, real_label_val1.0, fake_label_val0), train_cfgdict(pixel_init10000, disc_repeat2), ... )与纯重建版相比的关键差异配置项纯重建版GAN 版说明pixel_init无10000前 10000 步不训练判别器disc_repeat无2每轮 G 步后判别器更新 2 次feature_loss无LightCNNFeatureLossL1权重 0.1需下载预训练light_cnn_feature.pthgan_loss无vanilla GAN权重 0.005对抗损失优化器仅生成器 Adam lr1e-4生成器 1e-4 / 判别器 1e-5判别器学习率低一个数量级max_iters150000500000GAN 训练更长LR milestones[10000, 20000, 40000, 80000][100000, 200000, 300000, 400000]对应更长训练周期验证间隔20005000—两套配置均使用MMSeparateDistributedDataParallel作为model_wrapper_cfg生成器与判别器分离同步scale 8表明任务为 8 倍超分。八、实验结果与模型仓库在 RGB 通道上评估评估前裁剪每个边界的scale像素指标为PSNR / SSIM。需要注意dic_gan_x8c48b6_g4_150k_CelebAHQ的日志中 DICGAN 仅在 CelebA-HQ 测试集前 9 张图上验证因此下表中PSNR/SSIM与日志数据不同。模型数据集scalePSNRSSIM训练资源下载dic_x8c48b6_g4_150k_CelebAHQCelebAHQx825.23190.74224 (Tesla PG503-216)model | logdic_gan_x8c48b6_g4_500k_CelebAHQCelebAHQx823.62410.67214 (Tesla PG503-216)model | log对应的模型元信息配置路径、权重地址、指标统一登记在 configs/dic/metafile.ymlMMagic 的模型索引系统可据此自动解析与下载权重。九、快速开始训练与测试训练可使用 CPU、单 GPU 或多 GPU 训练以 GAN 版配置为例# 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 训练 ./tools/dist_train.sh configs/dic/dic_gan-x8c48b6_4xb2-500k_celeba-hq.py 8测试测试命令需要传入预训练权重路径可先下载上表 model 链接中的权重# 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更多训练与测试细节可参考 docs/en/user_guides/train_test.md中文版见 docs/zh_cn/user_guides/train_test.md中Train a model与Test a pre-trained model两部分。运行训练/测试时请确保已按仓库说明完成 MMagic 安装并提前准备好 CelebA-HQ 数据集按data/CelebA-HQ/train_256/all_256与test_256/all_256目录组织训练 GAN 版还需满足face-alignment依赖用于热图生成。十、引用若在研究中使用了 DIC请按如下方式引用inproceedings{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} }小结DIC 以恢复分支与关键点分支迭代协作 组件级注意力融合为核心在 8 倍人脸超分任务上兼顾了重建精度与先验引导的稳定性。在 MMagic 中读者既可以通过 dic_x8c48b6_4xb2-150k_celeba-hq.py 快速复现纯重建版本也可以通过 dic_gan-x8c48b6_4xb2-500k_celeba-hq.py 体验完整的对抗训练流程结合 mmagic/models/editors/dic 下的源码可以深入理解迭代协作、反馈机制与注意力融合的每一步实现细节。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】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点击查看免费下载相关推荐MMagic 中的 DIC基于迭代协作机制的人脸 8 倍超分辨率算法实战指南MMagic 中的 DIC基于迭代协作机制的人脸 8 倍超分辨率算法实战指南 本文聚焦 OpenMMLab 生成式视觉工具箱 MMagic 中的人脸超分辨率算媒体生成计算机视觉深度学习人工智能大模型MMagic 中的 DeepFillv1 图像修复算法配置解析、两阶段训练原理与完整实战指南MMagic 中的 DeepFillv1 图像修复算法配置解析、两阶段训练原理与完整实战指南 本文导读 DeepFillv1 是 2018 年 CVPR 上媒体生成计算机视觉深度学习人工智能大模型MMagic 图像抠图实战GCAGuided Contextual Attention算法原理、配置文件与训练测试全解析MMagic 图像抠图实战GCAGuided Contextual Attention算法原理、配置文件与训练测试全解析 GCAGuided Conte媒体生成计算机视觉深度学习人工智能大模型上一篇FGO智能自动化终极指南告别重复操作解放双手的游戏脚本神器下一篇OpenCompass项目中的主观评估技术指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI 后端队列背压实战:TaoToken 统一通道下的降级与限流配置 2026/9/28 7:29:14

AI 后端队列背压实战:TaoToken 统一通道下的降级与限流配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Traefik核心概念解析:Entrypoints、Routers、Services和Middlewares 2026/9/28 7:29:14

Traefik核心概念解析:Entrypoints、Routers、Services和Middlewares

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
使用 MCP C# SDK 实现 MCP Tool:ASP.NET Core + SSE 配置与验证 2026/9/28 7:29:14

使用 MCP C# SDK 实现 MCP Tool:ASP.NET Core + SSE 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
UNet人物抠图实战:从语义分割到透明底PNG全流程 2026/9/28 7:29:13

UNet人物抠图实战:从语义分割到透明底PNG全流程

简介:这份资源面向计算机视觉入门与进阶开发者,聚焦UNet在图像二分类分割中的实战应用,核心场景是人物抠图。内容围绕单通道输出方案展开:网络输出形状为[batch_size,1,height,width],经Sigmoid归一化到[0,1]后与仅含0…

阅读更多 →
北京网站建设一条龙避坑指南:搞懂完整流程再报价 2026/9/28 7:29:07

北京网站建设一条龙避坑指南:搞懂完整流程再报价

北京网站建设一条龙避坑指南:搞懂完整流程再报价 找北京网站建设一条龙服务,最怕的不是贵,而是被“打包”概念糊弄。很多甲方拿着预算单去询价,销售张口就是“全包价”,结果签完合同发现SSL证书要另算,服务器配置被偷梁换柱,甚至连ICP备案的指导…

阅读更多 →
hindsight 实战:用 LLM 复盘为 Agent 构建程序记忆 2026/9/28 7:29:00

hindsight 实战:用 LLM 复盘为 Agent 构建程序记忆

1. 从“事后诸葛亮”说起:hindsight 到底想解决什么问题第一次看到 “hindsight” 这个词,我脑子里蹦出来的就是那句老话——事后诸葛亮。但放在 agent memory 和 LLM 这个语境里,它其实指向一个非常具体、非常痛的技术问题:当智能…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉