|
<div align="center"> |
|
<img src="resources/mmdet-logo.png" width="600"/> |
|
<div> </div> |
|
<div align="center"> |
|
<b><font size="5">OpenMMLab 官网</font></b> |
|
<sup> |
|
<a href="https://openmmlab.com"> |
|
<i><font size="4">HOT</font></i> |
|
</a> |
|
</sup> |
|
|
|
<b><font size="5">OpenMMLab 开放平台</font></b> |
|
<sup> |
|
<a href="https://platform.openmmlab.com"> |
|
<i><font size="4">TRY IT OUT</font></i> |
|
</a> |
|
</sup> |
|
</div> |
|
<div> </div> |
|
|
|
[![PyPI](https://img.shields.io/pypi/v/mmdet)](https://pypi.org/project/mmdet) |
|
[![docs](https://img.shields.io/badge/docs-latest-blue)](https://mmdetection.readthedocs.io/en/latest/) |
|
[![badge](https://github.com/open-mmlab/mmdetection/workflows/build/badge.svg)](https://github.com/open-mmlab/mmdetection/actions) |
|
[![codecov](https://codecov.io/gh/open-mmlab/mmdetection/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmdetection) |
|
[![license](https://img.shields.io/github/license/open-mmlab/mmdetection.svg)](https://github.com/open-mmlab/mmdetection/blob/master/LICENSE) |
|
[![open issues](https://isitmaintained.com/badge/open/open-mmlab/mmdetection.svg)](https://github.com/open-mmlab/mmdetection/issues) |
|
[![issue resolution](https://isitmaintained.com/badge/resolution/open-mmlab/mmdetection.svg)](https://github.com/open-mmlab/mmdetection/issues) |
|
|
|
[📘使用文档](https://mmdetection.readthedocs.io/zh_CN/stable/) | |
|
[🛠️安装教程](https://mmdetection.readthedocs.io/zh_CN/stable/get_started.html) | |
|
[👀模型库](https://mmdetection.readthedocs.io/zh_CN/stable/model_zoo.html) | |
|
[🆕更新日志](https://mmdetection.readthedocs.io/en/stable/changelog.html) | |
|
[🚀进行中的项目](https://github.com/open-mmlab/mmdetection/projects) | |
|
[🤔报告问题](https://github.com/open-mmlab/mmdetection/issues/new/choose) |
|
|
|
</div> |
|
|
|
<div align="center"> |
|
|
|
[English](README.md) | 简体中文 |
|
|
|
</div> |
|
|
|
## 简介 |
|
|
|
MMDetection 是一个基于 PyTorch 的目标检测开源工具箱。它是 [OpenMMLab](https://openmmlab.com/) 项目的一部分。 |
|
|
|
主分支代码目前支持 PyTorch 1.5 以上的版本。 |
|
|
|
<img src="https://user-images.githubusercontent.com/12907710/137271636-56ba1cd2-b110-4812-8221-b4c120320aa9.png"/> |
|
|
|
<details open> |
|
<summary>主要特性</summary> |
|
|
|
- **模块化设计** |
|
|
|
MMDetection 将检测框架解耦成不同的模块组件,通过组合不同的模块组件,用户可以便捷地构建自定义的检测模型 |
|
|
|
- **丰富的即插即用的算法和模型** |
|
|
|
MMDetection 支持了众多主流的和最新的检测算法,例如 Faster R-CNN,Mask R-CNN,RetinaNet 等。 |
|
|
|
- **速度快** |
|
|
|
基本的框和 mask 操作都实现了 GPU 版本,训练速度比其他代码库更快或者相当,包括 [Detectron2](https://github.com/facebookresearch/detectron2), [maskrcnn-benchmark](https://github.com/facebookresearch/maskrcnn-benchmark) 和 [SimpleDet](https://github.com/TuSimple/simpledet)。 |
|
|
|
- **性能高** |
|
|
|
MMDetection 这个算法库源自于 COCO 2018 目标检测竞赛的冠军团队 *MMDet* 团队开发的代码,我们在之后持续进行了改进和提升。 |
|
|
|
</details> |
|
|
|
除了 MMDetection 之外,我们还开源了计算机视觉基础库 [MMCV](https://github.com/open-mmlab/mmcv),MMCV 是 MMDetection 的主要依赖。 |
|
|
|
## 最新进展 |
|
|
|
### 💎 稳定版本 |
|
|
|
最新的 **2.26.0** 版本已经在 2022.11.23 发布: |
|
|
|
- 支持在 [NPU](docs/en/device/npu.md) 上进行训练。 |
|
|
|
如果想了解更多版本更新细节和历史信息,请阅读[更新日志](docs/en/changelog.md)。 |
|
|
|
如果想了解 MMDetection 不同版本之间的兼容性, 请参考[兼容性说明文档](docs/zh_cn/compatibility.md)。 |
|
|
|
### 🌟 3.x 预览版本 |
|
|
|
全新的 **v3.0.0rc0** 版本已经在 2022.8.31 发布: |
|
|
|
- 基于 [MMEngine](https://github.com/open-mmlab/mmengine) 统一了各组件接口。 |
|
- 全面支持混合精度,训练测试速度更快。 |
|
- 提供了更强的基线模型,并支持了通用的半监督目标检测框架,详见[半监督目标检测教程](https://mmdetection.readthedocs.io/zh_CN/v3.0.0rc0/user_guides/semi_det.html)。 |
|
- 支持使用任意单阶段检测器作为二阶段模型的 RPN,详见[教程](https://mmdetection.readthedocs.io/en/v3.0.0rc0/user_guides/single_stage_as_rpn.html)。 |
|
|
|
## 安装 |
|
|
|
请参考[安装指令](docs/zh_cn/get_started.md/#Installation)进行安装。 |
|
|
|
## 教程 |
|
|
|
请参考[快速入门文档](docs/zh_cn/get_started.md)学习 MMDetection 的基本使用。 |
|
我们提供了 [检测的 colab 教程](demo/MMDet_Tutorial.ipynb) 和 [实例分割的 colab 教程](demo/MMDet_InstanceSeg_Tutorial.ipynb),也为新手提供了完整的运行教程,其他教程如下 |
|
|
|
- [使用已有模型在标准数据集上进行推理](docs/zh_cn/1_exist_data_model.md) |
|
- [在自定义数据集上进行训练](docs/zh_cn/2_new_data_model.md) |
|
- [在标准数据集上训练自定义模型](docs/zh_cn/3_exist_data_new_model.md) |
|
- [学习配置文件](docs/zh_cn/tutorials/config.md) |
|
- [自定义数据集](docs/zh_cn/tutorials/customize_dataset.md) |
|
- [自定义数据预处理流程](docs/zh_cn/tutorials/data_pipeline.md) |
|
- [自定义模型](docs/zh_cn/tutorials/customize_models.md) |
|
- [自定义训练配置](docs/zh_cn/tutorials/customize_runtime.md) |
|
- [自定义损失函数](docs/zh_cn/tutorials/customize_losses.md) |
|
- [模型微调](docs/zh_cn/tutorials/finetune.md) |
|
- [Pytorch 到 ONNX 的模型转换](docs/zh_cn/tutorials/pytorch2onnx.md) |
|
- [ONNX 到 TensorRT 的模型转换](docs/zh_cn/tutorials/onnx2tensorrt.md) |
|
- [权重初始化](docs/zh_cn/tutorials/init_cfg.md) |
|
- [how to xxx](docs/zh_cn/tutorials/how_to.md) |
|
|
|
同时,我们还提供了 [MMDetection 中文解读文案汇总](docs/zh_cn/article.md) |
|
|
|
## 基准测试和模型库 |
|
|
|
测试结果和模型可以在[模型库](docs/zh_cn/model_zoo.md)中找到。 |
|
|
|
<div align="center"> |
|
<b>算法架构</b> |
|
</div> |
|
<table align="center"> |
|
<tbody> |
|
<tr align="center" valign="bottom"> |
|
<td> |
|
<b>Object Detection</b> |
|
</td> |
|
<td> |
|
<b>Instance Segmentation</b> |
|
</td> |
|
<td> |
|
<b>Panoptic Segmentation</b> |
|
</td> |
|
<td> |
|
<b>Other</b> |
|
</td> |
|
</tr> |
|
<tr valign="top"> |
|
<td> |
|
<ul> |
|
<li><a href="configs/fast_rcnn">Fast R-CNN (ICCV'2015)</a></li> |
|
<li><a href="configs/faster_rcnn">Faster R-CNN (NeurIPS'2015)</a></li> |
|
<li><a href="configs/rpn">RPN (NeurIPS'2015)</a></li> |
|
<li><a href="configs/ssd">SSD (ECCV'2016)</a></li> |
|
<li><a href="configs/retinanet">RetinaNet (ICCV'2017)</a></li> |
|
<li><a href="configs/cascade_rcnn">Cascade R-CNN (CVPR'2018)</a></li> |
|
<li><a href="configs/yolo">YOLOv3 (ArXiv'2018)</a></li> |
|
<li><a href="configs/cornernet">CornerNet (ECCV'2018)</a></li> |
|
<li><a href="configs/grid_rcnn">Grid R-CNN (CVPR'2019)</a></li> |
|
<li><a href="configs/guided_anchoring">Guided Anchoring (CVPR'2019)</a></li> |
|
<li><a href="configs/fsaf">FSAF (CVPR'2019)</a></li> |
|
<li><a href="configs/centernet">CenterNet (ArXiv'2019)</a></li> |
|
<li><a href="configs/libra_rcnn">Libra R-CNN (CVPR'2019)</a></li> |
|
<li><a href="configs/tridentnet">TridentNet (ICCV'2019)</a></li> |
|
<li><a href="configs/fcos">FCOS (ICCV'2019)</a></li> |
|
<li><a href="configs/reppoints">RepPoints (ICCV'2019)</a></li> |
|
<li><a href="configs/free_anchor">FreeAnchor (NeurIPS'2019)</a></li> |
|
<li><a href="configs/cascade_rpn">CascadeRPN (NeurIPS'2019)</a></li> |
|
<li><a href="configs/foveabox">Foveabox (TIP'2020)</a></li> |
|
<li><a href="configs/double_heads">Double-Head R-CNN (CVPR'2020)</a></li> |
|
<li><a href="configs/atss">ATSS (CVPR'2020)</a></li> |
|
<li><a href="configs/nas_fcos">NAS-FCOS (CVPR'2020)</a></li> |
|
<li><a href="configs/centripetalnet">CentripetalNet (CVPR'2020)</a></li> |
|
<li><a href="configs/autoassign">AutoAssign (ArXiv'2020)</a></li> |
|
<li><a href="configs/sabl">Side-Aware Boundary Localization (ECCV'2020)</a></li> |
|
<li><a href="configs/dynamic_rcnn">Dynamic R-CNN (ECCV'2020)</a></li> |
|
<li><a href="configs/detr">DETR (ECCV'2020)</a></li> |
|
<li><a href="configs/paa">PAA (ECCV'2020)</a></li> |
|
<li><a href="configs/vfnet">VarifocalNet (CVPR'2021)</a></li> |
|
<li><a href="configs/sparse_rcnn">Sparse R-CNN (CVPR'2021)</a></li> |
|
<li><a href="configs/yolof">YOLOF (CVPR'2021)</a></li> |
|
<li><a href="configs/yolox">YOLOX (ArXiv'2021)</a></li> |
|
<li><a href="configs/deformable_detr">Deformable DETR (ICLR'2021)</a></li> |
|
<li><a href="configs/tood">TOOD (ICCV'2021)</a></li> |
|
<li><a href="configs/ddod">DDOD (ACM MM'2021)</a></li> |
|
</ul> |
|
</td> |
|
<td> |
|
<ul> |
|
<li><a href="configs/mask_rcnn">Mask R-CNN (ICCV'2017)</a></li> |
|
<li><a href="configs/cascade_rcnn">Cascade Mask R-CNN (CVPR'2018)</a></li> |
|
<li><a href="configs/ms_rcnn">Mask Scoring R-CNN (CVPR'2019)</a></li> |
|
<li><a href="configs/htc">Hybrid Task Cascade (CVPR'2019)</a></li> |
|
<li><a href="configs/yolact">YOLACT (ICCV'2019)</a></li> |
|
<li><a href="configs/instaboost">InstaBoost (ICCV'2019)</a></li> |
|
<li><a href="configs/solo">SOLO (ECCV'2020)</a></li> |
|
<li><a href="configs/point_rend">PointRend (CVPR'2020)</a></li> |
|
<li><a href="configs/detectors">DetectoRS (CVPR'2021)</a></li> |
|
<li><a href="configs/solov2">SOLOv2 (NeurIPS'2020)</a></li> |
|
<li><a href="configs/scnet">SCNet (AAAI'2021)</a></li> |
|
<li><a href="configs/queryinst">QueryInst (ICCV'2021)</a></li> |
|
<li><a href="configs/mask2former">Mask2Former (CVPR'2022)</a></li> |
|
</ul> |
|
</td> |
|
<td> |
|
<ul> |
|
<li><a href="configs/panoptic_fpn">Panoptic FPN (CVPR'2019)</a></li> |
|
<li><a href="configs/maskformer">MaskFormer (NeurIPS'2021)</a></li> |
|
<li><a href="configs/mask2former">Mask2Former (CVPR'2022)</a></li> |
|
</ul> |
|
</td> |
|
<td> |
|
</ul> |
|
<li><b>Contrastive Learning</b></li> |
|
<ul> |
|
<ul> |
|
<li><a href="configs/selfsup_pretrain">SwAV (NeurIPS'2020)</a></li> |
|
<li><a href="configs/selfsup_pretrain">MoCo (CVPR'2020)</a></li> |
|
<li><a href="configs/selfsup_pretrain">MoCov2 (ArXiv'2020)</a></li> |
|
</ul> |
|
</ul> |
|
</ul> |
|
<li><b>Distillation</b></li> |
|
<ul> |
|
<ul> |
|
<li><a href="configs/ld">Localization Distillation (CVPR'2022)</a></li> |
|
<li><a href="configs/lad">Label Assignment Distillation (WACV'2022)</a></li> |
|
</ul> |
|
</ul> |
|
</ul> |
|
</td> |
|
</tr> |
|
</td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
|
|
<div align="center"> |
|
<b>模块组件</b> |
|
</div> |
|
<table align="center"> |
|
<tbody> |
|
<tr align="center" valign="bottom"> |
|
<td> |
|
<b>Backbones</b> |
|
</td> |
|
<td> |
|
<b>Necks</b> |
|
</td> |
|
<td> |
|
<b>Loss</b> |
|
</td> |
|
<td> |
|
<b>Common</b> |
|
</td> |
|
</tr> |
|
<tr valign="top"> |
|
<td> |
|
<ul> |
|
<li>VGG (ICLR'2015)</li> |
|
<li>ResNet (CVPR'2016)</li> |
|
<li>ResNeXt (CVPR'2017)</li> |
|
<li>MobileNetV2 (CVPR'2018)</li> |
|
<li><a href="configs/hrnet">HRNet (CVPR'2019)</a></li> |
|
<li><a href="configs/empirical_attention">Generalized Attention (ICCV'2019)</a></li> |
|
<li><a href="configs/gcnet">GCNet (ICCVW'2019)</a></li> |
|
<li><a href="configs/res2net">Res2Net (TPAMI'2020)</a></li> |
|
<li><a href="configs/regnet">RegNet (CVPR'2020)</a></li> |
|
<li><a href="configs/resnest">ResNeSt (CVPRW'2022)</a></li> |
|
<li><a href="configs/pvt">PVT (ICCV'2021)</a></li> |
|
<li><a href="configs/swin">Swin (ICCV'2021)</a></li> |
|
<li><a href="configs/pvt">PVTv2 (CVMJ'2022)</a></li> |
|
<li><a href="configs/resnet_strikes_back">ResNet strikes back (NeurIPSW'2021)</a></li> |
|
<li><a href="configs/efficientnet">EfficientNet (ICML'2019)</a></li> |
|
<li><a href="configs/convnext">ConvNeXt (CVPR'2022)</a></li> |
|
</ul> |
|
</td> |
|
<td> |
|
<ul> |
|
<li><a href="configs/pafpn">PAFPN (CVPR'2018)</a></li> |
|
<li><a href="configs/nas_fpn">NAS-FPN (CVPR'2019)</a></li> |
|
<li><a href="configs/carafe">CARAFE (ICCV'2019)</a></li> |
|
<li><a href="configs/fpg">FPG (ArXiv'2020)</a></li> |
|
<li><a href="configs/groie">GRoIE (ICPR'2020)</a></li> |
|
<li><a href="configs/dyhead">DyHead (CVPR'2021)</a></li> |
|
</ul> |
|
</td> |
|
<td> |
|
<ul> |
|
<li><a href="configs/ghm">GHM (AAAI'2019)</a></li> |
|
<li><a href="configs/gfl">Generalized Focal Loss (NeurIPS'2020)</a></li> |
|
<li><a href="configs/seesaw_loss">Seasaw Loss (CVPR'2021)</a></li> |
|
</ul> |
|
</td> |
|
<td> |
|
<ul> |
|
<li><a href="configs/faster_rcnn/faster_rcnn_r50_fpn_ohem_1x_coco.py">OHEM (CVPR'2016)</a></li> |
|
<li><a href="configs/gn">Group Normalization (ECCV'2018)</a></li> |
|
<li><a href="configs/dcn">DCN (ICCV'2017)</a></li> |
|
<li><a href="configs/dcnv2">DCNv2 (CVPR'2019)</a></li> |
|
<li><a href="configs/gn+ws">Weight Standardization (ArXiv'2019)</a></li> |
|
<li><a href="configs/pisa">Prime Sample Attention (CVPR'2020)</a></li> |
|
<li><a href="configs/strong_baselines">Strong Baselines (CVPR'2021)</a></li> |
|
<li><a href="configs/resnet_strikes_back">Resnet strikes back (NeurIPSW'2021)</a></li> |
|
</ul> |
|
</td> |
|
</tr> |
|
</td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
|
|
我们在[基于 MMDetection 的项目](./docs/zh_cn/projects.md)中列举了一些其他的支持的算法。 |
|
|
|
## 常见问题 |
|
|
|
请参考 [FAQ](docs/zh_cn/faq.md) 了解其他用户的常见问题。 |
|
|
|
## 贡献指南 |
|
|
|
我们感谢所有的贡献者为改进和提升 MMDetection 所作出的努力。我们将正在进行中的项目添加进了[GitHub Projects](https://github.com/open-mmlab/mmdetection/projects)页面,非常欢迎社区用户能参与进这些项目中来。请参考[贡献指南](.github/CONTRIBUTING.md)来了解参与项目贡献的相关指引。 |
|
|
|
## 致谢 |
|
|
|
MMDetection 是一款由来自不同高校和企业的研发人员共同参与贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。 我们希望这个工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现已有算法并开发自己的新模型,从而不断为开源社区提供贡献。 |
|
|
|
## 引用 |
|
|
|
如果你在研究中使用了本项目的代码或者性能基准,请参考如下 bibtex 引用 MMDetection。 |
|
|
|
``` |
|
@article{mmdetection, |
|
title = {{MMDetection}: Open MMLab Detection Toolbox and Benchmark}, |
|
author = {Chen, Kai and Wang, Jiaqi and Pang, Jiangmiao and Cao, Yuhang and |
|
Xiong, Yu and Li, Xiaoxiao and Sun, Shuyang and Feng, Wansen and |
|
Liu, Ziwei and Xu, Jiarui and Zhang, Zheng and Cheng, Dazhi and |
|
Zhu, Chenchen and Cheng, Tianheng and Zhao, Qijie and Li, Buyu and |
|
Lu, Xin and Zhu, Rui and Wu, Yue and Dai, Jifeng and Wang, Jingdong |
|
and Shi, Jianping and Ouyang, Wanli and Loy, Chen Change and Lin, Dahua}, |
|
journal= {arXiv preprint arXiv:1906.07155}, |
|
year={2019} |
|
} |
|
``` |
|
|
|
## 开源许可证 |
|
|
|
该项目采用 [Apache 2.0 开源许可证](LICENSE)。 |
|
|
|
## OpenMMLab 的其他项目 |
|
|
|
- [MMEngine](https://github.com/open-mmlab/mmengine): OpenMMLab 深度学习模型训练基础库 |
|
- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库 |
|
- [MMEval](https://github.com/open-mmlab/mmeval): 统一开放的跨框架算法评测库 |
|
- [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口 |
|
- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱 |
|
- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱 |
|
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台 |
|
- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准 |
|
- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱 |
|
- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包 |
|
- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱 |
|
- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准 |
|
- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab 自监督学习工具箱与测试基准 |
|
- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准 |
|
- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准 |
|
- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱 |
|
- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台 |
|
- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准 |
|
- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱 |
|
- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 图片视频生成模型工具箱 |
|
- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架 |
|
|
|
## 欢迎加入 OpenMMLab 社区 |
|
|
|
扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的官方交流 QQ 群 |
|
|
|
<div align="center"> |
|
<img src="resources/zhihu_qrcode.jpg" height="400" /> <img src="https://cdn.vansin.top/OpenMMLab/q3.png" height="400" /> |
|
</div> |
|
|
|
我们会在 OpenMMLab 社区为大家 |
|
|
|
- 📢 分享 AI 框架的前沿核心技术 |
|
- 💻 解读 PyTorch 常用模块源码 |
|
- 📰 发布 OpenMMLab 的相关新闻 |
|
- 🚀 介绍 OpenMMLab 开发的前沿算法 |
|
- 🏃 获取更高效的问题答疑和意见反馈 |
|
- 🔥 提供与各行各业开发者充分交流的平台 |
|
|
|
干货满满 📘,等你来撩 💗,OpenMMLab 社区期待您的加入 👬 |
|
|