diff --git a/.circleci/docker/Dockerfile b/.circleci/docker/Dockerfile index d014917af3..b1d40e0e14 100644 --- a/.circleci/docker/Dockerfile +++ b/.circleci/docker/Dockerfile @@ -5,8 +5,6 @@ ARG CUDNN="7" FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel -ARG DEBIAN_FRONTEND=noninteractive - # To fix GPG key error when running apt-get update RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub diff --git a/.circleci/test.yml b/.circleci/test.yml index b5d3e23a4d..622cdf9791 100644 --- a/.circleci/test.yml +++ b/.circleci/test.yml @@ -82,7 +82,7 @@ jobs: type: string cuda: type: enum - enum: ["10.1", "10.2", "11.1", "11.7", "11.8"] + enum: ["10.1", "10.2", "11.1"] cudnn: type: integer default: 7 @@ -160,8 +160,9 @@ workflows: - lint - build_cpu: name: maximum_version_cpu - torch: 2.0.0 - torchvision: 0.15.0 + # TODO: Fix torch 1.13 forward crush + torch: 1.12.0 + torchvision: 0.13.0 python: 3.9.0 requires: - minimum_version_cpu @@ -171,10 +172,10 @@ workflows: - maximum_version_cpu - build_cuda: name: mainstream_version_gpu - torch: 2.0.0 + torch: 1.8.1 # Use double quotation mark to explicitly specify its type # as string instead of number - cuda: "11.8" + cuda: "10.2" requires: - hold merge_stage_test: @@ -193,14 +194,3 @@ workflows: only: - dev-1.x - main - - build_cuda: - name: maximum_version_gpu - torch: 2.0.0 - # Use double quotation mark to explicitly specify its type - # as string instead of number - cuda: "11.8" - cudnn: 8 - filters: - branches: - only: - - main diff --git a/README.md b/README.md index 3c2b5998e4..5d63f49279 100644 --- a/README.md +++ b/README.md @@ -89,11 +89,17 @@ MMSegmentation v1.x brings remarkable improvements over the 0.x release, offerin ## What's New -v1.1.2 was released on 09/20/2023. -Please refer to [changelog.md](docs/en/notes/changelog.md) for details and release history. +v1.2.0 was released on 10/12/2023, from 1.1.0 to 1.2.0, we have added or updated the following features: -- Support monocular depth estimation task, please refer to [VPD](configs/vpd/README.md) for more details. -- Add new projects: [CAT-Seg](projects/CAT-Seg/README.md), [PP-MobileSeg](projects/pp_mobileseg/README.md), [AdaBins](projects/Adabins/README.md) +### Highlights + +- Support for the open-vocabulary semantic segmentation algorithm [SAN](configs/san/README.md) + +- Support monocular depth estimation task, please refer to [VPD](configs/vpd/README.md) and [Adabins](projects/Adabins/README.md) for more details. + + ![depth estimation](https://github.com/open-mmlab/mmsegmentation/assets/15952744/07afd0e9-8ace-4a00-aa1e-5bf0ca92dcbc) + +- Add new projects: open-vocabulary semantic segmentation algorithm [CAT-Seg](projects/CAT-Seg/README.md), real-time semantic segmentation algofithm [PP-MobileSeg](projects/pp_mobileseg/README.md) ## Installation @@ -192,45 +198,46 @@ Results and models are available in the [model zoo](docs/en/model_zoo.md).
Supported methods: -- [x] [FCN (CVPR'2015/TPAMI'2017)](configs/fcn) -- [x] [ERFNet (T-ITS'2017)](configs/erfnet) -- [x] [UNet (MICCAI'2016/Nat. Methods'2019)](configs/unet) -- [x] [PSPNet (CVPR'2017)](configs/pspnet) -- [x] [DeepLabV3 (ArXiv'2017)](configs/deeplabv3) -- [x] [BiSeNetV1 (ECCV'2018)](configs/bisenetv1) -- [x] [PSANet (ECCV'2018)](configs/psanet) -- [x] [DeepLabV3+ (CVPR'2018)](configs/deeplabv3plus) -- [x] [UPerNet (ECCV'2018)](configs/upernet) -- [x] [ICNet (ECCV'2018)](configs/icnet) -- [x] [NonLocal Net (CVPR'2018)](configs/nonlocal_net) -- [x] [EncNet (CVPR'2018)](configs/encnet) -- [x] [Semantic FPN (CVPR'2019)](configs/sem_fpn) -- [x] [DANet (CVPR'2019)](configs/danet) -- [x] [APCNet (CVPR'2019)](configs/apcnet) +- [x] [SAN (CVPR'2023)](configs/san/) +- [x] [VPD (ICCV'2023)](configs/vpd) +- [x] [DDRNet (T-ITS'2022)](configs/ddrnet) +- [x] [PIDNet (ArXiv'2022)](configs/pidnet) +- [x] [Mask2Former (CVPR'2022)](configs/mask2former) +- [x] [MaskFormer (NeurIPS'2021)](configs/maskformer) +- [x] [K-Net (NeurIPS'2021)](configs/knet) +- [x] [SegFormer (NeurIPS'2021)](configs/segformer) +- [x] [Segmenter (ICCV'2021)](configs/segmenter) +- [x] [DPT (ArXiv'2021)](configs/dpt) +- [x] [SETR (CVPR'2021)](configs/setr) +- [x] [STDC (CVPR'2021)](configs/stdc) +- [x] [BiSeNetV2 (IJCV'2021)](configs/bisenetv2) +- [x] [CGNet (TIP'2020)](configs/cgnet) +- [x] [PointRend (CVPR'2020)](configs/point_rend) +- [x] [DNLNet (ECCV'2020)](configs/dnlnet) +- [x] [OCRNet (ECCV'2020)](configs/ocrnet) +- [x] [ISANet (ArXiv'2019/IJCV'2021)](configs/isanet) +- [x] [Fast-SCNN (ArXiv'2019)](configs/fastscnn) +- [x] [FastFCN (ArXiv'2019)](configs/fastfcn) +- [x] [GCNet (ICCVW'2019/TPAMI'2020)](configs/gcnet) +- [x] [ANN (ICCV'2019)](configs/ann) - [x] [EMANet (ICCV'2019)](configs/emanet) - [x] [CCNet (ICCV'2019)](configs/ccnet) - [x] [DMNet (ICCV'2019)](configs/dmnet) -- [x] [ANN (ICCV'2019)](configs/ann) -- [x] [GCNet (ICCVW'2019/TPAMI'2020)](configs/gcnet) -- [x] [FastFCN (ArXiv'2019)](configs/fastfcn) -- [x] [Fast-SCNN (ArXiv'2019)](configs/fastscnn) -- [x] [ISANet (ArXiv'2019/IJCV'2021)](configs/isanet) -- [x] [OCRNet (ECCV'2020)](configs/ocrnet) -- [x] [DNLNet (ECCV'2020)](configs/dnlnet) -- [x] [PointRend (CVPR'2020)](configs/point_rend) -- [x] [CGNet (TIP'2020)](configs/cgnet) -- [x] [BiSeNetV2 (IJCV'2021)](configs/bisenetv2) -- [x] [STDC (CVPR'2021)](configs/stdc) -- [x] [SETR (CVPR'2021)](configs/setr) -- [x] [DPT (ArXiv'2021)](configs/dpt) -- [x] [Segmenter (ICCV'2021)](configs/segmenter) -- [x] [SegFormer (NeurIPS'2021)](configs/segformer) -- [x] [K-Net (NeurIPS'2021)](configs/knet) -- [x] [MaskFormer (NeurIPS'2021)](configs/maskformer) -- [x] [Mask2Former (CVPR'2022)](configs/mask2former) -- [x] [PIDNet (ArXiv'2022)](configs/pidnet) -- [x] [DDRNet (T-ITS'2022)](configs/ddrnet) -- [x] [VPD (ICCV'2023)](configs/vpd) +- [x] [Semantic FPN (CVPR'2019)](configs/sem_fpn) +- [x] [DANet (CVPR'2019)](configs/danet) +- [x] [APCNet (CVPR'2019)](configs/apcnet) +- [x] [NonLocal Net (CVPR'2018)](configs/nonlocal_net) +- [x] [EncNet (CVPR'2018)](configs/encnet) +- [x] [DeepLabV3+ (CVPR'2018)](configs/deeplabv3plus) +- [x] [UPerNet (ECCV'2018)](configs/upernet) +- [x] [ICNet (ECCV'2018)](configs/icnet) +- [x] [PSANet (ECCV'2018)](configs/psanet) +- [x] [BiSeNetV1 (ECCV'2018)](configs/bisenetv1) +- [x] [DeepLabV3 (ArXiv'2017)](configs/deeplabv3) +- [x] [PSPNet (CVPR'2017)](configs/pspnet) +- [x] [ERFNet (T-ITS'2017)](configs/erfnet) +- [x] [UNet (MICCAI'2016/Nat. Methods'2019)](configs/unet) +- [x] [FCN (CVPR'2015/TPAMI'2017)](configs/fcn)
diff --git a/README_zh-CN.md b/README_zh-CN.md index 1aaa99f6bc..fa4c82a280 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -88,7 +88,7 @@ MMSegmentation v1.x 在 0.x 版本的基础上有了显著的提升,提供了 ## 更新日志 -最新版本 v1.1.2 在 2023.09.20 发布。 +最新版本 v1.2.0 在 2023.10.12 发布。 如果想了解更多版本更新细节和历史信息,请阅读[更新日志](docs/en/notes/changelog.md)。 ## 安装 @@ -187,45 +187,46 @@ MMSegmentation v1.x 在 0.x 版本的基础上有了显著的提升,提供了
已支持的算法: -- [x] [FCN (CVPR'2015/TPAMI'2017)](configs/fcn) -- [x] [ERFNet (T-ITS'2017)](configs/erfnet) -- [x] [UNet (MICCAI'2016/Nat. Methods'2019)](configs/unet) -- [x] [PSPNet (CVPR'2017)](configs/pspnet) -- [x] [DeepLabV3 (ArXiv'2017)](configs/deeplabv3) -- [x] [BiSeNetV1 (ECCV'2018)](configs/bisenetv1) -- [x] [PSANet (ECCV'2018)](configs/psanet) -- [x] [DeepLabV3+ (CVPR'2018)](configs/deeplabv3plus) -- [x] [UPerNet (ECCV'2018)](configs/upernet) -- [x] [ICNet (ECCV'2018)](configs/icnet) -- [x] [NonLocal Net (CVPR'2018)](configs/nonlocal_net) -- [x] [EncNet (CVPR'2018)](configs/encnet) -- [x] [Semantic FPN (CVPR'2019)](configs/sem_fpn) -- [x] [DANet (CVPR'2019)](configs/danet) -- [x] [APCNet (CVPR'2019)](configs/apcnet) +- [x] [SAN (CVPR'2023)](configs/san/) +- [x] [VPD (ICCV'2023)](configs/vpd) +- [x] [DDRNet (T-ITS'2022)](configs/ddrnet) +- [x] [PIDNet (ArXiv'2022)](configs/pidnet) +- [x] [Mask2Former (CVPR'2022)](configs/mask2former) +- [x] [MaskFormer (NeurIPS'2021)](configs/maskformer) +- [x] [K-Net (NeurIPS'2021)](configs/knet) +- [x] [SegFormer (NeurIPS'2021)](configs/segformer) +- [x] [Segmenter (ICCV'2021)](configs/segmenter) +- [x] [DPT (ArXiv'2021)](configs/dpt) +- [x] [SETR (CVPR'2021)](configs/setr) +- [x] [STDC (CVPR'2021)](configs/stdc) +- [x] [BiSeNetV2 (IJCV'2021)](configs/bisenetv2) +- [x] [CGNet (TIP'2020)](configs/cgnet) +- [x] [PointRend (CVPR'2020)](configs/point_rend) +- [x] [DNLNet (ECCV'2020)](configs/dnlnet) +- [x] [OCRNet (ECCV'2020)](configs/ocrnet) +- [x] [ISANet (ArXiv'2019/IJCV'2021)](configs/isanet) +- [x] [Fast-SCNN (ArXiv'2019)](configs/fastscnn) +- [x] [FastFCN (ArXiv'2019)](configs/fastfcn) +- [x] [GCNet (ICCVW'2019/TPAMI'2020)](configs/gcnet) +- [x] [ANN (ICCV'2019)](configs/ann) - [x] [EMANet (ICCV'2019)](configs/emanet) - [x] [CCNet (ICCV'2019)](configs/ccnet) - [x] [DMNet (ICCV'2019)](configs/dmnet) -- [x] [ANN (ICCV'2019)](configs/ann) -- [x] [GCNet (ICCVW'2019/TPAMI'2020)](configs/gcnet) -- [x] [FastFCN (ArXiv'2019)](configs/fastfcn) -- [x] [Fast-SCNN (ArXiv'2019)](configs/fastscnn) -- [x] [ISANet (ArXiv'2019/IJCV'2021)](configs/isanet) -- [x] [OCRNet (ECCV'2020)](configs/ocrnet) -- [x] [DNLNet (ECCV'2020)](configs/dnlnet) -- [x] [PointRend (CVPR'2020)](configs/point_rend) -- [x] [CGNet (TIP'2020)](configs/cgnet) -- [x] [BiSeNetV2 (IJCV'2021)](configs/bisenetv2) -- [x] [STDC (CVPR'2021)](configs/stdc) -- [x] [SETR (CVPR'2021)](configs/setr) -- [x] [DPT (ArXiv'2021)](configs/dpt) -- [x] [Segmenter (ICCV'2021)](configs/segmenter) -- [x] [SegFormer (NeurIPS'2021)](configs/segformer) -- [x] [K-Net (NeurIPS'2021)](configs/knet) -- [x] [MaskFormer (NeurIPS'2021)](configs/maskformer) -- [x] [Mask2Former (CVPR'2022)](configs/mask2former) -- [x] [PIDNet (ArXiv'2022)](configs/pidnet) -- [x] [DDRNet (T-ITS'2022)](configs/ddrnet) -- [x] [VPD (ICCV'2023)](configs/vpd) +- [x] [Semantic FPN (CVPR'2019)](configs/sem_fpn) +- [x] [DANet (CVPR'2019)](configs/danet) +- [x] [APCNet (CVPR'2019)](configs/apcnet) +- [x] [NonLocal Net (CVPR'2018)](configs/nonlocal_net) +- [x] [EncNet (CVPR'2018)](configs/encnet) +- [x] [DeepLabV3+ (CVPR'2018)](configs/deeplabv3plus) +- [x] [UPerNet (ECCV'2018)](configs/upernet) +- [x] [ICNet (ECCV'2018)](configs/icnet) +- [x] [PSANet (ECCV'2018)](configs/psanet) +- [x] [BiSeNetV1 (ECCV'2018)](configs/bisenetv1) +- [x] [DeepLabV3 (ArXiv'2017)](configs/deeplabv3) +- [x] [PSPNet (CVPR'2017)](configs/pspnet) +- [x] [ERFNet (T-ITS'2017)](configs/erfnet) +- [x] [UNet (MICCAI'2016/Nat. Methods'2019)](configs/unet) +- [x] [FCN (CVPR'2015/TPAMI'2017)](configs/fcn)
diff --git a/docker/serve/Dockerfile b/docker/serve/Dockerfile index 8a6786f118..f461e35963 100644 --- a/docker/serve/Dockerfile +++ b/docker/serve/Dockerfile @@ -4,7 +4,7 @@ ARG CUDNN="8" FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel ARG MMCV="2.0.1" -ARG MMSEG="1.1.2" +ARG MMSEG="1.2.0" ENV PYTHONUNBUFFERED TRUE diff --git a/docs/en/notes/changelog.md b/docs/en/notes/changelog.md index c26e4c2f5e..e05e465a50 100644 --- a/docs/en/notes/changelog.md +++ b/docs/en/notes/changelog.md @@ -1,5 +1,19 @@ # Changelog of v1.x +## v1.2.0 (10/12/2023) + +### Features + +- Support Side Adapter Network ([#3232](https://github.com/open-mmlab/mmsegmentation/pull/3232)) + +### Bug Fixes + +- fix wrong variables passing for `set_dataset_meta` ([#3348](https://github.com/open-mmlab/mmsegmentation/pull/3348)) + +### Documentation + +- add documentation of Finetune ONNX Models (MMSegemetation) Inference for NVIDIA Jetson ([#3372](https://github.com/open-mmlab/mmsegmentation/pull/3372)) + ## v1.1.2(09/20/2023) ### Features diff --git a/docs/en/notes/faq.md b/docs/en/notes/faq.md index 426b70a8d5..fe3f21a846 100644 --- a/docs/en/notes/faq.md +++ b/docs/en/notes/faq.md @@ -10,6 +10,7 @@ The compatible MMSegmentation, MMCV and MMEngine versions are as below. Please i | :--------------------: | :----------------------------: | :---------------: | :---------------------------------: | :----------------------------: | | dev-1.x branch | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | main branch | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | +| 1.2.0 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | 1.1.2 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | 1.1.1 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | 1.1.0 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | diff --git a/docs/zh_cn/notes/faq.md b/docs/zh_cn/notes/faq.md index bf3b341780..5ca3e3f9d5 100644 --- a/docs/zh_cn/notes/faq.md +++ b/docs/zh_cn/notes/faq.md @@ -10,6 +10,7 @@ | :--------------------: | :----------------------------: | :---------------: | :---------------------------------: | :----------------------------: | | dev-1.x branch | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | main branch | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | +| 1.2.0 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | 1.1.2 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | 1.1.1 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | | 1.1.0 | mmcv >= 2.0.0 | MMEngine >= 0.7.4 | mmpretrain>=1.0.0rc7 | mmdet >= 3.0.0 | diff --git a/mmseg/__init__.py b/mmseg/__init__.py index 9f171ccb0a..5fcb84e8c4 100644 --- a/mmseg/__init__.py +++ b/mmseg/__init__.py @@ -8,7 +8,7 @@ from .version import __version__, version_info MMCV_MIN = '2.0.0rc4' -MMCV_MAX = '2.1.0' +MMCV_MAX = '2.2.0' MMENGINE_MIN = '0.5.0' MMENGINE_MAX = '1.0.0' diff --git a/mmseg/version.py b/mmseg/version.py index a654604da7..5132f9c8c3 100644 --- a/mmseg/version.py +++ b/mmseg/version.py @@ -1,6 +1,6 @@ # Copyright (c) Open-MMLab. All rights reserved. -__version__ = '1.1.2' +__version__ = '1.2.0' def parse_version_info(version_str): diff --git a/requirements/mminstall.txt b/requirements/mminstall.txt index df073e0c1b..5732d345bb 100644 --- a/requirements/mminstall.txt +++ b/requirements/mminstall.txt @@ -1,2 +1,2 @@ -mmcv>=2.0.0rc4 +mmcv>=2.0.0rc4,<2.2.0 mmengine>=0.5.0,<1.0.0 diff --git a/tests/test_models/test_forward.py b/tests/test_models/test_forward.py index 7f72efae2a..bb3967f8dd 100644 --- a/tests/test_models/test_forward.py +++ b/tests/test_models/test_forward.py @@ -127,11 +127,6 @@ def test_gcnet_forward(): 'gcnet/gcnet_r50-d8_4xb2-40k_cityscapes-512x1024.py') -def test_ann_forward(): - _test_encoder_decoder_forward( - 'ann/ann_r50-d8_4xb2-40k_cityscapes-512x1024.py') - - def test_ccnet_forward(): if not torch.cuda.is_available(): pytest.skip('CCNet requires CUDA') @@ -139,16 +134,6 @@ def test_ccnet_forward(): 'ccnet/ccnet_r50-d8_4xb2-40k_cityscapes-512x1024.py') -def test_danet_forward(): - _test_encoder_decoder_forward( - 'danet/danet_r50-d8_4xb2-40k_cityscapes-512x1024.py') - - -def test_nonlocal_net_forward(): - _test_encoder_decoder_forward( - 'nonlocal_net/nonlocal_r50-d8_4xb2-40k_cityscapes-512x1024.py') - - def test_upernet_forward(): _test_encoder_decoder_forward( 'upernet/upernet_r50_4xb2-40k_cityscapes-512x1024.py') @@ -164,11 +149,6 @@ def test_ocrnet_forward(): 'ocrnet/ocrnet_hr18s_4xb2-40k_cityscapes-512x1024.py') -def test_psanet_forward(): - _test_encoder_decoder_forward( - 'psanet/psanet_r50-d8_4xb2-40k_cityscapes-512x1024.py') - - def test_sem_fpn_forward(): _test_encoder_decoder_forward( 'sem_fpn/fpn_r50_4xb2-80k_cityscapes-512x1024.py') @@ -179,21 +159,6 @@ def test_mobilenet_v2_forward(): 'mobilenet_v2/mobilenet-v2-d8_pspnet_4xb2-80k_cityscapes-512x1024.py') -def test_dnlnet_forward(): - _test_encoder_decoder_forward( - 'dnlnet/dnl_r50-d8_4xb2-40k_cityscapes-512x1024.py') - - -def test_emanet_forward(): - _test_encoder_decoder_forward( - 'emanet/emanet_r50-d8_4xb2-80k_cityscapes-512x1024.py') - - -def test_isanet_forward(): - _test_encoder_decoder_forward( - 'isanet/isanet_r50-d8_4xb2-40k_cityscapes-512x1024.py') - - def get_world_size(process_group): return 1 @@ -221,7 +186,7 @@ def _test_encoder_decoder_forward(cfg_file): num_classes = segmentor.decode_head.num_classes # batch_size=2 for BatchNorm packed_inputs = _demo_mm_inputs( - batch_size=2, image_shapes=(3, 32, 32), num_classes=num_classes) + batch_size=2, image_shapes=(3, 4, 4), num_classes=num_classes) # convert to cuda Tensor if applicable if torch.cuda.is_available(): segmentor = segmentor.cuda()