拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

IDM-VTON 中 DensePose-RCNN 模型库(Model Zoo)全解析:基线配置、评测指标与实战复现

IDM-VTON 中 DensePose-RCNN 模型库(Model Zoo)全解析:基线配置、评测指标与实战复现
  • 计算机视觉
  • 深度学习
  • 媒体生成

【免费下载链接】IDM-VTON

[ECCV2024] IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild

项目地址:https://gitcode.com/GitHub_Trending/id/IDM-VTON
点击查看免费下载

本文以仓库内 DensePose Model Zoo 文档 为主体骨架,结合根目录 configs 下的真实配置、densepose_head.py等源码实现,以及 IDM-VTON 试穿流程中对 DensePose 的实际调用,系统梳理 DensePose-RCNN 官方基线家族的训练约定、配置命名规则、各项 AP 指标与置信度模型原理。读完本文,你将能够:看懂 DensePose 模型库中每一类基线的差异与适用场景;依据配置文件和源码理解s1x / DL / WC1 / WC2 / legacy后缀的底层含义;并在 IDM-VTON 仓库中定位、加载和验证实际使用的 DensePose 权重(ckpt/densepose/model_final_162be9.pkl)。

一、模型库定位与统一评测约定

DensePose(Dense Human Pose Estimation In The Wild)的目标是将 RGB 图像中人体的所有像素映射到三维人体表面。本文档所记录的基线均由 Detectron2 框架下的 DensePose 训练得到,对应配置文件集中放置在仓库的 configs 目录(原文档以../configs相对路径引用,实际对应仓库根目录 configs)。

所有基线遵循同一套数据划分约定:

  • 训练集:COCOtrain2014+valminusminival2014
  • 评测集:COCOminival2014

关于这些基线训练时的通用设置(数据增强、学习率调度、分布式训练环境等),原文档明确指向 Detectron2 的通用模型库说明,即仓库内的 preprocess/humanparsing/mhp_extension/detectron2/MODEL_ZOO.md。该文档补充说明了若干通用约定,例如:所有 COCO 模型使用尺度抖动(scale jittering)+ 水平翻转的数据增强;训练速度取整个训练过程的平均值;推理速度以 batch size 为 1、在 Detectron2 内部直接测得,生产部署经优化后通常会更快;表中的model id用于方便引用与校验,每个模型的权重文件名携带其 md5 前缀,训练曲线等统计信息可从每个模型的metrics文件中查看。

许可协议:本文档中所有可下载模型均基于 Creative Commons Attribution-ShareAlike 3.0)。

二、配置文件命名规则与基础骨架

读懂模型库的前提是看懂配置文件名。DensePose 基线配置的命名格式为:

densepose_rcnn_<backbone>_FPN_<head?>_<schedule?>_s1x[_legacy].yaml

各字段含义如下:

片段含义仓库对应配置示例
R_50/R_101ResNet 骨干网络深度configs/densepose_rcnn_R_50_FPN_s1x.yaml
FPN特征金字塔骨干configs/densepose_rcnn_R_101_FPN_s1x.yaml
DLDeepLabV3 Head(替代原始全卷积 Head)configs/densepose_rcnn_R_50_FPN_DL_s1x.yaml
WC1/WC2With Confidence,两种 UV 置信度统计模型(iid_iso/indep_aniso)configs/densepose_rcnn_R_50_FPN_WC1_s1x.yaml
s1x1x 学习率调度通用后缀
legacy采用 Güler et al.(2018)原始训练调度configs/densepose_rcnn_R_50_FPN_s1x_legacy.yaml

其中WC1/WC2组合了DL前缀时表示“DeepLab Head + 置信度估计”,如 configs/densepose_rcnn_R_101_FPN_DL_WC2_s1x.yaml。

2.1 基础骨架 Base-DensePose-RCNN-FPN.yaml

