今年上半年,由于疫情原因,Switch 大火,Switch 平台上有许多款体感游戏,比如:健 身环大冒险、马力欧赛车、舞力全开。这些游戏凭着“硬核健身”的标签吸引了大量玩家, 通过两个手柄配合记录传感数据,就能检测到跑步、抬腿、深蹲等动作,这种精准的体感动 作感知吸引了不少玩家。
但是,现在不需要 Switch!不需要体感手柄!树莓派+visionseed!你也可以动手自己 实现属于你的体感游戏!今天,小编就来教大家,如何从 0 开始,实现一款基于 AI 的体感 吃火锅游戏~
先为大家展示一下游戏的全流程:

  1. 玩家张嘴,游戏开始
  2. 玩家张嘴触碰到食物,食物消失,分数加一
  3. 游戏结束,显示分数

什么是树莓派呢?

树莓派(Raspberry Pi)是尺寸仅有信用卡大小的一个小型电脑,您可以将树莓派连接 电视、显示器、键盘鼠标等设备使用。
树莓派能替代日常桌面计算机的多种用途,包括文字处理、电子表格、媒体中心甚至是 游戏。并且树莓派还可以播放高至 1080p 的高清视频。

神奇的 VisionSeed

提到 AI 体感游戏,大家第一时间想到的可能是高深的 AI 算法训练和复杂的工程部署, 来自不同厂家的芯片、系统框架、AI 算法之间,常常存在一定的兼容性或效率问题,导致 AI 产品开发周期长,算法效果不理想。以前用树莓派 3B 跑过人脸检测,用 OpenCV 的 Haar Cascades 算法,要 160 多毫秒才能跑完一帧人脸检测。如果用效果更好的深度神经网络模 型,比如通过 ncnn 加速框架跑 MobileNet-SSD 模型,则需要 260 多毫秒,再跑一个关键点 定位模型估计还要几十毫秒,整体帧率就只有 3fps 了。
当当当,是时候请出一个神奇的模块了,他内置了一颗 AI 加速芯片,单周期可以运行 512 次乘加运算,硬件支持卷积、池化、全连接等操作,还带了两颗手机摄像头模组,直接 能对拍到的图像跑 AI 算法进行分析,通过 UART 输出分析后的结果,非常有意思!
这就是我们隆重推出的腾讯优图 AI 视觉模组 VisionSeed!

目前 VisionSeed 模块提供的算法有:人脸检测、90 点关键点定位、姿态角解算、人脸 识别,还能够把自己训练的模型下载到模块上的 AI 芯片中运行。
我们先通过腾讯提供的 PC 端配置工具,看看模块上的 AI 算法输出的信息:

通过 USB 把 VisionSeed 连上电脑后,识别出来一个 video0 设备和 ttyACM0 设备,用配 置工具打开 ttyACM0,就能源源不断的获取到实时分析数据了,左下角马上显示出了我的脸 部关键点,随着我眨眼、摇头、张嘴,这个虚拟的小人也跟着变化,数据可视化界面上,选 择“左眼开闭”,曲线就开始滚动起来了,我每次眨眼,曲线就出现一个向下的尖峰,如果 闭眼,曲线就稳定在 0.05 以下的位置,非常灵敏!

VisionSeed 中的关键算法

VisionSeed 这么牛,那我们直接拿它提供的 90 关键点定位算法去检测张闭嘴呀! 通过下面的内置算法 ID,我们可以获取对应的算法结果:
YtVisionSeedModel.FACE_DETECTION: 人脸检测 YtVisionSeedModel.FACE_LANDMARK: 人脸关键点定位(90 点) YtVisionSeedModel.FACE_POSE: 人脸姿态(roll, yaw, picth) YtVisionSeedModel.FACE_RECOGNITION: 人脸识别
我们要把这个模组与树莓派连接,需要一根 type-c 和 usb 的数据线,如下图所示连接。 启动树莓派后,模组上会亮起绿灯,表明两者已接通。

