【消失了800年之后突然跳出来】实时手势识别学习笔记0-环境搭建

为了完(ying)成(fu)HCI的项目,报了两位大佬的大腿,打算借此机会学习一下手势识别。

第0篇当然是进行环境搭建了~(因为可以凑出来一篇内容)

好了来看一下项目概要和环境要求:

项目概要

这次的项目是我HCI课程的项目的一部分,主要目的是通过一个摄像头实现实时的手势识别

为什么只写项目的一部分呢?因为项目除了手势识别还要干什么还没想好(逃

有可能是实现一个小游戏吧

咳咳说远了,回到我们的主题

既然是使用摄像头的手势识别,肯定要基于低分辨率(毕竟现在主流的电脑摄像头基本上都是1到2MP的),并且是2D的图像,那么就会想到采用OpenCV来进行录制。

其次,为了进行训练,当然要采用主流的(至少是我很喜欢使用的)Tensorflow框架。

项目环境

既然上面都说到了主要利用到的包,那么就列一下:

  • OpenCV,版本2.4.13.6,是CV2的最新版(截止时间为2018年5月1日,下同)
  • Python,版本3.6.5(采用了Anaconda 3 x64发行版,便于管理更多需要的包)
  • Tensorflow-GPU,版本1.8.0

其他可能用到的包(直接使用Anaconda管理)

因为我的项目还没有完成,我不太确定是否还会增加别的包,就目前来看,使用Anaconda来管理下面的包都是没有问题并且非常方便的(Anaconda是不是考虑给我发点钱?)

  • Numpy,版本1.14.3

    NumPy是Python语言的一个扩充程式库。支援高阶大量的维度阵列与矩阵运算,此外也针对阵列运算提供大量的数学函数函式库。NumPy的前身Numeric最早是由Jim Hugunin与其它协作者共同开发,2005年,Travis Oliphant在Numeric中结合了另一个同性质的程式库Numarray的特色,并加入了其它扩充功能而开发了NumPy。NumPy为开放原始码并且由许多协作者共同维护开发。

注:介绍引用自维基百科,本人不对从其引用的内容的准确性作任何保证,侵删,下同。

  • Matplotlib,版本2.2.2

    matplotlib 是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了应用程序接口(API)。此外,matplotlib还有一个基于图像处理库(如开放图形库OpenGL)的pylab接口,其设计与MATLAB非常类似–尽管并不怎么好用。SciPy就是用matplotlib进行图形绘制。matplotlib最初由John D. Hunter撰写,它拥有一个活跃的开发社区,并且根据BSD样式许可证分发。 在John D. Hunter2012年去世前不久,迈克尔Droettboom被提名为matplotlib的主要开发者。截至到2015年10月30日,matplotlib 1.5.x支持Python 2.7到3.5版本。 Matplotlib 1.2是matplotlib的第一个版本,支持Python 3.x. Matplotlib 1.4是matplotlib支持Python 2.6的最后一个版本。

环境安装

Python (Anaconda)

Anaconda 是一种Python语言的免费增值开源发行版,用于进行大规模数据处理, 预测分析, 和科学计算, 致力于简化包的管理和部署。 Anaconda使用软件包管理系统Conda进行包管理。

Anaconda 的使用非常简单,只需要安装后就可以使用对应的环境。直接从https://www.anaconda.com下载需要的发行版,使用GUI安装即可。本文及其系列均采用Anaconda 3 x64作为默认的Python环境。


Tensorflow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。TensorFlow最初由Google Brain团队开发,用于Google的研究和生产,于2015年11月9日在Apache 2.0开源许可证下发布。

由于我的训练用计算机使用了nVidia GTX 1080 8GB显卡,所以可以采用使用GPU进行计算的Tensorflow框架,使用GPU的好处是速度会快很多(根据我以往经验判断大致可以比CPU版本快两个数量级)。

1. 安装CUDA (限GPU版)

使用GPU版的Tensorflow需要计算机安装有一张以上的nVidia的GPU,并且Compute Capability不低于3.0(可以通过https://developer.nvidia.com/cuda-gpus查看GPU是否符合要求)。

可以看到我的GTX1080的Compute Capability 是6.1,可以使用CUDA和GPU版Tensorflow。

然后安装CUDA9.0。从https://developer.nvidia.com/cuda-90-download-archive下载CUDA 9.0(9.1版本不太确定能否兼容)。安装后在命令行输入

nvcc -V

(注意-V要大写)检查是否安装了CUDA。

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:08:12_Central_Daylight_Time_2017
Cuda compilation tools, release 9.1, V9.1.85

根据这个提示信息可以知道我这里已经安装好了9.1.85的CUDA(我的电脑上9.0和9.1是共存的),所以CUDA已经安装完成了。

2. 安装cuDNN(仅限GPU版)

安装完CUDA后还需要安装cuDNN。

访问https://developer.nvidia.com/cudnn后注册nVidia Developer帐号,然后下载对应CUDA版本的cuDNN,将下载解压后的cuda文件夹中的内容放到

X:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\版本号,X是CUDA的安装分区

对应文件夹下即可。

3. 安装Tensorflow(使用pip)

因为安装了Anaconda,所以这一步就很简单了。

打开Anaconda命令行(在开始菜单Anaconda文件夹下),输入:

pip install tensorflow-gpu

即可开始安装。

如果提示更新pip,请根据提示进行操作。在安装过程中有可能需要为pip指定--ignore-installed参数

安装完成后,在命令行下输入

python

进入python环境,然后执行下面的代码测试tensorflow的安装情况:

import tensorflow as tf
hello = tf.constant('hello, world')
sess = tf.Session()
sess.run(hello)
sess.close()

如果你看到类似的输出:

2018-05-08 03:34:12.038568: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2018-05-08 03:34:12.495307: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1356] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.7335
pciBusID: 0000:06:00.0
totalMemory: 8.00GiB freeMemory: 6.60GiB
2018-05-08 03:34:12.508107: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1435] Adding visible gpu devices: 0
2018-05-08 03:34:14.156435: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-05-08 03:34:14.164752: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:929]      0
2018-05-08 03:34:14.168988: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:942] 0:   N
2018-05-08 03:34:14.173767: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6379 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080, pci bus id: 0000:06:00.0, compute capability: 6.1)

和:

b'hello'

那么Tensorflow就已经安装完毕了。


OpenCV

起初我打算直接使用Anaconda安装OpenCV,但是没有找到很好的方法,因为Anaconda3默认会安装OpenCV3。所以使用了下面的方法:

访问https://opencv.org/releases.html,下载2.4.13.6下的Win pack,解压后找到cv2.pyd,解压到Anaconda安装目录的

Anaconda安装目录\Lib\site-packages

下,然后进入Anaconda命令行并进入python环境,输入

import cv2

如果没有报错,则OpenCV安装成功。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据