用香蕉也能玩电脑游戏—Tensorflow对象检测接口的简单应用

Tensorflow最近发布了用于对象检测的对象检测接口(Object Detection API),能够定位和识别图像中的对象。它能够快速检测图像允许从视频帧甚至网络摄像头进行连续检测。它也可以用于构建鼠标“Tensormouse”,一个使用网络摄像移动光标的应用程序。

你是否曾经想过使用其他物品比如香蕉来移动你的光标?我们现在就可以实现!

TensorMouse是一个小型的开源Python应用程序,它允许你通过在网络摄像头前移动任意物品(如杯子,苹果或香蕉)来移动光标,他可以做电脑鼠标或触控板的替代品。

TensorMouse允许你用香蕉玩游戏

它是如何工作的?

TensorMouse记录来自网络摄像头的图像序列。然后将这些数据输入到Tensorflow对象检测接口中,返回对象的概率和位置的图。然后移动鼠标光标,使光标位置与图像上对象的位置对应。

例如,如果在图像的左上角检测到对象,光标将移动到屏幕的左上角。

应用程序的主要部分按顺序重复以下步骤:

1.使用OpenCV从网络摄像头进行单帧采集

2.使用Tensorflow对象检测接口进行对象检测

3.根据检测到的对象位置移动鼠标光标

帧采集

使用Python OpenCV模块捕获来自网络摄像头的帧。它提供了一个跨平台的工具,用于快速的图像采集和缩放。然后将图像缩放到360p以提高性能。

对象检测

对象检测用于确定网络摄像头框中所需对象的相对位置。它使用在COCO数据集上训练的Tensorflow对象检测接口固有的Mobilenet神经网络图。该数据集由80个不同的对象组成,主要包括杯子,苹果,餐具等家用物品。

检测到的具有带有相应概率的对象

如果检测到的对象相应的概率超过指定的阈值(一般为85%),则TensorMouse会将该对象视为检测对象,并计算检测到对象的方框的中心。

3.移动鼠标光标

Python包的pynput为执行鼠标指针的移动提供了跨平台支持。基于检测到的对象的相对位置将光标移动到该位置。意思是如果在图像的左上角检测到物体,光标将移动到屏幕的左上角。

应用程序然后返回到步骤1以从网络摄像头检索下一个图像并重复此过程。

如何使用它

应用程序的源代码发布在我的Gitlab repo中。

地址:https://github.com/tadejmagajna/TensorMouse

TensorMouse可以在任何主流的(Windows,Linux或MacOS)平台和几乎任何机器上运行,但是要实现良好的帧速率,它需要一个好点的CPU或支持CUDA的显卡。

安装

安装时要确保包依赖关系都已安装好。

1.安装Anaconda(我推荐安装它的变种Miniconda)

2.从Gitlab复制TensorMouse

3.打开终端并导航到项目根目录

4.conda env create -f environment.yml(Linux / MacOS)或conda env create -f environment-win.yml(Windows)

5.source activate tensormouse(Linux / MacOS)或activate tensormouse(Windows)

运行TensorMouse

一旦安装了依赖项并激活环境,我们可以简单地运行TensorMouse:

python tensormouse.py

然后等待约10-20秒,会有绿色消息显示Tensormouse成功启动。这将运行Tensormouse跟踪其默认对象—杯子。但是你可以通过提供可选参数(obect=”OBJECTNAME”)使其与80个COCO数据集对象中的任意一个配合使用。你还可以使用CTRL和ALT执行点击和拖动。

使用说明

  • 确保光线充足(Tensormouse在光线不好的情况下表现欠佳)
  • 需要对象保持与摄像头的距离,既不能太近导致占用整个摄像头帧,也不能太远导致检测不到
  • 如果你的对象检测性能较差,请尝试运行应用程序设置让它来检测杯子,它检测杯子时还是挺准的

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

聊天机器人还能这么玩!教你用 Tensorflow 搭建能理解语境的客服小二!

掌握对话沟通,语境为王。 我们将使用Tensorflow构建一个聊天机器人框架,向大家示范如何实现上下文的语境处理。 ? 有没有想过为什么大多数聊天机器人缺乏会...

4605
来自专栏大数据挖掘DT机器学习

一个强化学习 Q-learning 算法的简明教程

本文是对 http://mnemstudio.org/path-finding-q-learning-tutorial.htm 的翻译,共分两部分,第一部分为...

4618
来自专栏IT派

使用 Pandas 处理亿级数据

在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章《别老扯什么Hadoop了,你的数据根本不够大》指出:只有在超过5TB数据量的规模下,Hado...

1034
来自专栏大数据挖掘DT机器学习

Python文本挖掘:基于共现提取《釜山行》人物关系

《釜山行》是一部丧尸灾难片,其人物少、关系简单,非常适合我们学习文本处理。这个项目将介绍共现在关系中的提取,使用python编写代码实现对《釜山行》文本的人物关...

3547
来自专栏刁寿钧的专栏

10分钟梳理关系数据库基础知识(五):查询优化与连接算法

本文是《十分钟入门关系型数据库》系列技术文章的第五篇,主要介绍了数据库的查询优化和连接的算法与代价。

3320
来自专栏编程

python3百度指数抓取

分类:python 作者:TTyb文章发表于 2016-11-12 百度指数抓取,再用图像识别得到指数前言: 土福曾说,百度指数很难抓,在淘宝上面是20块1个关...

23210
来自专栏云计算教程系列

如何在Ubuntu 14.04第2部分上查询Prometheus

Prometheus是一个开源监控系统和时间序列数据库。在如何在Ubuntu 14.04第1部分中查询Prometheus,我们设置了三个演示服务实例,向Pro...

490
来自专栏小狼的世界

使用Numpy验证Google GRE的随机选择算法

最近在读《SRE Google运维解密》第20章提到数据中心内部服务器的负载均衡方法,文章对比了几种负载均衡的算法,其中随机选择算法,非常适合用 Numpy 模...

982
来自专栏大数据挖掘DT机器学习

使用Python Pandas处理亿级数据

原文:http://www.justinablog.com/archives/1357?utm_source=tuicool&utm_medium=refer...

3387
来自专栏数据分析

[数据清洗]-Pandas 清洗“脏”数据(一)

概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 ...

7897

扫码关注云+社区