maskrcnn-benchmark安装记录

前言

因为学校里有个工程实训的课程,正好老师就说让跑一下maskrcnn benchmark看看识别效果怎么样。然后我就去下了,这里来记录一下安装过程中遇到的困难和问题。本来是让试用一下seg_every_thing那个框架的,结果因为本人显存不够大所以并没有运行成功。最后下了facebookresearch的那个改良版的(?)。链接在这里:

https://github.com/facebookresearch/maskrcnn-benchmark

先从成功的配置环境开始讲,遇到的问题都在“试错”标题下。

配置

系统:Pop_os! 19.04 https://system76.com/pop

硬件:GTX 970M

CUDA10.0、cudnn7.5.1,gcc6.5、pytorch1.1.0,pytorch-nightly

选择pop_os这个系统的原因是它是基于ubuntu的,而且自己下载好了nvidia驱动(不用再自己费劲巴拉的安装),而且我是windows10下一直都无法编译apex那个包(后面会提到),初步估计是因为我vs的版本太高了(2017的15.9.11),导致cuda环境与之不匹配(windows下因为要跑maskrcnn,所以装的是cuda9+cudnn7)。

但是要注意的是,这个系统选好了安装盘就直接在那个盘里安装了,如果装双系统的话我也不清楚,因为我自己是装在硬盘下的。这个系统确实挺友好的,反正我挺喜欢~就是有些许一些小bug,比如说没法切换大小写(我还没找到解决方法)。而且它出了18.04LTS版本的。再往下的版本是没有的,反正我翻遍了论坛和官网,pop_os是本来是有一个17.04版的,后来不提供了。

安装过程

一、安装cuda10.0和cudnn7.5.1

首先下载cuda10.0和cudnn7.5.1。这里借鉴了这个博主的安装过程:

https://blog.csdn.net/wanzhen4330/article/details/81699769

非常简单,下好了cuda10.0的.run文件,安装时用

sudo sh (你下的版本).run --override

就可以了。至于为啥要加override,我时因为它提示了才加,我也不知道是什么原因……(比较小白)

然后设置环境变量。我贴的那个链接真的讲的很详细!大家看一看就知道了。

然后下载cudnn的压缩包,解压完了按照上个博主的方法把文件复制过去就可以啦。

二、按INSTALL.md安装

网址在这里

https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL.md

# first, make sure that your conda is setup properly with the right environment
# for that, check that `which conda`, `which pip` and `which python` points to the
# right path. From a clean conda env, this is what you need to do

conda create --name maskrcnn_benchmark 
解释:如果你在ubuntu中下好了conda,就建立一个conda的虚拟环境。我比较推荐建立虚拟环境哈,因为如果出错了你可以直接删不用耽误其他环境。当然名字你可以改
我用的语句是conda create -n mask python=3.7

conda activate maskrcnn_benchmark
解释:然后激活这个环境啦~

# this installs the right pip and dependencies for the fresh python
conda install ipython

# maskrcnn_benchmark and coco api dependencies
pip install ninja yacs cython matplotlib tqdm opencv-python
解释:上面两个install没啥好解释的,运行就是了。

# follow PyTorch installation in https://pytorch.org/get-started/locally/
# we give the instructions for CUDA 9.0
conda install -c pytorch pytorch-nightly torchvision cudatoolkit=10.0
解释:重头戏来了!今天是5.22日,清华源是5.16关闭的,所以pytorch会下载的非常非常慢,反正我试图下载了n次,都以失败告终。
所以这里推荐一个离线下载的方式,那个博主的博文地址如下所示:
https://blog.csdn.net/jasonzhoujx/article/details/83242385
————!!!!!!!!!!!千万要看这里!!!!!!!!!!!!————
注意,我下载的是10.0的,因为我cuda是10.0的版本,所以上面指令改成了10.0。源地址给的是cudatoolkit=9.0,千万要注意区别~
而且上面我给的地址这个博主下的是pytorch-nightly的cpu版本的。这里下面的试错部分会说到,gpu版本的网址在这里:
pytorch的 https://anaconda.org/pytorch/pytorch/files
pytorch-nightly的 https://anaconda.org/pytorch/pytorch-nightly/files
然后用上面博主给的这个方法:
conda install -n 环境名字 --use-local 下载的包名
就可以安装啦。
至于在链接里寻找要安装的什么版本,我到后面修改博文的时候会详细解释的~~


