DOPE: Distillation Of Part Experts for whole

编程入门 行业动态 更新时间:2024-10-27 21:15:56

DOPE: <a href=https://www.elefans.com/category/jswz/34/1765363.html style=Distillation Of Part Experts for whole"/>

DOPE: Distillation Of Part Experts for whole

DOPE:用于野外全身3D姿势估计的部分专家蒸馏

 

源码:.

在本文中,我们提出了第一个基于学习(learning-based method)的方法,给定一个图像,检测场景中的人,并直接预测他们的身体,手和脸的2D和3D姿态 ,我们设计了一个分类回归网络,其中要检测的对象类别是身体,手和面部姿态类别。在第二步中,应用特定类别的回归来通过在2D和3D两者中变形每个类别的平均姿态来细化身体、手和面部姿态估计。

图2

 我们的DOPE培训计划概述。每个训练图像由部件专家处理以检测其特定部件并估计其2D和3D姿态。在训练我们的网络时,将所得到的检测结果进行组合,以获得用作该图像的地面实况的全身姿势。为了清楚起见,我们只显示2D姿势,但我们也提取了3D姿势。

 每个部分训练独立的expert,即身体,手部和面部,并将他们的知识提取到我们的全身姿势检测网络中,蒸馏损失应用于网络的输出,我们将我们的方法命名为DOPE,DOPE for Distillation Of Part Experts.我们提出了(a)一种新的架构,可以实时检测和估计多个人在野外的全身2D-3D姿势,以及(b)一种基于蒸馏的新颖有效的训练方案,该方案利用了先前针对各个子任务的数据收集工作。

方法

全身姿势体系结构

图3

 我们的全身姿势估计架构的概述。给定输入图像,计算卷积特征并将其馈送到区域建议网络(RPN)中以产生候选框的列表。对于每个框,在RoIlign和几个附加层之后,计算6个最终输出(每个部分2个)。第一个返回对应于该部分的每个锚姿势的分类分数(包括为了清楚起见未表示的背景类),而第二个返回通过从拟合的锚姿势的类特定回归获得的细化的2D-3D姿势估计。

 定位

给定一个输入图像,计算卷积特征(ResNet50 [28]实际上高达block3)并将其输入区域建议网络(RPN)[53],以生成包含潜在身体,手或面部实例的候选框列表。虽然它们可能属于同一个人,但我们将这些部分作为单独的对象来处理,以便在图像中只能看到面部,手部或身体的情况下保持稳健。我们的网络还可以同时输出多个人的全身姿势,当他们的不同部位可见时。由RPN生成的候选框用于使用RoI Align池卷积特征,并且在几个附加层(实际上来自ResNet50的块4)之后,它们被馈送到分类和回归分支,总共6个:每个部分一个分类和一个回归分支。

分类

对三个子任务进行分类:身体、手和脸分类。如在[55]中,通过聚类3D姿态空间来定义姿态类别。在对应于3个部分的3个姿势空间中独立地应用该聚类,分别获得身体、手和面部的KB、KH和KF类的集合。请注意,为了用同一个检测器处理左手和右手,我们实际上考虑了2 ×KH手类,每侧KH。对于每个分类分支,我们还考虑一个额外的背景类使用分类器作为检测器。因此,每个候选框被分类为用于身体类别的KB + 1个标签、用于手的2KH + 1个标签以及用于面部的KF + 1个标签。

回归

在第三步骤中,应用类特定回归来估计2D和3D中的身体、手和面部姿势。首先,对于每个部分的每个类别,我们离线定义“锚姿势”,计算为对应集群中所有元素的平均2D和3D姿势。在将所有2D锚姿势拟合到每个候选框中之后,我们执行特定于类的回归以使这些锚姿势变形并匹配每个框中的实际2D和3D姿势。该操作针对3种类型的部位执行,获得身体部位5×JB ×KB输出,手部5×2×JH ×KH输出,面部5×JF ×KF输出。数字5对应于维度的数量,即,二维+三维。

