MMDetection入门指南:从环境搭建到模型训练、评估与推理

发布时间:2026/7/6 13:48:43
MMDetection入门指南:从环境搭建到模型训练、评估与推理 MMDetection入门指南从环境搭建到模型训练、评估与推理1. MMDetection概述1.1 什么是MMDetection1.2 MMDetection的特点2. MMDetection与其他目标检测框架对比3. 环境要求4. 安装步骤1创建虚拟环境2安装PyTorch3安装OpenMIM4安装MMEngine5安装MMCV6安装MMDetection5. MMDetection的目录结构6. 数据集准备修改配置文件7. 模型训练8. 模型评估9. 模型推理单张图片可视化结果批量推理10. 更换模型11. 使用预训练模型12. 导出模型13. 完整训练流程总结14. 总结1. MMDetection概述1.1 什么是MMDetectionMMDetection是OpenMMLab开源视觉生态中最核心的目标检测框架之一也是目前学术界和工业界应用最广泛的目标检测工具箱之一Github官网地址为https://github.com/open-mmlab/mmdetection。它基于PyTorch开发采用高度模块化Modular的设计思想将目标检测算法划分为Backbone特征提取Neck特征融合Head检测头Loss损失函数Dataset数据集Data Pipeline数据预处理Optimizer优化器Evaluator评估器等多个独立模块使研究人员能够方便地进行模型组合和算法改进。MMDetection不仅提供了大量经典目标检测算法的官方实现同时还维护着完善的Model Zoo模型库其中包含数百个预训练模型、配置文件以及对应的实验结果因此已经成为目标检测领域最重要的研究平台之一。目前支持的模型包括Faster R-CNNMask R-CNNCascade R-CNNRetinaNetFCOSATSSGFLRTMDetYOLOXDETRDINOGrounding DINODeformable DETR以及许多最新目标检测算法。1.2 MMDetection的特点相比于传统自己搭建目标检测工程MMDetection具有以下优势高度模块化设计配置文件驱动模型构建丰富的数据增强方法支持多GPU训练支持混合精度训练AMP支持自动日志记录支持TensorBoard、WandB等可视化工具提供大量预训练模型社区活跃文档完善例如只需要修改配置文件即可更换模型modeldict(backbonedict(typeResNet,depth50),neckdict(typeFPN),bbox_headdict(typeRetinaHead))无需修改训练代码。2. MMDetection与其他目标检测框架对比目前常见的目标检测框架主要包括框架开发团队特点适用场景MMDetectionOpenMMLab功能最全面科研首选学术研究Ultralytics YOLOUltralytics简单易用部署方便工程项目Detectron2MetaFacebook 官方框架科研PaddleDetection百度Paddle生态国产部署TensorFlow Object Detection APIGoogleTensorFlow官方TensorFlow生态MMDetection与Ultralytics YOLO对比对比项MMDetectionUltralytics上手难度★★★★☆★☆☆☆☆配置方式Config文件YAML配置配置灵活性★★★★★★★★☆☆支持模型数量数百种模型主要是YOLO系列工程部署★★★☆☆★★★★★科研扩展★★★★★★★★☆☆社区活跃度★★★★★★★★★★一般来说科研工作推荐MMDetection工程部署推荐Ultralytics。3. 环境要求根据官网介绍要求安装环境如下软件推荐版本Python3.7PyTorch1.8CUDA9.2MMCV与 PyTorch 对应MMEngine最新稳定版MMDetection最新版4. 安装步骤1创建虚拟环境conda create-nmmdetpython3.8conda activate mmdet2安装PyTorchpytorch的安装可参照官方指导https://pytorch.org/get-started/locally/3安装OpenMIMOpenMIM是一个安装工具使用它来安装MMCV和MMEngine。pipinstallopenmim4安装MMEnginemiminstallmmengine5安装MMCVmiminstallmmcv2.0.06安装MMDetectionMMDetection就是工具包的主体有两种安装方式这里推荐选择源代码安装方式。gitclone https://github.com/open-mmlab/mmdetection.gitcdmmdetection pipinstall-v-e.安装完成后测试首先下载配置文件和模型权重文件mim download mmdet--config rtmdet_tiny_8xb32-300e_coco--dest.运行测试推理代码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文件夹看到输出的预测图片证明安装成功。5. MMDetection的目录结构mmdetection/ ├── configs/ ├── demo/ ├── docs/ ├── mmdet/ │ ├── datasets/ │ ├── models/ │ ├── engine/ │ ├── evaluation/ │ └── visualization/ ├── tools/ ├── checkpoints/ └── work_dirs/其中configs模型配置mmdet源码tools训练工具work_dirs训练结果6. 数据集准备MMDetection支持COCOVOCLVISCityscapesOpenImages自定义数据集推荐使用COCO格式。目录如下dataset/ ├── train/ │ ├── 000001.jpg │ ├── 000002.jpg │ └── ... │ ├── val/ │ ├── annotations/ │ ├── instances_train.json │ └── instances_val.json修改配置文件例如data_rootdataset/metainfo{classes:(cat,dog),}train_dataloaderdict(batch_size4,datasetdict(data_rootdata_root,ann_fileannotations/instances_train.json,data_prefixdict(imgtrain/)))val_dataloaderdict(datasetdict(ann_fileannotations/instances_val.json,data_prefixdict(imgval/)))7. 模型训练选择一个配置configs/rtmdet/ configs/faster_rcnn/ configs/yolox/ configs/dino/例如rtmdet_tiny_8xb32-300e_coco.py开始训练python tools/train.py configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py使用多GPUtorchrun--nproc_per_node4\tools/train.py\configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py训练过程中将在work_dirs/生成epoch_1.pth epoch_2.pth ... best_coco_bbox_mAP_epoch_xx.pth last_checkpoint8. 模型评估训练结束后python tools/test.py\configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py\work_dirs/epoch_300.pth输出类似bbox_mAP: 0.512 bbox_mAP50: 0.742 bbox_mAP75: 0.561其中mAPAP50AP75APSAPMAPL都会自动计算。9. 模型推理单张图片frommmdet.apisimportinit_detectorfrommmdet.apisimportinference_detector configconfigs/rtmdet/rtmdet_tiny.pycheckpointbest.pthmodelinit_detector(config,checkpoint)resultinference_detector(model,test.jpg)可视化结果frommmdet.apisimportDetInferencer inferencerDetInferencer(modelconfigs/rtmdet/rtmdet_tiny.py,weightsbest.pth)inferencer(demo.jpg,showTrue)批量推理frompathlibimportPathfrommmdet.apisimportDetInferencer inferencerDetInferencer(modelconfigs/rtmdet/rtmdet_tiny.py,weightsbest.pth)image_dirPath(images)forimage_pathinimage_dir.glob(*.jpg):inferencer(str(image_path))10. 更换模型只需修改配置文件即可例如configs/faster_rcnn/ ↓ configs/dino/ ↓ configs/rtmdet/ ↓ configs/yolox/训练命令保持一致python tools/train.py 配置文件.py无需修改源码。11. 使用预训练模型下载官方权重checkpoints/ ├── faster_rcnn.pth ├── yolox.pth ├── dino.pth └── rtmdet.pth然后修改配置load_fromcheckpoints/rtmdet_tiny.pth即可进行迁移学习。12. 导出模型训练完成后可以导出ONNXTorchScriptTensorRT例如导出 ONNXpython tools/deployment/pytorch2onnx.py\configs/rtmdet/rtmdet_tiny.py\best.pth\demo.jpg之后即可部署到TensorRTONNX RuntimeOpenVINO等推理框架。13. 完整训练流程总结整个 MMDetection 的使用流程如下准备数据集 │ ▼ 整理为 COCO 格式 │ ▼ 修改配置文件 │ ▼ 下载预训练权重 │ ▼ 开始训练 │ ▼ 保存模型 │ ▼ 模型评估 │ ▼ 推理测试 │ ▼ 导出 ONNX / TensorRT │ ▼ 部署应用14. 总结MMDetection是当前目标检测领域最成熟、最完善的开源框架之一其最大的优势在于模块化设计和丰富的模型生态。通过统一的配置系统用户能够方便地完成数据集配置、模型训练、评估、推理以及模型部署而无需重复编写底层代码。对于科研人员而言MMDetection提供了大量经过验证的算法实现和预训练模型可显著降低实验复现和算法开发的难度对于工程开发者而言其标准化的训练流程和灵活的模型配置也能够提高开发效率。对于初学者建议按照以下顺序逐步掌握MMDetection学习环境配置与框架安装熟悉项目目录结构及配置文件组织方式掌握COCO数据集格式及自定义数据集配置学会使用官方配置文件完成模型训练与评估理解推理流程与结果可视化尝试修改网络结构或损失函数开展算法改进研究。通过系统学习MMDetection不仅可以快速复现主流目标检测算法还能够为后续开展目标检测算法创新和科研工作奠定坚实基础。