- Python 3反爬蟲原理與繞過實戰
- 韋世東
- 2622字
- 2021-02-07 09:17:44
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界面
- Google Flutter Mobile Development Quick Start Guide
- 從零開始:數字圖像處理的編程基礎與應用
- CockroachDB權威指南
- Three.js開發指南:基于WebGL和HTML5在網頁上渲染3D圖形和動畫(原書第3版)
- Learning Linux Binary Analysis
- MySQL數據庫管理與開發(慕課版)
- Getting Started with Python Data Analysis
- ArcGIS By Example
- Getting Started with Gulp
- 蘋果的產品設計之道:創建優秀產品、服務和用戶體驗的七個原則
- Bootstrap 4 Cookbook
- ASP.NET程序開發范例寶典
- Python自然語言理解:自然語言理解系統開發與應用實戰
- 數據分析與挖掘算法:Python實戰
- Python一行流:像專家一樣寫代碼