HelloStranger

每个人都是初学者

深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)

关于DFace

DFace是基于Pytorch实现的开源中国推荐的人脸检测和人脸识别的项目。https://www.oschina.net/p/dface

项目地址:

本文背景

首先需要明确的是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以及环境迁移搭建的人,文中如有错误还望指出,在此先谢过了。

Windows64系统如何通过conda安装支持GPU的Pytorch框架

一、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

所以我选择的安装包如下 :

《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》

每个人根据个人电脑的情况选择对应的安装包下载安装,注意一定要下载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

配置步骤 :

  1. 将cudnn-8.0-windows10-x64-v6.0.zip解压
  2. 将解压得到的文件目录cuda拷贝到自己电脑的自定义位置,我存放到D:\Tools目录下了
  3. 添加环境变量
    • 添加路径 : 路径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《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》
  • 上面的复选框默认,点击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

《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》

或者直接使用.yml的绝对路径

  • conda env create -f <.yml文件绝对路径>

 

漫长的等待ing,终于安装成功

《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》

conda环境安装成功图片

三、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))

详细命令行如图 :

《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》

CUDA的测试和cuDNN的测试

如果上面的测试不通过的话,那就不能用使用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))
《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》

Conda下支持GPU的TensorFlow

DFace如何在Windows64环境下使用GPU运行

一、添加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移植WIN64环境详解(支持GPU)》

ai_gpu_dos

 

 

 

 

 

三、修改代码尝试运行

初步运行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

四、放一张运行成功的图

《深度学习人脸识别系统 DFace移植WIN64环境详解(支持GPU)》

Dface在win64的conda环境下运行成功

假如想自己训练模型的话:可以看下我这个文章deep-learning-simple-knowledges,里面都是深度学习的一些数据集的下载网址。

后记

现在还记得刚开始学习编(搬)程(砖)的时候,许多很好的idea或者很有兴趣的东西都想去尝试,但是做起来才发现好多事情就直接卡在了环境的搭建和配置上,知道那种滋味的不好受,所以我决定一点一点的把这些东西写上去,当我重新review这篇文章的时候,竟然发现全是废话,废话,废话,但我希望这些废话也可以帮助到苦于自身资源和环境问题但对DFace乃至其他使用到GPU支持的Pytorch、TensorFlow的同学。

还有欢迎大家加入DFace的QQ交流群 : 681403076 

群主很帅,很帅,很帅,有兴趣的盆友可以加进去撩撩。

最后,说一下后续的打算 :

  1. 将conda环境打包成包,后期可以直接一条命令安装,省去下载这一步骤
  2. 由于我现在对DFace的核心代码、逻辑、算法也不是很了解,故后续可能写点DFace这方面的东西
  3. 打算持续跟进DFace项目,及时由Python2.7向Python3.6做修改
  4. 我还是个没毕业的萌新啊,希望大家明确指出不足和错误,我脸皮厚,越说我越高兴。

 

圣诞节快到了,希望大家开心啊。

本文环境移植的主要参考文章: https://zhuanlan.zhihu.com/p/30954018 十分感谢作者!

 

 

 

点赞
  1. miss说道:

    请问一下,先通过离线方式安装Pytorch,然后导入ai_gpu环境,但是ai_gpu环境中没有pytorch

发表评论

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