最新更新:手滑不小心删掉了Anaconda文件夹,导致创建好的环境都没了。重新安装的时候干脆装了个最新版
## 一、下载安装包 在GitHub上下载mmdetection的官方安装包,链接为[https://github.com/open-mmlab/mmdetection.git](https://github.com/open-mmlab/mmdetection.git) 由于直接下载速度较慢,可以在码云里新建工程并导入,从码云下载压缩包,下载zip文件并解压。 ## 二、配置环境
MMDetection官方提供的install.md文件包含了详细的配置过程,可以进行参考。具体步骤如下:
1、创建虚拟环境
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
注意:我的电脑不能直接运行conda activate
,需要运行source activate
才可以,但单运行过source activate
后在同一个terminal下再运行conda activate
就不报错了。
如果新创建的环境想要直接继承旧环境,可以使用conda的拷贝功能:
conda create -n 新环境 --clone 旧环境
另外,如果这个环境不小心搞废了,可以使用conda remove -n open-mmlab --all
直接删除,从头再来(流泪)。
2、安装PyTorch
官方提供的安装语句
conda install pytorch torchvision -c pytorch
由于是从官网下载,因此速度极慢,可以去掉-c运行。有时下载时遇到conda下载中断问题,可以参考https://blog.csdn.net/weixin_41010198/article/details/87912152这篇文章解决。
我使用了同事给的安装包离线下载,语句如下。
pip install /home/*mypath*/torch-1.4.0-cp37-cp37m-manylinux1_x86_64.whl
检验pytorch是否安装成功:
$ python
>>> import torch
此时报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/XXX/anaconda3/envs/open-mmlab/lib/python3.7/site-packages/torch/__init__.py", line 81, in <module>
from torch._C import *
ImportError: numpy.core.multiarray failed to import
其问题在于numpy的版本不对,使用语句pip install numpy==1.18.5
将numpy版本从1.19降低至1.18.5后解决问题。
同理,包安装torchvision:
pip install torchvision==0.5.0
PS.之前用的同事给的离线包安装的,居然有问题,后面运行test.py的时候报错,以为是版本不对,鼓捣半天,发现pip install就没问题,有点小坑。
完成pytorch的安装,后续可以在conda list
中查看。
3、安装mmcv
安装mmcv时要注意一定要和自己的cuda版本、pytorch版本匹配。
这里有一个问题,安装的时候可以选择安装mmcv和mmcv-full,关于二者的区别,官网给出的README.md给出了解释:
mmcv: lite, without CUDA ops but all other features, similar to mmcv<1.0.0. It is useful when you do not need those CUDA ops.
mmcv-full: comprehensive, with full features and various CUDA ops out of box. It takes longer time to build.
最后还给出了一个提示:
Note: Do not install both versions in the same environment, otherwise you may encounter errors like ModuleNotFound. You need to uninstall one before installing the other.
意思是不要进行重复安装,但是据说两个都装也没有什么问题,我决定两个都装试一下。
mmcv-full可以使用官网提供的语句进行安装:
pip install mmcv-full==latest+torch1.4.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html
mmcv我是使用的离线安装包。我之前因为版本不匹配的问题,安装总是不成功,同事给了我一个验证可行的mmcv包,解压后在该文件夹路径下打开终端运行:
pip install -e .
成功安装mmcv-full和mmcv,后续如果因为不兼容而出现问题,就随机挑选一个幸运安装包删掉(躺平)。
4、安装mmdet
使用官方给出的安装方式,先安装需要的包,后安装mmdet。cd进入mmdetection所在文件夹:
pip install -r requirements/build.txt
pip install -v -e . # or "python setup.py develop"
如果需要卸载重装,需要安装给出的方法,不能仅仅uninstall mmdet包:
pip uninstall mmdet
rm -rf ./build
find . -name "*.so" | xargs rm
三、测试MMDetection
运行MMDetection自带的Test.py,报如下错误:
import torchvision
ModuleNotFoundError: No module named 'torchvision'
经检查,不是由于同时安装了mmcv和mmcv-full导致的,也不是版本问题,而是torchvision离线包有问题,改为使用pip install 安装即可解决。
之后再运行,又遇到新的错误:
No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
usage: test.py [-h] [--out OUT] [--fuse-conv-bn] [--format-only]
[--eval EVAL [EVAL ...]] [--show] [--show-dir SHOW_DIR]
[--show-score-thr SHOW_SCORE_THR] [--gpu-collect]
[--tmpdir TMPDIR] [--cfg-options CFG_OPTIONS [CFG_OPTIONS ...]]
[--options OPTIONS [OPTIONS ...]]
[--eval-options EVAL_OPTIONS [EVAL_OPTIONS ...]]
[--launcher {none,pytorch,slurm,mpi}] [--local_rank LOCAL_RANK]
config checkpoint
test.py: error: the following arguments are required: config, checkpoint
加入断点检查程序,import可以正常导入所有需要的包,程序报错的主要原因是没有给出所需的输入。但第一行的提示No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
值得注意。经过检查,发现原来此时驱动掉了,输入nvidia-smi
没有输出,重新安装驱动(安装方法参考https://blog.csdn.net/jiraiya_wl/article/details/108997663),不再提示这一句。
由于数据集还没有准备好,所以使用官方提供的单张图测试程序进行测试:
python demo/image_demo.py demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py \
checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth --device cpu
最后一项的--device cpu
可以忽略。
最终程序跑通(撒花)~