高效姿态估计的在线知识蒸馏.

本文提出了一种在线知识蒸馏框架OKDHP,对人体姿态估计模型进行提升。OKDHP训练了一个多分支网络,其中每个分支都被当做独立的学生模型;教师模型不是显式存在的,而是通过加权集成多个分支的heatmap结果后形成的。通过优化Pixel-wise KL Divergence损失来优化每个学生分支模型,整个训练过程被简化到了one-stage,不需要额外预训练的教师模型。

主流的2D姿态估计方法大多数都是基于Hourglass Network,其含有多个堆叠的Hourglass,通常有2-stack, 4-stack, 8-stack类型。后一个Hourglass将前一个Hourglass的结果作为输入,不断进行refine,直到结尾。8-stack的结果要明显好于4-stack,但是与之而来的问题就是计算量明显的增加。

传统的蒸馏方法通常是首先训一个8-stack HG作为teacher,选择一个4-stack HG作为student。第一步训teacher,第二步训student,整体是一个two-stage的过程,较为繁琐。并且如果要训练一个8-stack HGstudent,就需要找到一个比8-stack更大的model去作为teacher。堆叠更多的层数会存在性能收益递减,并且带来计算量直线上升。

本文提出了一个在线知识蒸馏的框架,即一个多分支结构。这里的teacher不是显式存在的,而是通过多个学生分支的结果经过了FAUensemble形成的。如果要得到一个4-stack HG的网络,直接建立一个多分支网络,在前部共享 2stack(节约计算量),后面针对每个分支视为student。多个分支产生的结果经过FAU进行ensemble。整个蒸馏过程被简化到了one-stage,直接训练完之后,选择一个最好性能的分支,去除掉其他多余分支结构即可得到一个目标网络。

FAU,即Feature Aggregation Unit,是用来对每个分支产生的结果进行通道维度的加权集成。即将每个heatmap按照生成的权重进行集成。针对人体姿态估计存在着很多的尺度变化问题,采用3x3, 5x5, 7x7avg pool来捕捉更大范围的信息,进而来生成对应每个分支产生的heatmapweight

OKDHP方法不仅是对于hourglass类别的网络有着明显的提升,对于其他的姿态估计网络也有效果。针对其他的网络结构,如果想要应用OKDHP,仔细的选择网络中共享和独立的部分来设计网络。可以粗略的将网络分为encoder(backbone)decoder部分。网络结构设计上共享整个encoder部分,然后建立独立的分支,每个独立的分支都对应一个完整的decoder部分。