對于計算機視覺,深度學習是一個您始終繞不開的話題,本文將告訴您如何從零開始搭建一個友好的可塑性的計算機視覺環境,當然它也支持深度學習。為什么要從零開始搭建環境呢?因為,別人建立的環境也許并不適合您,而您想要改變其的環境也許會花費很多時間還不一定有用。為了解決您的這個煩惱,本文考慮搭建一個具有可以定制性并可以靈活改變環境的計算機視覺工具集。因為深度學習在計算機視覺中占據十分重要的地位,所以本文將以深度學習為基礎進行工具集組裝。
1 在您的機器上搭建一個深度學習環境
本文考慮分別在 Windows10 與 Ubuntu18.04 這兩個系統上搭建深度學習環境。下面提到的軟件包的具體功能先不說明,先安裝配置好之后再一一闡述其功能。
1.1 在 Windows10 上配置軟件工具
由于 Windows10 系統的配置相對于 Ubuntu來說是簡單的,所以我們先考慮 Windows10。首先,我們需要下載一些必備軟件:
- 下載 Anaconda,選擇 Anaconda 2019.10 for Windows Installer-Python 3.7 版本。下載地址:https://repo.anaconda.com/archive/Anaconda3-2019.10-Windows-x86_64.exe。
- 進入 CUDA 下載頁面 https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_411.31_win10,依次選擇
Windows
,x86_64
,10
,exe (local)
進行下載。具體是操作界面見 圖1。 - 進入 https://developer.nvidia.com/cudnn 網站下載深度學習加速庫 cudnn。依次選擇選擇
Download cuDNN v7.6.4 (September 27, 2019), for CUDA 10.0
,cuDNN Library for Windows 10
進行下載。 - 進入網站 https://code.visualstudio.com/Download 下載 vscode,依次選擇
Windows
,System Installer 64 bit
。 - 進入網站 https://git-scm.com/download/win 選擇
64-bit Git for Windows Setup
版本下載 Git。
這些軟件下載好之后,按照提示進行安裝即可。不過,安裝過程中可能出現一些選項需要按照本文接下來展示的圖示進行操作。
- 安裝 CUDA 時,需要選擇安裝選項為
自定義(高級)
,見圖示2。
- 安裝 CuDNN 時,只需要解壓
cudnn-10.0-windows10-x64-v7.6.4.38.zip
到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
目錄之下。接著,設置Path
的環境變量:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
。安裝完畢之后,打開 Power Shell 輸入nvcc -V
驗證是否與圖3 顯示一致。如果一致,恭喜您安裝完成!
- 安裝 Anaconda 需要注意按照圖4 選擇將 Anaconda 添加到環境變量。安裝完成之后,找到開始菜單中的
Anaconda Navigator
圖標(即圖示5)便可以使用 Anaconda。
- 為了將 Git 與 vscode 緊密結合,需要先安裝 vscode,再安裝 Git。為了方便 vscode 更好的管理您的文件,安裝 vscode 時需要按照圖6 進行選擇。安裝 Git 需要按照圖7 進行選擇將 vscode 作為 Git 的默認編輯器。
這樣 vscode 與 Git 緊密結合在一起了。
1.2 在 Ubuntu18.04 上配置軟件工具
在 Ubuntu 系統上搭建深度學習系統是很多人的噩夢,為了大家少走彎路,趕走噩夢,本文接下來介紹如何從安裝 Ubuntu 開始搭建 Ubuntu 深度學習環境。和 Windows10 一樣,我們同樣需要先下載一些必備軟件:
- 下載 Anaconda,選擇 Anaconda 2019.10 for Linux Installer-Python 3.7 版本。下載地址:https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh。
- 進入 http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso?_ga=2.24617210.1526475460.1572400189-783137433.1571993488 網站下載 Ubuntu 鏡像,選擇 Ubuntu 18.04.3 LTS 版本進行下載。
- 進入網站 https://developer.nvidia.com/cuda-10.0-download-archive 下載 CUDA,依次選擇
Linux
,x86_64
,18.04
,runfile (local)
,之后下載 Base Installer(下載地址:https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux) 與 Patch 1(下載地址:http://developer.download.nvidia.com/compute/cuda/10.0/Prod/patches/1/cuda_10.0.130.1_linux.run) - 進入網站 https://rufus.ie/zh_CN.html 下載 rufs,用于制作 Ubuntu 啟動盤
- 下載 cudnn(https://developer.nvidia.com/cudnn):深度學習加速庫。依次選擇選擇
Download cuDNN v7.6.4 (September 27, 2019), for CUDA 10.0
,cuDNN Runtime Library for Ubuntu18.04 (Deb)
進行下載。
如果您的下載速度很慢,您可以考慮使用 IDM(https://www.internetdownloadmanager.com/),該軟件被人戲稱為國外的迅雷,它的下載速度是很快的。
下載好軟件之后,我們需要使用 U 盤制作一個 Ubuntu 啟動盤。
我們使用 rufs 制作 Ubuntu 啟動盤:
- 雙擊 rufs 軟件包,彈出的界面,設置如下:
制作完畢關閉 rufs 軟件,并彈出 U 盤。
- 關閉待安裝的機器,之后上插入 U 盤,再啟動機器,選擇
Install Ubuntu
,即如圖界面:
- 進入安裝界面:
- 選擇系統語言為中文:
- 不斷點擊繼續,直至出現如下界面,選擇
清除整個磁盤并安裝 Ubuntu
(如果您想要安裝雙系統,可選擇安裝 Ubuntu,與其他系統共存
):
- 接著按照界面的提示進行操作即可。直到提示您重啟電腦時,您點擊確認,之后等到屏幕關閉拔掉 U 盤,讓機器自動重啟。如此,您便完成了 Ubuntu 的安裝。
電腦重啟之后需要配置網絡連接,配置好之后,我們需要做一些準備工作。
- 智能升級。安裝新軟件包并刪除廢棄的軟件包:
$ sudo apt-get dist-upgrade
$ sudo apt-get autoremove
- 刪除一些不需要的內置軟件:
$ sudo apt-get remove libreoffice-common
$ sudo apt-get remove unity-webapps-common
$ sudo apt-get autoremove
- 啟用圖標點擊最小化操作:
$ gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'
- 更新和升級系統
$ sudo apt update
$ sudo apt upgrade
- 安裝 Git
$ sudo apt-get install git
配置 git 的兩個重要信息,user.name
和 user.email
,終端輸入如下命令即可設置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- 支持掛載 exfat
$ sudo apt-get install exfat-fuse
- 安裝 g++ gcc 開發必備編譯庫(為之后安裝 CUDA 做準備)
$ sudo apt-get install build-essential
- 為了支持 ssh server,需要:
$ sudo apt-get install openssh-server
$ sudo /etc/init.d/ssh start
$ sudo service ssh start
- 為了防止 Ubuntu 系統被玩壞了,我們需要一個可以進行備份和還原的工具:TimeShift
$ sudo apt-add-repository -y ppa:teejee2008/ppa
$ sudo apt update
$ sudo apt install timeshift
- 接著,我們需要安裝 Anaconda:
$ sh Anaconda3-2019.10-Linux-x86_64.sh
安裝過程中需要注意選擇 conda init
以方便我們管理 Python 環境:
設置圖1.6 選擇為 yes
,則將 Ubuntu 系統的 Python 環境設置為 Anaconda,如果您還想要使用原來的 Python 環境,可以這樣:
$ conda config --set auto_activate_base false
Anaconda 的打開使用命令:anaconda-navigator
。
- 最后,我們還需要安裝 vscode:
$ sudo dpkg -i code_1.39.2-1571154070_amd64.deb
vscode 的打開使用命令 code
即可。
OK! Ubuntu 系統的深度學習基礎環境已經搭建完畢!下面我們需要安裝 CUDA 與 cuDNN。
因為安裝 CUDA 是一個很危險的行為,設置出錯很容易把系統玩崩,所以我們可以先使用 TimeShift 備份當前系統。做深度學習,要用到 NVIDIA 的顯卡,因此需要改顯卡驅動,禁用nouveau
。即以管理員是身份打開 /etc/modprobe.d/blacklist.conf
文件,然后添加內容:blacklist nouveau #添加數據
用來禁用 nouveau
。而打開文件我們可以使用 vscode 進行文件編輯:
$ sudo code /etc/modprobe.d/blacklist.conf
首先進入 CUDA 安裝包所在目錄運行:
$ sudo ubuntu-drivers autoinstall
$ sudo sh cuda_10.0.130_410.48_linux.run
$ sudo sh cuda_10.0.130.1_linux.run
注意:最好不要選擇安裝 OpenGL 庫,否則您可能無法順利安裝 CUDA。如果下載速度很慢可以修改下載源為阿里云。安裝完畢之后,運行 nvidia-smi
檢查 CUDA 是否安裝正確。
最后需要安裝 cuDNN:
sudo dpkg -i libcudnn7_7.6.4.38+cuda10.0_amd64.deb
1.3 設置清華鏡像
為了提高 pip 與 conda 安裝軟件包的速度,我們需要設置清華鏡像。對于 pip,Windows10 設置的方法是一樣的,即:
$ pip install --upgrade pip -U # -U == --user
$ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
而對于 conda,在 Windows10 中這樣設置:
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
$ conda config --set show_channel_urls yes
在 Ubuntu18.04 中設置 conda,需要借助 vscode 修改用戶目錄下的 .condarc
,即 code ~/.condarc
,然后添加如下內容:
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
2 安裝深度學習框架
在安裝深度學習框架之前,我們先了解一下 Anaconda: 一個用于科學計算的 Python 發行版,支持 Linux, Mac, Windows, 包含了眾多流行的科學計算、數據分析的 Python 包。
Anaconda 提供了十分強大的 Python 環境與包的管理機制,本小節我們將利用它這一特性來說明如何在同一臺機器上創建多個深度學習框架。由于深度學習框架的安裝在 Windows10 與 Ubuntu 18.04 上是一樣的,所以下面我便不在言明是在哪個系統上進行操作了。
如果我們想要使用和管理多個框架,如果將它們均安裝在同一環境之下,往往很容易發生包的沖突問題。因而,為了讓深度學習框架之間不發生沖突,我們需要借助 conda
對 Python 的環境進行管理。下面我們看看如何創建新的 Python 環境:
- 打開
Anaconda Navigator
并依次選擇Environments
,Create
,接著輸入環境的名字并選擇 Python 版本:
下面以 TensorFlow 為例,說明如何安裝包。
- 在新創建的環境中打開終端:
然后,在終端輸入命令:
$ pip install tensorflow-gpu
完成 TensorFlow 框架的 GPU 版本安裝。
我們不僅僅滿足于在終端運行 Python 程序,如果想要在 Notebook,也可以運行新創建的環境豈不妙哉!
在 tensorflow 環境的終端輸入:
$ conda install ipykernel
$ python -m ipykernel install --user --name tensorflow --display-name "tensorflow"
$ pip install jupyter
此時,您在打開 Notebook,則會呈現兩個環境:tensorflow
與 python 3
。
選擇 tensorflow
,進入 Notebook 編輯界面,我們測試 GPU 是否可以正常使用:
代碼沒有報錯,說明 GPU 配置完成。需要注意的是在 Ubuntu 系統上如果測試 GPU 失敗,您可以嘗試運行如下命令:
$ conda install cudatoolkit=10.0
$ conda install cudnn=7.6
這樣你便可以擁有兩個互不干擾的 jupyter 環境!為了方便以后切換不同的深度學習框架,按照上述的步驟分別創建 MXNet,Pytorch 深度學習環境。
安裝 MXNet 的命令是:
$ conda install ipykernel
$ python -m ipykernel install --name mxnet --display-name "MXNet"
$ pip install jupyter
$ pip install mxnet-cu100
安裝 Pytorch 的命令是:
$ conda install ipykernel
$ python -m ipykernel install --user --name torch --display-name "Pytorch"
$ pip install jupyter
$ conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
3 橋接 Ubuntu 與 Windows
對于同一個局域網的兩臺機器,一臺安裝了 Windows10,一臺安裝了 Ubuntu18.04。我們想要利用 SSH 協議橋接這兩臺機器,對于 Ubuntu 系統我們已經配置好了其 SSH Server,而 Windows10 需要我們做一些工作。
在 Windows Server 2019 或 Windows 10 1809 上的 "設置" UI 安裝 OpenSSH,可參考微軟官方提供的教程:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse。而對于低版本的系統,則需要下載 https://github.com/PowerShell/Win32-OpenSSH/releases 中的代碼,然后將其解壓并將解壓后的文件目錄添加 Windows 系統的 Path 環境變量之中。
$ .\install-sshd.ps1
$ .\FixHostFilePermissions.ps1
詳細內容可參考:https://blog.csdn.net/hanzheng260561728/article/details/72857132。
配置好 SSH Server 之后,我們便可以利用 SSH 連接這兩臺機器了。
比如,我們在 Windows10 系統打開 PowerShell 并使用 SSH 連接 Ubuntu18.04 的機器:
$ ssh xinet@192.168.42.7
其中 xinet@192.168.42.7
的組成是 用戶名@IP地址
。
這樣你便可以像圖 18 那樣使用 Ubuntu 系統的終端進行操作:
對于圖18 需要做如下解釋:
-
conda activate pytorch
啟動我們之前創建的 Pytorch 環境 -
pip install
或者conda install
是用來安裝 Python 包的命令。 - 待您在終端的操作完成之后,需要使用命令
exit
退出 ssh 連接。
4 Ubuntu 多用戶共享使用深度學習環境
我們可以使用命令 sudo adduser 用戶名
的方式創建新用戶。創建新用戶之后,便可以令其使用共享環境。比如我們在用戶 A 之中配置了深度學習環境,而用戶 B 想要使用用戶 A 的深度學習環境只需要運行命令 source /home/A/.bashrc
即可激活深度學習環境。
情景:我們不想建立遠程桌面且又想要使用 Ubuntu 系統的 Jupyter Notebook,該怎么辦?
我們可以使用 MobaXterm
軟件來解決該情景問題。具體操作方法:
- 進入網站 https://mobaxterm.mobatek.net/download.html 下載軟件。安裝好之后,創建一個 Session,見圖19:
點擊 OK
之后,進入 Ubuntu 系統下的用戶 B 所在賬戶下的終端。雖然這是一個終端,但是此終端還可以做一些仿真的工作,比如打開 Jupyter Notebook:
是不是很神奇?不僅僅如此呢,這里打開了一個瀏覽器服務器,您可以在此瀏覽器之中下載東西,然后將您下載的東西拖曳回您的 Windows 系統。更多精彩內容您可以查看 MobaXterm
官方網站進行了解。