MMDetection安装实战教程
MMDetection 支持在 Linux
,Windows
和 macOS
上运行,其实在 Windows
和 Linux
上配置环境区别不大,建议有条件还是在 Linux
上配置,它需要 Python 3.7
以上,CUDA 9.2
以上和 PyTorch1.8
及其以上。
创建 Conda
虚拟环境
conda create --name mmdet python=3.8 -y
conda activate mmdet
安装 PyTorch
首先查看自己电脑的 CUDA
版本
nvidia-smi
输出:
# nvidia-smi
Tue Dec 17 01:31:35 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.12 Driver Version: 535.104.12 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA A800 80GB PCIe On | 00000000:38:00.0 Off | 0 |
| N/A 73C P0 251W / 300W | 70007MiB / 81920MiB | 100% Default |
| | | Disabled |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
+---------------------------------------------------------------------------------------+
查看自己的 CUDA
版本,我的是 CUDA12.2
,但是安装与 12.2 对应的 Torch
时,后面会出现与 mmcv
版本不匹配的问题,从而导致安装失败。因此,我在这里选择了 CUDA 11.8
版本的 Torch
,pytorch 的下载链接在这里(PyTorch 以前版本),往下拉,选择合适的 pytorch
。虽然现在已经到了 2.X
的 PyTorch
,但是 mmcv
的版本更新并没有 PyTorch
快,因此,为了与 mmcv
保持版本对应一致,这里选择了 2.1.0
版本的 Torch
。
# CUDA 11.8
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
这里注意,其实服务器(本机)的 CUDA 版本是 12.2,但是我们可以选择比 12.2 小的版本,因为在虚拟环境中会自己再安装一个 PyTorch 版本的 CUDA 版本,打印安装包为例:
conda list cuda
(mmdet) conda list torch
# packages in environment at /opt/conda/envs/mmdet:
#
# Name Version Build Channel
torch 2.1.0+cu118 pypi_0 pypi
torchaudio 2.1.0+cu118 pypi_0 pypi
torchvision 0.16.0+cu118 pypi_0 pypi
我们可以看到 cuda11.8
和 torch2.1.0
已经安装完成,下面我们测试是否安装成功
python -c "import torch; print(torch.cuda.is_available())"
或者:
(mmyolo) python
Python 3.8.20 (default, Oct 3 2025, 15:47:27)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print (torch.cuda.is_available())
True
>>> exit()
显示为 True 则表示安装成功,若显示为 False 则未安装成功,需要排查原因重新安装。
安装 mmcv
首先要安装 mim
、 mmengine
pip install -U openmim
mim install mmengine
安装mmcv这里需要注意一下,因为非常容易出错,需要选择合适的版本,选择版本的地址在这里(mmcv版本),mmcv
建议不要选择太高,最好在 2.0.0-2.1 之间。因为在上一步的安装中,我们安装的是 torch2.1.0
版本,这里一步选择下拉框中的选择 cuda11.8
,torch2.1.x
以及后面 mmcv2.1.0
,这几个一定保持对应,否则后面再安装完成后测试的时候,会因为版本不对应出错。
安装命令:
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
当然这里也可以选择torch别的版本,截止目前,mmdetection中mmcv支持的最高torch版本是2.1.x
安装 mmdet
方案 a:如果你开发并直接运行 mmdet,从源码安装它:
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" 指详细说明,或更多的输出
# "-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。
方案 b:如果你将 mmdet 作为依赖或第三方 Python 包,使用 MIM 安装:
mim install mmdet
注:如果因国内安装速度限制问题,可-i 命令添加代理提高安装速度。
mim install mmdet -i https://pypi.tuna.tsinghua.edu.cn/simple
验证安装
为了验证 MMDetection
是否安装正确,我们提供了一些示例代码来执行模型推理。
步骤 1. 下载 mmdet
源码文件
git clone https://github.com/open-mmlab/mmdetection.git
cd /to/path/mmdetection
步骤 2. 我们还需要下载配置文件和模型权重文件。
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
下载将需要几秒钟或更长时间,这取决于你的网络环境。完成后,你会在当前文件夹中发现两个文件 rtmdet_tiny_8xb32-300e_coco.py
和 rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth
。
步骤 3. 推理验证。
方案 a:如果你通过源码安装的 MMDetection,那么直接运行以下命令进行验证:
python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu
你会在当前文件夹中的 outputs/vis
文件夹中看到一个新的图像 demo.jpg
,图像中包含有网络预测的检测框。
方案 b:如果你通过 MIM 安装的 MMDetection,那么可以打开你的 Python 解析器,复制并粘贴以下代码:
from mmdet.apis import init_detector, inference_detector
config_file = 'rtmdet_tiny_8xb32-300e_coco.py'
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'
model = init_detector(config_file, checkpoint_file, device='cpu') # or device='cuda:0'
inference_detector(model, 'demo/demo.jpg')
你将会看到一个包含 DetDataSample
的列表,预测结果在 pred_instance
里,包含有检测框,类别和得分。
[!error]- Error
问题 1:UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argume
解决方案:
找到functional.py文件报错位置,修改加上代码indexing = ‘ij’。return _VF.meshgrid(tensors, **kwargs,indexing = 'ij') # type: ignore[attr-defined]
参考文件:
学习配置文件 — MMDetection 3.3.0 文档
MMDetection安装踩坑教程,一次性安装成功_mmcv2.1.0搭配什么mmdet-CSDN博客
使用MMDetection训练自己的数据集-CSDN博客
使用mmdetection框架训练自己的数据集_mmdetection训练自己的数据-CSDN博客
原文地址:https://blog.csdn.net/weixin_62828995/article/details/145161980
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!