当前位置: 首页 > 后端技术 > Python

耗时2天,做了一个体感游戏机

时间:2023-03-26 17:52:23 Python

大家好,欢迎来到Crossin的编程课堂~几天不见,Crossin又要玩什么游戏了?我这次做的不是游戏,而是游戏机!而且是体感游戏机。说到体感类游戏,大家现在想到最多的大概就是switch上的健身环大冒险了。但是在几年前,其实还有另外一种非常流行的体感游戏设备,就是xbox上的kinect。与switch使用带有传感器的手柄来识别玩家动作不同,kinect使用一组摄像头通过图像来识别玩家动作。我这次做的demo是一个使用摄像头的动作识别系统。理论上,这套识别系统只需要一台普通的电脑和一台普通的摄像头就可以运行。不过最近刚好搞到一个好东西,可以大大提高我这次的开发效率和运行效率。说的就是这个,全称是JetsonAGXOrin,NVIDIA的AI边缘计算设备。所谓边缘计算,简单来说就是用产生数据的应用程序尽可能多地处理数据。比如像机器人,像自动驾驶。这种场景对实时计算的要求很高。不好说,数据传到计算中心,结果由机房的大佬们处理后返回给设备。因此,对于边缘计算设备,一是要有足够强的计算能力,二是要足够小,不仅体积小,而且能耗低。这款AGXOrin是NVIDIAJetson系列中的最新款。新到什么程度呢,就是目前市面上没有现货可以购买,只能预购。所以我的可以说是全球限量版。与上一代JetsonAGXXavier相比,其性能提升了8倍,达到每秒275万亿次计算。这个级别相当于一台内置GPU的服务器,体积小到可以拿在手掌中。除了强大的硬件,自然少不了NVIDIAAI相关软件的支持。并且针对大多数常见的人工智能应用,如人脸识别、物体识别、动作识别、自然语言处理、语音合成等,它提供了一些预训练模型。这简直太方便了。开机安装JetPack开发包后,有很多测试程序可以运行,供大家体验。官方文档也提供了很多示例来帮助开发者上手。下面是我的运行视觉和对话式AI基准测试的结果:你可以看到与上一代产品相比有非常显着的改进:在官方的HelloAIWorld中,还提供了一些演示。比如物体识别,识别一帧只需要十几毫秒,可以用于实时视频监控,甚至是进行中的游戏。还有这样一个demo:小子,我的工作量还没有完成一半呢。得到人体姿态数据后,我们就可以利用各种动作对应的数据来训练分类器。然后,利用分类器实时识别摄像头捕捉到的用户姿势,并判断动作。然后,根据识别出的动作,向系统发送键盘指令。这样,一个简单的基于人体运动的交互系统就完成了。在NVIDIASmartIoT的github仓库中,我找到了一个类似的项目,它使用手势来操作和浏览网页。https://github.com/NVIDIA-AI-IOT/trt\_pose\_hand使用SVM支持向量机训练手势分类器,使用Python的scikit-learn模块。我们可以对第二部分使用相同的方法,除了我们使用人体的全身模型。为了训练分类器,我们需要一些样本数据。之后,键盘命令通过pynput模块发送。综上所述,我们就得到了我们想要的功能:一个可以用动作玩游戏的系统的视频演示:2天后,我做了一个体感游戏机_哔哩哔哩_bilibiliforOrin,其实就是这个项目有点炮弹打蚊子的意思,因为姿态判断和动作识别使用的是预训练模型,实时计算量不是太大。但是它的软件环境和开发社区资源,真的让我这次的开发效率大大提高了。唯一不足的是连我家网络的github、apt、pip都太慢了,以至于安装环境花了很多时间。如果有一套相关资源的国内镜像就更好了。最后还有一个小彩蛋,大家有没有注意到我用来演示的游戏KOF97。2009年,也就是kinect正式发布的前一年,我做的硕士毕业设计其实是:一个单摄像头的人机交互系统,动作识别部分也用到了SVM支持向量机。答辩时,我使用的试玩游戏是KOF97。在论文最后的工作展望中,我写道:没想到,时隔13年,这个坑被我自己填上了。这让我想起了乔布斯曾经说过的话:相信我们在生活中经历过的点点滴滴,在未来会以某种方式联系在一起。SteveJobs本文代码基于NVIDIA官方示例修改:https://github.com/NVIDIA-AI-...\_pose\_hand运行环境:NVIDIAJetsonAGXOrinJetPack5.0Python3.8.10代码已经开源:http://python666.cn/c/2更多教程和案例,欢迎搜索关注:Crossin编程课堂,每天5分钟轻松学编程。