0.写在前面:由于网上配置mmdetection及其相关环境的教程较少,有的教程距今(2019.5.30)也有一段时间了,相关配置方法可能发生了变化,我大约花了一周的时间才完成了mmdetection的配置。平时学习过程中看了这么多博客,获得了不少帮助,因此一直想把自己配置mmdetection的整个过程总结出来,一是方便自己以后可能需要再次配置,二是希望能给需要配置它的童鞋一些帮助。由于写本文章时距配置环境有一段时间了,具体的过程可能不完全正确,请根据实际情况应变。本文中主要参考的博客与教程有:
NVIDIA显卡驱动+Cuda安装:NVIDIA显卡与驱动程序对应版本查询及驱动下载
CUDA9.2官方下载页面
Ubuntu16.04 安装 CUDA9.2(总结一些新手容易遇到的问题)(很棒的详细教程)
NVIDIA CUDA各版本下载链接(更新至2019-3-7,包含最新10.1版本)
安装NCCL:安装NCCL2.1.15
ubuntu安装nccl
Pytorch的安装:PyTorch 深度学习【一】Ubuntu16.04 下安装 PyTorch
pip更换国内镜像源
PyTorch官网下载whl文件地址
anaconda的安装与使用:Anaconda介绍、安装及使用教程
安装pycharm:Ubuntu 16.04 安装 PyCharm ubuntu16.04安装pycharm,并设置快捷启动方式
Ubuntu系统备份:Ubuntu16.04系统的备份与还原
1.mmdetection是什么:mmdetection是一款集成了目标检测大部分方法的第三方库,官方的GitHub地址是:mmdetecion
2.安装mmdetection需要的先决环境:
官方给出的要求截图如下,我使用的环境组合是Ubuntu16.04+NVIDIA显卡驱动+Cuda9.2+NCCL2.1.15+PyTorch1.1.0+anaconda3(anaconda自带python3.7,推荐使用anaconda管理系统上的不同Python环境,可以使不同环境有各自的依赖库,互不干扰)(GCC不用自己额外配置)
3.了解了安装mmdetection之前需要哪些东西,那么现在就正式开始安装吧!
3.1安装Ubuntu16.04
一开始我还在虚拟机上尝试安装,后来得知虚拟机上没法直接利用到硬件的驱动进行计算加速,于是删除虚拟机安装了双系统,需要在Linux上进行深度学习的同学们就直接安装双系统吧,不用考虑虚拟机了。具体安装双系统可以在网上查一查相关教程,在使用同学已经有的引导盘的情况下,我只花了5分钟就安装好啦。
3.2进行新系统的相关配置
安装完新系统,可以根据个人喜好对新系统进行相关配置,如桌面背景看起来舒服点,检查检查中文输入法是否可用等等,更重要的是更新系统apt软件的下载源,否则使用apt下载软件非常慢,apt的换源可参考:
ubuntu16.04 更新源详细操作步骤 ubuntu16.04更换和配置阿里源(详细)换源完成后在终端更新系统的apt软件:
sudo apt-get update以及sudo apt-get upgrade。另外个人总感觉Ubuntu系统的网卡驱动有问题,连校园网总是时不时断开,这导致我下载后面相关的依赖项时极其崩溃,后来强行用手机热点下载的。
3.3安装NVIDIA显卡驱动与CUDA
NVIDIA显卡驱动与CUDA的安装方法参考:
NVIDIA显卡与驱动程序对应版本查询及驱动下载
CUDA9.2官方下载页面
Ubuntu16.04 安装 CUDA9.2(总结一些新手容易遇到的问题)(很棒的教程,照着一步步基本无问题)
NVIDIA CUDA各版本下载链接(更新至2019-3-7,包含最新10.1版本)
由于我几乎是Linux新手,所以Linux使用的过程中还是闹了不少笑话,在安装显卡驱动与CUDA的过程中,我遇到的坑有:
3.4安装NCCL
安装NCCL参考:安装NCCL2.1.15 ubuntu安装nccl 安装NCCL可能是我最顺利的过程,一点错误也没出, mmdetection也没有明显的使用到NCCL的地方,导致我怀疑它对于mmdetection的安装到底有用没有用.....不过既然官方文档明确说明了需要NCCL2.0+,那就装上吧。
3.5安装anaconda
anaconda的安装与使用参考:Anaconda介绍、安装及使用教程,非常详细很棒的教程。
3.6使用anaconda创建名为mmdetection的环境,并为环境安装Pytorch和Torchvision
我安装的Pytorch版本是1.1.0,Torchvision版本是0.2.2。
首先有一个问题,网上大多数安装Pytorch的教程都是使用conda进行安装,不过如果使用conda安装,国外源非常之慢,再加上Ubuntu时不时断网,且没有继续上次位置进行下载的功能,所以基本不能完成下载。那么就按照网上的教程为 conda添加国内的源吧!不过呢,国内的源如清华源,中科大源都因为没有取得anaconda公司授权,就在我安装的半个月前很不幸的不能使用了。除开查核资料的过程,安装Pytorch的过程可以说是我耗时最久的过程了,最终我的办法是,使用pip进行Pytorch的安装,为pip添加国内的源,先下载Pytorch的whl文件,然后在本地安装,安装Pytorch官方网页所说, 下载whl文件的方式如下:在mmdetection环境下,终端输入:
pip install torch==1.1.0 -f https://download.pytorch.org/whl/cu92/stable
以上命令的含义是安装 Pytorch的1.1.0 CUDA9.2适用版本。官方网页中指定的是torch=1.0.1,我自己改为了1.1.0,因为 下载1.0.1版本后最后编写python代码测试mmdetection能否使用时,发现torch1.0.1版本已经不适用了(库函数代码中无 mmdetection调用的属性,有一点坑)。
由于是使用pip安装Pytorch,pip不会自动下载Pytorch的相关依赖库,所以安装完Pytorch之后还需要安装numpy, torchvision,大致就是pip install torchvision==0.2.2 pip install numpy。
相关参考资料有:
PyTorch 深度学习【一】Ubuntu16.04 下安装 PyTorch
pip更换国内镜像源
PyTorch官网下载whl文件地址
安装结束后,可以conda list以及pip list查看mmdetection环境已安装的依赖库中是否包含torch和torchvision,以及输入 python,然后在python解释器下输入from torch import * from torchvision import *测试Pytorch是否安装成功。
3.7安装mmcv
到这里基本就快接近完成了,胜利就在前方!先安装git,ubuntu 16.04 安装git的方法,然后安装mmcv:
git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install .
要注意cd mmcv时要根据自己电脑上的路径进入到mmcv目录下。
3.8最后一步,安装mmdetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
./compile.sh
python setup.py install
git clone是在当前目录下进行的,在哪个目录下载mmcv和mmdetection是可以自己选择的,不过要正确的进入mmcv或 mmdetection目录。
OK!终于完成!
4.0测试mmdetection是否安装成功
写到这里,我发现我忘记说安装pycharm的事了...安装pycharm见:buntu 16.04 安装 PyCharm
ubuntu16.04安装pycharm,并设置快捷启动方式
安装完pycharm后,使用pycharm创建test项目进行测试,创建项目时,使用anaconda的mmdetection环境
然后在项目目录下复制入config文件夹,config文件夹来自:
然后同样在项目目录添加faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth文件。faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth可以在线下载,但是从亚马逊服务器下载非常之慢,所以可以直接指定本地已提前准备好的.pth文件。.pth文件可以从这位博主的博客中进入百度网盘下载,检测(1)跑通mmdetection。
然后也在项目目录下准备待识别的目标图片,这里我准备的是名为airPlane.jpg的图片。
好了,终于可以输入代码进行测试了,新建test.py文件输入以下代码:
from mmdet.apis import init_detector, inference_detector, show_result
config_file = 'configs/faster_rcnn_r50_fpn_1x.py'
checkpoint_file = 'faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth'
# build the model from a config file and a checkpoint file
model = init_detector(config_file, checkpoint_file)
# test a single image and show the results
img = 'airPlane.jpg' # or img = mmcv.imread(img), which will only load it once
result = inference_detector(model, img)
show_result(img, result, model.CLASSES)
# test a list of images and write the results to image files
imgs = ['test1.jpg', 'test2.jpg']
for i, result in enumerate(inference_detector(model, imgs, device='cuda:0')):
show_result(imgs[i], result, model.CLASSES, out_file='result_{}.jpg'.format(i))
5.0进行系统备份以便下次直接使用
由于花费一周时间配置,终于配置完成后我很希望能将相关环境备份下来,以便不时之需,备份Ubuntu系统参照:
Ubuntu16.04系统的备份与还原
6.0写在后面
由于本文写时,距离配置过程已经过去了大约半月,所以部分细节可能有些模糊或者不正确,还需要结合自己的情况有一定思考,希望配置mmdetection的你迅速成功。