耗时2天,我自制了一台体感游戏机

简介: Jetson AGX Orin 开箱 + 快速开发一个动作识别交互系统 DEMO

大家好,欢迎来到 Crossin的编程教室~


几天不见,Crossin 又去做什么游戏去了呢?这次我做的不是游戏,而是游戏机!而且是体感游戏机


说到体感游戏,现在大家可能最多想到的是 switch 上的健身环大冒险。


但往前几年,其实还有另一个非常火的体感游戏设备,就是 xbox 上的 kinect。和 switch 用带有传感器的手柄来识别玩家动作不同,kinect 使用的是一组摄像头,通过图像来识别玩家的动作。

我这次做的 demo,就是一个使用摄像头的动作识别系统。理论上来说,这个识别系统只需要普通的电脑和普通的摄像头就可以运行。不过我最近正好拿到一样好东西,它可以让我这次的开发效率和运行效率都大大提高。

这就是我说的好东西,全名是 Jetson AGX Orin,是 NVIDIA 的AI边缘计算设备。什么叫做边缘计算,简单来说就是对于数据的处理尽可能和产生数据的应用在一起。比如像机器人、像自动驾驶。这种场景对计算的实时性要求高,不好说把数据传到计算中心,靠机房的大家伙们处理完再把结果返回给设备。所以对于边缘计算设备来说,一是要计算能力够强,二就是要足够小,不仅是体积小,而且要能耗小。

这款 AGX Orin 就是 NVIDIA Jetson 系列的最新款。新到什么程度,就是目前市面上还没有现货可以买,只能预定。所以我这台可以说是一个全球限量版。和之前上一代 Jetson AGX Xavier 相比,它的性能提升到了8倍,可达到每秒 275 万亿次计算。这个程度已经相当于内置了GPU的服务器,而它的大小则小到可以托在手掌上。

除了强大的硬件之外,这里面自然也少不了 NVIDIA AI 相关软件的支持。并且对于大多数常见AI应用,比如人脸识别、物体识别、动作识别、自然语言处理、语音合成等等等等,它都提供了一些预训练好的模型。这个简直太方便了。

开机安装好 JetPack 开发套件,这里就有了很多可以运行的测试程序来让你体验。官方文档里也提供了很多示例来帮助开发者上手。

这里是我运行视觉和对话式AI基准测试的结果:

可以看到跟上一代产品相比有非常显著提升:

在官方的 Hello AI World 里,也提供了一些 demo。

比如物体识别,识别一帧画面只需要十几毫秒,完全可以用在实时的视频监控,甚至正在进行的游戏当中。

还有这样一个 demo:

好家伙,这不我一半的工作量已经完成了嘛。

拿到人体姿态数据之后,我们就可以用各种动作对应的数据来训练一个分类器。然后通过分类器来识别摄像头实时拍摄到的用户姿态,判断出动作。再根据识别出的动作,向系统发送键盘指令。这样就完成了一个简单的基于人体动作的交互系统。

在 NVIDIA 智能物联网的 github 仓库里,我发现了一个类似的项目,用手势去操作浏览网页。

https://github.com/NVIDIA-AI-IOT/trt_pose_hand

里面使用 SVM 支持向量机来训练手势分类器,这个用到 Python 的 scikit-learn 模块。我们的第二部分也可以用同样的方法,只不过我们使用的是人体全身模型。

为了训练出分类器,我们需要一点样本数据。

之后,就是通过 pynput 模块发送键盘制令。

将以上这些全部合在一起,就得到了我们想要的功能:

一个可以用动作来玩游戏的系统

视频演示:https://www.bilibili.com/video/BV1TY4y1r77J/

对于 Orin 来说,用在这个项目上其实有点大炮打蚊子了,因为姿态判断和动作识别用的都是预训练模型,实时的计算量并不算大。但它的软件环境和开发社区资源确实大大提升了我这次的开发效率。

唯一不足的就是从我家的网络连 github、apt、pip 都太慢了,以至于花了不少时间在环境安装上,如果相关资源能有一套国内镜像就更好了。

