对于计算机视觉,深度学习是一个您始终绕不开的话题,本文将告诉您如何从零开始搭建一个友好的可塑性的计算机视觉环境,当然它也支持深度学习。为什么要从零开始搭建环境呢?因为,别人建立的环境也许并不适合您,而您想要改变其的环境也许会花费很多时间还不一定有用。为了解决您的这个烦恼,本文考虑搭建一个具有可以定制性并可以灵活改变环境的计算机视觉工具集。因为深度学习在计算机视觉中占据十分重要的地位,所以本文将以深度学习为基础进行工具集组装。
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/
在 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 --user --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
配置好 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
官方网站进行了解。
更多教程可参考我的简书:一个程序员的自我成长笔记