所有非 legacy 基线都以 configs/Base-DensePose-RCNN-FPN.yaml 为基底(_BASE_),它定义了 DensePose-RCNN 的完整网络与训练骨架:

  • 元架构:MODEL.META_ARCHITECTURE: "GeneralizedRCNN",说明 DensePose 构建在通用的两阶段 R-CNN 检测器之上。
  • 骨干网络:build_resnet_fpn_backbone,ResNet 输出res2–res5四层特征喂给 FPN。
  • RPN:输入p2–p6;训练时PRE_NMS_TOPK_TRAIN: 2000、POST_NMS_TOPK_TRAIN: 1000,测试时均为 1000。注释特别说明:Detectron1 每 batch 使用 2000 个 proposal(因默认 FPN batch size 为 2,约合每张图 1000 个)。
  • DensePose 开关:MODEL.DENSEPOSE_ON: True,ROI_HEADS.NAME: "DensePoseROIHeads",NUM_CLASSES: 1(人体单类)。
  • Box Head:FastRCNNConvFCHead,2 个 FC 层,POOLER_RESOLUTION: 7,POOLER_SAMPLING_RATIO: 2,POOLER_TYPE: "ROIAlign"。
  • DensePose Head:默认DensePoseV1ConvXHead,POOLER_TYPE: "ROIAlign",NUM_COARSE_SEGM_CHANNELS: 2(2 通道粗分割,对应背景/人体)。
  • 数据集:TRAIN: ("densepose_coco_2014_train", "densepose_coco_2014_valminusminival"),TEST: ("densepose_coco_2014_minival",),与文档开头的评测约定完全一致。
  • 求解器:IMS_PER_BATCH: 16、BASE_LR: 0.01、STEPS: (60000, 80000)、MAX_ITER: 90000、WARMUP_FACTOR: 0.1。
  • 输入:MIN_SIZE_TRAIN: (640, 672, 704, 736, 768, 800),即训练时在 6 档尺度间做尺度抖动。

2.2 变体配置如何叠加

各变体配置在基础骨架之上做最小化修改,叠加关系如下:

变体关键配置改动(以 R_50 为例)
s1x(标准改进基线)换用 ImageNet 预训练R-50.pkl,RESNETS.DEPTH: 50,调度拉长至MAX_ITER: 130000、STEPS: (100000, 120000)
DL(DeepLabV3 Head)ROI_DENSEPOSE_HEAD.NAME: "DensePoseDeepLabHead",其余同s1x
WC1(置信度 v1)开启UV_CONFIDENCE.ENABLED: True且TYPE: "iid_iso";POINT_REGRESSION_WEIGHTS: 0.0005;开启CLIP_GRADIENTS;WARMUP_FACTOR: 0.025
WC2(置信度 v2)与WC1仅差UV_CONFIDENCE.TYPE: "indep_aniso"
legacy(旧版基线)NUM_COARSE_SEGM_CHANNELS: 15、POOLER_RESOLUTION: 14、HEATMAP_SIZE: 56、INDEX_WEIGHTS: 2.0、PART_WEIGHTS: 0.3、POINT_REGRESSION_WEIGHTS: 0.1、DECODER_ON: False、BASE_LR: 0.002,调度为MAX_ITER: 130000、STEPS: (100000, 120000)

可以看到,WC1与WC2的差异完全体现在 UV 置信度模型的统计假设上(iid_iso与indep_aniso),这点在源码中也有精确对应。

三、置信度估计的源码级解读

在 preprocess/humanparsing/mhp_extension/detectron2/projects/DensePose/densepose/densepose_head.py 中,DensePoseUVConfidenceType枚举明确定义了两种统计模型:

  • iid_iso(独立同分布、各向同性协方差):WC1采用;
  • indep_aniso(独立但各向异性协方差):WC2采用。

DensePoseUVConfidenceConfig数据类给出默认配置:enabled: False、epsilon: 0.01(UV 置信度的下界)、type: IID_ISO。DensePoseConfidenceModelConfig.from_cfg将MODEL.ROI_DENSEPOSE_HEAD.UV_CONFIDENCE.ENABLED / EPSILON / TYPE三个配置项映射为运行时的统计模型对象。这一设计源自 Neverova、Novotny、Vedaldi 的 NIPS 2019 工作“Correlated Uncertainty for Learning Dense Correspondences from Noisy Labels”——在回归的 UV 坐标之外额外估计不确定性,从而更鲁棒地处理含噪标注。

