IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 元宇宙中的手势交互(四)第一款主流VR头显中的手势交互原理剖析(Meta Quest 2) -> 正文阅读

[游戏开发]元宇宙中的手势交互(四)第一款主流VR头显中的手势交互原理剖析(Meta Quest 2)

简介??

??????随着Facebook正式改名为Meta,元宇宙的概念也一夜之间在世界范围内被点燃。相应的,Quest2也正式改名为Meta Quest2。马克·扎克伯格在2020年底的时候说,一款VR头显成为主流的标志是销量突破千万,而Quest有望成为第一款主流的VR眼镜。今年九月的时候,高通方面透露“Quest的销量已经达到了1000万台”,这也算完成了小札对于第一款主流VR眼镜的“小目标”,相信Quest2的爆火也是Facebook改名Meta的主要底气之一。

????????Quest2的手势交互的精度和效果在目前已知的VR眼镜里是最好的,没有之一。如果算上MR眼镜的话,Quest和HoloLens 2的手势效果处于同一梯队,个人觉得略逊于微软的手势,但从硬件到整个算法链路都是两套方案了,所以单独拧出来写一篇非常有必要。

????????先直观看一个Quest上一款非常优秀的基于手势追踪的游戏,效果真的非常棒,可以看出绝大部分手势都是稳定、可靠、鲁棒的。

Quest2上一款优秀的手势追踪游戏

硬件

???????系统采用4个灰度VGA相机,分辨率640*480,对角FOV达到了175°,宽150°,高120°。这四个摄像头的分布也很有讲究,下方两个朝下的相机确保能看清所有自然交互的手势;上面朝外的两个相机确保更大的区域的手也能被看到。右图是50CM位置可是区域的示意图,红色代表四个相机都能看到,橘色代表三个相机,绿色和蓝色代表两个和一个相机。

????????上面的图可能也没那么直观,下面这张图就很清晰地看出四个相机的成像了。下面两个朝下的相机的能清晰捕获到用户常用区域的手,上方两个朝外的相机能保证正大范围内的手势交互。理论上Quest这套手势交互范围要比HoloLens大很多。(从图像很明显可以看出,相机是竖着装的,这点对手没什么提升,但是对slam还是有些意义的,看向地板时也能有足够大的视野)

整体算法框架

????????Quest上的手势交互是一套深度学习方案[5],通过神经网络检测手的位置以及关键点信息,最后通过一个26自由度的模型手拟合出手和手指的姿态信息。

????????更具体的可以参考下Facebook Reality Labs(Meta)团队论文里的配图:

  • DetNet检测出四张图里的手部区域
  • KeyNet追踪网络回归出手部区域的3D关键点
  • 模型手拟合部分通过优化的方法拟合出模型手的姿态
  • 当前帧的结果会用于下一帧的追踪

手势检测网络DetNet

????????撇开姿态,首先需要做的事情是将手从图像中检测出来。在深度学习中,这是一个常规的检测任务,但肉眼可见的是——灰度图中检测出手要比彩色难很多。这需要海量的数据,后面会讲如何采集这些数据的。据Facebook的论文说,检测采用的是常规的轻量版SSD[7](ECCV2016),有些老(实际部署时用的是啥就不确定了),不过计算机视觉中检测任务已经很难玩出花儿了,层出不穷的yolo系列随便改改都能达到很好的效果,不展开讨论了。

????????略区别于普通的检测网络,这里检测网络直接回归双手的手掌中心和box的尺寸(无需准确的长宽,一个方形的高即可),由于追踪网络的输入需要的是一个方形的区域,这样是很合理的。图示是一组检测网络的输出结果,还是很直观的。

????????框架层面也用到了常用的一种节约计算量的方法【Detection-by-tracking】,如果双手都被追踪上时是不需要运行检测算法的,只有手追踪丢失时才会运行检测算法。(毕竟检测的耗时还是有些的)。双手都被追踪时,利用当前帧的pose*2-上一帧的pose作为下一帧的位姿预测值,投影到四张图像上初始化四个框继续追踪。链路还是很直观的。

????????KeyNet训练用了260万数据训练,做了一些图像增强的操作。检测比较基础,而且不需要一直运行,无需太关注,各家都做得很鲁棒和高效了(我们自研的算法移动端纯检测也能做到300FPS@SD888了)。

关键点追踪网络KeyNet

????????网络输入Crop过的方形手部区域图像和基于上一帧预测的当前帧的结果,输出21关键点和相对深度。图示是21关键点可视化的示意图:

