diff --git a/.circleci/test.yml b/.circleci/test.yml index d3d3a8dd..ee909b98 100644 --- a/.circleci/test.yml +++ b/.circleci/test.yml @@ -66,7 +66,7 @@ jobs: name: Install mmyolo dependencies command: | pip install -U openmim - mim install 'mmengine >= 0.2.0' + mim install 'mmengine >= 0.3.0' mim install 'mmcv >= 2.0.0rc1' pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x pip install -r requirements/albu.txt @@ -124,7 +124,7 @@ jobs: name: Install mmyolo dependencies command: | docker exec mmyolo pip install -U openmim - docker exec mmyolo mim install 'mmengine >= 0.2.0' + docker exec mmyolo mim install 'mmengine >= 0.3.0' docker exec mmyolo mim install 'mmcv >= 2.0.0rc1' docker exec mmyolo pip install -e /mmdetection docker exec mmyolo pip install -r requirements/albu.txt diff --git a/README.md b/README.md index dc4fa5cb..87786a60 100644 --- a/README.md +++ b/README.md @@ -69,10 +69,14 @@ The master branch works with **PyTorch 1.6+**. ## What's New -**v0.1.1** was released on 29/9/2022: +💎 **v0.1.2** was released on 3/11/2022: -- Support [RTMDet](https://github.com/open-mmlab/mmyolo/blob/main/configs/rtmdet). -- Support for backbone customization plugins and update How-to documentation. +1. Support [YOLOv5/YOLOv6/YOLOX/RTMDet deployments](https://github.com/open-mmlab/mmyolo/blob/main/configs/deploy) for ONNXRuntime and TensorRT +2. Support [YOLOv6](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov6) s/t/n model training +3. YOLOv5 supports [P6 model training which can input 1280-scale images](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5) +4. YOLOv5 supports [VOC dataset training](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5/voc) +5. Support [PPYOLOE](https://github.com/open-mmlab/mmyolo/blob/main/configs/ppyoloe) and [YOLOv7](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov7) model inference and official weight conversion +6. Add YOLOv5 replacement [backbone tutorial](https://github.com/open-mmlab/mmyolo/blob/dev/docs/en/advanced_guides/how_to.md#use-backbone-network-implemented-in-other-openmmlab-repositories) in How-to documentation For release history and update details, please refer to [changelog](https://mmyolo.readthedocs.io/en/latest/notes/changelog.html). @@ -84,7 +88,7 @@ MMYOLO relies on PyTorch, MMCV, MMEngine, and MMDetection. Below are quick steps conda create -n open-mmlab python=3.8 pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -y conda activate open-mmlab pip install openmim -mim install "mmengine>=0.2.0" +mim install "mmengine>=0.3.0" mim install "mmcv>=2.0.0rc1,<2.1.0" mim install "mmdet>=3.0.0rc2,<3.1.0" git clone https://github.com/open-mmlab/mmyolo.git @@ -107,7 +111,7 @@ For different parts from MMDetection, we have also prepared user guides and adva - [Train & Test](https://mmyolo.readthedocs.io/en/latest/user_guides/index.html#train-test) - [Learn about Configs with YOLOv5](docs/en/user_guides/config.md) - - [From getting started to deployment](https://mmyolo.readthedocs.io/zh_CN/latest/user_guides/index.html#get-started-to-deployment) + - [From getting started to deployment](https://mmyolo.readthedocs.io/en/latest/user_guides/index.html#get-started-to-deployment) - [From getting started to deployment with YOLOv5](docs/en/user_guides/yolov5_tutorial.md) - [Useful Tools](https://mmdetection.readthedocs.io/en/latest/user_guides/index.html#useful-tools) - [Visualization](docs/en/user_guides/visualization.md) @@ -115,11 +119,18 @@ For different parts from MMDetection, we have also prepared user guides and adva - Algorithm description - - [Essential Basics](https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/index.html#essential-basics) + - [Essential Basics](https://mmyolo.readthedocs.io/en/latest/algorithm_descriptions/index.html#essential-basics) - [Model design-related instructions](docs/en/algorithm_descriptions/model_design.md) - - [Algorithm principles and implementation](https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/index.html#algorithm-principles-and-implementation) + - [Algorithm principles and implementation](https://mmyolo.readthedocs.io/en/latest/algorithm_descriptions/index.html#algorithm-principles-and-implementation) - [Algorithm principles and implementation with YOLOv5](docs/en/algorithm_descriptions/yolov5_description.md) +- Deployment Guides + + - [Basic Deployment Guide](https://mmyolo.readthedocs.io/en/latest/algorithm_descriptions/index.html#basic-deployment-guide) + - [Basic Deployment Guide](docs/en/deploy/basic_deployment_guide.md) + - [Deployment Tutorial](https://mmyolo.readthedocs.io/en/latest/algorithm_descriptions/index.html#deployment-tutorial) + - [YOLOv5 Deployment](docs/en/deploy/yolov5_deployment.md) + - Advanced Guides - [Data flow](docs/en/advanced_guides/data_flow.md) @@ -135,7 +146,9 @@ Results and models are available in the [model zoo](docs/en/model_zoo.md). - [x] [YOLOv5](configs/yolov5) - [x] [YOLOX](configs/yolox) - [x] [RTMDet](configs/rtmdet) -- [ ] [YOLOv6](configs/yolov6)(Inference only) +- [x] [YOLOv6](configs/yolov6) +- [ ] [PPYOLOE](configs/ppyoloe)(Inference only) +- [ ] [YOLOv7](configs/yolov7)(Inference only) diff --git a/README_zh-CN.md b/README_zh-CN.md index d0b0eb06..5b2a82f4 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -69,11 +69,23 @@ MMYOLO 是一个基于 PyTorch 和 MMDetection 的 YOLO 系列算法开源工具 ## 最新进展 -**v0.1.1** 版本已经在 2022.9.29 发布: +💎 **v0.1.2** 版本已经在 2022.11.3 发布: -- 支持了 [RTMDet](https://github.com/open-mmlab/mmyolo/blob/main/configs/rtmdet) -- 新增了 [RTMDet 原理和实现全解析中文文档](https://github.com/open-mmlab/mmyolo/blob/main/docs/zh_cn/algorithm_descriptions/rtmdet_description.md) -- 支持对 backbone 自定义插件,并且更新了 How-to 文档 +1. 支持 ONNXRuntime 和 TensorRT 的 [YOLOv5/YOLOv6/YOLOX/RTMDet 部署](https://github.com/open-mmlab/mmyolo/blob/main/configs/deploy) +2. 支持 [YOLOv6](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov6) s/t/n 模型训练 +3. YOLOv5 支持 [P6 大分辨率 1280 尺度训练](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5) +4. YOLOv5 支持 [VOC 数据集训练](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5/voc) +5. 支持 [PPYOLOE](https://github.com/open-mmlab/mmyolo/blob/main/configs/ppyoloe) 和 [YOLOv7](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov7) 模型推理和官方权重转化 +6. How-to 文档中新增 YOLOv5 替换 [backbone 教程](https://github.com/open-mmlab/mmyolo/blob/dev/docs/zh_cn/advanced_guides/how_to.md#%E8%B7%A8%E5%BA%93%E4%BD%BF%E7%94%A8%E4%B8%BB%E5%B9%B2%E7%BD%91%E7%BB%9C) + +同时我们也推出了解读视频: + +| | 内容 | 视频 | 课程中的代码 | +| :-: | :------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| 🌟 | 特征图可视化 | [![Link](https://i2.hdslb.com/bfs/archive/480a0eb41fce26e0acb65f82a74501418eee1032.jpg@112w_63h_1c.webp)](https://www.bilibili.com/video/BV188411s7o8) [![bilibili](https://img.shields.io/badge/dynamic/json?label=views&style=social&logo=bilibili&query=data.stat.view&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fweb-interface%2Fview%3Fbvid%3DBV188411s7o8)](https://www.bilibili.com/video/BV188411s7o8) | [特征图可视化.ipynb](https://github.com/open-mmlab/OpenMMLabCourse/blob/main/codes/MMYOLO_tutorials/%5B%E5%B7%A5%E5%85%B7%E7%B1%BB%E7%AC%AC%E4%B8%80%E6%9C%9F%5D%E7%89%B9%E5%BE%81%E5%9B%BE%E5%8F%AF%E8%A7%86%E5%8C%96.ipynb) | +| 🌟 | 特征图可视化 Demo | [![Link](http://i0.hdslb.com/bfs/archive/081f300c84d6556f40d984cfbe801fc0644ff449.jpg@112w_63h_1c.webp)](https://www.bilibili.com/video/BV1je4y1478R/) [![bilibili](https://img.shields.io/badge/dynamic/json?label=views&style=social&logo=bilibili&query=data.stat.view&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fweb-interface%2Fview%3Fbvid%3DBV1je4y1478R)](https://www.bilibili.com/video/BV1je4y1478R/) | | +| 🌟 | 配置全解读 | [![Link](http://i1.hdslb.com/bfs/archive/e06daf640ea39b3c0700bb4dc758f1a253f33e13.jpg@112w_63h_1c.webp)](https://www.bilibili.com/video/BV1214y157ck) [![bilibili](https://img.shields.io/badge/dynamic/json?label=views&style=social&logo=bilibili&query=data.stat.view&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fweb-interface%2Fview%3Fbvid%3DBV1214y157ck)](https://www.bilibili.com/video/BV1214y157ck) | [配置全解读文档](https://zhuanlan.zhihu.com/p/577715188) | +| 🌟 | 源码阅读和调试「必备」技巧 | [![Link](https://i2.hdslb.com/bfs/archive/790d2422c879ff20488910da1c4422b667ea6af7.jpg@112w_63h_1c.webp)](https://www.bilibili.com/video/BV1N14y1V7mB) [![bilibili](https://img.shields.io/badge/dynamic/json?label=views&style=social&logo=bilibili&query=data.stat.view&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fweb-interface%2Fview%3Fbvid%3DBV1N14y1V7mB)](https://www.bilibili.com/video/BV1N14y1V7mB) | | 发布历史和更新细节请参考 [更新日志](https://mmyolo.readthedocs.io/zh_CN/latest/notes/changelog.html) @@ -85,7 +97,7 @@ MMYOLO 依赖 PyTorch, MMCV, MMEngine 和 MMDetection,以下是安装的简要 conda create -n open-mmlab python=3.8 pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -y conda activate open-mmlab pip install openmim -mim install "mmengine>=0.2.0" +mim install "mmengine>=0.3.0" mim install "mmcv>=2.0.0rc1,<2.1.0" mim install "mmdet>=3.0.0rc2,<3.1.0" git clone https://github.com/open-mmlab/mmyolo.git @@ -122,6 +134,13 @@ MMYOLO 用法和 MMDetection 几乎一致,所有教程都是通用的,你也 - [YOLOv5 原理和实现全解析](docs/zh_cn/algorithm_descriptions/yolov5_description.md) - [RTMDet 原理和实现全解析](docs/zh_cn/algorithm_descriptions/rtmdet_description.md) +- 算法部署 + + - [部署必备教程](https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/index.html#部署必备教程) + - [部署必备教程](docs/zh_cn/deploy/basic_deployment_guide.md) + - [部署全流程说明](https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/index.html#部署全流程说明) + - [YOLOv5 部署全流程说明](docs/zh_cn/deploy/yolov5_deployment.md) + - 进阶指南 - [数据流](docs/zh_cn/advanced_guides/data_flow.md) @@ -139,7 +158,9 @@ MMYOLO 用法和 MMDetection 几乎一致,所有教程都是通用的,你也 - [x] [YOLOv5](configs/yolov5) - [x] [YOLOX](configs/yolox) - [x] [RTMDet](configs/rtmdet) -- [ ] [YOLOv6](configs/yolov6)(仅推理) +- [x] [YOLOv6](configs/yolov6) +- [ ] [PPYOLOE](configs/ppyoloe)(仅推理) +- [ ] [YOLOv7](configs/yolov7)(仅推理) diff --git a/configs/rtmdet/rtmdet_s_syncbn_8xb32-300e_coco.py b/configs/rtmdet/rtmdet_s_syncbn_8xb32-300e_coco.py index 23c5c2de..761dbc44 100644 --- a/configs/rtmdet/rtmdet_s_syncbn_8xb32-300e_coco.py +++ b/configs/rtmdet/rtmdet_s_syncbn_8xb32-300e_coco.py @@ -9,8 +9,14 @@ model = dict( backbone=dict( deepen_factor=deepen_factor, widen_factor=widen_factor, + # Since the checkpoint includes CUDA:0 data, + # it must be forced to set map_location. + # Once checkpoint is fixed, it can be removed. init_cfg=dict( - type='Pretrained', prefix='backbone.', checkpoint=checkpoint)), + type='Pretrained', + prefix='backbone.', + checkpoint=checkpoint, + map_location='cpu')), neck=dict( deepen_factor=deepen_factor, widen_factor=widen_factor, diff --git a/docker/Dockerfile b/docker/Dockerfile index b24faf74..93959e60 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -26,7 +26,7 @@ RUN apt-get update \ # Install MMEngine , MMCV and MMDet RUN pip install --no-cache-dir openmim && \ - mim install --no-cache-dir "mmengine>=0.2.0" "mmcv>=2.0.0rc1,<2.1.0" "mmdet>=3.0.0rc2,<3.1.0" + mim install --no-cache-dir "mmengine>=0.3.0" "mmcv>=2.0.0rc1,<2.1.0" "mmdet>=3.0.0rc2,<3.1.0" # Install MMYOLO RUN git clone https://github.com/open-mmlab/mmyolo.git /mmyolo && \ diff --git a/docs/en/deploy/basic_deployment_guide.md b/docs/en/deploy/basic_deployment_guide.md new file mode 100644 index 00000000..19e84788 --- /dev/null +++ b/docs/en/deploy/basic_deployment_guide.md @@ -0,0 +1 @@ +# Basic Deployment Guide diff --git a/docs/en/deploy/index.rst b/docs/en/deploy/index.rst new file mode 100644 index 00000000..6fcfb241 --- /dev/null +++ b/docs/en/deploy/index.rst @@ -0,0 +1,16 @@ +Basic Deployment Guide +************************ + +.. toctree:: + :maxdepth: 1 + + basic_deployment_guide.md + + +Deployment tutorial +************************ + +.. toctree:: + :maxdepth: 1 + + yolov5_deployment.md diff --git a/docs/en/deploy/yolov5_deployment.md b/docs/en/deploy/yolov5_deployment.md new file mode 100644 index 00000000..c2683d76 --- /dev/null +++ b/docs/en/deploy/yolov5_deployment.md @@ -0,0 +1 @@ +# YOLOv5 Deployment diff --git a/docs/en/get_started.md b/docs/en/get_started.md index b475effb..fae36dd2 100644 --- a/docs/en/get_started.md +++ b/docs/en/get_started.md @@ -6,8 +6,8 @@ Compatible MMEngine, MMCV and MMDetection versions are shown as below. Please in | MMYOLO version | MMDetection version | MMEngine version | MMCV version | | :------------: | :----------------------: | :----------------------: | :---------------------: | -| main | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.2.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | -| 0.1.2 | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.2.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | +| main | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.3.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | +| 0.1.2 | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.3.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | | 0.1.1 | mmdet==3.0.0rc1 | mmengine>=0.1.0, \<0.2.0 | mmcv>=2.0.0rc0, \<2.1.0 | | 0.1.0 | mmdet==3.0.0rc0 | mmengine>=0.1.0, \<0.2.0 | mmcv>=2.0.0rc0, \<2.1.0 | @@ -50,9 +50,9 @@ conda install pytorch torchvision cpuonly -c pytorch ```shell pip install -U openmim -mim install "mmengine>=0.2.0" +mim install "mmengine>=0.3.0" mim install "mmcv>=2.0.0rc1,<2.1.0" -mim install "mmdet>=3.0.0rc1,<3.1.0" +mim install "mmdet>=3.0.0rc2,<3.1.0" ``` **Note:** @@ -156,7 +156,7 @@ To install MMEngine with pip instead of MIM, please follow \[MMEngine installati For example, you can install MMEngine by the following command. ```shell -pip install "mmengine>=0.2.0" +pip install "mmengine>=0.3.0" ``` #### Install MMCV without MIM diff --git a/docs/en/index.rst b/docs/en/index.rst index 997af61c..8c60978c 100644 --- a/docs/en/index.rst +++ b/docs/en/index.rst @@ -26,6 +26,12 @@ Welcome to MMYOLO's documentation! advanced_guides/index.rst +.. toctree:: + :maxdepth: 2 + :caption: Deployment Guides + + deploy/index.rst + .. toctree:: :maxdepth: 1 :caption: API Reference diff --git a/docs/en/notes/changelog.md b/docs/en/notes/changelog.md index 704c93f3..218b9c4f 100644 --- a/docs/en/notes/changelog.md +++ b/docs/en/notes/changelog.md @@ -1,5 +1,53 @@ # Changelog +## v0.1.2(3/11/2022) + +### Highlights + +1. Support [YOLOv5/YOLOv6/YOLOX/RTMDet deployments](https://github.com/open-mmlab/mmyolo/blob/main/configs/deploy) for ONNXRuntime and TensorRT +2. Support [YOLOv6](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov6) s/t/n model training +3. YOLOv5 supports [P6 model training which can input 1280-scale images](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5) +4. YOLOv5 supports [VOC dataset training](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5/voc) +5. Support [PPYOLOE](https://github.com/open-mmlab/mmyolo/blob/main/configs/ppyoloe) and [YOLOv7](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov7) model inference and official weight conversion +6. Add YOLOv5 replacement [backbone tutorial](https://github.com/open-mmlab/mmyolo/blob/dev/docs/en/advanced_guides/how_to.md#use-backbone-network-implemented-in-other-openmmlab-repositories) in How-to documentation + +### New Features + +1. Add `optimize_anchors` script (#175) +2. Add `extract_subcoco` script (#186) +3. Add `yolo2coco` conversion script (#161) +4. Add `dataset_analysis` script (#172) +5. Remove Albu version restrictions (#187) + +### Bug Fixes + +1. Fix the problem that `cfg.resume` does not work when set (#221) +2. Fix the problem of not showing bbox in feature map visualization script (#204) +3. uUpdate the metafile of RTMDet (#188) +4. Fix a visualization error in `test_pipeline` (#166) +5. Update badges (#140) + +### Improvements + +1. Optimize Readthedoc display page (#209) +2. Add docstring for module structure diagram for base model (#196) +3. Support for not including any instance logic in LoadAnnotations (#161) +4. Update `image_demo` script to support folder and url paths (#128) +5. Update pre-commit hook (#129) + +### Documentation + +1. Translate `yolov5_description.md`, `yolov5_tutorial.md` and `visualization.md` into English (#138, #198, #206) +2. Add deployment-related Chinese documentation (#220) +3. Update `config.md`, `faq.md` and `pull_request_template.md` (#190, #191, #200) +4. Update the `article` page (#133) + +#### Contributors + +A total of 14 developers contributed to this release. + +Thank @imAzhou, @triple-Mu, @RangeKing, @PeterH0323, @xin-li-67, @Nioolek, @kitecats, @Bin-ze, @JiayuXu0, @cydiachen, @zhiqwang, @Zheng-LinXiao, @hhaAndroid, @wanghonglie + ## v0.1.1(29/9/2022) Based on MMDetection's RTMDet high precision and low latency object detection algorithm, we have also released RTMDet and provided a Chinese document on the principle and implementation of RTMDet. diff --git a/docs/en/overview.md b/docs/en/overview.md index a27fb1ca..6927c21c 100644 --- a/docs/en/overview.md +++ b/docs/en/overview.md @@ -44,7 +44,12 @@ The detailed instruction of MMYOLO is as follows. - [Essential Basics](https://mmyolo.readthedocs.io/en/latest/algorithm_descriptions/index.html#essential-basics) - [A full explanation of the model and implementation](https://mmyolo.readthedocs.io/en/latest/algorithm_descriptions/index.html#algorithm-principles-and-implementation) -4. Refer to the following tutorials for an in-depth look: +4. YOLO series of Deploy tutorials + + - [Basic Deployment Guide](https://mmyolo.readthedocs.io/en/latest/deploy/index.html#basic-deployment-guide) + - [Deployment Tutorial](https://mmyolo.readthedocs.io/en/latest/deploy/index.html#deployment-tutorial) + +5. Refer to the following tutorials for an in-depth look: - [Data flow](https://mmyolo.readthedocs.io/en/latest/advanced_guides/index.html#data-flow) - [How to](https://mmyolo.readthedocs.io/en/latest/advanced_guides/index.html#how-to) diff --git a/docs/en/user_guides/yolov5_tutorial.md b/docs/en/user_guides/yolov5_tutorial.md index 67c3e732..2d453ff3 100644 --- a/docs/en/user_guides/yolov5_tutorial.md +++ b/docs/en/user_guides/yolov5_tutorial.md @@ -10,7 +10,7 @@ conda activate open-mmlab conda install pytorch torchvision -c pytorch # conda install pytorch torchvision cpuonly -c pytorch pip install -U openmim -mim install "mmengine>=0.2.0" +mim install "mmengine>=0.3.0" mim install "mmcv>=2.0.0rc1,<2.1.0" mim install "mmdet>=3.0.0rc2,<3.1.0" git clone https://github.com/open-mmlab/mmyolo.git @@ -126,11 +126,9 @@ wget https://download.openmmlab.com/mmyolo/v0/yolov5/yolov5_s-v61_syncbn_fast_8x ```shell cd mmyolo python tools/train.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ - --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' custom_hooks=None + --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' ``` -Note: Ideally, the `strict_load` initialization parameter of `EMAHook` should be set to `False` during the fine-tuning phase, which makes the command `custom_hooks.0.strict_load=False`. However, because MMEngine v0.1.0 is the initial development version, there will be problems with this setting right now. Therefore, for the time being, you can only use the command `custom_hooks=None` to turn off `custom_hooks` to load the pre-training weights correctly. This issue is expected to be fixed in the next release. - 3. Freeze backbone to train Freeze the four backbone stages by setting `model.backbone.frozen_stages=4` in the config file or from the command line. @@ -139,7 +137,7 @@ Freeze the four backbone stages by setting `model.backbone.frozen_stages=4` in t # Set model.backbone.frozen_stages=4 from the command line cd mmyolo python tools/train.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ - --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' model.backbone.frozen_stages=4 custom_hooks=None + --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' model.backbone.frozen_stages=4 ``` ### Visualization @@ -220,16 +218,6 @@ tensorboard --logdir=work_dirs/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon ## Model Testing -If you set `custom_hooks=None` during training, you still need to set `custom_hooks=None` during model testing as well. - -```shell -python tools/test.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ - work_dirs/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon/epoch_300.pth \ - --show-dir show_results --cfg-options custom_hooks=None -``` - -If you don't set `custom_hooks=None` during training, the test command should be as follows: - ```shell python tools/test.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ work_dirs/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon/epoch_300.pth \ @@ -244,4 +232,4 @@ Run the above command, the inference result picture will be automatically saved ## Model Deployment -Under development... +Please refer to [this](../deploy/yolov5_deployment.md) diff --git a/docs/zh_cn/article.md b/docs/zh_cn/article.md index 5e9eeea8..ccabaf35 100644 --- a/docs/zh_cn/article.md +++ b/docs/zh_cn/article.md @@ -27,6 +27,10 @@ #### 实用类 +| | 内容 | 视频 | 课程中的代码/文档 | +| :---: | :------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------: | +| 第1讲 | 源码阅读和调试「必备」技巧 | [![Link](https://i2.hdslb.com/bfs/archive/790d2422c879ff20488910da1c4422b667ea6af7.jpg@112w_63h_1c.webp)](https://www.bilibili.com/video/BV1N14y1V7mB) [![bilibili](https://img.shields.io/badge/dynamic/json?label=views&style=social&logo=bilibili&query=data.stat.view&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fweb-interface%2Fview%3Fbvid%3DBV1N14y1V7mB)](https://www.bilibili.com/video/BV1N14y1V7mB) | [源码阅读和调试「必备」技巧文档](<>) | + #### 源码解读类 #### 演示类 diff --git a/docs/zh_cn/advanced_guides/basic_deployment_guide.md b/docs/zh_cn/deploy/basic_deployment_guide.md similarity index 98% rename from docs/zh_cn/advanced_guides/basic_deployment_guide.md rename to docs/zh_cn/deploy/basic_deployment_guide.md index 25d77cf5..a17e4233 100644 --- a/docs/zh_cn/advanced_guides/basic_deployment_guide.md +++ b/docs/zh_cn/deploy/basic_deployment_guide.md @@ -1,10 +1,12 @@ -# MMDeploy 介绍 +# 部署必备教程 + +## MMDeploy 介绍 MMDeploy 是 [OpenMMLab](https://openmmlab.com/) 模型部署工具箱,**为各算法库提供统一的部署体验**。基于 MMDeploy,开发者可以轻松从训练 repo 生成指定硬件所需 SDK,省去大量适配时间。 更多介绍和使用指南见 https://github.com/open-mmlab/mmdeploy/blob/dev-1.x/docs/zh_cn/get_started.md -# 算法支持列表 +## 算法支持列表 目前支持的 model-backend 组合: @@ -17,7 +19,7 @@ MMDeploy 是 [OpenMMLab](https://openmmlab.com/) 模型部署工具箱,**为 ncnn 和其他后端的支持会在后续支持。 -# MMYOLO 中部署相关配置说明 +## MMYOLO 中部署相关配置说明 所有部署配置文件在 [`configs/deploy`](configs/deploy) 目录下。 @@ -202,7 +204,7 @@ use_efficientnms = False !!! 部署 TensorRT INT8 模型教程即将发布 !!! -# 模型转换 +## 模型转换 ### 使用方法 @@ -237,7 +239,7 @@ python3 ${MMDEPLOY_DIR}/tools/deploy.py \ - `--show` : 是否显示检测的结果。 - `--dump-info` : 是否输出 SDK 信息。 -# 模型评测 +## 模型评测 当您将 PyTorch 模型转换为后端支持的模型后,您可能需要验证模型的精度,使用 `${MMDEPLOY_DIR}/tools/test.py` @@ -262,7 +264,7 @@ python3 ${MMDEPLOY_DIR}/tools/test.py \ [--log-interval ${LOG_INTERVERL}] ``` -## 参数描述 +### 参数描述 - `deploy_cfg`: 部署配置文件。 - `model_cfg`: MMYOLO 模型配置文件。 diff --git a/docs/zh_cn/deploy/index.rst b/docs/zh_cn/deploy/index.rst new file mode 100644 index 00000000..3cf47711 --- /dev/null +++ b/docs/zh_cn/deploy/index.rst @@ -0,0 +1,16 @@ +部署必备教程 +************************ + +.. toctree:: + :maxdepth: 1 + + basic_deployment_guide.md + + +部署全流程说明 +************************ + +.. toctree:: + :maxdepth: 1 + + yolov5_deployment.md diff --git a/docs/zh_cn/advanced_guides/yolov5_deploy.md b/docs/zh_cn/deploy/yolov5_deployment.md similarity index 100% rename from docs/zh_cn/advanced_guides/yolov5_deploy.md rename to docs/zh_cn/deploy/yolov5_deployment.md diff --git a/docs/zh_cn/get_started.md b/docs/zh_cn/get_started.md index 792a7e4e..59d92f8c 100644 --- a/docs/zh_cn/get_started.md +++ b/docs/zh_cn/get_started.md @@ -6,8 +6,8 @@ | MMYOLO version | MMDetection version | MMEngine version | MMCV version | | :------------: | :----------------------: | :----------------------: | :---------------------: | -| main | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.2.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | -| 0.1.2 | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.2.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | +| main | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.3.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | +| 0.1.2 | mmdet>=3.0.0rc2, \<3.1.0 | mmengine>=0.3.0, \<1.0.0 | mmcv>=2.0.0rc0, \<2.1.0 | | 0.1.1 | mmdet==3.0.0rc1 | mmengine>=0.1.0, \<0.2.0 | mmcv>=2.0.0rc0, \<2.1.0 | | 0.1.0 | mmdet==3.0.0rc0 | mmengine>=0.1.0, \<0.2.0 | mmcv>=2.0.0rc0, \<2.1.0 | @@ -50,7 +50,7 @@ conda install pytorch torchvision cpuonly -c pytorch ```shell pip install -U openmim -mim install "mmengine>=0.2.0" +mim install "mmengine>=0.3.0" mim install "mmcv>=2.0.0rc1,<2.1.0" mim install "mmdet>=3.0.0rc1,<3.1.0" ``` @@ -158,7 +158,7 @@ inference_detector(model, 'demo/demo.jpg') 例如,你可以通过以下命令安装 MMEngine: ```shell -pip install "mmengine>=0.2.0" +pip install "mmengine>=0.3.0" ``` #### 不使用 MIM 安装 MMCV diff --git a/docs/zh_cn/index.rst b/docs/zh_cn/index.rst index 149237a1..4bdd4819 100644 --- a/docs/zh_cn/index.rst +++ b/docs/zh_cn/index.rst @@ -26,6 +26,12 @@ advanced_guides/index.rst +.. toctree:: + :maxdepth: 2 + :caption: 部署教程 + + deploy/index.rst + .. toctree:: :maxdepth: 1 :caption: 解读文章和资源汇总 diff --git a/docs/zh_cn/notes/changelog.md b/docs/zh_cn/notes/changelog.md index 30204d43..a1ceb35e 100644 --- a/docs/zh_cn/notes/changelog.md +++ b/docs/zh_cn/notes/changelog.md @@ -1,5 +1,60 @@ # 更新日志 +## v0.1.2(3/11/2022) + +### 亮点 + +1. 支持 ONNXRuntime 和 TensorRT 的 [YOLOv5/YOLOv6/YOLOX/RTMDet 部署](https://github.com/open-mmlab/mmyolo/blob/main/configs/deploy) +2. 支持 [YOLOv6](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov6) s/t/n 模型训练 +3. YOLOv5 支持 [P6 大分辨率 1280 尺度训练](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5) +4. YOLOv5 支持 [VOC 数据集训练](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov5/voc) +5. 支持 [PPYOLOE](https://github.com/open-mmlab/mmyolo/blob/main/configs/ppyoloe) 和 [YOLOv7](https://github.com/open-mmlab/mmyolo/blob/main/configs/yolov7) 模型推理和官方权重转化 +6. How-to 文档中新增 YOLOv5 替换 [backbone 教程](https://github.com/open-mmlab/mmyolo/blob/dev/docs/zh_cn/advanced_guides/how_to.md#%E8%B7%A8%E5%BA%93%E4%BD%BF%E7%94%A8%E4%B8%BB%E5%B9%B2%E7%BD%91%E7%BB%9C) + +### 新特性 + +1. 新增 `optimize_anchors` 脚本 (#175) +2. 新增 `extract_subcoco` 脚本 (#186) +3. 新增 `yolo2coco` 转换脚本 (#161) +4. 新增 `dataset_analysis` 脚本 (#172) +5. 移除 Albu 版本限制 (#187) + +### Bug 修复 + +1. 修复当设置 `cfg.resume` 时候不生效问题 (#221) +2. 修复特征图可视化脚本中不显示 bbox 问题 (#204) +3. 更新 RTMDet 的 metafile (#188) +4. 修复 test_pipeline 中的可视化错误 (#166) +5. 更新 badges (#140) + +### 完善 + +1. 优化 Readthedoc 显示页面 (#209) +2. 为 base model 添加模块结构图的 docstring (#196) +3. 支持 LoadAnnotations 中不包括任何实例逻辑 (#161) +4. 更新 `image_demo` 脚本以支持文件夹和 url 路径 (#128) +5. 更新 pre-commit hook (#129) + +### 文档 + +1. 将 `yolov5_description.md`、 `yolov5_tutorial.md` 和 `visualization.md` 翻译为英文 (#138, #198, #206) +2. 新增部署相关中文文档 (#220) +3. 更新 `config.md`、`faq.md` 和 `pull_request_template.md` (#190, #191, #200) +4. 更新 `article` 页面 (#133) + +### 视频 + +1. 发布了[特征图可视化视频](https://www.bilibili.com/video/BV188411s7o8) +2. 发布了 [YOLOv5 配置文件解读视频](https://www.bilibili.com/video/BV1214y157ck) +3. 发布了 [RTMDet-s 特征图可视化 demo 视频](https://www.bilibili.com/video/BV1je4y1478R) +4. 发布了[源码解读和必备调试技巧视频](https://www.bilibili.com/video/BV1N14y1V7mB) + +### 贡献者 + +总共 14 位开发者参与了本次版本 + +谢谢 @imAzhou, @triple-Mu, @RangeKing, @PeterH0323, @xin-li-67, @Nioolek, @kitecats, @Bin-ze, @JiayuXu0, @cydiachen, @zhiqwang, @Zheng-LinXiao, @hhaAndroid, @wanghonglie + ## v0.1.1(29/9/2022) 基于 MMDetection 的 RTMDet 高精度低延时目标检测算法,我们也同步发布了 RTMDet,并提供了 RTMDet 原理和实现全解析中文文档 diff --git a/docs/zh_cn/overview.md b/docs/zh_cn/overview.md index 4480fd51..37bdab91 100644 --- a/docs/zh_cn/overview.md +++ b/docs/zh_cn/overview.md @@ -44,9 +44,14 @@ MMYOLO 文件结构和 MMDetection 完全一致。为了能够充分复用 MMDet - [必备基础](https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/index.html#id1) - [原理和实现全解析](https://mmyolo.readthedocs.io/zh_CN/latest/algorithm_descriptions/index.html#id2) -4. 参考以下教程深入了解: +4. YOLO 系列部署教程: + + - [部署必备教程](https://mmyolo.readthedocs.io/zh_CN/latest/deploy/index.html#id1) + - [部署全流程说明](https://mmyolo.readthedocs.io/zh_CN/latest/deploy/index.html#id2) + +5. 参考以下教程深入了解: - [数据流](https://mmyolo.readthedocs.io/zh_CN/latest/advanced_guides/index.html#id1) - [How to](https://mmyolo.readthedocs.io/zh_CN/latest/advanced_guides/index.html#how-to) -5. [解读文章和资源汇总](article.md) +6. [解读文章和资源汇总](article.md) diff --git a/docs/zh_cn/user_guides/yolov5_tutorial.md b/docs/zh_cn/user_guides/yolov5_tutorial.md index 7fe44197..8f300c80 100644 --- a/docs/zh_cn/user_guides/yolov5_tutorial.md +++ b/docs/zh_cn/user_guides/yolov5_tutorial.md @@ -10,7 +10,7 @@ conda activate open-mmlab conda install pytorch torchvision -c pytorch # conda install pytorch torchvision cpuonly -c pytorch pip install -U openmim -mim install "mmengine>=0.2.0" +mim install "mmengine>=0.3.0" mim install "mmcv>=2.0.0rc1,<2.1.0" mim install "mmdet>=3.0.0rc2,<3.1.0" git clone https://github.com/open-mmlab/mmyolo.git @@ -125,11 +125,9 @@ wget https://download.openmmlab.com/mmyolo/v0/yolov5/yolov5_s-v61_syncbn_fast_8x ```shell cd mmyolo python tools/train.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ - --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' custom_hooks=None + --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' ``` -注意: 原则上在微调阶段应该将 `EMAHook` 的 `strict_load` 初始化参数设置为 `False` 即命令为 `custom_hooks.0.strict_load=False`。但由于 MMEngine v0.1.0 为初期开发版本,目前这样设置会出现问题。因此暂时只能通过命令 `custom_hooks=None`,关闭 `custom_hooks` 使用,从而正确加载预训练权重。预计会在下个版本修复此问题。 - 3. 冻结 backbone 进行训练 通过 config 文件或者命令行中设置 model.backbone.frozen_stages=4 冻结 backbone 的 4 个 stages。 @@ -138,7 +136,7 @@ python tools/train.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon. # 命令行中设置 model.backbone.frozen_stages=4 cd mmyolo python tools/train.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ - --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' model.backbone.frozen_stages=4 custom_hooks=None + --cfg-options load_from='yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' model.backbone.frozen_stages=4 ``` ### 训练验证中可视化相关 @@ -221,16 +219,6 @@ tensorboard --logdir=work_dirs/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon ## 模型测试 -如果你训练时候设置了 `custom_hooks=None`,那么在模型测试过程中依然需要设置 `custom_hooks=None` - -```shell -python tools/test.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ - work_dirs/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon/epoch_300.pth \ - --show-dir show_results --cfg-options custom_hooks=None -``` - -如果你没有设置 `custom_hooks=None`,那么测试命令如下: - ```shell python tools/test.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.py \ work_dirs/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon/epoch_300.pth \ @@ -245,4 +233,4 @@ python tools/test.py configs/yolov5/yolov5_s-v61_syncbn_fast_1xb4-300e_balloon.p ## 模型部署 -正在准备中,敬请期待! +请参考[这里](../deploy/yolov5_deployment.md) diff --git a/mmyolo/__init__.py b/mmyolo/__init__.py index b20994b1..b3f75ce3 100644 --- a/mmyolo/__init__.py +++ b/mmyolo/__init__.py @@ -10,7 +10,7 @@ mmcv_minimum_version = '2.0.0rc0' mmcv_maximum_version = '2.1.0' mmcv_version = digit_version(mmcv.__version__) -mmengine_minimum_version = '0.2.0' +mmengine_minimum_version = '0.3.0' mmengine_maximum_version = '1.0.0' mmengine_version = digit_version(mmengine.__version__) diff --git a/requirements/mminstall.txt b/requirements/mminstall.txt index cdf7d390..e28911af 100644 --- a/requirements/mminstall.txt +++ b/requirements/mminstall.txt @@ -1,3 +1,3 @@ mmcv>=2.0.0rc1,<2.1.0 mmdet>=3.0.0rc2 -mmengine>=0.2.0 +mmengine>=0.3.0 diff --git a/requirements/readthedocs.txt b/requirements/readthedocs.txt index 2b17cbb8..774625e8 100644 --- a/requirements/readthedocs.txt +++ b/requirements/readthedocs.txt @@ -1,5 +1,5 @@ mmcv>=2.0.0rc1,<2.1.0 mmdet>=3.0.0rc2 -mmengine>=0.2.0 +mmengine>=0.3.0 torch torchvision