资讯动态

ViTPose 仓库 DeepFashion 服装关键点检测实战:DeepPose + ResNet 回归模型配置与评估指南

发布时间:2026/10/14 2:22:20 来源:尧图企业网站定制
人工智能计算机视觉深度学习【免费下载链接】ViTPoseThe official repo for [NeurIPS22] ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation and [TPAMI23] ViTPose: Vision Transformer for Generic Body Pose Estimation项目地址https://gitcode.com/gh_mirrors/vi/ViTPose点击查看免费下载导读本文聚焦当前 ViTPose 仓库中服装时尚二维关键点检测的DeepPose 回归方案以 resnet_deepfashion.md 为骨架完整拆解其基于 ResNet 骨干 DeepPose 回归头的配置体系、数据流、训练/测试命令与 PCK/AUC/EPE 评估指标。读完本文你将掌握如何在 DeepFashionFashion Landmark Detection数据上复现 upper / lower / full 三个子集的关键点检测模型并理解该方案与仓库源码DeepposeRegressionHead之间的实现对应关系。一、方案背景DeepPose 算法、ResNet 骨干与 DeepFashion 数据集该配置组合了三个经典工作文档顶部以 BibTeX 形式给出了全部引用便于学术复现时正确署名角色论文出处算法DeepPose: Human Pose Estimation via Deep Neural NetworksToshev SzegedyCVPR 2014骨干网络Deep Residual Learning for Image RecognitionHe 等CVPR 2016数据集DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich AnnotationsLiu 等CVPR 2016任务定义Fashion Landmark Detection in the WildLiu 等ECCV 2016其中DeepPose 是首个用深度神经网络直接回归关键点坐标的方案与热力图heatmap范式不同它把关键点检测建模为坐标回归问题本配置正是该经典范式在服装关键点任务上的落地实现。二、模型配置详解ResNet50 DeepposeRegressionHead仓库为 DeepFashion 提供 9 个配置按backboneres50/res101/res152× 子集upper/lower/full组合目录位于 configs/fashion/2d_kpt_sview_rgb_img/deeppose/deepfashion/。以 res50_deepfashion_upper_256x192.py 为例核心结构如下2.1 模型主体modelmodel dict( typeTopDown, pretrainedtorchvision://resnet50, backbonedict(typeResNet, depth50, num_stages4, out_indices(3, )), neckdict(typeGlobalAveragePooling), keypoint_headdict( typeDeepposeRegressionHead, in_channels2048, num_jointschannel_cfg[num_output_channels], loss_keypointdict(typeSmoothL1Loss, use_target_weightTrue)), train_cfgdict(), test_cfgdict( flip_testTrue, post_processdefault, shift_heatmapTrue, modulate_kernel11))要点说明typeTopDown该配置沿用 top-down 流程先由检测器给出服装区域 bbox再在裁剪区域内回归关键点pretrainedtorchvision://resnet50使用 torchvision 提供的 ImageNet 预训练权重初始化backboneResNet50num_stages4、out_indices(3,)只取最后一个 stage 输出neckGlobalAveragePooling将骨干输出的特征图全局平均池化为一维向量供后续全连接回归头使用keypoint_headDeepposeRegressionHead输入通道 2048ResNet50/101/152 的 stage4 输出通道数一致输出关节数由channel_cfg决定upper 为 6、lower 为 4、full 为 8loss_keypointSmoothL1Loss回归损失采用 Smooth L1且开启use_target_weightTrue按各关节的可见性权重加权。res101与res152版本仅将pretrained与depth对应替换其余结构相同见 res101_deepfashion_full_256x192.py 与 res152_deepfashion_full_256x192.py。2.2 通道配置channel_cfgchannel_cfg dict( num_output_channels6, # upper 子集为 6lower 为 4full 为 8 dataset_joints6, dataset_channel[[0, 1, 2, 3, 4, 5]], inference_channel[0, 1, 2, 3, 4, 5])该配置同时控制模型输出关节数、数据集关节定义以及推理时的通道映射。三个子集对应的关键点定义见 deepfashion_upper.py、deepfashion_lower.py、deepfashion_full.pyupper6 点left collar、right collar、left sleeve、right sleeve、left hem、right hemlower4 点left waistline、right waistline、left hem、right hemfull8 点left collar、right collar、left sleeve、right sleeve、left waistline、right waistline、left hem、right hem。从源码看deepfashion_dataset.py 的DeepFashionDataset正是按subsetupper/lower/full加载相应注释文件并在dataset_info缺失时回退读取对应的_base_/datasets/deepfashion_*.py与配置文件中的subset参数一一对应。2.3 数据配置与预处理流水线data_cfg / pipelinedata_cfg dict( image_size[192, 256], # 输入图像尺寸宽×高 heatmap_size[48, 64], num_output_channelschannel_cfg[num_output_channels], num_jointschannel_cfg[dataset_joints], dataset_channelchannel_cfg[dataset_channel], inference_channelchannel_cfg[inference_channel], soft_nmsFalse, nms_thr1.0, oks_thr0.9, vis_thr0.2, use_gt_bboxFalse, det_bbox_thr0.0, bbox_filedata/coco/person_detection_results/ COCO_val2017_detections_AP_H_56_person.json, )说明虽然配置文件名与文档结果表写作256x192实际image_size[192, 256]表示宽 192、高 256即 256×192H×W。heatmap_size[48, 64]在本回归方案中不参与目标生成仅作数据结构预留。训练流水线train_pipeline依次执行LoadImageFromFile→TopDownRandomFlip翻转概率 0.5→TopDownGetRandomScaleRotation旋转幅度 ±40 度、尺度变化 0.5→TopDownAffine仿射变换 →ToTensor→NormalizeTensorImageNet 均值/方差→TopDownGenerateTargetRegression关键生成回归坐标目标而非热力图→Collect。验证/测试流水线仅去掉数据增强保留仿射变换与归一化见 res50_deepfashion_upper_256x192.py 第 70-108 行。2.4 数据集路径与加载data_root data/fld data dict( samples_per_gpu64, workers_per_gpu2, val_dataloaderdict(samples_per_gpu32), test_dataloaderdict(samples_per_gpu32), traindict( typeDeepFashionDataset, ann_filef{data_root}/annotations/fld_upper_train.json, img_prefixf{data_root}/img/, subsetupper, ...), ...)即数据需按data/fld/annotations/fld_upper_{train,val,test}.json、fld_lower_*、fld_full_*的目录结构组织图像放在data/fld/img/。仓库测试数据样例见 tests/data/fld/test_fld.json 及配套的img_00000128.jpg、img_00000132.jpg可用于快速验证数据格式。三、源码级的回归头实现原理回归方案的灵魂在于 DeepposeRegressionHead其结构异常精简——仅一层全连接self.fc nn.Linear(self.in_channels, self.num_joints * 2) def forward(self, x): output self.fc(x) N, C output.shape return output.reshape([N, C // 2, 2])输入为GlobalAveragePooling后的 2048 维特征向量输出被 reshape 为[N, K, 2]即每个关节的(x, y)坐标get_loss调用SmoothL1Loss计算回归损失损失实现在 regression_loss.py 中use_target_weightTrue时对输出与目标按权重加权后计算F.smooth_l1_lossget_accuracy使用keypoint_pck_accuracy计算训练过程监控的 PCK 精度inference_model支持flip_pairs水平翻转回归融合配合配置中flip_testTrue使用decode将归一化坐标通过keypoints_from_regression见 top_down_eval.py 第 441 行乘回img_size并利用transform_preds结合 bbox 的center与scale反变换回原图坐标init_weights对全连接层做normal_init(mean0, std0.01)初始化。对比可见DeepPose 回归头没有卷积解码、没有热力图生成推理路径极短这是其轻量、直接的特点。四、训练与测试命令4.1 训练单卡训练 upper 子集模型python tools/train.py configs/fashion/2d_kpt_sview_rgb_img/deeppose/deepfashion/res50_deepfashion_upper_256x192.py常用参数详见 tools/train.py--work-dir日志与模型保存目录--no-validate训练期间跳过验证--gpu-id指定 GPU默认 0--seed/--deterministic随机种子与 CUDNN 确定性--cfg-options覆盖配置项例如--cfg-options model.backbone.depth50--launcher多机训练可切换pytorch/slurm/mpi也可参考仓库提供的 dist_train.sh 与 slurm_train.sh。优化策略继承自各 res50 配置Adam 优化器、初始学习率 5e-4warmuplinear、warmup 500 iters、warmup 比例 0.001学习率在 epoch 170 与 200 处按 step 策略衰减总训练 210 epochs每 10 个 epoch 保存一次 checkpointcheckpoint_config dict(interval10)见 default_runtime.py。4.2 测试与评估python tools/test.py \ configs/fashion/2d_kpt_sview_rgb_img/deeppose/deepfashion/res50_deepfashion_upper_256x192.py \ checkpoint路径 \ --eval PCK AUC EPE--eval接受多个指标详见 tools/test.py 第 46-50 行DeepFashionDataset.evaluatedeepfashion_dataset.py 第 154 行起支持PCK、AUC、EPE三个指标传入不支持的指标如mAP会抛出KeyError——这一点由 test_fashion_dataset.py 中的单测直接验证。配置中evaluation dict(interval10, metricPCK, save_bestPCK)指定验证周期与最优模型保存依据。五、评估指标解读PCK / AUC / EPE三个指标的含义与实现依据如下PCK0.2Percentage of Correct Keypoints预测点与真值点的归一化距离小于阈值0.2的比例。归一化通常取 bbox 尺寸实现见 top_down_eval.py 的_calc_distances与keypoint_pck_accuracy第 179 行AUCArea Under Curve以不同 PCK 阈值为横轴绘制的曲线下面积keypoint_auc第 218 行按 20 个步长采样计算EPEEnd Point Error预测点与真值点之间的平均欧氏距离数值越小越好。六、DeepFashion val 集实验结果以下为文档给出的 ResNet50 回归模型在 DeepFashion val 集上的结果SetArchInput SizePCK0.2AUCEPEckptlogupperdeeppose_resnet_50256x2560.9650.53517.2ckptloglowerdeeppose_resnet_50256x2560.9710.67811.8ckptlogfulldeeppose_resnet_50256x2560.9830.60214.0ckptlog同一份结果同时登记在 resnet_deepfashion.yml 的模型索引中含权重下载地址可供模型库自动收集。三个子集因关键点数量与任务难度不同指标呈现明显差异lower 子集仅 4 个关键点、EPE 最低11.8full 子集 8 个关键点、PCK0.2 最高0.983而 EPE 居中14.0。七、小结DeepFashion 上的 DeepPose 回归配置展示了 ViTPose 仓库对“非热力图范式”的完整支持通过TopDownGenerateTargetRegression生成坐标目标、以单层全连接回归头输出关键点坐标、用SmoothL1Loss训练、并支持 PCK/AUC/EPE 三指标评估。仓库同时提供 res50/res101/res152 与 upper/lower/full 的 9 个组合配置读者可基于 res50_deepfashion_upper_256x192.py 直接修改subset、ann_file与骨干深度快速迁移到其他服装关键点场景。赞分享人工智能计算机视觉深度学习【免费下载链接】ViTPoseThe official repo for [NeurIPS22] ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation and [TPAMI23] ViTPose: Vision Transformer for Generic Body Pose Estimation项目地址https://gitcode.com/gh_mirrors/vi/ViTPose点击查看免费下载相关推荐ViTPose 仓库中的 DeepPose 坐标回归实现基于 ResNet 与 DeepposeRegressionHead 的 DeepFashion 时尚关键点检测实战指南ViTPose 仓库中的 DeepPose 坐标回归实现基于 ResNet 与 DeepposeRegressionHead 的 DeepFashion 时尚人工智能计算机视觉深度学习ViTPose 仓库 2D 服装关键点检测Fashion Landmark Detection实战指南DeepFashion 数据集准备、Top-Down 与 DeepPose 配置解析ViTPose 仓库 2D 服装关键点检测Fashion Landmark Detection实战指南DeepFashion 数据集准备、Top Down人工智能计算机视觉深度学习ViTPose 仓库 WFLW 人脸关键点回归实战ResNet50 DeepPose 架构与 SoftWingloss 损失详解ViTPose 仓库 WFLW 人脸关键点回归实战ResNet50 DeepPose 架构与 SoftWingloss 损失详解 本篇文章以仓库中 res人工智能计算机视觉深度学习上一篇XUnity.AutoTranslator十分钟让没中译的 Unity 游戏跑起来下一篇GitHub_Trending/aw/awesome-computer-vision奖学金资源计算机视觉领域 funding 信息创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