元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

简介

上篇文章提到,HoloLens手势识别最核心问题的是解决一个模型手拟合的问题,这篇文章会更深入地探讨这个优化问题更多细节和亮点。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

优化问题求解

上篇文正已经详细阐述了Energy函数是如何构建的,可以发现都是一堆平方的和,很适合LM算法迭代求解。注意这里近似海森矩阵的维度很大(N是图像点的数量,一般几百,θ是28维),如果用上法向是2N+θ维。之所以这么高维, 每个点在模型上的对应位置会随着迭代而更新(对应点的位置也是优化变量)。LM算法涉及到求逆,很慢,由于矩阵大部分位置为0,可以简化一下计算,节约很多计算量。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

接着就到了最为关键的问题—— 模型的N个对应点如何在smooth surface model上随着梯度更新而移动

三角形面片内部的运动非常直观;作者的另一篇文章也给出了一种跨越三角形面片的方法–如果梯度移动到三角形面片的范围之外,首先找到边界点,更新相邻三角形面片的坐标,然后继续更新梯度(即在优化时,点的移动需要完成“穿过三角形面片”的操作)。

[En]

The movement within a triangular patch is very intuitive; another article by the author also gives a way to cross the triangular patch-if the gradient moves beyond the range of the triangular patch, first find the boundary point, update the coordinates to the adjacent triangular patch, and then continue to update the gradient (that is, when optimizing, the movement of the point needs to complete the operation of “crossing the triangular patch”).

如图所示,工程实现时边界上的点u1=u2,在两个面片内的表示方式不一样,每个面片都会记录相邻的面片。(用脚趾想也知道这一套求逆优化的工程量真的挺大……)

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

优化问题初始姿态

[10]提出了两种pose初始化的方式,至于两种策略如何结合并没有提及。

首先最为直观的是利用上一帧的pose估计(简单线性追踪)

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

第二种是利用机器学习给出多个近似姿态,并利用检索姿态对应的pose初始化,这一步只需要 5ms,这里没有找到对应的文章,但他们同组建图的大佬有一篇用随机森林做重定位的文章,本质上问题一样。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

优化过程

每次优化分为稀疏更新和连续更新两个步骤。

[En]

Each optimization is divided into two steps: sparse update and continuous update.

如图所示,橙色点是深度相机(已转换为点云)捕捉到的手部区域,蓝点是橙色点的对应点。

[En]

As shown in the figure, the orange point is the area of the hand captured by the depth camera (which has been converted into a point cloud), and the blue point is the corresponding point of the orange point.

第一轮

稀疏匹配:为每个橘色的点找一个距离最近的蓝色点作为配对点,注意这里的距离不仅是空间距离,还包括法向距离(之前的loss里已经有了介绍)。由于此时蓝色的点较少,存在多个橘点对应同一个蓝色点的情况。

连续匹配:对于蓝点对应的每个橙色点,按照梯度移动形成一个新的蓝点,通过这一步可以形成非常多的蓝点(如图所示)

[En]

Continuous matching: for each orange dot corresponding to the blue dot, move according to the gradient to form a new blue dot, through this step can form a very large number of blue dots (can be clearly seen in the figure)

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

看到这里,难免会有一个问题–如何在第一轮中拿到蓝点?

[En]

Seeing here, there is inevitably a question-how to get the blue dots in the first round?

解决办法很简单,在模型手上预设一些点,随着pose改变位置。每帧手势的每个点(点云3D坐标)从这些点里找到距离和法向最近的点作为初始匹配。如果不是第一轮迭代,直接从上一帧结果的所有离散点里找最近的作为匹配点。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

第二轮~第N轮

在第二轮稀疏匹配中,蓝色斑点较多,手指上的一些错配可以拉回,错误分配到无名指的点可以拉回小指(不能通过连续的曲面梯度更新直接交叉到手指)。

[En]

In the second round of sparse matching, there are more blue spots, and some mismatches on the fingers can be pulled back, and the points mistakenly assigned to the ring finger can be pulled back to the little finger (cannot be crossed directly to the finger by continuous surface gradient updating)

第二轮连续匹配继续迭代,到第三轮已经很好的贴合了。

[En]

The second round of continuous matching continued to iterate, and the fitting was already very good by the third round.

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

优化结果

和ICP类的方法相比,迭代所需的轮次要少很多

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

和粗糙三角mesh对比,一开始看着挺正常,最后 mesh的方案会在三角面片之间反复跳变无法收敛到较好的姿态

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

以上是HoloLens 1里的核心思想,HoloLens 2里也有不少改进点,目前能找到的论文里最关键的的就是ECCV2020[11]这篇。

模型改进——Phong Surface减少模型拟合计算量

上面提及的subdiv还不是非常快,微软团队2020提出了一种新的平滑模型构建方法,让计算量和三角面片模型接近,但是效果能达到和subdiv这种平滑模型接近的效果。目前HoloLens 2上用的就是这种模型,在一个算力只有 4GFLOPS的硬件(DSP)上可以稳定双手实时。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

冯氏着色

