从零验证到跑通Demo:手把手带你完成MMDetection安装后的‘毕业考试’(含权重文件下载与路径配置)
从零验证到跑通Demo:手把手带你完成MMDetection安装后的‘毕业考试’(含权重文件下载与路径配置)
当你终于按照教程完成了MMDetection的安装,却发现官方文档里那些验证步骤像天书一样难以理解——别担心,这就像刚学会骑自行车的人第一次上路,总需要有人扶着走一段。本文将用最接地气的方式,带你完成这个框架的"毕业考试"。
1. 验证环境:你的工具箱真的齐备了吗?
安装完MMDetection就像买了一套高级厨具,但如果不检查刀具是否开刃、烤箱能否加热,做出来的菜品很可能惨不忍睹。我们先来确认三个核心组件的状态:
# installtest1.py 完整版 import torch, torchvision print(f"PyTorch版本:{torch.__version__}", f"CUDA可用:{torch.cuda.is_available()}") import mmdet print(f"MMDetection版本:{mmdet.__version__}") import mmcv from mmcv.ops import get_compiling_cuda_version, get_compiler_version print(f"编译CUDA版本:{get_compiling_cuda_version()}", f"编译器版本:{get_compiler_version()}", f"MMCV版本:{mmcv.__version__}", sep='\n')常见问题排查表:
| 报错现象 | 可能原因 | 解决方案 |
|---|---|---|
| DLL load failed | torch与mmcv版本不匹配 | 重新安装对应版本mmcv |
| No module named mmdet | 未在正确环境中运行 | 确认conda环境已激活 |
| CUDA不可用 | 驱动不匹配或未安装CUDA | 检查nvidia-smi输出 |
提示:如果遇到
UserWarning: torch.meshgrid警告,修改functional.py文件时要注意备份原文件,添加的indexing='ij'参数要确保缩进与上下文一致。
2. 权重文件获取:模型的大脑从哪里来?
没有预训练权重的深度学习框架就像没有操作系统的电脑,而获取这些文件往往比安装软件更令人头疼。以下是三种可靠的下载方式:
方法一:官方直连下载
- Faster R-CNN权重: faster_rcnn_r50_fpn_1x_coco
- 建议存放路径:
mmdetection-main/checkpoints/
方法二:wget命令行下载
wget https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth -P ./checkpoints方法三:备用镜像下载当官方链接速度慢时,可以尝试:
- 阿里云OSS镜像
- 华为云镜像仓库
- 百度网盘共享链接(需自行搜索最新资源)
3. 路径配置:让系统找到你的"藏宝图"
配置文件与权重路径就像快递收货地址,写错一个字都会导致"包裹"无法送达。不同系统的路径写法有显著差异:
Windows系统示例:
config_file = 'D:/mmdetection/configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py' checkpoint_file = 'D:/mmdetection/checkpoints/faster_rcnn_r50_fpn_1x_coco.pth' img = 'C:/Users/YourName/Desktop/test.jpg'Linux/MacOS示例:
config_file = '/home/user/mmdetection/configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py' checkpoint_file = '/home/user/mmdetection/checkpoints/faster_rcnn_r50_fpn_1x_coco.pth' img = '/tmp/test.jpg'路径配置的黄金法则:
- 使用绝对路径更可靠
- 反斜杠
\在Python字符串中需要转义为\\ - 路径中不要包含中文或特殊字符
- 检查文件扩展名(.py/.pth/.jpg)
4. 完整推理流程:你的第一个目标检测Demo
现在让我们拆解installtest2.py的每个关键步骤,就像教小朋友搭积木一样一步步来:
from mmdet.apis import init_detector, inference_detector from mmdet.registry import VISUALIZERS import mmcv # 1. 模型初始化 model = init_detector(config_file, checkpoint_file) # 2. 图像读取(支持jpg/png等格式) image = mmcv.imread(img) # 3. 推理预测 result = inference_detector(model, image) # 4. 可视化设置 visualizer = VISUALIZERS.build(model.cfg.visualizer) visualizer.dataset_meta = model.dataset_meta # 5. 结果展示与保存 visualizer.add_datasample( 'result', image, data_sample=result, draw_gt=False, wait_time=0, out_file='result_output.jpg' # 输出文件路径 )可视化效果调优参数:
score_thr=0.3:调整检测框显示阈值show=True:是否弹出显示窗口out_file=None:不保存时设为Nonewait_time=0:窗口显示时间(秒)
5. 进阶测试:用你自己的图片挑战模型
当基础Demo跑通后,可以尝试以下进阶实验:
不同场景测试:
- 室内场景 vs 室外场景
- 白天照片 vs 夜间照片
- 近景特写 vs 远景拍摄
性能评估技巧:
import time start = time.time() result = inference_detector(model, image) print(f"推理耗时:{time.time()-start:.2f}秒")批量处理示例:
import glob for img_path in glob.glob('images/*.jpg'): image = mmcv.imread(img_path) result = inference_detector(model, image) # 保存结果到output目录 out_file = f'output/{os.path.basename(img_path)}' visualizer.add_datasample(..., out_file=out_file)
遇到检测效果不佳时,可以尝试:
- 调整
score_thr过滤低质量检测框 - 更换更先进的模型(如Cascade R-CNN)
- 对输入图片进行尺寸调整(保持800x600左右)
