Ubuntu服务器上搭建CornerNet-Lite环境
本篇博客记录了博主在Ubuntu14.04的服务器上搭建CornerNet-Lite环境的全过程,希望能帮助读者少踩坑,如有错误之处,敬请指正。
一、Github上下载CornerNet-Lite开源代码
Github链接:https://github.com/princeton-vl/CornerNet-Lite
进入一个空的文件夹,输入以下命令下载源码:
(base) cjp@ubuntu3:~$ git clone https://github.com/princeton-vl/CornerNet-Lite
查看工程中的README.md文件,可以知道其依赖的软件环境:
- Python 3.7
- PyTorch 1.0.0
- CUDA 10
- GCC 4.9.2 or above
- Anaconda
由于是在服务器上搭建环境,我们选择用Anaconda创建一个虚拟环境,然后在虚拟环境中安装上述软件。
二、Anaconda创建虚拟环境
1.安装Anaconda
由于官网下载需要注册账号,并且速度较慢,我们选择在清华大学开源软件镜像站中下载。
下载网址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
在上述网址中根据自己系统的指令集选择一个对应的Anaconda版本(如果版本与系统不对应则无法使用),如这里我们选择Anaconda-1.4.0-Linux-X86_64.sh,右键复制其下载地址,在服务器上用wget进行下载:
(base) cjp@ubuntu3:~$ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda-1.4.0-Linux-x86_64.sh
下载完成后,进入安装包所在的目录,输入以下命令进行安装:
(base) cjp@ubuntu3:~$ bash Anaconda-1.4.0-Linux-x86.sh
随后会进入安装步骤,根据提示输入yes、回车、安装目录等(要看仔细)。安装完成后会询问是否添加到系统路径,输入yes。也可以手动进行添加:
(base) cjp@ubuntu3:~$ nano ~/.bashrc
在文末添加以下语句:
export PATH="$YOUR_PATH/anaconda3/bin:$PATH"
上述"$YOUR_PATH"需要换成你Anaconda所在的目录。
添加完成后输入:
(base) cjp@ubuntu3:~$ source ~/.bashrc
此时Anaconda的安装就完成了,输入如下命令即可查看安装的Anaconda版本:
(base) cjp@ubuntu3:~$ conda --verdion
随后需要对Anaconda进行换源,各种国内的源都可以,我们这里选择更换清华源,在shell命令行中依次输入以下命令:
(base) cjp@ubuntu3:~$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
(base) cjp@ubuntu3:~$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
(base) cjp@ubuntu3:~$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
(base) cjp@ubuntu3:~$ conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/fastai/
(base) cjp@ubuntu3:~$ conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
(base) cjp@ubuntu3:~$ conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
(base) cjp@ubuntu3:~$ conda config --set show_channel_urls yes
2.用Anaconda创建虚拟环境
CornerNet-Lite开源代码中的conda_packagelist.txt文件记录了所有依赖项,可以运用这一文件直接创建虚拟环境:
(base) cjp@ubuntu3:~$ conda create --name CornerNet_Lite --file conda_packagelist.txt
创建完成后激活环境:
(base) cjp@ubuntu3:~$ source activate CornerNet_Lite
如果激活成功,shell命令行中段首的"(base)“将会更改为”(CornerNet_Lite)"。
3.在自己的路径下安装CUDA
在shell命令行输入:
(CornerNet_Lite) cjp@ubuntu3:~$ nvcc -V
即可查看当前环境下CUDA的版本。如果服务器上没有CUDA或CUDA版本不是10,则需要在自己的路径下安装版本为10的CUDA。
由于在服务器上搭建环境大多数情况下不会给你sudo权限,以下将介绍不用sudo权限的CUDA安装方法。
CUDA的下载地址:https://developer.nvidia.com/cuda-toolkit-archive
在上述下载地址中点击CUDA Toolkit 10.0,按照下图所示选择与自己服务器系统对应的版本,右键复制下载地址,用wget进行下载:
(CornerNet_Lite) cjp@ubuntu3:~$ wget http://developer.download.nvidia.com/compute/cuda/10.0/Prod/patches/1/cuda_10.0.130.1_linux.run
随后用sh运行.run文件:
(CornerNet_Lite) cjp@ubuntu3:~$ sh cuda_10.0.130.1_linux.run
安装过程中依次输入accept、n、y、安装目录、n、n。
完成后同样需要给个人用户添加环境变量:
(CornerNet_Lite) cjp@ubuntu3:~$ nano ~/.bashrc
在文末添加以下两句:
export PATH=$HOME/cuda10/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/cuda10/lib64/
注意以上路径要换成你的CUDA安装路径,我的CUDA是安装在~/cuda10/文件夹中,添加完成后输入:
(CornerNet_Lite) cjp@ubuntu3:~$ source ~/.bashrc
此时就已经成功地在个人路径下安装10.0版本的CUDA,为了查看此时的CUDA版本,可再次输入:
(CornerNet_Lite) cjp@ubuntu3:~$ nvcc -V
可以发现CUDA的版本已经改变成10。
4.安装对应版本的pytorch
pytorch的下载网址:https://pytorch.org/get-started/previous-versions/
在上述网址中找到对应CUDA 10.0的pytorch 1.0.0版本,并按照提示进行安装:
(CornerNet_Lite) cjp@ubuntu3:~$ conda install pytorch==1.0.0 torchvision==0.2.1 cuda100 -c pytorch
安装好后可运行python脚本进行测试:
(CornerNet_Lite) cjp@ubuntu3:~$ python
>>> import torch
>>> torch.cuda.is_available()
如果返回True,表明pytorch安装成功。
三、用官方模型进行测试
在博主的Github上下载CornerNet_Squeeze的官方训练模型:https://github.com/bird1and1fish/CornerNet_Squeeze
命令行中输入:
(CornerNet_Lite) cjp@ubuntu3:~$ git lfs clone https://github.com/bird1and1fish/CornerNet_Squeeze
由于该文件是git-lfs大文件,需要先安装git-lfs后才能正常用上述方法下载。
下载完成后在CornerNet-Lite工程中创建cache/nnet/CornerNet_Squeeze/的文件目录。并将CornerNet_Squeeze_500000.pkl模型文件放在CornerNet-Lite/cache/nnet/CornerNet_Squeeze/目录下。
修改工程中的demo.py如下:
import cv2
from core.detectors import CornerNet_Squeeze
from core.vis_utils import draw_bboxes
detector = CornerNet_Squeeze()
image = cv2.imread("demo.jpg")
bboxes = detector(image)
image = draw_bboxes(image, bboxes)
cv2.imwrite("demo_out.jpg", image)
上述代码是将默认的CornerNet-Saccade模型改为CornerNet-Squeeze模型。如果想用CornerNet-Saccade模型测试则不用修改,但是需要下载对应的CornerNet_Saccade_500000.pkl模型文件,并放在CornerNet-Lite/cache/nnet/CornerNet_Saccade/目录下。
此时运行demo.py文件:
(CornerNet_Lite) cjp@ubuntu3:~/CornerNet-Lite$ python demo.py
如果生成了demo_out.jpg图像,则证明CornerNet-Lite整个的环境搭建成功。