????????为了保证手部区域完整可见,在最小包围盒的基础上外扩了20%。显而易见,输出用的是heatmap替代直接回归坐标值,这也基本是人体和手部关键点回归的标配了,最终训练时loss用的是2D和depth的heatmap的MSE loss:(α取的0.05)

????????值得一提的是网络只学习左手的回归,右手的回归直接将图像左右颠倒,这个操作极大降低了网络学习的难度。

????????这里的相对Depth回归也很有讲究,由于用的是鱼眼相机,图像中间和边缘的畸变都是不一样的,直接预测深度是有歧义的,所以这里预测的深度指的是关键点到相机中心距离的相对深度而非关键点到像平面的深度。

??

????????需要注意的是,这里的关键点回归网络需要跑很多遍,例如有两张图都看到了左右手,回归网络就需要运行四次。这对网络设计的效率、精度要求都是很高的,同时吃下海量数据的同时还要保证效率。

????????网络输入96*96的图像和一个63维的向量(21个3D关键点),输出21*18*18维度的2D关键点heatmap和21*18的深度heatmap。整体计算量很小,多目同时运行也能在高通835DSP上双手实时。网络结构就不具体展开阐述了,有兴趣去看看论文。

????????训练时90%的数据63维向量喂的是两帧前的数据(和实际部署一致,因为相机是60FPS,实际30FPS,所以是两帧前,这点是个人理解),还有10%喂的20帧之前的数据。这一点很关键的,如果不喂偏差大一些的,网络很容易直接收敛到63维向量上。显而易见的是,这个连续标注的数据集会非常难做,网络框架是肉眼可见的粗暴和强大。训练时还有一些技巧处理了边界以及让网络更容易收敛,在此不展开了。

模型手拟合

????????有了各个视角下的手部21关键点,下一步是用一个带蒙皮的模型手去拟合,原理上和HoloLens一样,一个优化问题,通过控制模型手的26个自由度,让模型手在各个视角下尽可能“套”在这21个关键点上。

????????这个优化问题用公式来描述会更清晰一些,优化问题的控制变量是模型手的26个自由度,优化目标分为三个部分:在多张图像上的2D投影尽可能小,深度方向误差尽可能小以及和上一帧图像的误差尽可能小(避免剧烈的跳动)。

????????还有个需要解决的是模型手的尺度,由于这是一个多目的相机系统,尺度是可以直接估算的。人的左右手尺寸基本是一致的,所以左右手会共用一个尺寸模型,随着2D投影优化目标一起优化,继而估算姿态的同时也能得到一个尺寸合理的手模型。

关键点采集和标注系统

????????既然是基于神经网络的方法,最重要的一个问题便是——如何获取到大量高精度标注的数据。这张图很良心了,通过一个深度相机自动标注关键点,再投影到多目相机自动完成标注过程。当然,训练之前,所有数据都需要过一遍人工,剔除标注不佳的数据。自此,一个连续时间序列上的人手关键点标注就搞定了。

检测Box自动标注系统

????????区别于关键点数据,box所用的数据都是Quest机器上直接采集的,第一帧人工进行框选,后续每帧都用KeyNet进行追踪,复用上文所说的Detection-by-tracking就能自动完成标注过程了。下图是一些自动标注的样例。(都能回归关键点了,标个框真的是降维打击)

实际运行效率

????????在高通835的DSP(Hexagon v62)上运行效率能达到30Hz。实际Quest 2用的是XR2芯片,相当于高通865(算是高端安卓机型了),在前阵子Beta体验版中,手势算法能达到60FPS。至于精度和结果,文章开头的视频也看到了,下面这张图也可以直观感受下,不太稳的背景和姿态肯定是能找到,但大部分场景和常用手势肯定是稳如狗了。

?

Reference

1.Meta Quest 2 Is Already Replacing Oculus Quest 2 Branding

2.Meta’s Oculus Quest 2 has shipped 10 million units, according to Qualcomm - The Verge

3.https://www.youtube.com/watch?v=uztFcEA6Rf0

4.https://www.youtube.com/watch?v=iBPJG60rMhg&t=154s

5.https://ai.facebook.com/blog/hand-tracking-deep-neural-networks/

6.DeepHandMesh: A Weakly-Supervised Deep Encoder-Decoder Framework for High-Fidelity Hand Mesh Modeling

7.Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:11:29  更:2021-12-13 13:12:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:02:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码