MMDetection环境搭建(5060显卡)
open-mmlab/OpenMMLabCourse:OpenMMLab课程索引及相关内容
MMDetection 环境搭建保姆级指南(支持50系列显卡)_mmdetection windows安装-CSDN博客
本地编译mmcv-ful、mmdet、mmpose等老版本_50系列显卡安装mmcv-CSDN博客
只能说问AI有AI的好处,但是查资料还是不能只依赖ai,生成的信息毕竟不是很实时的,而且可能就是来回进行修改,并且他每次都会和你说这次一定没问题,AI会惩罚每一个不认真学习的人。
当前系统是WIN11,NVIDIA GeForce RTX 5060 Laptop GPU,PyTorch CUDA 2.8.0+cu128,python 3.9.23,mmcv 2.2.0,MMDetection 3.3.0(可能没有安装好GPU版本的mmcv,还在研究ing)
安装遇到的问题是5060的架构需要Torch在2.5以上,但是mmcv安装Windows下找到最高是2.3.x,如果是问AI大概率就是让你直接使用命令行安装(如pip install mmcv==2.2.0 -f https://download.openmmlab.com/mmcv/dist/cu121/torch2.3/index.html),直接访问这个网站是存在的,但是替换成CUDA12.8以及torch2.5之后就会发现网址显示“此 XML 文件似乎没有与之关联的任何样式信息。”,所以只能通过源码构建。but这个时候AI会让你删掉当前环境的torch,让你重新安装低版本的torch,最后的结果就是pytorch也无法使用,于是当前的思路就是先根据GPU的型号确定CUDA和torch的版本,之后再通过源码安装mmcv。
安装Anaconda
这个看个人习惯,我平时使用的是conda来进行环境管理。
2024年最新版Anaconda3的安装配置及使用教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)-CSDN博客
安装CUDA和cuDNN
CUDA和cuDNN的安装_cuda12.8对应的cudnn-CSDN博客
download.pytorch.org/whl/cu128/torch/
CUDA GPU Compute Capability | NVIDIA Developer
也可以在命令行执行下面这条命令(这个算力我没弄懂)。
查询 NVIDIA GPU 的计算能力(Compute Capability)并以 CSV 格式显示结果。
nvidia-smi --query-gpu=compute_cap --format=csv显示当前系统中 NVIDIA CUDA 编译器的版本信息。
nvcc -V监控和管理 NVIDIA GPU 设备。
nvidia-smi安装Git
Git - Install for Windowshttps://git-scm.com/install/windowsGit基本使用(很详细)-CSDN博客
https://blog.csdn.net/qq_45796592/article/details/128953729?ops_request_misc=elastic_search_misc&request_id=468c0d2ecd7ad36f6ef0335ed9fea595&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-128953729-null-null.142^v102^pc_search_result_base7&utm_term=git&spm=1018.2226.3001.4187如果不安装这个也可以手动访问网址进行下载(安装时,勾选将git添加到Path,如果忘记勾选需要手动配置环境变量)。
安装Visual Studio 2022
https://pan.baidu.com/s/1omTYg7w0pftwD4PdtVtofw?pwd=5566https://pan.baidu.com/s/1omTYg7w0pftwD4PdtVtofw?pwd=5566这个我一开始就是用的2022,mmcv提到的是2019版本的,我没试过。
安装“使用C++的桌面开发”,下载安装可以设置一下位置,有些位置不能修改就是必须要安装在C盘。
安装python3.9
我这里使用的是3.9版本的python环境。
名字可以根据命名规范来起,尽量和项目是相关的。
使用 conda 包管理器创建一个新的虚拟环境,环境名称为mmcv,并指定在该环境中安装 Python 3.9版本,同时自动确认创建操作。
conda create -n mmcv python=3.9 -y激活名为mmcv的 Conda 虚拟环境。
conda activate mmcv退出当前激活的环境(如果需要)
conda deactivate查看所有conda环境(如果需要)
conda info --envs永久删除mmcv环境(如果需要)
conda remove -n mmcv --all -y安装pytorch
开始https://pytorch.org/get-started/locally/
使用 pip 从 PyTorch 官方指定的索引地址安装适用于 CUDA 12.8 版本的 PyTorch 和 torchvision 包。(我使用PyTorch 2.10.0版本出现ninja 编译失败以及_ext 模块缺失,这里并没有指定torch版本,按照我这个安装默认是2.8.0版本,如果使用python3.10安装的是2.11.0版本)
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu128阿里云镜像
pip3 install torch torchvision -f https://mirrors.aliyun.com/pytorch-wheels/cu128/上海交通大学镜像
pip3 install torch torchvision -f https://mirror.sjtu.edu.cn/pytorch-wheels/cu128 # 或者使用通用的索引页 pip3 install torch torchvision -f https://mirror.sjtu.edu.cn/pytorch-wheels/torch_stable.html快速检查 PyTorch 及其相关组件是否已安装及其版本。
pip list | findstr torchtorch 2.8.0+cu128
torchvision 0.23.0+cu12
验证 PyTorch 及其 GPU 支持是否安装正确(运行代码)。
import torch, torchvision print(torch.__version__) print(torch.version.cuda) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))2.8.0+cu128
12.8
True
NVIDIA GeForce RTX 5060 Laptop GPU
安装mmcv
从源代码构建 MMCV — mmcv 2.2.0 文档
从这里看到最高torch是2.3.x。
克隆仓库
git clone https://github.com/open-mmlab/mmcv.git cd mmcv如果网络太差或者没有安装Git也可以手动下载解压,下载完是mmcv-main.zip,我解压后会把-main删除,保留“mmcv”。之后就是命令行执行cd mmcv。
open-mmlab/mmcv:OpenMMLab计算机视觉基金会https://github.com/open-mmlab/mmcv
安装并加快编译速度ninjapsutil
pip install -r requirements/optional.txt设置MSVC编译器
设置环境变量,添加到 ,这样它将在提示词中显示,如下所示。C:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64PATHcl.exe.
我是使用Everything软件搜索cl.exe就出来了,我的路径是D:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x86。Windows设置环境变量就是此电脑(右键)->点击“属性”进入“系统信息”窗口->点击“高级系统设置”进入“系统属性”窗口->点击“环境变量”进入“环境变量”窗口->在“系统变量”里面找到“Path”->点击“新建”后输入cl.exe的路径(不包含cl.exe)->一直点击“确定”(详细环境变量设置可以自行百度)。
cl(mmcv) PS E:\code\OpenMMLabCourse\mmcv> cl
用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.44.35221 版
版权所有(C) Microsoft Corporation。保留所有权利。用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]
CUDA工具包设置
将当前会话中的CUDA_HOME环境变量指向指定的 CUDA 12.8 安装路径。
$env:CUDA_HOME = "D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8"设置CUDA目标拱
设置 PyTorch 编译 CUDA 扩展时目标 GPU 架构的环境变量。
$env:TORCH_CUDA_ARCH_LIST = "12.0" $env:TORCH_DISABLE_DYNAMO = "1"构建与安装
需要先设置CUDA的相关信息,要不然安装的是cpu版本的mmcv。
python setup.py build_ext -j4(mmcv) PS E:\code\OpenMMLabCourse\mmcv> python setup.py build_ex
Traceback (most recent call last):
File "E:\code\OpenMMLabCourse\mmcv\setup.py", line 5, in <module>
from pkg_resources import DistributionNotFound, get_distribution, parse_version
ModuleNotFoundError: No module named 'pkg_resources'
补一个安装“python -m pip install setuptools==69.5.1 --upgrade --force-reinstall”,第一次都没问题,重新弄一次到处是问题(这里不确定是不是PyTorch版本问题导致的)。
python -c "from pkg_resources import DistributionNotFound, get_distribution, parse_version; print('✅ pkg_resources 模块导入成功!')"<string>:1: DeprecationWarning: pkg_resources is deprecated as
an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
✅ pkg_resources 模块导入成功!
之后重新执行“python setup.py build_ext ”,这个过程会输出很多警告,不需要管,构建需要一段时间。
正在创建库 E:\code\OpenMMLabCourse\mmcv\build\temp.win-amd64
-cpython-39\Release\mmcv\ops\csrc\pytorch\cpu\_ext.cp39-win_am
d64.lib 和对象 E:\code\OpenMMLabCourse\mmcv\build\temp.win-amd
64-cpython-39\Release\mmcv\ops\csrc\pytorch\cpu\_ext.cp39-win_amd64.exp
正在生成代码
已完成代码的生成
python setup.py develop中途出现File "D:\ProgramData\anaconda3\envs\mmcv\lib\site-packages\setuptools\command\develop.py", line 39, in run subprocess.check_call(cmd) File "D:\ProgramData\anaconda3\envs\mmcv\lib\subprocess.py", line 373, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['D:\\ProgramData\\ana conda3\\envs\\mmcv\\python.exe', '-m', 'pip', 'install', '-e', '.', '--use-pep517']' returned non-zero exit status 1.
pip install 'setuptools<60'我觉得就是我当前网络不好,这个第一次明明是没有问题的,第二次反而出现一些包安装网络超时,把报错的地方单独安装了一遍,重新运行“python setup.py develop”。
pip install regex==2023.12.25 -i https://mirrors.aliyun.com/pypi/simple/ --user pip install opencv-python==4.8.1.78 -i https://mirrors.aliyun.com/pypi/simple/ pip install addict mmengine>=0.3.0 yapf numpy==1.26.4 cython setuptools_scm -i https://mirrors.aliyun.com/pypi/simple/ --timeout 120Using d:\programdata\anaconda3\envs\mmcv\lib\site-packages
Searching for six==1.17.0
Best match: six 1.17.0
Adding six 1.17.0 to easy-install.pth fileUsing d:\programdata\anaconda3\envs\mmcv\lib\site-packages
Finished processing dependencies for mmcv==2.2.0
python .dev_scripts/check_installation.py(mmcv) PS E:\code\OpenMMLabCourse\mmcv> python .dev_scripts/check_installation.py
Start checking the installation of mmcv ...
CPU ops were compiled successfully.
CUDA ops were compiled successfully.
mmcv has been installed successfully.Environment information:
sys.platform: win32
Python: 3.9.23 | packaged by conda-forge | (main, Jun 4 2025, 17:49:16) [MSC v.1929 64 bit (AMD64)]
CUDA available: True
GPU 0: NVIDIA GeForce RTX 5060 Laptop GPU
CUDA_HOME: D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
NVCC: Cuda compilation tools, release 12.8, V12.8.61
PyTorch: 2.8.0+cu128
TorchVision: 0.23.0+cu128
OpenCV: 4.8.1
MMEngine: 0.10.7
MMCV: 2.2.0
MMCV Compiler: MSVC 194435221
MMCV CUDA Compiler: 12.8
也有使用开发模式安装的(如果需要,这个没有单独验证,不确定能不能安装)。
pip install -e .mmcv的版本可以在mmcv/mmcv/version.py里面看到(因为他会生成一些文件,所以之后如果创建新的环境需要用到mmcv就需要重新复制一份mmcv,然后重复进行上述的操作,不然之前已经配置好的环境可能会报错)。
清除之前的构建残留
Remove-Item -Recurse -Force build -ErrorAction SilentlyContinue Remove-Item -Recurse -Force mmcv/_ext.* -ErrorAction SilentlyContinue安装mmdetection
开始你的第一步 — MMDetection 3.3.0 文档
open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark
克隆仓库
git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection安装
pip install -v -e .Installed e:\code\openmmlabcourse\mmdetection
Successfully installed mmdet pycocotools-2.0.11 scipy-1.13.1 shapely-2.0.7 terminaltables-3.1.10 tqdm-4.67.3
验证安装
安装 mim 工具
pip install openmim -i https://mirrors.aliyun.com/pypi/simple/验证 mim 是否安装成功
mim --versionmim, version 0.3.9
下载配置文件和模型权重文件
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth exists in E:\code\OpenMMLabCourse\mmdetection
Successfully dumped rtmdet_tiny_8xb32-300e_coco.py to E:\code\OpenMMLabCourse\mmdetection
推理验证
命令行运行(mmdetection文件夹下运行),当前文件夹中的outputs/vis文件夹中看到一个新的图像demo.jpg,图像中包含有网络预测的检测框。
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 cpuLoads checkpoint by local backend from path: rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth
The model and loaded state dict do not match exactly
unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std
Inference ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
results have been saved at outputs
如果运行代码还是报错可以关闭编译器或者重启内核重新运行。
import sys import torch import mmcv import mmdet # 仅打印实际环境信息,兼容所有 MMCV 2.2.0 版本(CPU/GPU) print("===== 实际环境信息 =====") # Python 信息 print(f"Python 版本: {sys.version.split()[0]}") # PyTorch & CUDA 信息 print(f"PyTorch 版本: {torch.__version__}") print(f"CUDA 是否可用 (PyTorch): {torch.cuda.is_available()}") print(f"PyTorch 编译的 CUDA 版本: {torch.version.cuda}") # GPU 信息(若CUDA可用) if torch.cuda.is_available(): print(f"GPU 型号: {torch.cuda.get_device_name(0)}") print(f"GPU 数量: {torch.cuda.device_count()}") # MMCV 信息(兼容 CPU/GPU 版本) print(f"MMCV 版本: {mmcv.__version__}") # 兼容判断 MMCV CUDA 相关属性 if hasattr(mmcv, 'has_cuda'): print(f"MMCV CUDA 算子是否可用: {mmcv.has_cuda}") elif hasattr(mmcv, 'ops') and hasattr(mmcv.ops, 'is_available'): print(f"MMCV CUDA 算子是否可用: {mmcv.ops.is_available()}") else: print(f"MMCV CUDA 算子是否可用: 未检测到(可能为CPU版本)") # 兼容获取 MMCV 编译信息 try: print(f"MMCV 编译的 CUDA 版本: {mmcv.get_compile_cuda_version()}") except AttributeError: print(f"MMCV 编译的 CUDA 版本: 未编译 CUDA(CPU版本)") try: print(f"MMCV 编译的 PyTorch 版本: {mmcv.get_compile_version()}") except AttributeError: print(f"MMCV 编译的 PyTorch 版本: 无法获取(CPU版本)") # MMDetection 信息 print(f"MMDetection 版本: {mmdet.__version__}") print("===== 信息打印完成 =====")===== 实际环境信息 =====
Python 版本: 3.9.23
PyTorch 版本: 2.8.0+cu128
CUDA 是否可用 (PyTorch): True
PyTorch 编译的 CUDA 版本: 12.8
GPU 型号: NVIDIA GeForce RTX 5060 Laptop GPU
GPU 数量: 1
MMCV 版本: 2.2.0
MMCV CUDA 算子是否可用: 未检测到(可能为CPU版本)
MMCV 编译的 CUDA 版本: 未编译 CUDA(CPU版本)
MMCV 编译的 PyTorch 版本: 无法获取(CPU版本)
MMDetection 版本: 3.3.0
===== 信息打印完成 =====
这个输出使用的是cpu,但是运行确实可以用gpu跑起来(参考lec4.ipynb里面的代码进行修改)。
这里自己还没弄懂,感觉还没用到mmdetection,目前感觉都是AI生成的代码,并没有使用到mmdetection里面的模版。
总结
当前还在摸索中,目前只会通过AI修改运行出OpenMMLab里面的示例代码,正在摸索复现论文,最大的感受还是AI只是辅助,终究还是要自己查找资料来理解学习。
