[Paper Reading] TouchInsight: Uncertainty-aware Rapid Touch and Text Input for Mixed Reality from Egocentric Vision
TouchInsight: Uncertainty-aware Rapid Touch and Text Input for Mixed Reality from Egocentric Vision
link
时间:24.10
作者与单位:
TL;DR
由于相机摆放、自遮挡、手指快速运动等原因,从HMD的相机上直接检测Touch Input是一个难题。本工作利用双高斯分布来建模接触位置的不确定性,通过上下文先验来准确推断用户的预期输入。不同于Meta 2020年的工作(通过高精Marker工装产生26DoF,Decode算法也跑在PC上),本工作是直接在消费级产品quest3上实时部署跑出的效果,所以效果略差一些,但更接近于落地,37.0 WPM(words per minute), 2.9%(uncorrected error rate)。
Method
touch location不确定性的来源
模型中的数据流
UmeTrack -> 26DoF(时序窗口T=41) -> Mesh点 -> \(H\) hand pose feature(\(R^{92}\)): 10手指每个手指取3个点(tip/pad/edge) + 双手score -> Normalize by虚拟键盘 -> TransformerXL -> touch classification(\(R^{11}\)表示10个手指Touch与否,假设每次仅一个手指Touch)
touch localization
以\(H\) hand pose feature作为输入,通过两层Linear Layer预测平面上位置不确定性分布。具体是预测高期分布的Mean与Variance,还是预测Heatmap再用2D高斯拟合,没有详细说明。
Loss
这篇文章里面提到CTC Loss以及location loss,但我都没有看明白,能否提供一些更简单解释或者更详细的信息?
FromKimiChat(提示词:这篇文章里面提到CTC Loss以及location loss,但我都没有看明白,能否提供一些更简单解释或者更详细的信息?)当然可以。在这篇文章中,CTC Loss(Connectionist Temporal Classification Loss)和Location Loss是用于训练神经网络的两种损失函数,它们用于预测和定位触摸事件。下面我将分别解释这两种损失函数:
CTC Loss(Connectionist Temporal Classification Loss)
CTC Loss是一种常用于序列建模问题的损失函数,特别是在那些输出序列可能比输入序列短,并且可能包含重复标签的情况。在这篇文章中,CTC Loss用于处理触摸事件的识别,即判断哪个手指触摸了表面。这种损失函数的优势在于它不要求模型对每个时间步的输出进行精确对齐,而是允许模型在时间上有一定的灵活性。
CTC Loss的计算涉及到以下几个步骤:
对齐(Alignment):确定目标序列(手指触摸的标签)和模型输出序列之间的所有可能对齐方式。
概率计算:计算在每种对齐方式下,模型输出序列对应于目标序列的概率。
损失计算:对所有对齐方式的概率取对数,然后取负值求和,得到最终的损失值。
CTC Loss允许模型在时间上“滑动”输出,以找到最佳对齐,这在处理像触摸事件这样可能在时间上有所变动的序列数据时非常有用。
Location Loss(定位损失)
Location Loss用于训练网络预测触摸事件发生的位置。在这篇文章中,触摸位置是通过一个二元高斯分布(bivariate Gaussian distribution)来表示的,这意味着触摸位置不仅有一个估计的均值,还有一个表示不确定性的协方差矩阵。
Location Loss的计算涉及到以下几个步骤:
预测分布:网络预测触摸位置的二元高斯分布参数(均值和协方差矩阵)。
实际位置:使用某种方式(如传感器数据)获取实际的触摸位置。
损失计算:计算预测的高斯分布与实际触摸位置之间的负对数似然(Negative Log Likelihood, NLL)。这通常涉及到计算高斯分布在实际触摸位置处的概率密度,并取负对数。
Location Loss的目的是让网络学习如何更准确地预测触摸位置,同时考虑到预测的不确定性。通过最小化这种损失,网络可以学习到在给定手部姿态的情况下,如何最好地估计触摸位置。
这两种损失函数在训练过程中结合起来使用,使得网络不仅能够识别哪个手指进行了触摸,还能准确预测触摸发生的位置。
Probabilistic command predict
简单来说就是通过融合
- 预测的touch location Gaussian distribution
- language prior
- history input
来修正user error与sensing error。具体原理参考下面。
请在不使用公式的前提下,详细介绍这篇文章Method章节中的Probabilistic command predict部分
FromKimiGPT(提示词:请在不使用公式的前提下,详细介绍这篇文章Method章节中的Probabilistic command predict部分)当然可以。在这篇文章的“Method”章节中,"Probabilistic Command Prediction"部分介绍了一种预测用户意图的方法,这种方法特别适用于混合现实环境中的文本输入。这里的关键是,系统不仅要预测用户的触摸位置,还要考虑到预测过程中的不确定性。下面是这部分内容的详细介绍,不涉及具体公式:
概率命令预测框架
目标和挑战:
目标是识别用户在混合现实环境中通过触摸输入的命令序列,比如打字时的字符序列。
挑战在于,用户的触摸行为和传感器的不确定性(比如手部遮挡或快速移动)会导致触摸位置的预测不够准确。
贝叶斯定理的应用:
为了解决这些不确定性,文章提出了一种基于贝叶斯定理的方法,这种方法可以帮助系统推断出用户最有可能想要触摸的命令(比如键盘上的字符)。
贝叶斯定理允许系统结合先前的知识(先验)和新的观测数据(用户的触摸行为)来更新对用户意图的理解。
触摸位置的不确定性:
系统会预测触摸位置,并考虑到这个预测的不确定性。这种不确定性可能来自于用户的行为(比如手指的抖动)或者传感器的限制(比如手部被遮挡)。
通过预测触摸位置的分布,系统可以更好地理解用户可能想要触摸的区域,而不仅仅是一个点。
结合语言模型:
为了提高预测的准确性,系统还会使用语言模型来提供额外的上下文信息。比如,如果用户已经输入了“he”,系统更有可能预测下一个字符是“l”而不是“x”。
这种语言模型的先验知识可以帮助系统在面对不确定的触摸输入时做出更合理的猜测。
实现:
文章中描述了如何将这种预测框架实现为一个文本输入系统,该系统可以在混合现实头显上实时运行。
系统首先通过跟踪用户的手姿来预测触摸事件,然后使用概率模型来推断用户可能想要输入的字符序列。
最后,系统使用一种称为束搜索的技术来找到最有可能的字符组合,这种方法可以考虑到语言模型的先验概率,并结合触摸位置的不确定性。
总的来说,这篇文章提出的“概率命令预测”方法,通过考虑触摸输入的不确定性,并结合语言模型的先验知识,提高了在混合现实环境中文本输入的准确性和效率。这种方法特别适用于需要快速、精确输入的场景,比如在混合现实环境中打字。
Experiment
Ablation
Alternative implementations. We evaluated the performance of our touch localization using different values for 𝛽. In addition, we experimented with alternative implementations and loss functions. We assessed the accuracy of touch location estimates derived from
the surface-projected tip or pad key points of fingers classified as touching. Moreover, we compared the 𝛽-NLL with a standard mean squared error loss (MSE).
打字速度
物理键盘打字速度大约为每分钟67.5个单词
As a reference, on the physical keyboard, participants entered sentences with a mean speed of 67.50 WPM (min=43.76, max=95.36, SD=15.88), a UER of 0.78% (min=0.0, max=3.09, SD=1.01), a CER of 6.35% (min=1.08, max=12.38, SD=3.26) and a ChER of 0.8% (min=0.0, max=3.37, SD=1.08).
模型部署
- Touch estimation network
After training, we compile the model using the JIT QNNPACK to run on the headset. The network also receives and stores the touch distributions for the keyboard keys.
- TextEncoder
The text decoder combines the output of the touch estimation network with a language prior estimated by a language model based on the sequence of previously entered characters. We implemented
the decoder in C++.
效果可视化
https://www.youtube.com/watch?v=FFMheYKQJog
总结与发散
JIT QNNPACK貌似可以把Torch模型直接跑到端上,后续可关注一下
一些关键指标
- contact events (𝐹1=0.99)
- specific finger involved (𝐹1=0.96)
- touch location offset (6.3mm offset)
- touch events with a minimal deviation (< 3 ms) from the target latency of 2 frames (∼67 ms) a
- 实时运行