Detectron2 安装 | 一
本文是全系列中第10 / 15篇:Detectron2
- Detectron2 使用自定义数据集 | 四
- Detectron2 基准测试 | 十二
- Detectron2 使用自定义数据加载器 | 五
- Detectron2 与其他库的兼容性 | 十三
- Detectron2 使用模型 | 六
- Detectron2 API 之 checkpoint | 十四
- Detectron2 编写模型 | 七
- Detectron2 API 之 config | 十五
- Detectron2 开始训练 | 八
- Detectron2 安装 | 一
- Detectron2 进行评估 | 九
- Detectron2 入门 | 二
- Detectron2 配置 | 十
- Detectron2 扩展默认值 | 三
- Detectron2 部署 | 十一
作者|facebookresearch
编译|Flin
来源|Github
介绍
Detectron是构建在Caffe2和Python之上,实现了10多篇计算机视觉最新的成果。Facebook AI研究院又开源了Detectron的升级版,也就是接下来我们要介绍的:Detectron2。
Detectron2 是 Facebook AI Research 推出的一个CV库,它实现了最新的目标检测算法,是对先前版本 Detectron 的完全重写,号称目标检测三大开源神器之一(Detectron2/mmDetection/SimpleDet)。
与 mmdetection 、TensorFlow Object Detection API一样,Detectron2 也是通过配置文件来设置各种参数,一点点修改到最后进行目标检测。
特性:
- 基于PyTorch:PyTorch可以提供更直观的命令式编程模型,开发者可以更快的进行迭代模型设计和实验。
-
化、可扩展:从Detectron2开始,Facebook引入了化设计,允许用户将自定义插入目标检测系统的几乎任何部分。其可扩展性也使得Detectron2更加灵活。
-
支持语义分割和全景分割。
-
实现质量:从头开始重写推出的Detectron2,解决了原始Detectron中的几个实现问题,比原始Detectron更快。
安装
我们的Colab Notebook(https://colab.research.google.com/drive/16jcaJoc6bCFAQ96jDe2HwtXj7BMD_-m5) 具有逐步指导,说明如何安装detectron2。该Dockerfile(https://github.com/facebookresearch/detectron2/blob/master/docker/Dockerfile) 还安装detectron2用一些简单的命令。
要求
- 带有Python≥3.6的Linux或macOS
- PyTorch≥1.3
- torchvision的PyTorch安装相匹配。你可以在pytorch.org上将它们安装在一起以确保这一点。
- 演示和可视化所需的OpenCV(可选)
- pycocotools:
pip install cython; pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
从源代码构建Detectron2
在具有上述依赖性并且gcc&g ++≥4.9之后,运行:
pip install 'git+https://github.com/facebookresearch/detectron2.git'
# (如果没有权限,则添加user)
# 或者,要从本地克隆安装:
git clone https://github.com/facebookresearch/detectron2.git
cd detectron2 && pip install -e .
# 或者在macOS上
# CC=clang CXX=clang++ pip install -e .
要重建从本地克隆生成的detectron2,rm -rf build/ **/*.so
后pip install -e
。重新安装PyTorch之后,你通常需要重建detectron2。 .
安装预建Detectron2
# for CUDA 10.1:
pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/index.html
可以用”cu{100,92}”或”cpu”替换cu101。
注意:
- 这种安装必须与最新的官方PyTorch版本(当前为1.4)一起使用。它不适用于你自定义的PyTorch构建。
- 这样的安装是detectron2的wrt master分支过期。它可能与使用detectron2的研究项目的主分支(例如,项目或meshrcnn中的分支)不兼容 。
常见的安装问题
- 如果你在使用预制的Detectron2时遇到问题,请卸载它并尝试从源代码进行构建。
-
运行库时,未定义的 torch/aten/caffe2 符号或分割错误立即出现。
-
解决:
- 如果detectron2或torchvision没有使用你正在运行的PyTorch版本进行编译,则可能会发生这种情况。
如果使用预制的Torchvision,请卸载torchvision和pytorch,然后在 pytorch.org(https://pytorch.org/) 之后重新安装它们。如果你手动生成detectron2或torchvision,请删除所生成的文件(build/,**/*.so
)并重新生成它们。 -
如果你无法解决问题,请在问题中包含
gdb -ex "r" -ex "bt" -ex "quit" --args python -m detectron2.utils.collect_env
的输出。
- 如果detectron2或torchvision没有使用你正在运行的PyTorch版本进行编译,则可能会发生这种情况。
- detectron2/_C*.so 中未定义C ++符号。
– 解决:通常是因为该库是用较新的C ++编译器编译的,但要用较旧的C ++运行时运行。使用旧的python可能会发生这种情况。
尝试conda update libgcc
。然后重建detectron2。
- “未使用GPU支持进行编译”或”Detectron2 CUDA编译器:不可用”。
– 解决:
– 生成detectron2时未找到CUDA。你应该确保
“`python
python -c 'import torch; from torch.utils.cpp_extension import CUDA_HOME; print(torch.cuda.is_available(), CUDA_HOME)'
“`
- “无效的设备功能”或”没有内核映像可用于执行”。
– 两种可能性:
- 你使用一个版本的CUDA构建detectron2,但使用其他版本运行它。
要检查是否存在这种情况,请使用
python -m detectron2.utils.collect_env
找出不一致的CUDA版本。在此命令的输出中,你应该期望”Detectron2 CUDA编译器”,”CUDA_HOME”,”使用-CUDA构建的PyTorch”包含相同版本的cuda库。当它们不一致时,你需要安装其他版本的PyTorch(或自己构建)以匹配本地CUDA安装,或者安装其他版本的CUDA以匹配PyTorch。
-
Detectron2或PyTorch/orchvision不是为正确的GPU架构(计算兼容性)而构建的。
PyTorch/detectron2/torchvision的GPU架构可在
python -m detectron2.utils.collect_env
中的”体系结构标志”中找到 。默认情况下,detectron2 / torchvision的GPU架构标志与构建期间检测到的GPU模型匹配。这意味着编译后的代码可能无法在其他GPU模型上运行。要覆盖detectron2 / torchvision的GPU体系结构,请在构建过程中使用
TORCH_CUDA_ARCH_LIST
环境变量。例如,
export TORCH_CUDA_ARCH_LIST=6.0,7.0
使其适用于P100和V100。请访问https://developer.nvidia.com/cuda-gpus,以找到适合你设备的正确计算兼容性编号。
- 未定义的CUDA符号或无法打开 libcudart.so.
– 解决:
– 用于构建detectron2或torchvision的NVCC的版本与运行CUDA的版本不匹配。使用anaconda的CUDA运行时通常会发生这种情况。
– 使用python -m detectron2.utils.collect_env
找出不一致的CUDA版本。在此命令的输出中,你应该期望”Detectron2 CUDA编译器”,”CUDA_HOME”,”使用-CUDA构建的PyTorch”包含相同版本的cuda库。
- 当它们不一致时,你需要安装其他版本的PyTorch(或自己构建)以匹配本地CUDA安装,或者安装其他版本的CUDA以匹配PyTorch。
- “ImportError:无法导入名称’_C'”。
– 解决:
请按照上述说明构建并安装detectron2。
- 进行”TraceWarning”后,出现ONNX转换段错误。
– 解决:
使用编译器从其源代码构建和安装ONNX,该编译器的版本与PyTorch使用的版本更接近(可在torch.__config__.show()
中找到)。
原文链接:https://detectron2.readthedocs.io/tutorials/install.html
原创文章,作者:磐石,如若转载,请注明出处:https://panchuang.net/2020/05/31/detectron2-%e5%ae%89%e8%a3%85-%e4%b8%80/