Press "Enter" to skip to content

解密Oculus Quest手势追蹤系统:MEgATrack Hand Tracking

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

Estimate 3D poses with Levenberg-Marquardt

 

我个人认为Hand Kinematic Model是这套系统最关键的模块。以往大部分的2.5D近似3D方法都是利用某段特定的骨长,比如说手腕到中指的长度,将2.5D pose投影到符合这段长度的位置作为近似的3D pose [2]。

Recover 3D hand pose fron 2.5D representation (sub-image from this paper
)

Hand kinematic model

 

MegaTrack选择 妥善使用所有keypoint一起最佳化3D pose
,这一个比较难实作,但是更加稳定的作法。即使以往的近似方法都会挑选最稳定的骨骼作为投影的目标,这样还是难免会有出错的时候。MegaTrack使用一个26DoFs的hand kinematic model:手腕6 DoFs (rotation and translation),每根手指4DoFs (rotation only),对KeyNet的2.5D pose计算residual,使用Levenberg-Marquardt方法最佳化。

 

Levenberg-Marquardt

 

最佳化时,透过hand kinematic model进行forward kinematic,得到3D空间中的21个3D点 (与KeyNet一样的21个点)。实际上最佳化的residual term有三项:(1) 将21个3D点投影回相机空间,与KeyNet预测的2D pose越接近越好;(2) 计算21个3D点的relative distance,与KeyNet预测的depth distance越接近越好;(3) 与前一个pose越接近越好,即smooth term。

 

如果不熟悉 Levenberg-Marquardt方法,可以想像这是一个 穷举 3D空间中手的方法
,并从中挑选最符合相机观察 (KeyNet输出的 2.5D pose) 的那只手,就是这个演算法最终输出的结果。

The residual terms for optimizing hand kinematic model.

除了 26个kinematic的自由度外,MegaTrack的kinematic model还需要一个 代表手大小的比例 (scale)
。这个scale 一样会透过Levenberg-Marquardt最佳化。为了精準的估测scale,MegaTrack设计在双眼情况下,透过连续的多个 frame (实务上为 100个 frame) 一起近似这个 scale。

 

Stereo camera

 

这个方法的优点除了比使用单一骨骼长度近似来的稳定 (数大便是美) 以外,另一个优点是 可以直接扩充到多个相机的情况
。在双相机的情况下并不需要设计额外的演算法,只要将第二个相机的资讯也拿来计算residual,即双倍的observation,增加了找到好的3D pose的机会。

 

这个方法在使用者体验上的优势是 降低了相机间hand over的误差
。在一般的演算法设计上,双眼预测的pose势必会比单眼来的好,但若是在单眼区与双眼区运行不同演算法,会造成切换时的不流畅。比如说,使用者将手从双眼区移动到单眼区时,演算法的输出或许会因为切换,突然改变好几公分。

MegaTrack (或说Quest) 的相机配置 (figure from the paper
)

Estimate 2.5D poses with neural network

 

MEgATrack选择使用网路预测2.5D pose,再使用2.5D pose近似3D pose的方法。事实上,MEgATrack预测2.5D pose的演算法本质没有太多特别突出的设计,而是基于相机、系统做出细节性的改动,让使用者体验上获得极关键性的提升。

 

Detection model (DetNet)

 

MEgATrack的detection model专注于追蹤使用者的双手, 直接假设任何时候最多只会有两只手出现在画面中
。因此有别于一般dense detection (不管是anchor-free or anchor-based),MegaTrack DetNet不对feature map的每个像素点预测,而是直接以整全观 (holistic) 的方法分别预测左右手的座标以及是否出现在画面中。以dense detection的观念来看,就是只在影像中心点跑一次detection head。

Dense preiction v.s. MegaTrack DetNet (sub-figure from this paper
and this paper
)

MegaTrack DetNet的设计相当贴近于它的系统需求,除了永远只找各一支左右手外,在 bounding box的时候只预测 3 DoFs的 box
。因为后级的 KeyNet固定吃正方形的 box,即使框了长方形还是需要调整成正方形,因此直接输出 (Y, X, H=W) 。

 

2.5D keypoints model

 

MEgATrack KeyNet其中一个最有意思的地方在于鱼眼镜头的处理。由于鱼眼相机的投影在边缘是有明显的distortion,这个 distortion让预测2.5D的深度变得相当地暧昧 (ambiguous)
,因此MEgATrack选择让模型预测distance而非深度。这边的 distance指的是对于相机中心的欧几里得距离
,一般我们讨论的深度 (depth) 是指点垂直于成相平面、平行于光轴的距离。

depth与distance在鱼眼相机的差异 (figure from the paper
)

第二个有意思的地方是KeyNet的输入除了影像外, 还要输入21个keypoint的extrapolated 3D pose
,也就是之前预测的2.5D pose通过kinematic model最佳化后得到3D pose,再依照时间序外插。但这并不意味着KeyNet是RNN (recurrent neural network)。这个递迴的pose是一个给网路的提示,而这个提示可以 提升在self-occlusion时pose的稳定性

 

最后,相比于detection model使用holistic approach,keypoint estimation一般需要更精确的座标资讯,因此keypoint estimation的网路输出都是heatmap,再从heatmap中找出响应最大的数值,而非直接输出座标。这边一个比较特别的地方是MEgATrack KeyNet不只是在2D pose预测heatmap,在local distance的预测上也使用了1D heatmap。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注