同样在该文件中,DensePoseDeepLabHead展示了DL变体的结构:使用扩张率[6, 12, 56]的 ASPP 模块捕捉多尺度上下文,后续堆叠卷积层,可选 GroupNorm(DEEPLAB.NORM == "GN"时分组数为 32)与 NonLocal 模块(DEEPLAB.NONLOCAL_ON)。这解释了为什么DL系列相对原始全卷积 Head 的dp. AP有明显提升、但训练内存也更高(见下文基线表)。

四、COCO DensePose 基线:DensePose-RCNN 系列

原文档按 Head 类型与训练调度将基线划分为四类。下列各表完整保留原文档的指标数据(训练时间、推理时间、显存、box AP、dp AP GPS、dp AP GPSm、model id),并将“下载”列整理为“权重文件名 + model id”形式,每个条目对应的model/metrics文件均可按 model id 从原 Model Zoo 文档的下载入口获取(本仓库已内置的权重见第六节)。

4.1 旧版基线(Legacy Models)

采用 Güler et al.(2018)原始论文中的训练调度:

名称(配置)lr schedtrain time (s/iter)inference time (s/im)train mem (GB)box APdp. AP GPSdp. AP GPSmmodel id
R_50_FPN_s1x_legacys1x0.3070.0513.258.152.154.9164832157(model_final_d366fa.pkl)
R_101_FPN_s1x_legacys1x0.3900.0634.359.553.256.1164832182(model_final_10af0e.pkl)

4.2 改进基线:原始全卷积 Head

采用改进的训练调度,并引入 Kirillov et al.(2019)提出的 Panoptic FPN Head:

名称(配置)lr schedtrain time (s/iter)inference time (s/im)train mem (GB)box APdp. AP GPSdp. AP GPSmmodel id
R_50_FPN_s1xs1x0.3590.0664.561.263.765.3165712039(model_final_162be9.pkl)
R_101_FPN_s1xs1x0.4280.0795.862.364.566.4165712084(model_final_c6ab63.pkl)

对比 legacy 版本,R_50 的 dp. AP GPS 从 52.1 提升到 63.7,box AP 从 58.1 提升到 61.2,训练成本(显存 3.2→4.5 GB)小幅上升但收益显著。

4.3 改进基线:DeepLabV3 Head

在改进调度与 Panoptic FPN Head 基础上,叠加 Chen et al.(2017)的 DeepLabV3 Head:

名称(配置)lr schedtrain time (s/iter)inference time (s/im)train mem (GB)box APdp. AP GPSdp. AP GPSmmodel id
R_50_FPN_DL_s1xs1x0.3920.0706.761.165.666.8165712097(model_final_0ed407.pkl)
R_101_FPN_DL_s1xs1x0.4780.0837.062.366.367.7165712116(model_final_844d15.pkl)

与 4.2 相比,相同骨干下 dp. AP GPS 再提升约 1.8~2 个点,代价是训练显存从 4.5→6.7 GB、每迭代耗时增加约 9%,属于典型的“以算力换精度”选项。

4.4 带置信度估计的基线(Confidence Estimation)

除回归 UV 坐标外,这些模型还额外估计回归结果的置信度,方法沿袭 Neverova et al.(2019)的带相关不确定性的稠密对应学习:

名称(配置)lr schedtrain time (s/iter)inference time (s/im)train mem (GB)box APdp. AP GPSdp. AP GPSmmodel id
R_50_FPN_WC1_s1xs1x0.3530.0644.660.564.265.6173862049(model_final_289019.pkl)
R_50_FPN_WC2_s1xs1x0.3640.0664.860.764.265.7173861455(model_final_3abe14.pkl)
R_50_FPN_DL_WC1_s1xs1x0.3970.0686.761.165.867.1173067973(model_final_b1e525.pkl)
R_50_FPN_DL_WC2_s1xs1x0.4100.0706.860.865.666.7173859335(model_final_60fed4.pkl)
R_101_FPN_WC1_s1xs1x0.4350.0765.762.564.966.5171402969(model_final_9e47f0.pkl)
R_101_FPN_WC2_s1xs1x0.4500.0785.762.364.866.6173860702(model_final_5ea023.pkl)
R_101_FPN_DL_WC1_s1xs1x0.4790.0817.962.066.267.4173858525(model_final_f359f3.pkl)
R_101_FPN_DL_WC2_s1xs1x0.4910.0827.661.765.967.3173294801(model_final_6e1ed1.pkl)

