内容基本上都是自己理解并翻译过来的,原文有些小前提没讲,我在自己安装的时候出现了一些小问题,这里加上了一点点补充。供大家参考!
兼容的MMDetection和MMCV版本如下。请正确安装版本的MMCV,以避免安装问题。
MMDetection version | MMCV version |
---|---|
master | mmcv-full>=1.2.4, <1.4.0 |
2.11.0 | mmcv-full>=1.2.4, <1.4.0 |
2.10.0 | mmcv-full>=1.2.4, <1.4.0 |
2.9.0 | mmcv-full>=1.2.4, <1.4.0 |
2.8.0 | mmcv-full>=1.2.4, <1.4.0 |
2.7.0 | mmcv-full>=1.1.5, <1.4.0 |
2.6.0 | mmcv-full>=1.1.5, <1.4.0 |
2.5.0 | mmcv-full>=1.1.5, <1.4.0 |
2.4.0 | mmcv-full>=1.1.1, <1.4.0 |
2.3.0 | mmcv-full==1.0.5 |
2.3.0rc0 | mmcv-full>=1.0.2 |
2.2.1 | mmcv==0.6.2 |
2.2.0 | mmcv==0.6.2 |
2.1.0 | mmcv>=0.5.9, <=0.6.1 |
2.0.0 | mmcv>=0.5.1, <=0.5.8 |
注意:如果已安装mmcv,则需要首先运行 pip uninstall mmcv
。 如果同时安装了mmcv和mmcv-full,将出现ModuleNotFoundError
。
你可以使用以下命令简单地安装mmdetection: pip install mmdet
创建一个conda虚拟环境并激活它.
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
按照 official instructions安装PyTorch和Torchvision,例如,
conda install pytorch torchvision -c pytorch
注意:确保您的编译CUDA版本和运行时CUDA版本匹配。 您可以在 PyTorch website上检查支持的CUDA版本以获取预编译的软件包。
例1:
如果您在 /usr/local/cuda
下安装了CUDA10.1,并且想安装PyTorch 1.5, 则需要使用CUDA10.1安装预构建的PyTorch.
conda install pytorch cudatoolkit=10.1 torchvision -c pytorch
例2:
如果您在 /usr/local/cuda
下安装了CUDA9.2,并且想安装PyTorch 1.3.1, 则需要使用CUDA9.2安装预构建的PyTorch.
conda install pytorch=1.3.1 cudatoolkit=9.2 torchvision=0.4.2 -c pytorch
如果您从源代码构建PyTorch而不是安装预构建的pacakge,则可以使用更多的CUDA版本,例如9.0。
安装mmcv-full, 我们建议您按如下方式安装预构建软件包。
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
请将网址中的{cu_version}
和 {torch_version}
替换为所需的网址。 例如,要在CUDA 11和PyTorch 1.7.0中安装最新的mmcv-full,请使用以下命令:
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
请参阅 here 以了解与不同PyTorch和CUDA版本兼容的MMCV的不同版本。 **(可选)**您可以选择通过以下命令从源代码编译mmcv
git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
MMCV_WITH_OPS=1 pip install -e . # package mmcv-full will be installed after this step
cd ..
或直接运行
pip install mmcv-full
克隆MMDetection存储库。
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
安装生成要求,然后安装MMDetection。
pip install -r requirements/build.txt
pip install -v -e . # or "python setup.py develop"
注意:
a. 按照上述说明,MMDetection将以 dev
模式安装 , 对代码进行的任何本地修改都将生效,而无需重新安装。
b. 如果要使用 opencv-python-headless
而不是 opencv -python
, 你可以在安装 MMCV之前先安装它。
c. 一些依赖关系是可选的。 只需运行 pip install -v -e .
只会安装最低的运行时要求。 要使用可选的依赖项(例如,albumentations
和 imagecorruptions
),要么使用pip install -r requirements/optional.txt
手动安装它们,要么在调用 pip
时指定所需的附加项(例如 pip install -v -e .[optional]
)。 extras字段的有效关键字是:all
, tests
, build
, and optional
.
可以为仅CPU环境(CUDA不可用)构建代码。
例如,在CPU模式下,您可以运行 demo/webcam_demo.py . 但是,某些功能在此模式下消失了:
因此,如果您尝试使用包含上述操作的模型进行推理,则会收到报错信息。下表列出了由于依赖这些运算符而无法推断CPU的相关方法。
Operator | Model |
---|---|
Deformable Convolution/Modulated Deformable Convolution | DCN、Guided Anchoring、RepPoints、CentripetalNet、VFNet、CascadeRPN、NAS-FCOS、DetectoRS |
MaskedConv2d | Guided Anchoring |
CARAFE | CARAFE |
SyncBatchNorm | ResNeSt |
注意: MMDetection 目前不支持使用CPU进行训练.
我们提供了一个 Dockerfile 来构建映像. 确保您使用的是 docker version >=19.03.
# build an image with PyTorch 1.6, CUDA 10.1
docker build -t mmdetection docker/
运行它
docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmdetection/data mmdetection
假设您已经安装了CUDA10.1,下面是使用conda设置MMDetection的完整脚本。
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y
# install the latest mmcv
pip install mmcv-full==latest+torch1.6.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html
# install mmdetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .
训练脚本和测试脚本已经修改了 PYTHONPATH
,以确保脚本使用当前目录中的MMDetection。
要使用安装在环境中而不是您正在使用的默认MMDetection,可以在这些脚本中删除以下行
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH
为了验证是否正确安装了MMDetection和所需的环境,我们可以运行示例Python代码来初始化检测器并推断出演示图像:
注意:原文中的前提是自己创建了checkpoints文件夹并下载了权重文件,我在下面的注释中说到了。
from mmdet.apis import init_detector, inference_detector
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# 在mmdetection下创建一个名为checkpoints的文件夹,并从模型库(model zoo)下载权重并放入`checkpoints/`中
# 本demo权重下载地址: http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image
inference_detector(model, 'demo/demo.jpg')
上面的代码应该在您完成安装后成功运行。