Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >体感游戏 | 手势识别玩飞机大战游戏(四) 使用深度学习实现手势识别玩飞机大战游戏

体感游戏 | 手势识别玩飞机大战游戏(四) 使用深度学习实现手势识别玩飞机大战游戏

作者头像
Color Space
发布于 2021-01-22 02:25:13
发布于 2021-01-22 02:25:13
2K00
代码可运行
举报
运行总次数:0
代码可运行
后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是:
  • 使用Pygame实现简易飞机大战小游戏
  • 使用Python+OpenCV实现简单手势识别
  • 使用OpenCV实现手势识别玩飞机大战游戏
  • 使用深度学习实现手势识别玩飞机大战游戏

今天是第四部分:使用深度学习实现手势识别玩飞机大战游戏的功能。这里标题我把TensorFlow实现改为了深度学习实现,这里识别手势主要用到的是目标检测,当然不止TensorFlow可以实现,其他能够做到实时的目标检测网络也很多,比如最近比较火的YoloV4/V5。这里演示我为了方便,就用我以前训练好的SSD手势识别模型,你只需要使用下面的代码,加载模型就可以测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
import sys
import tarfile
import cv2
import tensorflow as tf
import numpy as np

from utils import label_map_util
from utils import visualization_utils as vis_util

# Path to frozen detection graph. This is the actual model that is used for the object detection.
PATH_TO_FROZEN_GRAPH = './export/frozen_inference_graph_ssd.pb'

# List of the strings that is used to add correct label for each box.
PATH_TO_LABELS = os.path.join('./data', 'hands_label_map.pbtxt')

NUM_CLASSES = 3
   
detection_graph = tf.Graph()
with detection_graph.as_default():
  od_graph_def = tf.GraphDef()
  with tf.gfile.GFile(PATH_TO_FROZEN_GRAPH, 'rb') as fid:
    serialized_graph = fid.read()
    od_graph_def.ParseFromString(serialized_graph)
    tf.import_graph_def(od_graph_def, name='')

label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
categorys = label_map_util.convert_label_map_to_categories(label_map,max_num_classes=NUM_CLASSES,use_display_name=True)
categorys_index = label_map_util.create_category_index(categorys)

config = tf.ConfigProto()
config.gpu_options.allow_growth = True

cap = cv2.VideoCapture(0)
#cap = cv2.VideoCapture("xxx.mp4")

with detection_graph.as_default():
  with tf.Session(graph=detection_graph,config=config) as sess:
    #image = cv2.imread("./VOC2012/JPEGImages/700.jpg")
    while True:
      start = cv2.getTickCount()
      ret,image = cap.read()
      image_np_expanded = np.expand_dims(image,axis = 0)
      image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
      boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
      scores = detection_graph.get_tensor_by_name('detection_scores:0')
      classes = detection_graph.get_tensor_by_name('detection_classes:0')
      num_detections = detection_graph.get_tensor_by_name('num_detections:0')
      (boxes,scores,classes,num_detections) = sess.run([boxes,scores,classes,\
                                num_detections],feed_dict={image_tensor:image_np_expanded})
      vis_util.visualize_boxes_and_labels_on_image_array(
        image,
        np.squeeze(boxes),
        np.squeeze(classes).astype(np.int32),
        np.squeeze(scores),
        categorys_index,
        min_score_thresh = 0.5,
        use_normalized_coordinates = True,
        line_thickness = 5  
        )
    
      end = cv2.getTickCount()
      use_time = (end - start) / cv2.getTickFrequency()
      print("use_time:%0.3fs" % use_time)
      strText = ("SSD one frame use_time: %0.3fs" % use_time)
      cv2.putText(image,strText,(5,30),cv2.FONT_HERSHEY_SIMPLEX,0.7,(0,255,0),2)
      cv2.imshow("object_detection", image)
      if cv2.waitKey(1)&0xFF ==27:
        break
cv2.destroyAllWindows()

上面是用TensorFlow Object Detection API训练的SSD手势识别模型,训练步骤网上很多参考文章,当然这里可以替换为YoloV4或者YoloV5,识别的时候可以使用GPU加速或者OpenVINO CPU加速。

用深度学习目标检测的方法和OpenCV传统方法识别的优缺点这里做个简单说明:

OpenCV手势识别优缺点:

  • 优点 :灵活、简单、省时。在允许情况下做简单算法设计即可达到较好的效果,不用花长时间标注样本和训练;
  • 缺点:对环境(光照,背景等)适应性差。

深度学习目标检测手势识别优缺点:

  • 优点:对环境(光照,背景等)适应性好---前提是样本足够丰富足够多 可以使用硬件加速;
  • 缺点:耗费时间长(包括标注时间、训练时间和调参优化等)

所以总体来说,各有优缺点,根据实际情况来使用,我们工作中一般能使用传统算法解决的尽量不用深度学习,看大家自己的应用场景决定吧。

