DFace是基于Pytorch实现的开源中国推荐的人脸检测和人脸识别的项目。https://www.oschina.net/p/dface
项目地址:
[title]本文背景[/title]首先需要明确的是DFace是基于Pytorch框架实现的,而Pytorch官网是没有Windows的运行环境的,但是通过譬如Docker、Conda等工具的帮助是可以在Window运行该框架,但是痛点就是绝大多数不支持GPU!不支持GPU!不支持GPU!虽然DFace可以只使用CPU来运行,但是效率上还是伤不起,所以本篇文章就应运而生。
本文拟打算从以下几个方面着手:
- Windows64系统如何通过conda安装支持GPU的Pytorch框架
- Anaconda的安装
- conda环境(支持GPU的Pytorch框架)的创建
- conda的简单使用和测试是否搭建成功
- 题外话,加一行代码安装支持GPU的TensorFlow
- DFace如何在Windows64环境下使用GPU运行
- PYTHONPATH路径的设置
- DFace源码的简单修改
本文主要面向不熟悉Python以及环境迁移搭建的人,文中如有错误还望指出,在此先谢过了。
[title]Windows64系统如何通过conda安装支持GPU的Pytorch框架[/title]一、Anaconda的安装
1、安装前的准备(CUDA Toolkit 8.0 + Cudnn)
这个过程可能不必要,笔者还未尝试。
CUDA Toolkit 8.0 - Feb 2017安装
安装包下载链接 : https://developer.nvidia.com/cuda-80-ga2-download-archive
我的电脑环境 : Window10 + Nvidia GTX850M
所以我选择的安装包如下 :
每个人根据个人电脑的情况选择对应的安装包下载安装,注意一定要下载Cuda Toolkit8.0的,推荐GPU支持的Tensorflow安装详解,需要用到 Cuda Toolkit8.0
安装时,按照默认设置一直安装下去即可。
下载配置cuDNN v6.0 Library
安装包下载地址 : https://developer.nvidia.com/rdp/cudnn-download
上面的地址需要Nvidia的账号登录才能下载,没有账号的可以下载一个。
根据自己的系统选择下面两个压缩包中的其中一个:
再次强调,一定要下载 V6.0版本的!
本地电脑下载文件名 : cudnn-8.0-windows10-x64-v6.0.zip
配置步骤 :
- 将cudnn-8.0-windows10-x64-v6.0.zip解压
- 将解压得到的文件目录cuda拷贝到自己电脑的自定义位置,我存放到D:\Tools目录下了
- 添加环境变量
- 添加路径 : 路径1 D:\Tools\cuda\bin 路径2 D:\Tools\cuda\lib\x64
- 步骤 : 右键我的电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 系统变量 --> 添加路径到Path变量
2、Anaconda3安装包下载
- 安装包名称 : Anaconda3-5.0.1-Windows-x86_64_2.exe 大小 : 514 MB (539,829,832 字节)
- Anaconda官网 : 链接
Anaconda官方下载(龟速): 链接- Anaconda清华镜像下载(推荐) : 链接
3、安装
- 双击安装包
- 点击Next
- 点击I Agree
- 上面的单选框选择 All Users(requires admin privileges) , 点击Next
- 选择安装路径,我的安装路径为 D:\Tools\Anaconda3 ,点击Next
- 上面的复选框默认,点击Install
- 一直Next直到结束
- 安装完成后,添加Anaconda3目录下的Scripts目录所在路径到环境变量,添加方法如cuda添加一致,我添加的路径为D:\Tools\Anaconda3\Scripts
4、验证安装是否成功
- win + R -- > cmd 进入DOS 环境下
- 输入 conda --version
- 一般来说,显示conda的版本号譬如
conda 4.3.30
即为安装成功
二、conda环境(支持GPU的Pytorch框架)的创建
1、资源的下载
.yml文件的下载
下载地址 : https://anaconda.org/HelloStranger/ai_gpu/2017.12.22.2032/download/environment-win64.yml
DFace根目录下也存在 environment-win64.yml 文件
离线Pytorch的下载
文件名称 : pytorch-0.3.0-py36_0.3.0cu80.tar.bz2
因为anaconda下载比较慢的原因,现在先把大文件下载到本地 :
百度云 : 链接:https://pan.baidu.com/s/1miKgoRI 密码:8u21
2、Conda环境安装
首先,Conda添加清华TUNA镜像源
目的 : 提升包的下载速度
- conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- conda config --set show_channel_urls yes
上面两个命令用于添加,下面的用于验证添加是否成功
- conda config --show
输入的语句中应该会有下面一段文字 :
channel_priority: True channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - defaults
其次,把.yml中的Pytorch包的下载设为离线
- 进入DOS命令行并进入 pytorch-0.3.0-py36_0.3.0cu80.tar.bz2文件所在的目录
- 命令 :
conda install numpy mkl cffi
- 断开网络连接,断网
- 命令 : conda install --offline pytorch-0.3.0-py36_0.3.0cu80.tar.bz2
上述命令不用进入pytorch文件目录也行,在最后一句命令中,conda install --offline 文件的绝对路径
,对应我的命令即为conda install --offline H:\pytorch-0.3.0-py36_0.3.0cu80.tar.bz2
,记住一定要断网,不断网会报错,最后一个命令要等十几秒或者几十秒的时间。
最后,安装.yml环境
- DOS下进入environment-win64.yml所在目录,如我的文件路径为G:\environment-win64.yml
- G:\>
conda env create -f environment-win64.yml
或者直接使用.yml的绝对路径
conda env create -f <.yml文件绝对路径>
漫长的等待ing,终于安装成功
三、Conda的简单使用和测试是否搭建成功
检测Pytorch是否支持GPU
一段简单测试CUDA和cuDNN是否正常工作的代码:
#CUDA TEST 测试CUDA import torch x = torch.Tensor([1.0]) xx = x.cuda() print(xx) #cuDNN TEST from torch.backends import cudnn print(cudnn.is_acceptable(xx))
详细命令行如图 :
如果上面的测试不通过的话,那就不能用使用cuda()将模型和数据通过GPU进行加速了。而cuDNN不能正常工作,那就使用如下代码关掉它 :
cudnn.enable =False
Conda的简单使用
四、加一行代码安装支持GPU的TensorFlow
安装 :
activate ai_gpu
-
pip install --ignore-installed --upgrade tensorflow-gpu
验证是否安装成功
键入python
>>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> print(sess.run(hello))[title]DFace如何在Windows64环境下使用GPU运行[/title]
一、添加PYTHONPATH环境变量
将下载的DFace源码目录下的src目录所在路径添加入PYTHONPATH环境变量:(我的项目路径为 E:\PycharmProjects\DFace)
- <项目绝对路径>\DFace\src
- <项目绝对路径>\DFace\src\core
我的环境路径为 :
E:\PycharmProjects\DFace\src;E:\PycharmProjects\DFace\src\core;
二、ai_gpu环境下DOS进入DFace根目录
如图 :
三、修改代码尝试运行
初步运行DFace的命令为 : python test_image.py
因为项目使用的代码为Python2.7,但我们安装的环境Python版本为3.6所以要修改输出语句的代码
其次是由于Python路径的问题,还要不断地运行Dface根据报错修改路径问题
具体过程就不赘述 : 主要修改的是下面几个文件的路径
test_image.py中import改为
import cv2 from src.core.detect import create_mtcnn_net, MtcnnDetector import src.core.vision as vision
detect.py 中import改为
import cv2 import time import numpy as np import torch from torch.autograd.variable import Variable from src.core.models import PNet,RNet,ONet import src.core.utils as utils import src.core.image_tools as image_tools
model_store文件中的三个.pt文件,去DFace的qq群里面下载,qq群见GitHub
注意test_image.py中三个.pt文件的引入路径和名称不一样
修改后在该环境可运行的代码 : https://github.com/SDUmzg/DFace-win64
四、放一张运行成功的图
假如想自己训练模型的话:可以看下我这个文章deep-learning-simple-knowledges,里面都是深度学习的一些数据集的下载网址。
[title]后记[/title]现在还记得刚开始学习编(搬)程(砖)的时候,许多很好的idea或者很有兴趣的东西都想去尝试,但是做起来才发现好多事情就直接卡在了环境的搭建和配置上,知道那种滋味的不好受,所以我决定一点一点的把这些东西写上去,当我重新review这篇文章的时候,竟然发现全是废话,废话,废话,但我希望这些废话也可以帮助到苦于自身资源和环境问题但对DFace乃至其他使用到GPU支持的Pytorch、TensorFlow的同学。
还有欢迎大家加入DFace的QQ交流群 : 681403076
群主很帅,很帅,很帅,有兴趣的盆友可以加进去撩撩。
最后,说一下后续的打算 :
- 将conda环境打包成包,后期可以直接一条命令安装,省去下载这一步骤
- 由于我现在对DFace的核心代码、逻辑、算法也不是很了解,故后续可能写点DFace这方面的东西
- 打算持续跟进DFace项目,及时由Python2.7向Python3.6做修改
- 我还是个没毕业的萌新啊,希望大家明确指出不足和错误,我脸皮厚,越说我越高兴。
圣诞节快到了,希望大家开心啊。
本文环境移植的主要参考文章: https://zhuanlan.zhihu.com/p/30954018 十分感谢作者!
文章评论
请问一下,先通过离线方式安装Pytorch,然后导入ai_gpu环境,但是ai_gpu环境中没有pytorch