那么如何获取模组的摄像头数据呢?
datalink = vs.YtDataLink( serial.Serial("/dev/ttyACM0",115200,timeout=0.5) )
通过 python 中的 pyserial 模块连接串行口,再建立连接后,就可以通过 getResult 方法
获得人脸识别、人脸姿态、人脸关键点定位等信息。
| 检测到的人脸数 |faces = result.getResult([YtVisionSeedModel.FACE_DETECTION]) |
|人脸框坐标|rect = result.getResult([YtVisionSeedModel.FACE_DETECTION, 0]) 0 表示检测到的第一个人脸,1 表示第二个,以此类推…|
| 人脸关键点定位 |shape = result.getResult([YtVisionSeedModel.FACE_DETECTION, 0, YtVisionSeedModel.FACE_LANDMARK]) |
通过 rect = result.getResult([YtVisionSeedModel.FACE_DETECTION, 0]) 就可以获取到当 前检测到的人脸框,rect.x,rect.y,rect.w,rect.h 分别代表了人脸框的左上角横坐标、左上角纵 坐标、宽度、高度。
通过 shape = result.getResult([YtVisionSeedModel.FACE_DETECTION, 0, YtVisionSeedModel.FACE_LANDMARK]) 可以获取到人脸的 90 个配准点,下图就展示了嘴 巴上的配准点

然后通过计算嘴巴的姿态去判断张闭嘴:
let l1 = faceShape.mouth[0].distence(faceShape.mouth[6])
let l2 = faceShape.mouth[3].distence(faceShape.mouth[9])
output = l2 / (l1 + 0.01)

上图的曲线所描绘的就是当我的嘴巴张开时,出现峰值;当我的嘴巴闭合时,出现谷 值。纵坐标值 output 所表现的就是嘴巴的开闭程度。

游戏设计

我们将用 python 语言来设计这个游戏,其中涉及了几个重要的第三方库:cv2、cocos、 visionseed。

  1. cv2:通过 cap = cv2.VideoCapture(0)读取模组的摄像头
  2. cocos:是用于构建游戏的框架。这个引擎就跟拍电影一样,有导演(Director),有大
    背景(Scene),还有背景上的小修饰物(Layer),还有人物(Sprite)。
  3. visionseed:通过导入 visionseed 库,通过库中的一些方法获取人脸的信息。
    类的设计
    正如之前所展示的游戏视频,此游戏主要分为三个场景:游戏开始、游戏进行中、游戏 结束。三个场景形成一个闭环。

类的设计

正如之前所展示的游戏视频,此游戏主要分为三个场景:游戏开始、游戏进行中、游戏 结束。三个场景形成一个闭环。

其次,我们要定义一个类 VisionSeedLayer,继承自 cocos.layer.Layer,实现下面这些方法:

  1. on_enter( )实现场景的进入
  2. on_exit( )实现场景的离开
  3. on_frame( )显示每一帧的画面
  4. addSprite( )在图层上添加精灵
  5. posFaceToScreen( )将人脸坐标映射到屏幕坐标上
  6. recvMsg( )通过 result,msg = datalink.recvRunOnce()接收 result 数据帧
  7. recvFrame( )通过 ret, frame = cap.read( )接收 frame 视频帧
    如下图所示

    如下图,展示了实现 GameBegin( )中的三个主事件的核心代码:

    如下图,展示了实现 GameMain( )中的四个主事件的核心代码:

    最后我们就能实现一个简单又真实的体感游戏啦!

后记

其实 VisionSeed 不仅仅是个集成了摄像头+AI 芯片的模块,AI 算法才是效果的保证,他 内置了腾讯优图的算法,效果过硬,一直处于业界领先地位,以前一般在腾讯内部产品中 应用,比如微信刷脸支付。现在通过 VisionSeed 人工智能视觉模块,开放给外界,你我也 能接触到世界一流的腾讯人工智能算法,甚至能应用在自己的产品中,实在是非常开心。 相信腾讯的开放,会惠及更多创业者和爱好者们。
另外,模块内还包括了人脸识别功能,通过附带工具软件管理数据库,能够实时离线识 别库中的身份,非常强大,能做出很多有意思的东西,等你一起来探索!

