Dlib-gpu配置记录

从零配置dlib(GPU)

Written by Aquish

参考

[ win10+anaconda+cuda配置dlib ]

[ 记一次Win10环境python3.7安装dlib模块趟过的坑 ]

[ win10系统python下实现dlib的GPU加速 ]

写在前面

配环境真的是一件考验耐心的事,各种报错真的让人崩溃。但考虑到项目实时性的需要以及我那天天被拉满的可怜CPU,还是决定将GPU环境配好,网上的配置教程各有优劣,这里集几家之长做个记录,也给需要的同学排下雷。本文情况不一定契合你的情况,请读者们按需取用,谢谢。

整体环境

Windows10+GTX 1060

anaconda3+python 3.5.0

dlib19.9 + TensorFlow 1.12.0

cmake 3.13.0

CUDA 9.0+ cudnn 7.3.0

总体步骤

  • 新建conda环境并配置python 3.5.0
  • 安装vs2015 updata3
  • 配置GPU环境
    • CUDA
    • cudnn
  • 安装cmake
  • 编译配置dlib
  • 验证及常见报错解决

新建conda环境

以下默认你安装了anaconda并且会使用相应命令管理包

conda create -n 环境名称 python==3.5.0
# 激活环境,后续pip操作一定记得先激活相应环境
activate 环境名称
# 退出环境
conda deactivate

安装vs2015 update

下载链接

SHA1:40EA340070E3684935689E60D8B7669D519D49D4

(我装的时候这个码并没有用到,可能这里只是用到它的环境,后续如果要用软件的话可能会用到)

在安装时记得自定义安装路径工具。至少应该包括python工具、.net和C++环境,选择好安装目录后就是无尽的等待...

Dlib-gpu配置记录

安装好后将cl.exe的路径加入环境变量,这里贴上我的环境供参考

Dlib-gpu配置记录

配置好后在cmd界面输入cl测试,出现以下界面则代表vs环境配置完成

Dlib-gpu配置记录

安装cmake

  1. 网上的教程很多是直接pip install cmake。但这个方法不适用我,后续添加环境变量以及编译的时候会有错,这里参考这篇文章,采用cmake客户端的方式安装。cmake客户端+dlib19.9的好处是可以自动避免很多环境变量的配置,减少了配置成本。

  2. 这里直接贴出cmake 3.13.0 安装包的下载链接,安装的过程中一定注意要添加系统环境变量选项打勾,重启机器后生效。

  3. 重启之后打开cmake,然后点击途中的“configure”按钮选择相应的vs版本,对于vs2015 update3应该选择“visual studio 14 2015 win64”选项;在上面的源码路径填写解压之后dlib的目录,注意是dlib目录,而不是包含版本信息的那个目录;然后选择编译输出的二进制文件目录,点击完成,开始配置。

    Dlib-gpu配置记录

如果一切顺利,cmake会提示类似于下面的信息,表示cuda版本的dlib已经顺利编译完成,在使用的时候可以开启gpu加速

Dlib-gpu配置记录

配置GPU环境

首先,之前配置了CUDA的,想重新装一定要卸载干净CUDA和显卡驱动

比如我之前装的是2.x的TensorFlow-gpu+CUDA10,在没卸载干净之前无论怎么装都是报错,具体卸载不要用杀毒软件,用系统自带的卸载工具,将带有cuda字眼的,除了留下:NVIDIA的图形驱动程序、NVIDIA Physx系统软件,其余全部删除。删除后重新安装你的TF环境

这个教程已经讲得特别详细了,请大家自行参照,唯一需要注意的点就是一定要把以前的CUDA和显卡驱动删除干净,顺便还可以把TensorFlow-gpu给配了hh

配置Dlib

可以采用源码方式,或在确保上面cmake成功配置的前提下,直接在环境内运行pip install dlib==19.9,至此不出问题的话,dlib-gpu应该是配置完毕了,下面验证一下

验证

命令行验证
activate 环境名
python
>>>import dlib
>>>print(dlib.DLIB_USE_CUDA)
True

如图

Dlib-gpu配置记录

demo验证
# -*- coding: utf-8 -*-

from datetime import datetime

import cv2
import dlib

img = cv2.imread('team.jpg')  # 载入测试图片
cnn_face_detector = dlib.cnn_face_detection_model_v1('mmod_human_face_detector.dat')  # 加载训练好的人脸检测模型

t1 = datetime.now()  # 测试起始时间
dets = cnn_face_detector(img, 1)  # 使用卷局神经网络进行检测
print("Number of faces detected: {}".format(len(dets)))

for k, d in enumerate(dets):
    print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
        k, d.rect.left(), d.rect.top(), d.rect.right(), d.rect.bottom()))
    face = dlib.rectangle(d.rect.left(), d.rect.top(), d.rect.right(), d.rect.bottom())
    cv2.rectangle(img, (face.left(), face.top() + 10), (face.right(), face.bottom()), (0, 255, 0), 2)  # 显示人脸区域
    cv2.imshow('image', img)

t2 = datetime.now()  # 测试结束时间
print('time spend: ', (t2 - t1).microseconds)  # 显示总的时间开销

cv2.waitKey(0)
cv2.destroyAllWindows()

模型参数可以在这里下载并解压到代码目录

Dlib-gpu配置记录

可以看到编译速度降到了0.19s左右,正式大功告成!

上一篇:在云主机上安装vscodeonline


下一篇:vscode 新建文件自动添加文件相关注释