My App

Effective Whole-body Pose Estimation with Two-stages Distillation

DWpose(a two-stage pose Distillation for Whole-body Pose estimators) 第一阶段用teacher的中间特征和最终logits监督student, 第二阶段对学生本身蒸馏, 用20%的训练时间微调student头部. 在COCO-WholeBody数据集上达到state-of-the-art, 提供不同大小的数据集以适应不同任务.

介绍

全身pose评估重要, 当前方法不足, 面临挑战: 1) 用于定位关键点的层次结构, 2) 手和头分辨率低, 3) 多人, 4)数据限制.

知识蒸馏适合得到轻量的模型. DWpose两步蒸馏法.

第一阶段用一个teacher的中间层和最终logits指导student, 最终logits包括可见关键点和不可见关键点, 第二阶段用两个相同的模型, 一个作为student, 一个作为teacher, backbone冰冻, 只训练头部.

合并了一个新的数据集UBody.

方法

DWpose-overview

第一阶段

基于特征的蒸馏直接让student去模仿teacher的输出, Loss是L2范数.

基于Logit的蒸馏, 有个观点把图片加上横纵坐标, 判断关键点的位置当作分类任务, Lori=n=1Nk=1KWn,ki=1L1LVilog(Si)L_{ori} = - \sum_{n=1}^{N} \sum_{k=1}^{K} W_{n,k} \cdot \sum_{i=1}^{L} \frac{1}{L} \cdot V_i \log(S_i), 在本实验中他们认为不可见关键点也是有意义的, 于是loss就变成了Llogit=1Nn=1Nk=1Ki=1LTilog(Si)L_{logit} = -\frac{1}{N} \cdot \sum_{n=1}^{N} \sum_{k=1}^{K} \sum_{i=1}^{L} T_i \log(S_i).

权重衰减策略. 线性衰减, r(t)=1(t1)/tmaxr(t) = 1 - (t - 1)/t_{max}, 最终的损失函数, Ls1=Lori+r(t)αLfea+r(t)βLlogitL_{s1} = L_{ori} + r(t) \cdot \alpha L_{fea} + r(t) \cdot \beta L_{logit}.

第二阶段

teacher: 训练好的头和backbone, student: 训练好的backbone和未训练的头, 冰冻backbone, 只训练头, Ls2=γLlogit.L_{s2} = \gamma L_{logit}., LlogitL_{logit}同上, γ\gamma是损失缩放的超参数.

实验

数据集. COCO 和 UBody 数据集

主要结果. DWPose 模型在 COCO-WholeBody 数据集上取得 SOTA 性能

定性分析. DWPose 模型预测更准确, 减少误检, 提高真检率

与 OpenPose 和 MediaPipe 的比较, DWPose 模型在鲁棒性和细粒度定位方面更具优势

分析

总的来说就是一些消融实验, 没什么有用的信息.

感受

想看看姿势提取的具体方法, 和想象的有点不一样, 大部分篇幅在讲知识蒸馏, 找关键点转换为分类问题这个见解还挺有意思的.

On this page