用腾讯优图AI视觉模组在树莓派上玩吃火锅体感游戏相关推荐

  1. 腾讯优图·AI 开放平台全面升级:AI 能力最全面的平台

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:优图实验室 人工智能是一项前瞻性科学研究,自信息技术产生发展以来,人们在这一领域进行了长期的科学探索和技术攻坚,并不断涌现出新思想.新观 ...

  2. 腾讯优图发布四大平台产品,持续开放视觉AI能力

    7月10日,2020世界人工智能大会在上海举行,腾讯优图实验室总经理吴运声发表了"新基建新生态下的计算机视觉"的主题演讲,分享了优图视觉AI技术在工业.教育.泛娱乐等领域的最新落地 ...

  3. 腾讯优图贾佳亚:当AI进入产业应用时代时,计算机视觉技术更应该服务于人才对!...

    作者 | 刘晶晶 出品 | CSDN云计算(ID:CSDNcloud) 从移动支付的自动贩卖机到刷脸支付的智能货柜: 从亲自到柜台验证到人脸核身远程开卡: 从排队买票.排队进门的糟糕旅游体验到提前预约 ...

  4. VisionSeed 腾讯优图实验室

    一.来信说明 1.EMAIL内容 卓大大,你好: 这边是腾讯优图实验室给你的邮件,我是腾讯优图实验室的方案架构师,新源 目前我们研发出了一款AI视觉模组叫做VisionSeed,是一款提供AI算法+算 ...

  5. 腾讯优图吴永坚:迈向深度学习,我们面临模型训练与推荐的双重考验

    整理 | 琥珀 出品 | AI 科技大本营 对腾讯优图的发展历程,吴永坚表示,优图是非常幸运的,幸运的同时也知道优图选对了方向,只要坚持,还是会有收获的. 12 月 15 日,以"新趋势.新 ...

  6. 腾讯优图|人脸3D重建与渲染技术研究与应用

    编辑丨腾讯优图AI开放平台 6月5日-6日,2021全球人工智能技术大会(GAITC 2021)在杭州成功举办.本次大会,旨在汇聚中国科创智慧与活力的同时,与世界建立互通共享的沟通桥梁,在交流中探索共 ...

  7. 2018,这一年的腾讯优图,我们总结一下!

    2018,腾讯年满20,恰逢弱冠: 2018,巨头持续布局AI,可谓"落地生花"的一年. 毋庸置疑,腾讯也"玩"AI,最具代表性的,就是"玩出&quo ...

  8. CVPR 2021 | 腾讯优图20篇论文入选,含人脸识别、时序动作定位、视频动作分割等领域...

    编辑丨腾讯优图AI开放平台 计算机视觉世界三大顶会之一的CVPR 2021论文接收结果出炉!本次大会收到来自全球共7015篇有效投稿,最终有1663篇突出重围被录取,录用率约为23.7%.本次,腾讯优 ...

  9. 腾讯优图提出LAP无监督多视角人脸3D重建算法,高清还原面部细节

    编辑丨腾讯优图AI开放平台 近日,腾讯优图实验室提出无监督多视角人脸3D重建算法LAP(Learning to Aggregate and Personalize),摆脱人脸3D训练样本真值依赖,高清 ...

最新文章

  1. vim末行模式下相关操作+配置文件
  2. 深度剖析开源分布式监控CAT
  3. 品质标签分几种颜色_常见标签种类分析
  4. mysql循环建表_MySQL循环建表和结合两表的update
  5. unity项目对音效的优化处理
  6. Docker for Mac配置阿里加速器
  7. 如何使用MATLAB绘制平滑曲线
  8. 用hb编辑一个html,HBuilder:一个不错的web前端IDE(代码编辑器)
  9. 基于FPGA的超声成像算法的硬件设计
  10. 在centos中运行出现错误:cannot find -lbz2
  11. android 8.1 wifi感叹号,Android 网络图标上的感叹号(更新Android 7.1.1/Android 8)
  12. 【技能积累】写邮件时的常用表达
  13. 微带滤波器摘要_微带交指滤波器的设计
  14. 植树节种树-第12届蓝桥杯Scratch选拔赛真题精选
  15. python-turtle 小发现
  16. Lib之过?Java反序列化漏洞通用利用分析
  17. 【OMNET++】OMNET如何开启Debug调试
  18. 鹅厂程序员:世界这么大,我想去看看。鹅厂那么好,我想再回来
  19. 开发技术-修正二维码白边
  20. PU-Learning 原理介绍

热门文章

  1. CCG合约交易:2022 年第三季度最值得关注的 NFT 项目
  2. 目标定位跟踪系统概述
  3. solidity智能合约面试题
  4. Sandcastle Help File Builder 说明文档
  5. HTTP1.1(十三)浏览器为什么要有同源策略
  6. 布局检测与优化(一):布局层级优化
  7. 雅虎更名Altaba重回纳斯达克
  8. 八卦와 五行의 關係
  9. c语言递归求乘法口诀表,1一9的乘法口诀表
  10. oracle查询重复保留一条-删除,Oracle查询重复数据并删除,只保留一条记录