后处理

对于每个身体、手或脸,多个建议可以重叠并产生有效的预测。如在[55]中,考虑到它们的2D重叠、3D相似性和分类分数,这些姿势候选被组合。为了从由我们的网络产生的独立部分检测中获得全身姿势,如果他们各自的手腕估计在2D中足够接近,我们简单地将一只手附到身体上,并且对于具有头部身体关键点的面部类似。

Distillation of part experts蒸馏

即使已经分别为身体、手和脸产生了具有3D姿势注释的野外数据集,也不存在一次覆盖全身的数据集。一种可能性是使用这些数据集的联合来训练我们的全身模型。由于专门设计用于一个部分的姿态估计的数据集不包含用于其他部分的注释,例如身体数据集不具有手和脸注释,反之亦然,因此未注释的部分在我们的检测架构中被认为是其真实类别的否定。实际上,这会降低探测器检测这些部位的能力,并导致更差的整体性能(手和面部下降约10%,身体下降约2%)。因此,为了利用多个特定部位的数据集,我们建议为每个部位训练独立的专家,即身体、手部和面部专家,并将他们的知识提取到我们的全身姿势网络中,以联合执行这三项任务。

Part experts

为了简化知识的提炼,我们选择我们的3个专家来匹配我们的全身姿势估计架构的分类-回归分支的结构,并考虑与单个任务相同的锚姿势。因此,我们选择LCR-Net++ [55]中的定位-分类-回归网络作为身体专家,并估计JB = 13个身体关节,KB = 10个类。我们还使用了该架构的手部检测版本[2],将KB身体姿势类替换为每侧的KH = 5个手部锚点,并使用JH = 21个手部关节的标准数量:腕部1个关键点,每个手指4个关键点。最后,为了获得我们的面部专家,我们采用相同的架构来检测2D-3D面部标志。我们使用了3D人脸跟踪Menpo基准[69]中定义的84个地标,包括眼睛、眉毛、鼻子、嘴唇和面部轮廓。我们通过对来自训练集的所有面部应用K均值来定义KF = 10个锚点姿势。

通过蒸馏进行训练

我们建议提取我们的三部分专家的知识,我们的全身姿势检测模型。假设B、H和F是用于三个单独任务的训练数据集,即,身体、手和面部姿态检测。它们分别与身体b、手h和面部f的地面实况(2D和3D)姿势注释相关联。换句话说,身体专家例如在B = {Ii,bi}i上被训练,即,- 具有身体地面实况注释bi的一组图像Ii,并且对于其他部分也是类似的。

为了训练我们的网络,我们需要整个身体的地面实况注释w。我们建议利用专家的检测,以增加部分特定数据集的注释。我们用bi、hi和f i表示当我们的专家分别处理身体、手和脸的图像Ii时获得的检测。我们在以下方面训练我们的DOPE网络:

因此,由专家估计的检测、和被认为是2D和3D中缺失关键点的伪地面实况。在实践中,使用这些估计来完成地面实况注释,例如,当一些注释被错误地标记或简单地丢失时。注意,完全没有注释的训练图像也可以用于训练我们的网络,仅使用伪地面实况注释[39],即,wi = {,,}.训练方案如图2所示。 

损失

训练网络的损失L结合了RPN损失LRPN以及每个部分p ∈ {body,hand,face}的三项之和:(a)分级损失Lp cls,(B)回归损失Lp reg,(c)蒸馏损失Lp dist:

 其中LRPN是Faster R-CNN的RPN损失[53]。每个部分p的分类损失Lp_cls是在所有框上平均的标准softmax。如果框与地面实况框充分重叠,则通过从地面实况姿态找到最接近的锚定姿态来获得其地面实况标签。否则,它被分配背景标签,即,0.