剩余的步骤就和上篇文章一样了,讲手势识别部分用目标检测的方法代替即可,源码前面的文章都有,大家自己组合整理一下就可以用,有兴趣可以自行优化。

如果您看到这,相比也算是本公众号的真爱粉了,下面做一个简单调研活动,我想了解下大家比较希望看到在公众号更新哪些内容呢?可以投票或留言回复,我会根据投票和留言点赞数尽量多更新相关文章,谢谢。

觉得有用,麻烦给个赞和在看~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV与AI深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
行人检测--OpenCV与TensorFlow SSD对比
OpenCV行人检测我们使用HOG特征提取+SVM训练,使用默认API检测,详细了解可参考:https://zhuanlan.zhihu.com/p/75705284
Color Space
2020/01/13
3.4K0
行人检测--OpenCV与TensorFlow SSD对比
深度学习入门篇--手把手教你用 TensorFlow 训练模型
该文介绍了如何使用TensorFlow实现YOLO v2神经网络模型对图像进行分类,并给出了代码示例和训练过程的详细步骤。
付越
2017/10/16
10K2
深度学习入门篇--手把手教你用 TensorFlow 训练模型
tensorflow object detection API使用之GPU训练实现宠物识别
之前写过几篇关于tensorflow object detection API使用的相关文章分享,收到不少关注与鼓励,所以决定再写一篇感谢大家肯定与支持。在具体介绍与解释之前,首先简单说一下本人测试与运行的系统与软件环境与版本
OpenCV学堂
2019/11/13
2.5K1
体感游戏 | 手势识别玩飞机大战游戏(一) 用pygame实现飞机大战小游戏
今天是第一部分:使用Pygame实现简易飞机大战小游戏。你可能会问我不会pygame怎么办?这个问题,以前买我Python OpenCV相关课程的学员我都是这么回答的,用到什么学什么,因为Python OpenCV中用到的Python知识点并不多,跟着视频不会的百度查一查就会用了,他们也顺利学完了课程。同样的,你想做的只是一个pygame的飞机大战小游戏而已,还是简易的,网上搜搜资料或者视频教程,完全可以做出来,这里贴一个视频教程,手把手教你做飞机大战游戏,B站搜索关键字pygame:
Color Space
2021/01/08
1.3K0
基于OpenCV与tensorflow实现实时手势识别
基于OpenCV与tensorflow object detection API使用迁移学习,基于SSD模型训练实现手势识别完整流程,涉及到数据集收集与标注、VOC2012数据集制作,tfrecord数据生成、SSD迁移学习与模型导出,OpenCV摄像头实时视频流读取与检测处理,整个过程比较长,操作步骤比较多,这里说一下主要阶段与关键注意点。
OpenCV学堂
2018/09/29
5.6K1
基于OpenCV与tensorflow实现实时手势识别
ubunu16.04 TensorFlow object detection API 应用配置
TensorFlow object detection API应用–配置 主要参考 : https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md https://www.cnblogs.com/zongfa/p/9662832.html
用户1148525
2019/05/26
6070
视频目标检测识别
之前文章目标检测API 已经介绍过API的基本使用,这里就不赘述了,直接上本次内容的代码了,添加的内容并不多。将测试的test.mp4原文件放到models-master\research\object_detection路径下,并创建一个detect_video.py文件,代码内容如下:
全栈程序员站长
2022/06/30
1.5K0
视频目标检测识别
使用TensorFlow一步步进行目标检测(5)
本教程进行到这一步,您选择了预训练的目标检测模型,转换现有数据集或创建自己的数据集并将其转换为TFRecord文件,修改模型配置文件,并开始训练模型。接下来,您需要保存模型并将其部署到项目中。
云水木石
2019/07/01
5880
使用TensorFlow一步步进行目标检测(5)
利用Tensorflow构建自己的物体识别模型(一)
利用Tensorflow训练搭建自己的物体训练模型,万里长征第一步,先安装tensorflow。
月小水长
2019/07/31
6620
利用Tensorflow构建自己的物体识别模型(一)
Tensorflow Object Detection API 终于支持tensorflow1.x与tensorflow2.x了
基于tensorflow框架构建的快速对象检测模型构建、训练、部署框架,是针对计算机视觉领域对象检测任务的深度学习框架。之前tensorflow2.x一直不支持该框架,最近Tensorflow Object Detection API框架最近更新了,同时支持tensorflow1.x与tensorflow2.x。其中model zoo方面,tensorflow1.x基于COCO数据集预训练支持对象检测模型包括:
OpenCV学堂
2020/09/08
1.2K0
Tensorflow Object Detection API 终于支持tensorflow1.x与tensorflow2.x了
使用Tensorflow Object Detection API实现对象检测
Tensorflow Object Detection API自从发布以来,其提供预训练模型也是不断更新发布,功能越来越强大,对常见的物体几乎都可以做到实时准确的检测,对应用场景相对简单的视频分析与对象检测提供了极大的方便与更多的技术方案选择。tensorflow object detection提供的预训练模型都是基于以下三个数据集训练生成,它们是:
OpenCV学堂
2018/07/26
1.2K0
使用Tensorflow Object Detection API实现对象检测
第四课:模型的使用
上一节我们创建了模型对象,也导入了测试集,可以说实现了一个简单机器学习的apk环境和核心代码。这一节我们一起看下开发一个完整的人工智能应用程序需要哪些步骤和代码。在详细分析代码之前我们先稍微看下有关 TensorFlow 的一些简单概念。 模型的一些概念 一个 TensorFlow 的计算任务叫做 Graph,一个 Graph 由很多节点(Op)组成, Op 通过 Tensor 获取输入,Op 完成计算以后再通过 Tensor 把输出传递到下一个节点。 Tensor 一般来说是一个数组(1 维或多维),
企鹅号小编
2018/01/25
6670
体感游戏 | 手势识别玩飞机大战游戏(三) 使用OpenCV实现手势识别玩飞机大战游戏
今天是第三部分:使用OpenCV实现手势识别玩飞机大战游戏的功能。前面的两篇文章我们已经介绍了使用Pygame实现一个简易的飞机大战游戏以及使用Python+OpenCV实现简单手势识别。那么,实现手势识别来玩飞机大战游戏就是把它们两部分组合起来,听起来很简单,让我们一起实现它吧。
Color Space
2021/01/22
2.1K0
tensorflow object detection API 详细实践教程
最近由于研究方向的更换,接触到了目标检测(Object Detection)领域,觉得很有意思,并且阅读了该方向的相关经典文献,包括Fast-RCNN、Faster-RCNN、SSD、YOLO以及RetinaNet等。复现别人代码并且能够得到在公开数据集上和原作者相近甚至相同的实验结果对于我们做研究甚至以后的工作来说是至关重要的。
狼啸风云
2022/06/06
8050
tensorflow object detection API 详细实践教程
体感游戏 | 手势识别玩飞机大战游戏(二) Python+OpenCV实现简易手势识别功能
今天是第二部分:Python+OpenCV实现简易手势识别功能。简易的手势识别,所以功能也很简单,识别手势1~5就行,当然我们控制飞机时只需要用到最多3个手势:发射子弹、向左移动和向右移动。所以1~5够用了,当然你也可以用手势的移动方向来控制飞机的移动方向,只需要计算手势轮廓的重心位置变化即可。
Color Space
2021/01/08
2.8K0
TensorFlow2.x目标检测API测试代码使用演示
TensorFlow2.x Object Detection API 的安装与配置可参考前面的两篇文章:
Color Space
2020/11/09
2.1K0
TensorFlow2.x目标检测API测试代码使用演示
Python 数据科学入门教程:TensorFlow 目标检测
你好,欢迎阅读 TensorFlow 目标检测 API 迷你系列。 这个 API 可以用于检测图像和/或视频中的对象,带有使用边界框,使用可用的一些预先训练好的模型,或者你自己可以训练的模型(API 也变得更容易)。
ApacheCN_飞龙
2022/12/01
1.6K0
Python 数据科学入门教程:TensorFlow 目标检测
第四课:模型的使用
上一节我们创建了模型对象,也导入了测试集,可以说实现了一个简单机器学习的apk环境和核心代码。这一节我们一起看下开发一个完整的人工智能应用程序需要哪些步骤和代码。在详细分析代码之前我们先稍微看下有关 TensorFlow 的一些简单概念。 模型的一些概念 一个 TensorFlow 的计算任务叫做 Graph,一个 Graph 由很多节点(Op)组成, Op 通过 Tensor 获取输入,Op 完成计算以后再通过 Tensor 把输出传递到下一个节点。 Tensor 一般来说是一个数组(1 维或多维),我们
刘盼
2018/03/16
6510
第四课:模型的使用
Mask-RCNN模型的实现自定义对象(无人机)检测
打开标注工具PixelAnnotation 选择好dataset路径之后,顺序开始标注数据即可!
OpenCV学堂
2019/08/09
1.9K2
Mask-RCNN模型的实现自定义对象(无人机)检测
实战:基于深度学习的道路损坏检测
道路基础设施是一项重要的公共资产,因为它有助于经济发展和增长,同时带来重要的社会效益。路面检查主要基于人类的视觉观察和使用昂贵机器的定量分析。这些方法的最佳替代方案是智能探测器,它使用记录的图像或视频来检测损坏情况。除了道路INFR一个结构,道路破损检测器也将在自主驾驶汽车,以检测他们的方式有些坑洼或其他干扰,尽量避免他们有用。
小白学视觉
2022/09/28
1.2K0
推荐阅读
相关推荐
行人检测--OpenCV与TensorFlow SSD对比
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验