30分钟内基于激光雷达的手部姿态估计

本文介绍了如何使用激光雷达Intel Realsense L515摄像头,结合Python和深度学习技术,实现30分钟内的手部姿态估计。通过识别和跟踪手指关键点,目标是实现类似鼠标控制的功能。作者探讨了手部检测、神经网络的使用以及如何处理深度图像,同时也分享了在Ubuntu上遇到的相机软件问题和解决方案。代码和完整项目可在提供的存储库中找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

大家好!虽然赛博朋克还没有进入我们的生活,神经接口也远非理想,但激光雷达可以成为机械手未来之路的第一阶段。因此,为了在假期期间不感到无聊,我决定幻想一下计算机的控制,可能还有任何设备,比如挖掘机、宇宙飞船、无人机或火炉。

主要思想是移动鼠标,不是移动整只手,而是只移动食指,这将使你可以在不将手离开键盘的情况下浏览菜单,按下按钮,并与热键一起变成一个真正的键盘忍者!如果添加滑动或滚动手势会发生什么?我想会有炸弹!(但这一刻我们还需要等待几年)

让我们开始组装我们未来机械手的原型

你需要:

  1. 带有 LiDAR Intel Realsense L515 的摄像头。

  2. 能够在python中编程

  3. 记住学校数学

  4. 安装在监视器上的相机又名三脚架

我们用全球速卖通的三脚架将相机固定在上,结果证明非常方便,轻便且便宜

af2533b6e61102250d588ff5c8754fed.png77378ca144b2768e85d797b1783603d2.png

我们弄清楚如何制作原型

有许多方法可以完成这项任务。你可以自己训练检测器或手部分割,裁剪右手的结果图像,然后将这个来自 Facebook 研究的精彩存储库应用于图像,获得出色的结果。

要使用媒体管道存储库,阅读此链接后,你可以知道这是当今最好的选择之一:https://ai.googleblog.com/2019/08/on-device-real-time-hand-tracking-with.html

首先,一切都已经开箱即用 - 安装和启动将需要 30 分钟,考虑到所有先决条件。

其次,得益于强大的开发团队,他们不仅采用了手部姿势估计的最新技术,还提供了易于理解的 API。

第三,网络已准备好在 CPU 上运行,因此进入门槛极低。

可能你会问我为什么不使用本次比赛获胜者的存储库。

事实上,我详细研究了他们的解决方案,他们已经准备好了,没有成堆的数百万个网格等。但在我看来,最大的问题是他们处理深度图像。

由于他们是学者,他们毫不犹豫地通过Matlab转换了所有数据,另外,拍摄深度的分辨率在我看来很小。这可能会对结果产生深远的影响。

因此,似乎最简单的方法是获取RGB图片中的关键点,并通过XY坐标取深度帧中沿Z轴的值。现在的任务不是对某些东西进行太多的优化。因此我们将从开发的角度进行优化,因为它更快。

记住学校数学

正如我已经写过的,为了获得鼠标光标所在点的坐标,我们需要构建一条穿过手指指骨的两个关键点的线,并找到该线与该点的交点显示器的平面。

617b849a2952e69b75287242f5e82c77.png

图片示意性地显示了显示器的平面和与其相交的线。你可以看看此处的数学。

使用两点,我们得到空间中直线的参数化表示。

6f2a5bcda5d66dc80b5bb5e90ec1b818.png

0374d1f2f0ced0bd2832b02bf98dd2e4.png

我不会过多关注学校的数学课程。

安装用于使用相机的库

这可能是这项工作中最难的部分。事实证明,Ubuntu 相机的软件非常粗糙,充斥着各种各样的bug。

直到现在,我还是没能打败相机的奇怪行为,有时它在启动时不加载参数。

重启电脑后相机只能工作一次!但是有一个解决方案:在每次启动之前,对相机进行软件硬重置,重置USB,也许一切都会好起来。

顺便说一下,对于 Windows 10,一切都很好。但是,开发人员想像一个基于 Windows 的机器人这件事情就很奇怪。

要真正了解 Ubuntu 20,请执行以下操作:

$ sudo apt-get install libusb-1.0-0-dev
Then rerun cmake and make install. Here is a complete recipe that worked for me:
$ sudo apt-get install libusb-1.0-0-dev
$ git clone https://github.com/IntelRealSense/librealsense.git
$ cd librealsense/
$ mkdir build && cd build

通过分类收集,它将或多或少地稳定。一个月的技术支持沟通表明,你需要安装Ubuntu16,否则将遭受痛苦。懂的都懂。

我们继续了解神经网络的复杂性

现在我们看另一个手指和鼠标操作的视频。请注意,指针不能停留在一个地方,而是围绕预定点浮动的。同时,我可以轻松地将其指向我需要的单词,但是对于一个字母,则比较困难,我必须小心地移动光标:

正如你所理解的,这不是在和我握手,这完全是从激光雷达获得的,关于基于值的关键点和 Z 坐标的不断波动。

让我们仔细看看:

在我们的媒体管道 SOTA 中,波动肯定较少,但它们也存在。事实证明,他们通过在当前帧和训练网络中使用过去帧热图中的 prokid vaniya 来解决这个问题——它提供了更多的稳定性,但不是 100%的稳定。

此外,在我看来,标记的特殊性也起作用。在这么多帧上做相同的标记几乎是不可能的,更何况帧的分辨率到处都不同,而且不是很大。

此外,我们没有看到光的闪烁,这很可能不是恒定的,因为操作时间和相机曝光量不同。并且网络还从热图中返回一个sandwich ,它等于屏幕上关键点的数量,这个张量的大小是 BxNx96x96,其中 N 是关键点的数量,当然,在阈值和调整到原始帧大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值