DWPose
1. 两阶段姿态蒸馏 (TPD)
- 第一阶段蒸馏:利用预训练的教师模型在特征和输出对数(logit)层面指导学生模型。使用权重衰减策略,逐渐减少蒸馏的权重。
- 第二阶段蒸馏:学生模型自身通过自我知识蒸馏进一步改善性能。这一阶段只微调学生的头部,且训练时间仅为20%。
创新点:
- 两阶段蒸馏:通过分阶段的蒸馏策略,逐步提升学生模型的性能。
- 头部感知自我KD:第二阶段只微调模型的头部,大幅减少训练时间。
- UBody数据集:利用更全面的训练数据,特别是多样化和富有表现力的手部和面部姿态,使其更适用于实际应用。
局限性:
- 数据依赖性:额外的UBody数据集对提高性能至关重要,表明模型对数据多样性和量有较高的依赖性。
- 训练复杂性:虽然第二阶段蒸馏效率高,但整体训练过程可能比单阶段方法更复杂。
实验部分与Benchmark
实验设置:
- 在COCO和UBody数据集上进行实验。COCO数据集使用标准的train2017和val2017分割。
- 使用常见的人检测器和UBody数据集提供的2D关键点和SMPL-X参数。
主要结果:
- DWPose在COCO-WholeBody数据集上取得了显著的性能提升。例如,DWPose-l在不同输入分辨率下分别达到了63.1%和66.5%的全身AP,超过了教师模型RTMPose-x的65.3% AP。
性能对比:
- 与OpenPose和MediaPipe等广泛使用的方法相比,DWPose在鲁棒性、遮挡处理和精细定位方面表现更优,尤其是在手指关键点定位方面。
速度对比:
- DWPose在推理速度上也具有优势。在Nvidia RTX 3090上,DWPose的推理时间仅为OpenPose的约1%,且随着图像中人数的增加,OpenPose的运行时间显著增加,而DWPose的增加幅度较小。
RTMPose
RTMPose 基于 MMPose,旨在解决工业界中对轻量级、高速度和高精度姿态估计的需求。
1. RTMPose框架
- RTMPose采用自上而下的方法,首先使用现成的检测器获取边界框,然后单独估计每个人的姿势。
- 该框架包括一个轻量级的多人姿态估计网络,能够在实时条件下处理多个实例。
2. 模型架构
- RTMPose使用CSPNeXt作为主干网络,该网络最初是为目标检测设计的,但在这里被用于姿态估计任务。
- 关键点预测使用基于SimCC的算法,将关键点定位视为分类任务。
3. 训练策略
- 论文重新审视了之前工作中的训练设置,并引入了一系列适用于姿态估计任务的训练策略。
4. 推理流水线优化
- 使用跳帧检测策略减少延迟,并使用姿势非极大值抑制(NMS)和平滑滤波提高鲁棒性。
5. 模型尺寸
- 提供了一系列不同尺寸的RTMPose模型(t/s/m/l/x),以覆盖不同的应用场景,并在性能和速度之间取得最佳平衡。
模型结构
- Top-Down Approach:
- RTMPose 采用了自顶向下的方法,首先使用现成的检测器获取包围盒,然后单独估计每个人的姿势。
- Backbone Network:
- 使用 CSPNeXt 作为骨干网络,这是一个为对象检测设计的网络,适用于密集预测任务。
- Keypoint Prediction:
- 采用基于 SimCC 的算法预测关键点,将关键点定位视为分类任务。
- Training Strategies:
- 重新审视了以往的训练设置,并引入了一系列适用于姿态估计任务的训练策略。
- Inference Pipeline Optimization:
- 对姿态估计框架的推理流程进行了联合优化,包括使用跳帧检测策略和基于 Non-Maximum Suppression (NMS) 的姿态处理。
数学原理
- SimCC (Simple Coordinate Classification):
- 将关键点定位问题转化为分类问题,将坐标轴划分为等宽的编号箱,并将连续坐标离散化为整数箱标签。
- Gaussian Label Smoothing:
- 使用高斯分布的软标签代替单热编码,以提高模型训练中的泛化能力。
- Transformer-based Architecture:
- 利用自注意力机制捕捉关键点依赖性,减少计算负载。
- Gated Attention Unit (GAU):
- 采用门控注意力单元,通过 Gated Linear Unit (GLU) 提高效率。
- Loss Function:
- 将坐标分类视为序数回归任务,使用 Softmax 操作和软标签进行训练。
创新点与局限性
创新点:
- 自上而下的方法:通过使用高效的检测器,使得检测部分不再是推理速度的瓶颈。
- CSPNeXt主干网络:在速度和准确性之间取得了良好的平衡,并且易于部署。
- SimCC算法:简化了关键点预测的结构,减少了计算量。
- 训练策略:引入了一系列训练策略,显著提高了模型性能。
- 推理流水线优化:通过跳帧检测和姿势NMS等策略,提高了推理速度和鲁棒性。
局限性:
- 模型复杂性:虽然RTMPose在效率和准确性之间取得了平衡,但在极端场景下(如图像中人数非常多时),可能仍面临性能挑战。
- 数据依赖性:模型的性能在很大程度上依赖于训练数据的质量和多样性。模型可能在处理不同姿态和遮挡方面存在限制。
实验部分与Benchmark
实验设置:
- 使用COCO数据集进行训练和验证,遵循标准的train2017和val2017分割。
- 评估了不同检测器(如YOLOv3、Faster-RCNN和RTMDet)的性能。
主要结果:
- RTMPose在COCO验证集上取得了75.8%的AP,同时在Intel i7-11700 CPU上达到了90+ FPS,在NVIDIA GTX 1660 Ti GPU上达到了430+ FPS。
- 在移动设备(Snapdragon 865芯片)上,RTMPose-s模型达到了72.2%的AP,表现出色。
性能对比:
- 与现有的开源库相比,RTMPose在模型大小、延迟和精度方面具有显著优势。例如,RTMPose-m在COCO验证集上的AP为75.3%,而TinyPose的AP为65.6%。
推理速度:
- 在CPU和GPU上测试了RTMPose模型的推理速度。结果显示,RTMPose在不同硬件上的推理速度均优于其他方法。
性能和准确率提升策略
- Model Architecture Refinement: 进一步优化模型架构,例如通过调整网络层的配置或引入新的网络模块。
- Training Data Augmentation: 使用更多样化的数据增强技术,提高模型对不同姿态和遮挡情况的鲁棒性。
- Advanced Loss Functions: 探索新的损失函数,以更好地捕捉关键点之间的关系。
- Multi-Stage Inference: 实施多阶段推理流程,例如先粗略检测后精细定位。
- Integration of Auxiliary Tasks: 结合辅助任务,如人体检测和姿态估计的联合训练。
- Cross-Dataset Training: 在多个数据集上进行训练,以提高模型的泛化能力。
- Hardware Optimization: 针对特定硬件平台进行模型优化,如使用 TensorRT 或 ONNX Runtime 加速推理。
- Quantization and Pruning: 应用量化和剪枝技术减少模型大小,提高推理速度。