大家好,欢送来到 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 模块发送键盘制令。
将以上这些全副合在一起,就失去了咱们想要的性能:
一个能够用动作来玩游戏的零碎
视频演示:耗时 2 天,我自制了一台体感游戏机_哔哩哔哩_bilibili
对于 Orin 来说,用在这个我的项目上其实有点大炮打蚊子了,因为姿势判断和动作辨认用的都是预训练模型,实时的计算量并不算大。但它的软件环境和开发社区资源的确大大晋升了我这次的开发效率。
惟一有余的就是从我家的网络连 github、apt、pip 都太慢了,以至于花了不少工夫在环境装置上,如果相干资源能有一套国内镜像就更好了。
最初有一个小彩蛋,你们是否留意到我用来演示的游戏 KOF97。在 2009 年,也就是 kinect 正式公布的前一年,我做的硕士毕业设计,其实就是:应用单摄像机的人机交互零碎
而在其中的动作辨认局部,用的同样也是 SVM 反对向量机。在问难时,我用的演示游戏,就是 KOF97
在论文最初的工作瞻望里,我曾写到:
没想到,在 13 年后,我本人把这个坑填上了。这不禁让我又想到乔布斯曾说的:
置信咱们生命中已经经验的那些点,将在将来的某一天以某种形式串连起来。史蒂夫·乔布斯
本文代码基于 NVIDIA 官网示例批改:
https://github.com/NVIDIA-AI-…\_pose\_hand
运行环境:
NVIDIA Jetson AGX Orin
JetPack 5.0
Python 3.8.10
代码已开源:http://python666.cn/c/2
获取更多教程和案例,欢送搜寻及关注:Crossin 的编程教室
每天 5 分钟,轻松学编程。