Facebook灰度手势识别论文笔记

MEgATrack:monochrome egocentric articulated hand-tracking for virtual reality

总体思路:面对输入的灰度图像,先使用DetNet从原始图像中选出手的图像裁减出来,将裁减后图像输入KeyNetKeyNet输出一个2D的位置热力图和一个1D的相对位置的热力图,热力图预测关键点位置还需要一步如argmax,高斯拟合,sof-argmax等,因为热力图可能会出现多个峰值,需要找到一个符合高斯分布的中心点,确定关键点坐标。最后得到可以拟合模板手的数据(26个数据,手腕6个自由度+每个手指4个自由度)。这里不同与mano的是它没有输入手的shape数据,而这部分数据是在初始化时就设定好的。最后通过对模板手的拟合,完成手势的检测,同时运行的结果会作为历史信息加入到下一次模型的预测中,优化目标检测和骨骼点网络。(有点像循环神经网络,带入时序信息)通过前两次的结果(当前帧和前一帧)外推出下一步的预测结果。

Facebook灰度手势识别论文笔记_第1张图片

相机方面:方案选用的相机为4个灰度鱼眼相机,这里涉及到相机多目共视检测和单目检测,黑色为盲区,蓝色为单目区,绿色为双目区,橙色为三目区,红色为四目区,鱼眼相机在边缘处存在畸变,相对于深度信息,鱼眼对距离信息能更好的捕获。

Facebook灰度手势识别论文笔记_第2张图片

目标检测:此处采用的目标检测策略是一种简单高效的新型卷积网络(DetNet),由于此次目标的种类单一(只有双手),不涉及多目标检测,所以可以通过大量的数据训练,得到一个可以直接通过图片回归出2D手的中心和半径的网络(受启发于SSD网络,一种one-step网络,同时完成分类和预测)我们好像使用的是Renet。通过这样一个包含手的圆得

到一个内切的方形框。这里的loss是位置误差和置信误差的加权和,位置误差是预测圆和目标圆的MSEloss,置信误差是预测与标签的BCEloss(二进制交叉熵损失,将网络输出值使用softmax变为概率值,与标签计算),注意这里只考虑置信度为0.5以上的box

Facebook灰度手势识别论文笔记_第3张图片

为了运行到移动平台减少计算,这里运用了跟踪检测策略,即使用前两次检测的pose,用两次pose的变化加上前一次的pose,即将前两次pose的变化复制到前一个pose,得到预测的当前pose,利用预测的结果。在没有过去结果可以借鉴的情况下,选取四个摄像头中的一个循环运行DetNet网络,当有一个摄像头检测到人手后,加入tracking。这里我们可以看到,DetNet只在没有tracking的时候投入使用,这样大大减少了计算损耗。

关于DetNet的结构我们并不知道,但我觉得应该会是一种缩略版的SSD,因为SSD具有6层预测层,从38*381*1,大图层预测小目标,小图层预测大目标,但人手距离人眼的距离始终是有限的,超过一定距离的手是不需要进行预测的,所以这里应该会把大图层的预测网络删除,只保留合适的小图层,加快计算速度,同时前部VGG16的结构ye相对较大,可能会减少一些卷积操作,因为目标占图像的比例始终相对大。

关键点预测:过去对图像进行关键点预测时每张图片是独立的,这会带来两个主要问题:1,手在不同摄像头之间切换时预测效果会下降且对不完整的手预测效果差2,关键点会抖动尤其对有遮挡的手指。这都是因为没有给模型考虑时间连续性因素。在这篇论文中,对于DetNet先选取目标检测框的120%的区域截取,保证手部都在预选框中。对于tracking,外推先前的pose并将21个关节点的坐标输入KeyNet,每个坐标包含一个2D坐标和一个相对距离坐标

这里需要优化的目标是E2D(预测结果与目标在三维空间下的绝对坐标误差的模的平方和)与Edist(各个关键点与0节点到相机距离的预测差与系数倍的精确差作差的模的平方和)与Etemporal(当前手势与过去一个时刻手势的差的模的平方)