回归损失Lp reg是在地面实况2D-3D姿态和它们的地面实况锚定姿态之间的偏移上的标准L1损失,在所有框上求平均。请注意,回归是类特定的,并且对于每个正框,损失仅应用于特定于地面真值类的回归量的输出。蒸馏损失Lp dist由两个元素组成,一个用于分类得分Lp dist cls的蒸馏,另一个Lp dist reg用于回归:

 给定一个盒子,蒸馏损失的目标是使全身网络的输出尽可能接近零件专家p的输出。分类分量Lp_dist_cls是由相应部位专家产生的预测与由部位p的全身模型估计的预测之间的标准蒸馏损失。换句话说,Lp_dist_cls是硬标签丢失Lp_cls的软版本。回归分量Lp_dist_reg是由部分专家预测的位姿与由地面实况类的全身模型估计的位姿之间的L1损失。注意,伪地面实况姿态是通过对由零件专家做出的所有重叠估计求平均来获得的。虽然Lp_reg被设计成强制该伪地面真实姿态的回归,但是Lp_dist_reg支持由零件专家针对给定框预测的完全相同姿态的回归。

在实践中,由部分专家的RPN和全身模型生成的建议是不同的,但计算蒸馏损失需要一些建议相吻合。在训练时,我们因此用来自部分专家的正框来增加全身模型的建议,以计算这些损失。总之,给定一个训练图像,我们:(a)运行每个部分专家,保留带有分类分数和回归输出的正框,(b)运行全身模型,将来自专家的正框添加到建议列表中。然后,基于伪地面真值的损失在所有框上平均,而蒸馏损失仅在来自部件专家的正框上平均。

训练细节

数据

我们在MPII [1]、COCO [41]、LSP [35]、LSPE [36]、Human3.6M [33]和Surreal [62]数据集的相同组合上训练我们的身体专家,这些数据集用伪3D地面实况注释增强,如[55]。我们在训练50个时期时应用随机水平翻转。我们在RenderedHand(RH)数据集[73]上训练我们的手部专家100个时期,使用颜色抖动,随机水平翻转和透视变换。KH = 5个锚点姿势通过对来自训练集的右手和翻转的左手的3D姿势进行聚类来获得。最后,我们在Menpo数据集[69]上训练人脸专家50个时期,在训练期间随机水平翻转和颜色抖动。

实施

我们在Pytorch [50]中实现DOPE,遵循Torchvision的Faster RCNN实现。我们考虑ResNet 50骨干[28]。我们使用每个部件专家的数据集的联合来训练它50个epoch,简单地将用于手的RH数据集加倍,因为图像的数量明显低于其他部件。用于训练每个部分专家的相同数据增强策略被用于全身网络。我们使用随机梯度下降(SGD),动量为0.9,权重衰减为0.0001,初始学习率为0.02,在30和45个时期后除以10。调整所有图像的大小,使得在训练和测试期间最小图像尺寸为800像素,并且在测试时保持1000个建议。

运行时间

DOPE在单个NVIDIA T4 GPU上的运行时间为100 ms。当将最小图像大小减小到400 px并且框提议的数量减小到50并且使用半精度时,它以每个图像28 ms运行,即,以35 fps的速度实时显示,性能下降2-3%。为了进行比较,我们的每个专家都以与我们的全身模型相似的帧率运行,因为只有最后一层发生了变化。基于优化的3D全身估计方法[51,64]需要一分钟来处理每个人。

Experiments

 

 结论

我们提出了DOPE,第一个基于学习的方法来检测和估计全身3D人体姿势在野外,包括身体,手和脸的2D-3D关键点。我们通过利用从部分专家到我们的全身网络的蒸馏来解决这项任务缺乏训练数据的问题。我们的实验验证了这种方法,表现出接近的部分专家的结果。我们的方法允许在更多样化的野外图像集上训练网络,可能没有任何姿势注释。在未来的工作中,我们将研究我们的模型是否可以从额外的未标记训练数据中受益。

更多推荐

DOPE: Distillation Of Part Experts for whole

本文发布于:2024-03-12 16:33:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1731932.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Distillation   DOPE   Experts   Part

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!