横向对比可以发现两个规律:其一,WC系列与同骨干的非置信度版本(如 R_50_FPN_s1x vs R_50_FPN_WC1_s1x)精度几乎持平,说明置信度分支在不牺牲主体任务的前提下提供了额外的不确定性信息;其二,WC2(各向异性协方差)与WC1(各向同性)精度接近,验证了两种统计假设在实践中都能收敛到相近水平。

五、DensePose 1 旧基线(Old Baselines)

原文档还保留了两条来自 DensePose 1 框架的旧基线,指标在当前框架中重新评测得出(使用 bbox AP / AP / AP50 / AP75 / APm / APl 六项指标):

模型bbox APAPAP50AP75APmAPl
ResNet50_FPN_s1x-e2e54.67348.89484.96350.71743.13250.433
ResNet101_FPN_s1x-e2e56.03251.08886.25055.05746.54252.563

原文档特别提示:这些分数与 DensePose 1 Model Zoo 中官方报告的数值接近但不完全相等,原因是两个框架之间存在少量不兼容性(例如数据预处理、实现细节的差异),因此在跨框架对比基线时必须注意这一口径差异。

六、指标说明:box AP / dp. AP GPS / GPSm

表格中的三类核心指标含义如下:

  • box AP:人体检测框的平均精度(沿用 COCO 标准 AP 计算方式)。
  • dp. AP GPS:DensePose 任务在GPS 度量(Geodesic Point Similarity,基于测地距离的相似度)下的平均精度,对应论文中表 2 的 GPS 指标;它衡量预测的 UV 与真值在人体表面测地距离上的接近程度。
  • dp. AP GPSm:GPS 度量在掩码(mask)上标准化后的 AP 变体。

因此本文档记录的基线同时优化并评估了“检测到人”(box AP)与“把每个人体像素映射到正确的表面点”(GPS/GPSm)两个目标,这也正是 DensePose 不同于普通姿态估计的关键所在。

七、在 IDM-VTON 虚拟试穿流程中的实际落地

本仓库不仅内置了 DensePose 的完整训练/评测代码,还在真实试穿管线中直接消费了上述模型库中指标最高性价比的 R_50_FPN_s1x权重。

  1. 权重已随仓库分发:ckpt/densepose/model_final_162be9.pkl与上表 R_50_FPN_s1x 的 model id 165712039 完全对应(权重文件名携带 md5 前缀162be9)。
  2. 配置与权重配对使用:试穿前端 gradio_demo/app.py 中,通过apply_net.create_argument_parser().parse_args(('show', './configs/densepose_rcnn_R_50_FPN_s1x.yaml', './ckpt/densepose/model_final_162be9.pkl', 'dp_segm', '-v', '--opts', 'MODEL.DEVICE', 'cuda'))加载 configs/densepose_rcnn_R_50_FPN_s1x.yaml 与内置权重,使用dp_segm(细粒度分割)可视化器在 GPU 上生成试穿所需的姿态/人体结构图pose_img,随后进入 SDXL 试穿生成流程(start_tryon函数)。
  3. 应用链路:apply_net的show动作(定义于 preprocess/humanparsing/mhp_extension/detectron2/projects/DensePose/apply_net.py)提供dp_contour(轮廓)、dp_segm(细分割)、dp_u/dp_v(UV 分量)、bbox(带分数检测框)五种可视化选择;其setup_config会先调用add_densepose_config注入 DensePose 专属配置节点,再合并配置文件并覆写MODEL.WEIGHTS。这意味着你可以在试穿管线中自由替换上表任意基线的权重,只需保持config与pkl匹配即可。

