1.5 深度学习环境配置
本书将介绍深度学习在验证码校验方面的应用并动手实现几个案例。深度学习领域的库或框架非常多,有PyTorch、Caffe、TensorFlow、Darknet等,我们可以利用它们快速实现需求。
下面我们就来了解深度学习所需的环境配置。
1.5.1 NVIDIA显卡驱动安装
GPU(Graphics Processing Unit,图形处理器)是显卡的核心组成部分,能够执行复杂的计算,所以成为进行深度学习的首选处理器。深度学习的计算量非常大,以一张像素大小为200×40的彩色图片为例,它的输入数据量为200×40×3=24000,其中3代表RGB通道数量。假如训练样本的数量为20000,那么计算量就是480000000(4.8亿)。面对如此大的计算量,人们在深度学习的过程中通常会选择计算能力更强的GPU,而不是CPU。
GPU的计算能力称为算力,可以在NVIDIA官网查看(详见https://developer.nvidia.com/cuda-gpus)。NVIDIA GeForce系列部分产品的算力,如图1-46所示。
图1-46 NVIDIA GeForce系列部分产品的算力
在驱动安装开始前,你需要确认你的计算机搭载了一张GPU算力超过3.5的独立显卡。如果没有,那么可以跳过1.5.1节、1.5.2节和1.5.3节的介绍。
首先,我们需要将显卡驱动加入PPA源并且更新软件列表,相关命令如下:
$ sudo add-apt-repository ppa:graphics-drivers $ sudo apt-get update
然后使用命令查找NVIDIA显卡驱动的最新版本号:
$ sudo apt-cache search nvidia
此时控制台将输出如下内容:
nvidia-dkms-410 - NVIDIA DKMS package nvidia-driver-410 - NVIDIA driver metapackage nvidia-headless-410 - NVIDIA headless metapackage nvidia-headless-no-dkms-410 - NVIDIA headless metapackage - no DKMS nvidia-kernel-common-410 - Shared files used with the kernel module nvidia-kernel-source-410 - NVIDIA kernel source package nvidia-utils-410 - NVIDIA driver support binaries xserver-xorg-video-nvidia-410 - NVIDIA binary Xorg driver ...
接着使用如下命令查看系统推荐的显卡驱动:
$ ubuntu-drivers devices
此时控制台将输出如下内容:
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 == modalias : pci:v000010DEd00001D01sv00007377sd00000000bc03sc00i00 vendor : NVIDIA Corporation model : GP108 [GeForce GT 1030] driver : nvidia-driver-418 - third-party free driver : nvidia-driver-415 - third-party free driver : nvidia-driver-410 - third-party free driver : nvidia-driver-396 - third-party free driver : nvidia-driver-430 - third-party free recommended driver : nvidia-driver-390 - distro non-free driver : xserver-xorg-video-nouveau - distro free builtin
显卡驱动版本与后续安装的CUDA版本需要对应,NVIDIA官网给出的对照表如图1-47所示。
图1-47 CUDA与显卡驱动的版本对照
当前CUDA版本号为10.1(详见https://developer.nvidia.com/cuda-toolkit),这里我们需要选择版本号大于等于418.39的显卡驱动。打开系统中的“软件和更新”,切换到“附加驱动”选项卡,并在驱动列表中选择合适的显卡驱动,如图1-48所示。
图1-48 “附加驱动”选项卡
然后点击右下角的“应用更改”按钮,此时系统会根据我们的选择安装对应的驱动,待驱动安装完毕后,重新启动计算机即可。
重启计算机后,在应用列表中找到“设置”选项,并选择“详细信息”选项,点击“About”,可以看到如图1-49所示的硬件信息。
图1-49 硬件信息
如果“图形”对应的信息与计算机中的GPU信息一致,则表示显卡驱动安装成功。
1.5.2 CUDA Toolkit 的安装
CUDA Toolkit为创建高性能GPU加速应用程序提供了开发环境。
相关链接
❑ NVIDIA 开发者中心:https://developer.nvidia.com。
❑ CUDA Toolkit 下载地址:https://developer.nvidia.com/cuda-downloads。
打开CUDA Toolkit下载地址并根据系统选择下载的版本。这里以Ubuntu 18.04为例,下载选项的选择如图1-50所示。
图1-50 CUDA Toolkit下载页面
然后点击Download按钮下载CUDA Toolokit的安装文件。文件下载完成后,使用如下命令运行安装文件:
$ sudo sh cuda_10.1.105_418.39_linux.run
在安装过程中需要做一些选择,例如是否接受协议,命令如下:
Do you accept the above EULA? (accept/decline/quit):
此时输入accept选项代表同意协议。接着需要选择如图1-51所示的安装内容。
图1-51 选择安装内容
按下回车键可以选择或取消选择。由于之前安装过显卡驱动,所以这里不选择驱动选项,其他选项不变。接着选择下方的Install选项即可进入安装流程。安装完毕后,还需要在环境变量中配置CUDA。打开环境变量配置文件的命令如下:
$ sudo nano ~/.bashrc
然后将以下内容写入配置文件末尾:
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
其中cuda-10.1为实际安装版本。如果计算机安装的是其他版本,则需要修改路径。
保存配置文件后,使用如下命令启用新的环境变量:
$ source ~/.bashrc
然后执行nvidia-smi命令就可以看到如图1-52所示的显卡信息。如果右上角显示的CUDA Version值与刚才安装的版本号相同,代表CUDA Toolkit安装成功。
图1-52 显卡相关信息
1.5.3 cuDNN 的安装
cuDNN(深度神经网络库)用于给深度神经网络的GPU加速,让深度学习研究人员和框架开发人员专注于训练和开发,而不是将时间花在GPU性能调优上。cuDNN加速被广泛应用在深度学习领域,支持它的框架有Caffe、Caffe2、Chainer、Keras、MATLAB、MXNet、TensorFlow和PyTorch等。
相关链接
❑ NVIDIA 注册:https://developer.nvidia.com/rdp/form/cudnn-download-survey。
❑ cuDNN 下载地址:https://developer.nvidia.com/rdp/cudnn-download。
❑ cuDNN 安装说明:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installlinux-tar。
在下载cuDNN之前,我们需要在NVIDIA开发者平台进行注册,完成注册并登录后才能访问下载页面。下载时必须根据CUDA Toolkit版本下载cuDNN压缩包,本书使用的CUDA Toolkit的版本号为10.1,对应的cuDNN版本号为v7.5.1。cuDNN下载页面如图1-53所示。
图1-53 cuDNN下载页面
下载时选择cuDNN Library for Linux即可。下载完成后,根据cuDNN安装说明进行安装。首先使用如下命令解压cuDNN压缩包:
$ tar -xzvf cudnn-10.1-linux-x64-v7.5.1.10.tgz
然后将以下文件复制到CUDA Toolkit目录中,并更改文件权限,对应命令如下:
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
此时cuDNN安装完毕。
接着我们使用如下命令验证cuDNN是否安装成功:
$ nvcc -V
如果此时终端输出如下内容:
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Fri_Feb__8_19:08:17_PST_2019 Cuda compilation tools, release 10.1, V10.1.105
就说明cuDNN已成功安装。
1.5.4 深度学习库 PyTorch
PyTorch是使用GPU和CPU优化的深度学习张量库,我们将会在本书中使用它来实现验证码字符识别。
相关链接
❑ PyTorch 官网:https://pytorch.org/。
❑ PyTorch 安装指南:https://pytorch.org/get-started/locally。
打开PyTorch安装指南对应的网址,根据系统和环境选择对应的PyTorch版本。如果没有显卡驱动和CUDA Toolkit,在CUDA一栏中选择None。本书所用的版本如图1-54所示。
图1-54 PyTorch版本
根据要求选择后,PyTorch会给出对应的安装命令。图1-54中给出的命令如下:
$ pip3 install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp37-cp37m-linux_x86_64.whl $ pip3 install torchvision
执行该命令,就可以安装PyTorch。
对应的库安装完毕后,可以使用Python代码验证PyTorch是否安装成功。Python代码及输出如下:
>>> import torch >>> torch.cuda.is_available() True
要注意的是,输出结果为True或False仅代表GPU是否可用,如无报错,均说明PyTorch库已成功安装。
1.5.5 深度学习框架 Darknet
Darknet是一个用C语言编写的开源神经网络框架,易于安装且运行速度非常快,同时支持CPU和GPU计算。在本书中,我们将使用它来实现验证码目标检测。
相关链接
❑ Darknet 官网:https://pjreddie.com/darknet/。
❑ Darknet GitHub:https://github.com/pjreddie/darknet。
首先从Darknet的GitHub仓库克隆Darknet项目,克隆命令如下:
$ git clone https://github.com/pjreddie/darknet.git
克隆完成后,进入Darkent项目目录darknet,并打开makefile文件,将第一行的GPU=0修改为GPU=1。这里更改GPU选项是为了让Darknet在训练时使用GPU进行加速计算。接着使用make命令编译安装:
$ make
在编译过程中,终端会输出如下信息:
mkdir -p obj gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast... gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast... gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast... ... gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast -lm...
如果没有出现报错信息,就代表顺利完成编译。接着我们可以使用如下命令验证Darknet是否安装成功:
$ ./darknet
如果终端输出如下内容:
usage: ./darknet <function>
那么说明Darknet已成功安装。
1.5.6 图片标注工具 LabelImg
LabelImg是一个用Python语言编写的图像标注工具,其图像和标注结果可以用于对目标检测模型进行训练。标注信息如图1-55所示,标注结果会以PASCAL VOC格式保存为XML文件。
图1-55 标注信息
相关链接
LabelImg的GitHub 仓库地址:https://github.com/tzutalin/labelImg。
由于LabelImg是基于Qt 5实现的图形界面,所以我们要先安装它,命令如下:
$ sudo apt-get install pyqt5-dev-tools
然后使用如下命令将LabelImg项目克隆到本地:
$ git clone https://github.com/tzutalin/labelImg
接着进入labelImg项目,并安装依赖:
$ cd labelImg $ pip install -r requirements/requirements-linux-python3.txt
最后就可以使用如下命令编译labelImg了:
$ make qt5py3
此时如果终端输出如下内容:
pyrcc5 -o resources.py resources.qrc
就说明编译成功。
编译成功后,我们就可以使用LabelImg了。使用如下命令启动LabelImg:
$ python labelImg.py
此时会弹出如图1-56所示的界面,这说明LabelImg已安装成功。
图1-56 LabelImg界面