此处还有一个问题便是不同大小的人手在不同距离上的表现不一,所以网络在图像理解时会出现到底是手大还是距离近的歧义,因为KeyNet的输出是与模板手匹配,不能只适配pose而不考虑模板手大小随人手的变化,因为在训练时使用的都是匹配的模板手和图像,这里如果不变会影响网络的效果。这里给pose参数加入了一个全局的大小参数(左右手共享)将模板手的大小与真人手相匹配,最大化模型的效果。

KeyNet的输入是96*96的灰度图,输出为21*18*182Dheatmap(坐标信息)和21*181Dheatmap(相对距离信息)。但这里为什么是9618,有没有更好的组合不得而知。

数据采集:这里是使用可移动平台搭载660HZ的灰度鱼眼相机用来采集不同角度训练的灰度图片,150HZ深度相机来采集手部信息,这些相机都是相互时空标定的。同时可移动平台也可以变化不同背景和光线条件,增强网络的鲁棒性。但这里其实是有局限的,比如无法采集到对面角度和底部的手的图像,所有图像都是从人的一侧出发的,所以后面会遇到当人把手转向自己时效果不好。

Facebook灰度手势识别论文笔记_第4张图片

在训练DetNet时,在训练集中加入随机的强度标度来模拟环境和光线的变化。

在训练KeyNet时,输入的数据为一个96*96的灰度图像和一个63维(x,y,relativedistance)的关键点向量,值得注意的是,这里需要给关键点数据加入高斯噪声,否则网络会只重视输入近来的关键点信息而忽视了输入的图像信息,相当于只使用过去信息的推测,不结合现有图像,这会导致在tracking失效时模型效果下降。数据集方面,90%的数据是加入过去两个pose的外推,10%加入20个帧之前的关键点信息(用于训练快速运动,同时ye可以减少对63维参数的依赖,这两种情况我感觉有一定因果关系,平衡图片与外推的关系,让在tracking失效无法外推时能有一定效果)。

这里DetNetKeyNet的训练是分开的,这样可以给不同的网络定制不同的训练策略,而且相对来说这两个网络是独立的,前者只需高效的选出手的预测框,而后者只需通过一张96*96的图片和之前的关键点信息来给出本次的关键点信息。

评估方面:本次使用的是精确率和召回率。首先有效数据的条件是(1)预测框不超过真实框的120%2)所有的投影的真实关键点落在截取的图片内(3)超过16个真实关键点在全图像边界内(这是因为有时会出现部分手在视觉图像外的情况,这时就要保证至少16个关键点在视觉图像内,少于16个预测效果会变差)评估KeyNet的指标有Mean-keypoint-position-error(MKPE)平均关键点位置误差,计算3D的关键点距离误差,用于评估空间准确度。以及Mean-keypoint-acceleration(MKA)平均关键点加速度

计算下一刻加前一刻的位置减去2倍的当前时刻(相当于下一个与当前时刻的位置差减去当前时刻与潜前一时刻的位置差)用于评估时间流畅度(这个差距越小,说明在时间上动作越流畅,因为宏观上运动是不会跳变的)。

值得一提的是,本次训练并没有加入双手交叉重叠的训练集,但仍然能够处理一些重叠的情况,我认为这是tracking策略以及loss中带有与前帧loss计算的贡献,但同时对于这部分图片的分析效果不佳是显而易见的。同样的问题ye出现在物体遮挡上。如果训练时可以加入更多重叠训练集,效果会更好,但这就会存在自动标注困难的问题,单一面的深度信息已经不足以解决。需要更多角度的深度信息的结合。同

时还存在单目追踪相对于多目不稳定的问题

Facebook灰度手势识别论文笔记_第5张图片

个人见解,如有不对劳烦指正。

你可能感兴趣的:(python,深度学习,计算机视觉,人工智能)