最后有一个小彩蛋,你们是否留意到我用来演示的游戏 KOF97。在2009年,也就是 kinect 正式发布的前一年,我做的硕士毕业设计,其实就是:使用单摄像机的人机交互系统

而在其中的动作识别部分,用的同样也是 SVM 支持向量机。在答辩时,我用的演示游戏,就是 KOF97

在论文最后的工作展望里,我曾写到:

没想到,在13年后,我自己把这个坑填上了。这不禁让我又想到乔布斯曾说的:

相信我们生命中曾经经历的那些点,将在未来的某一天以某种方式串连起来。史蒂夫·乔布斯

本文代码基于NVIDIA官方示例修改:

https://github.com/NVIDIA-AI-IOT/trt_pose_hand

运行环境:

NVIDIA Jetson AGX Orin

JetPack 5.0

Python 3.8.10

代码已开源:http://python666.cn/c/2

获取更多教程和案例,
欢迎搜索及关注:Crossin的编程教室
每天5分钟,轻松学编程。


相关文章
|
5月前
|
图形学 缓存 算法
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
343 5
|
机器学习/深度学习 传感器 人工智能
耗时2天,我自制了一台体感游戏机
但往前几年,其实还有另一个非常火的体感游戏设备,就是 xbox 上的 kinect。和 switch 用带有传感器的手柄来识别玩家动作不同,kinect 使用的是一组摄像头,通过图像来识别玩家的动作。
硬件新品一周简报:加意Duux迷你空净、MAG P90磁动枪、Instrument 1智能乐器和“食光机+WIFI侠”
这一周,各式硬件新品的逐一登场让人应接不暇。笔者就为大家精选了本周国内外较为关注的硬件新品众筹和发布资讯。
366 0
硬件新品一周简报:加意Duux迷你空净、MAG P90磁动枪、Instrument 1智能乐器和“食光机+WIFI侠”
|
机器学习/深度学习 存储 算法
全家要用机器人上货了?!50公里外VR操控,延迟不到一秒,网友:不愧是你,霓虹
全家要用机器人上货了?!50公里外VR操控,延迟不到一秒,网友:不愧是你,霓虹
163 0
|
传感器 机器学习/深度学习 机器人
下楼成功率100%!这个“盲人”机器人无需传感器,全凭“感觉”,也能上下楼梯自如
下楼成功率100%!这个“盲人”机器人无需传感器,全凭“感觉”,也能上下楼梯自如
205 0
|
Web App开发 边缘计算 缓存
停课不停学,优酷直播如何将网课点名延迟降到0.6s?
受疫情影响,各中小学校延迟开学,优酷宣布发起“在家上课计划”,为无法到校教学的老师们提供免费的直播授课工具,直播课程将于2月10日开始陆续上线,在直播过程中如何提升和保障流畅的互动体验?优酷直播流媒体团队做了低延时流媒体技术的探索实践,实现了在用户体验不下降的基础上,让主播与主播延时<300ms,播与粉丝延时<600ms,解决了直播间各类互动问题。接下来,阿里文娱的乾戒将具体介绍探索过程。
1465 0
停课不停学,优酷直播如何将网课点名延迟降到0.6s?
|
视频直播 UED 异构计算
直播平台制作中系统功耗过高问题原因分析
大家在直播平台观看直播时,由于手机长时间处在视频直播状态,导致手机发烫的现象十分常见。引起发烫的主要原因是CPU或GPU的占用率过高。其实在直播平台制作时可以通过很多细节方面的优化,降低系统功耗。但前提是要求我们明确其中的原因。那么导致CPU或GPU占用率过高的原因都有哪些呢?
1902 0
|
缓存 编解码 存储
细数一对一社交源码调和延时卡顿问题的小技巧
一对一社交源码作为开发过程中的“基础成员”,不仅开发搭建需要用到它,而且在解决延时和卡顿方面出现的问题也会用到它。虽然源码看起来并不起眼,但是系统搭建起来,再到后期app功能的实现都少不了源码“出力”。
1623 0