Detectron2安装、使用与问题记录
Detectron2安装、使用与问题记录
detectron2是Facebook近期开源的框架,可以在Github上搜查到,本文总结了自己安装框架过程,以及自己碰到的一些问题和解决办法。
安装
- 环境构建:请尤其注意版本问题!!!
-
Python >= 3.6
如conda create -n abc pyhon=3.6.8
-
PyTorch 1.3与torchvision
conda install pytorch=1.3 torchvision cudatoolkit=10.0 -c pytorch
(请选择匹配的cudatoolkit版本,以便成功安装框架) -
OpenCV
-
Cython
-
fvcore
pip install 'git+https://github.com/facebookresearch/fvcore'
-
GCC >= 4.9
查看gcc版本
gcc -v
-
pycocotools
pip install git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI
或
git clone https://github.com/cocodataset/cocoapi.git
cd ./cocoapi/PythonAPI
python setup.py build_ext install
- 安装detectron2
git clone https://github.com/facebookresearch/detectron2.git
cd detectron2
python setup.py build develop
#或
pip install -e .
运行后需要耐心等待一会,没有任何报错提示成功安装,就大功告成了
demo
自行从网络上下载一张图片,比如下图,将其放在 /detectron2/ 目录下,同时创建一个result文件夹:
运行实例分割命令:
python demo/demo.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --input 1.jpg --output /result --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl
结果图如下:
问题汇总
- 运行
pip install -e .
或python setup.py build develop
报错,导致安装不成功
解决办法:运行python -m detectron2.utils.collect_env
来查看本机搭配环境,需要确认输出信息中的"Detectron2 CUDA Compiler", “CUDA_HOME”, "PyTorch built with - CUDA"包含相同的cuda版本,不相同时,需要重新配置环境
需要注意:一旦环境中torch版本发生了变化进行以下两步,目的在于重新搭建框架:
1.1rm -rf build/ **/*.so
1.2pip install -e .
或python setup.py build develop
- 报错如下:
Searching for tensorboard Reading https://pypi.python.org/simple/tensorboard/ No local packages or working download links found for tensorboard error: Could not find suitable distribution for Requirement.parse('tensorboard')
解决办法:
2.1pip install tensorboard
2.2python setup.py build develop
- 安装时,出现以下错误
/home/abc/detectron2/detectron2/layers/csrc/ROIAlign/ROIAlign_cuda.cu -o build/temp.linux-x86_64-3.6/home/abc/detectron2/detectron2/layers/csrc/ROIAlign/ROIAlign_cuda.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -DCUDA_HAS_FP16=1 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=_C -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_75,code=sm_75 -std=c++11 nvcc fatal : Unsupported gpu architecture 'compute_75' error: command '/usr/local/cuda/bin/nvcc' failed with exit status 1
问题解决:由于nvcc版本不支持而引起的问题,可先运行python -m detectron2.utils.collect_env
,查看本机cuda、cudnn版本信息,根据版本信息,确认是否支持安装detectron2
比如我之前电脑nvcc不支持computer_75,只支持到computer_70(detectron2只支持pytorch1.3,而pytorch1.3只支持cuda>=9.2,电脑RTX2080ti驱动装的是cuda9.0) - 训练网络时,出现错误
ValueError:Type mismatch(<class 'tuple' vs. class 'str'>) with values (() vs. voc_2007_trainval) for config key: DATASETS.TRAIN
问题原因:
上述问题大致意思为:读入的str类型不匹配需要的tuple类型,相对应的值为()与’voc_2007_trainval’
此问题抛出,是因为在代码读取config文件中的信息,信息提供格式不正确而导致的,可以去查看config文件内容的格式是否存在问题。(例如.yaml类型文,有严格的格式控制)