export INSTALL_DIR=$PWD

# install pycocotools
cd $INSTALL_DIR
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install

# install apex
cd $INSTALL_DIR
git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext

# install PyTorch Detection
cd $INSTALL_DIR
git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
cd maskrcnn-benchmark

# the following will install the lib with
# symbolic links, so that you can modify
# the files if you want and won't need to
# re-build it
python setup.py build develop
解释:如果你上面的环境搭的正确,上述代码运行的时候就不会报错。

unset INSTALL_DIR

三、demo运行

我跑了下面这个demo

cd demo
# by default, it runs on the GPU
# for best results, use min-image-size 800
python webcam.py --min-image-size 800

这个demo跑起来之后,就会弹出一个框,那个框就是你的电脑摄像头!然后他就可以通过你的电脑摄像头进行各种识别~

我因为在ubuntu下,就用手机录了个视频,渣渣画质,我就只截个图吧

maskrcnn-benchmark安装记录_第1张图片

到此为止,你也已经和我一样跑起来了,就祝贺你~如果有BUG,可以看我下面的试错部分有没有你遇到的一些bug

试错

问题一:cuda9.0和gcc6.5无法运行!

我一开始下载的是cuda9.0和cudnn7.0.5版本的。结果在我运行到

python setup.py install --cuda_ext --cpp_ext

和最后一句

python setup.py build develop

的时候报错什么nvcc的各种error。包括这个问题在我windows的环境下也会报,这个时候我意识到可能是我g++和gcc的版本太高了!

然后我降到了6.5,因为现在sudo apt-get install只能下载到6的版本了。

结果还是会报错。具体的错误我现在找不到截图了,回头有找到了再贴上来。

然后看到issues里有人是用了cuda9.2+gcc6.5运行成功了,也有人是用cuda9.0+gcc5.4运行成功了。但是我试图自己手工编译gcc5.4,报错报到我怀疑人生还各种不能解决……所以……算了算了,我就下了cuda10.0。没想到cuda10.0+gcc6.5就成功啦!

等我报错的内容找到之后我要贴上来,然后如果你们遇到同样的错误,可能就是gcc版本和cuda不合适的原因。

问题二:到apex步骤的时候出现问题

报错是这个

AttributeError: 'NoneType' object has no attribute 'split'

我的解决方法是,我一开始下错了pytorch-nightly本地的压缩包,下成了cpu版本的,所以一直说找不到我的GPU。后来我换成了GPU版本的,就是我上面两个链接贴的地址是GPU版本的,然后就运行成功了。

问题三:python setup.py build develop报undefined symbol的错

上面balabala一堆然后拉到底部是

File "/home/nova/mask-rcnn/maskrcnn-benchmark/maskrcnn_benchmark/layers/nms.py", line 3, in 
from maskrcnn_benchmark import _C
ImportError: /home/nova/mask-rcnn/maskrcnn-benchmark/maskrcnn_benchmark/_C.cpython-37m-x86_64-linux-gnu.so: undefined symbol: __cudaRegisterFatBinaryEnd

我的报错和这个不一样,我当时也忘记保存了,大体问题就是没定义这个symbol。这个是我在issues里借鉴的,解决方法也是里面教我的:

cd到maskrcnn-benchmark,执行

rm -rf build
python setup.py build develop

就是把之前build的删除掉重新build一遍!

因为之前我环境搭的挺乱的吧,就遇到这个情况了。

结语

如果有其他问题希望大家来指正和补充,我要开始研究怎么训练它了……后面如果我有想起来的还会补充的!

你可能感兴趣的:(maskrcnn-benchmark安装记录)