八、复现与快速验证:训练、评估入口

8.1 训练与评测脚本

preprocess/humanparsing/mhp_extension/detectron2/projects/DensePose/train_net.py 是标准的 DensePose 训练/评测入口,其结构与 Detectron2 官方tools/train_net.py一致:

  • 通过add_densepose_config(cfg)注入 DensePose 专属配置,再merge_from_file加载本文第二节所述的各种基线配置;
  • 自定义Trainer.build_evaluator同时挂载COCOEvaluator(检测)与DensePoseCOCOEvaluator(DensePose UV/分割),评测输出到OUTPUT_DIR/inference;
  • 使用DensePoseGeneralizedRCNNWithTTA支持测试时增强(TTA),当cfg.TEST.AUG.ENABLED开启时,训练结束会自动执行 TTA 评测,结果写入inference_TTA;
  • 支持--eval-only纯评测模式与--num-gpus多卡分布式训练(内部经launch调度)。

典型用法(以 8 卡复现基线为例):

# 训练(8 GPU) python train_net.py --config-file configs/densepose_rcnn_R_50_FPN_s1x.yaml --num-gpus 8 # 纯评测/推理耗时测量 python train_net.py --config-file configs/densepose_rcnn_R_50_FPN_s1x.yaml --eval-only --num-gpus 8

8.2 快速验证配置

仓库在 configs/quick_schedules 提供了一系列精简版配置,用于快速验证代码与流程,例如:

  • densepose_rcnn_R_50_FPN_instant_test.yaml(实例级即时测试)
  • densepose_rcnn_R_50_FPN_training_acc_test.yaml/densepose_rcnn_R_50_FPN_inference_acc_test.yaml(训练/推理精度冒烟测试)
  • densepose_rcnn_R_50_FPN_TTA_inference_acc_test.yaml(TTA 推理精度测试)
  • densepose_rcnn_R_50_FPN_DL_instant_test.yaml、densepose_rcnn_R_50_FPN_WC1_instant_test.yaml、densepose_rcnn_R_50_FPN_WC2_instant_test.yaml(分别覆盖 DL、WC1、WC2 变体)

配套的自动化测试脚本位于 preprocess/humanparsing/mhp_extension/detectron2/projects/DensePose/dev(run_inference_tests.sh/run_instant_tests.sh)。另外,仓库根目录 configs/evolution 还提供以densepose_R_50_FPN_DL_WC1M_3x_Atop10P_CA为代表的进阶演进配置,可作为扩展研究参考。

九、许可与引用建议

模型权重遵循 CC BY-SA 3.0 许可;DensePose 代码(随 Detectron2)遵循 Apache 2.0。若在论文或工程中使用置信度估计版本,原文档建议引用 Neverova et al.(2019)关于带相关不确定性稠密对应学习的 NIPS 论文;若使用原始 DensePose,则引用 Güler、Neverova、Kokkinos 的 CVPR 2018 论文(完整 BibTeX 条目见 projects/DensePose/README.md 的 Citing DensePose 小节)。在本仓库的 IDM-VTON 试穿场景中,DensePose 生成的细粒度人体分割图是扩散模型试穿流程的重要条件输入,其基线选择(默认 R_50_FPN_s1x)在速度与精度之间取得了良好的平衡,你完全可以按需替换为 DeepLab Head 或置信度变体以获得更强的人体表面映射能力。

  • 计算机视觉
  • 深度学习
  • 媒体生成

【免费下载链接】IDM-VTON

[ECCV2024] IDM-VTON : Improving Diffusion Models for Authentic Virtual Try-on in the Wild

项目地址:https://gitcode.com/GitHub_Trending/id/IDM-VTON
点击查看免费下载

相关推荐

上一篇:Node.js中间件开发:The Art of Node中的请求处理管道
下一篇:Easy-Vibe 本地 AI 编程实战:从理解 IDE 与 AI IDE 到用 Trae 从零构建贪吃蛇游戏

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表