首先,我们介绍了冯在图形中的配色。

[En]

First of all, we introduce Feng’s coloring in graphics.

最基础的,每个三角面片内的法向都一致,最终会使得每个面片的颜色都一样,计算量很少;高洛德着色每个顶点计算颜色,再进行线性插值颜色,计算量也不大;冯氏着色对于面片上的每个点都插值法向,再根据法向计算光照的弹射,最终有比较均匀的光照,计算量在这三种里算是大的(这个理论很老了,1975年就提出了),微软这个改进点很好地运用了冯氏着色的理论。着色器详细的可以看下这篇博客

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

新版模型构建

相比于之前subdiv无穷细分的平滑模型,目前这版模型就显得有些糙了,点的位置就是粗糙的mesh手上的点,但是法向是三个点的加权和( 法向是平滑的,点是粗糙的

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

可以明显感受到这种模型 计算量贼小,但是具备了平滑模型的优点,由于法向是平滑的,可以更好地找到匹配点,继而某些mesh手优化不下去的问题也迎刃而解。下面这张图非常明显了,加了平滑梯度的模型手可以和平滑模型找到基本一致的匹配点,而普通的mesh模型还是找到错误的匹配点,让优化问题陷入局部极值。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

模型优化过程

和上面阐述的类似,优化过程也是要跨面片的,具体的细节可以参考论文[7]。这里的Xi会通过v,w随着模型其他变量一起迭代,v,w不会局限于一个面片,可以跨越相邻的面片。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

可以直观看下迭代的过程

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

实验结果

文章也有些对比实验,以刚体为例,输入的点是变换后刚体正面的点(模拟深度图只能看到一半),并随机加入了一些噪声,三个轴都旋转固定角度,最终只评估旋转角的误差,定量评估lifted/ICP配合三种建模方式的效果。

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

结论是主要是一下几点:

  • Mesh建模的效果很差
  • Lifted优化比ICP快很多
  • Phong surface是一种更快更好的建模方式
  • 对mesh模型而言,有法向前10轮会下降地更快,但最终收敛效果差很多(因为法向错误反而会陷入局部极小值)
  • 连续的法向会让模型收敛得更好,Phong在椭球体刚体迭代实验里精度比Subdiv还高

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

三种方法的实际应用对比如图所示,可以明显看出subdiv和phong的方案很接近,mesh的方案相比之下差很多,收敛得很慢,最终效果也不行

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

Lifted方法略优于ICP(不像刚体实验里有非常巨大的优势);Subdiv和Phong明显优于mesh;初值很重要,追踪会比每帧重新初始化正确率高很多

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

HoloLens 2新模型的速度

  • PC的实验可以发现Subdiv可以达到的效果最好,但Phong整体都在右上方(性价比更高)
  • HoloLens 2上最终优化后Phong略差于Subdiv,但快了一倍( 300FPS
  • 注意一下HoloLens 2的手势 跑在DSP上,运算能力只有 4GFLOPS(iphone7的百分之一)
  • 可以参考一下,高通865(小米10、一加8等)的DSP性能为 15360 GOPS,性能至少是HoloLens的千倍以上,只能说一句—— 微软牛逼

元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

Reference

  1. https://en.wikipedia.org/wiki/Time-of-flight_camera
  2. HoloLens 2 Review: Ahead Of Its Time, For Better And Worse
  3. https://www.youtube.com/watch?v=S0fEh4UdtT8
  4. https://www.youtube.com/watch?v=QTz1zQAnMcU
  5. Azure Kinect DK – Develop AI Models | Microsoft Azure
  6. Azure Kinect DK Windows comparison | Microsoft Docs
  7. Taylor J, Stebbing R, Ramakrishna V, et al. User-specific hand modeling from monocular depth sequences[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2014: 644-651.

  8. Khamis S, Taylor J, Shotton J, et al. Learning an efficient model of hand shape variation from depth images[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 2540-2548.

  9. Tan D J, Cashman T, Taylor J, et al. Fits like a glove: Rapid and reliable hand shape personalization[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 5610-5619.

  10. Taylor J, Bordeaux L, Cashman T, et al. Efficient and precise interactive hand tracking through joint, continuous optimization of pose and correspondences[J]. ACM Transactions on Graphics (TOG), 2016, 35(4): 1-12.

  11. Shen J, Cashman T J, Ye Q, et al. The phong surface: Efficient 3d model fitting using lifted optimization[C]//European Conference on Computer Vision. Springer, Cham, 2020: 687-703.

  12. Loop C. Smooth subdivision surfaces based on triangles[J]. Master’s thesis, University of Utah, Department of Mathematics, 1987.

  13. Wang R, Yang X, Yuan Y, et al. Automatic shader simplification using surface signal approximation[J]. ACM Transactions on Graphics (TOG), 2014, 33(6): 1-1

Original: https://blog.csdn.net/zmdsjtu/article/details/121546954
Author: 朱铭德
Title: 元宇宙里的手势交互(三)地表最强的手势交互原理剖析(HoloLens 2)【下】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/511550/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球