一.安装Linux系统

由于用虚拟机软件安装的Linux不能调用GPU,因此这里采用双系统(在Windows的电脑上再安装一个Linux系统)

讲一下遇到的几个问题:

Rufus检测不到U盘,可以换一个U盘试试

分配磁盘空间时,遇到C盘不能扩展分区,

分区时注意分区所占用的物理磁盘名称,会出现很多块磁盘名称注意区分,分为4个区:

  • /boot:主要用于引导系统正常启动,可以设为1G
  • /:根目录 尽量大一些,这个应该最大,可以给/home少一些,这个可以给200G
  • /home:用户目录 尽量大一些,这个100G差不多了
  • swap:交换空间,相当于windows的虚拟内存,可以设为和运行内存一样大小8或16G
  • 注意:安装启动引导器设备选择/boot对应分区

华硕天选的开机进入U盘引导的按键是F2注意要在出现开机页面(ASUS字样)的那一刻不停地按F2即可

安装完之后每次重启会让你选择要进入的系统是Linux还是Windows,我这里不选的话默认进Linux

二.安装NVIDIA显卡驱动

bash中输入nvidia-smi

如果出现我下面的截图说明是安装成功了,驱动版本是510.54,驱动对应的CUDA版本号是11.6

如果没有出现如上图片,说明没有安装驱动,这里推荐最简单的安装驱动方法两种:

  • 软件更新里面的附加驱动会推荐一些可用的驱动,点击你想安装的应用更改即可(我这里不行,应用更改和选择驱动的按钮是灰色的)
  • 用命令行安装:

ubuntu-drivers devices # 查询所有ubuntu推荐的驱动,我的输出如下

driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-510 - distro non-free
driver   : nvidia-driver-510-server - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

sudo apt install nvidia-driver-510 # 安装其中一个你想要的版本即可,我这里安装的是510

执行完毕之后重启一下
还有网上别人推荐的第三种方法,极其复杂,我觉着第二种最好,可以成功且很方便,安装好之后用前面的命令测试一下即可。

三.Linux安装CUDA和CUDNN

CUDAdriver api 和 runtime api,我理解的runtime api是真正用cuda做运算时用到的版本,我们上面用nvidia-smi查到的是 driver api,而下载安装的CUDA是 runtime api,查询是否安装CUDA的runtime api用命令nvcc -V`:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:10:02_PDT_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.TC455_06.29069683_0

我是安装过的,如果没安装不会出现上面的输出。这个版本是11.1和之前的不同,原因可以参考简书:CUDA两个版本的不同 注意安装过程中,安装号CUDA后修改环境变量时按照下面来修改:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
# export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
# 非常重要!!!就这一个导致后面的mmdetection安装mmcv-full时安装一直报错!!!
export CUDA_HOME=/usr/local/cuda

四.安装mmdetection2.8

安装Minianaconda

  • 下载:wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
  • 运行:bash Miniconda3-latest-Linux-x86_64.sh
  • 按住ctrl+c可以跳过阅读,后面一直同意即可
  • 安装好之后,打开bash输入conda env list进行测试又没有安装成,我的直接成了,如果没成可能需要配置一下环境变量,自己百度

创建虚拟环境

  • conda create -n mmd python=3.8 # mmd是环境名
  • conda remove -n mmd --all # 是删除虚拟环境

conda换源

  • vim ~/.condarc
  • 添加参考链接中的相应命令

工具弄好之后开始正式安装mmdetection


安装pytorch的GPU版本

pytorch官网上找安装命令,注意pytorch版本要与你的CUDAruntime版本一直,也就是nvcc -V版本一致,我这里是11.1,因此安装命令是:
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

如果上面安装报证书错误(There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘**.org‘,port=443)用下面的命令:

pip install --trusted-host download.pytorch.org torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

一定注意版本别搞错了,推荐的一套版本是

  • CUDA 11.1
  • torch 1.9.0
  • torchvision 0.10.0
  • torchaudio 0.9.0

安装mmcv-full
这里建议直接把mmcvgithub库克隆下来:

git clone https://github.com/open-mmlab/mmcv.git
# 会自动把内容放到mmcv文件夹
cd mmcv
# MMCV_WITH_OPS=1是安装mmcv-full,否则是安装mmcv,这里mmdetection2.8需要mmcv-full
MMCV_WITH_OPS=1 pip install -e .  # package mmcv-full will be installed after this step

不过安装完的是1.4.7的最新版本,与mmdetection2.8要求的版本不符合,此时可以执行

pip install mmcv-full==1.2.4 安装1.2.4版本

也可以用命令

pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

进行安装,还是一定注意CUDA版本号和pytorch,torchvision等对应,CUDA环境变量别弄错了!!!

安装mmcv-full时出了很多错误,总结一下,感慨一下:

  • 首先是CUDA版本和torch版本要一致,建议CUDA版本别太高,不然torch版本没那么高的
  • 安装CUDA时,CUDA_HOME的环境要写对,我之前按照别人写的的多加了一个冒号,结果就出现在这个冒号身上
  • 执行到Running setup.py develop for mmcv-full时可能会卡一会,不用担心
  • 如果报错了也别直接复制最后一行去百度,可以向前翻翻错误的地方,找到可能是关键的地方再百度

安装mmdetection2.8

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .  # or "python setup.py develop"

测试
执行官方给的测试命令即可:
新建一个test.py文件在mmdetection文件夹中,下载给定的网络权重方放到mmdetectioncheckpoints文件夹中(新建)中

from mmdet.apis import init_detector, inference_detector
 
 config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
 # download the checkpoint from model zoo and put it in `checkpoints/`
 # url: http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
 checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
 device = 'cuda:0'
 # init a detector
 model = init_detector(config_file, checkpoint_file, device=device)
 # inference the demo image
 inference_detector(model, 'demo/demo.jpg')

如果正常执行就OK了,我的报了两个警告,不过结果正确,先不管了

五.Vscode远程操控Linux

其实可以在一台有GPU的电脑上,Linux系统安装mmdetection,另一台只有cpuWindows的电脑远程操控,比如弄一个有GPU的台式机在家,拿一个轻薄本,就可以远程操控台式机进行训练。

下面是在Linux系统的主机上运行的:

  • 安装 net-tools 工具:sudo apt-get install net-tools,如果失败,可能是软件源没有更新
  • sudo apt-get update 更新源再试试
  • ifconfig 查看ip地址
  • 安装openssh-server工具,sudo apt-get install openssh-server

下面是在Windows主机上进行的操作

  • 安装vscode(百度即可)
  • vscode中安装ssh插件,插件商店直接搜索ssh即可出现
  • 打开cmd,ping 刚才查到的IP地址,如果能ping通说明可以连接
  • cmd中输入 ssh 主机用户名@主机IP地址 如果失败了,可能是主机中没有安装openssh-server服务,在主机上安装即可:sudo apt-get install openssh-server
  • cmd中输入 ssh 主机用户名@主机IP地址,输入主机用户密码即可
  • vscode中找到远程连接小图标,输入 ssh 主机用户名@主机IP地址,然后输入密码即可连接成功

至此,环境配置完成,后面会用其来测试自己的数据集