Commit Graph

31 Commits (447a398c24f76be71b8851183a347ff181e5a1c1)

Author SHA1 Message Date
Miao Zheng 619a3c2508
[Enhancement] Remove mmdet and mmcls from mminstall (#2642)
## Motivation

As the mmdet and mmcls are not very stabel, and mim can install repo
from source code, we remove them from mminstall and they won't be
installed automatically when run `mim install mmsegmentation`

## Modification

1. remove mmdet and mcls from mminstall
2. add explanation in faq

---------

Co-authored-by: MengzhangLI <mcmong@pku.edu.cn>
2023-02-24 14:57:54 +08:00
谢昕辰 53fe1ccf39
[Feature] Support MMSegInferencer (#2413)
## Motivation

Support `MMSegInferencer` for providing an easy and clean interface for
single or multiple images inferencing.

Ref: https://github.com/open-mmlab/mmengine/pull/773
https://github.com/open-mmlab/mmocr/pull/1608

## Modification

- mmseg/apis/mmseg_inferencer.py
- mmseg/visualization/local_visualizer.py
- demo/image_demo_with_inferencer.py

## Use cases (Optional)

Based on https://github.com/open-mmlab/mmengine/tree/inference

Add a new image inference demo with `MMSegInferencer`

- demo/image_demo_with_inferencer.py

```shell
python demo/image_demo_with_inferencer.py demo/demo.png fcn_r50-d8_4xb2-40k_cityscapes-512x1024
```

---------

Co-authored-by: MeowZheng <meowzheng@outlook.com>
2023-02-23 21:16:19 +08:00
谢昕辰 039ba5d4ca
[Feature] Support auto import modules from registry. (#2481)
## Motivation

The registry now supports auto-import modules from the given location.

register_all_modules before running is no longer needed. The modules
will be lazy-imported during building.

- [x] This PR can be merged after
https://github.com/open-mmlab/mmengine/pull/643. The MMEngine version
should be updated.

Ref: https://github.com/open-mmlab/mmdetection/pull/9143
2023-02-23 20:33:17 +08:00
Qingyun a092fea8c1
[Fix] Fix MaskFormer and Mask2Former of MMSegmentation (#2532)
## Motivation

The DETR-related modules have been refactored in
open-mmlab/mmdetection#8763, which causes breakings of MaskFormer and
Mask2Former in both MMDetection (has been fixed in
open-mmlab/mmdetection#9515) and MMSegmentation. This pr fix the bugs in
MMSegmentation.

### TO-DO List

- [x] update configs
- [x] check and modify data flow
- [x] fix unit test
- [x] aligning inference
- [x] write a ckpt converter
- [x] write ckpt update script
- [x] update model zoo
- [x] update model link in readme
- [x] update
[faq.md](https://github.com/open-mmlab/mmsegmentation/blob/dev-1.x/docs/en/notes/faq.md#installation)

## Tips of Fixing other implementations based on MaskXFormer of mmseg

1. The Transformer modules should be built directly. The original
building with register manner has been refactored.
2. The config requires to be modified. Delete `type` and modify several
keys, according to the modifications in this pr.
3. The `batch_first` is set `True` uniformly in the new implementations.
Hence the data flow requires to be transposed and config of
`batch_first` needs to be modified.
4. The checkpoint trained on the old implementation should be converted
to be used in the new one.

### Convert script

```Python
import argparse
from copy import deepcopy
from collections import OrderedDict

import torch

from mmengine.config import Config
from mmseg.models import build_segmentor
from mmseg.utils import register_all_modules
register_all_modules(init_default_scope=True)


def parse_args():
    parser = argparse.ArgumentParser(
        description='MMSeg convert MaskXFormer model, by Li-Qingyun')
    parser.add_argument('Mask_what_former', type=int,
                        help='Mask what former, can be a `1` or `2`',
                        choices=[1, 2])
    parser.add_argument('CFG_FILE', help='config file path')
    parser.add_argument('OLD_CKPT_FILEPATH', help='old ckpt file path')
    parser.add_argument('NEW_CKPT_FILEPATH', help='new ckpt file path')
    args = parser.parse_args()
    return args


args = parse_args()

def get_new_name(old_name: str):
    new_name = old_name

    if 'encoder.layers' in new_name:
        new_name = new_name.replace('attentions.0', 'self_attn')

    new_name = new_name.replace('ffns.0', 'ffn')

    if 'decoder.layers' in new_name:

        if args.Mask_what_former == 2:
            # for Mask2Former
            new_name = new_name.replace('attentions.0', 'cross_attn')
            new_name = new_name.replace('attentions.1', 'self_attn')
        else:
            # for Mask2Former
            new_name = new_name.replace('attentions.0', 'self_attn')
            new_name = new_name.replace('attentions.1', 'cross_attn')

    return new_name
    
def cvt_sd(old_sd: OrderedDict):
    new_sd = OrderedDict()
    for name, param in old_sd.items():
        new_name = get_new_name(name)
        assert new_name not in new_sd
        new_sd[new_name] = param
    assert len(new_sd) == len(old_sd)
    return new_sd
    
if __name__ == '__main__':
    cfg = Config.fromfile(args.CFG_FILE)
    model_cfg = cfg.model

    segmentor = build_segmentor(model_cfg)

    refer_sd = segmentor.state_dict()
    old_ckpt = torch.load(args.OLD_CKPT_FILEPATH)
    old_sd = old_ckpt['state_dict']

    new_sd = cvt_sd(old_sd)
    print(segmentor.load_state_dict(new_sd))

    new_ckpt = deepcopy(old_ckpt)
    new_ckpt['state_dict'] = new_sd
    torch.save(new_ckpt, args.NEW_CKPT_FILEPATH)
    print(f'{args.NEW_CKPT_FILEPATH} has been saved!')
```

Usage:
```bash
# for example
python ckpt4pr2532.py 1 configs/maskformer/maskformer_r50-d32_8xb2-160k_ade20k-512x512.py original_ckpts/maskformer_r50-d32_8xb2-160k_ade20k-512x512_20221030_182724-cbd39cc1.pth cvt_outputs/maskformer_r50-d32_8xb2-160k_ade20k-512x512_20221030_182724.pth
python ckpt4pr2532.py 2 configs/mask2former/mask2former_r50_8xb2-160k_ade20k-512x512.py original_ckpts/mask2former_r50_8xb2-160k_ade20k-512x512_20221204_000055-4c62652d.pth cvt_outputs/mask2former_r50_8xb2-160k_ade20k-512x512_20221204_000055.pth
```

---------

Co-authored-by: MeowZheng <meowzheng@outlook.com>
2023-02-01 18:58:21 +08:00
谢昕辰 124b87ce90
[Refactor] Refactor fileio (#2543)
## Motivation

Use the new fileio from mmengine
https://github.com/open-mmlab/mmengine/pull/533

## Modification

1. Use `mmengine.fileio` to repalce FileClient  in mmseg/datasets
2. Use `mmengine.fileio` to repalce FileClient in
mmseg/datasets/transforms
3. Use `mmengine.fileio` to repalce FileClient in mmseg/visualization

## BC-breaking (Optional)

we modify all the dataset configurations, so please use the latest config file.
2023-02-01 17:53:22 +08:00
谢昕辰 b9b5d8bf52
[CI] Upgrade the version of isort to fix lint error (#2519)
## Motivation

https://github.com/open-mmlab/mmeval/pull/85

---------

Co-authored-by: Miao Zheng <76149310+MeowZheng@users.noreply.github.com>
2023-01-30 10:31:12 +08:00
谢昕辰 d505ec1c94
[Doc] Fix API document (#2483)
## Motivation

As title.

## Modification

- docs/en/api.rst
- docs/zh_cn/api.rst
- add `scipy` to readthedocs requirement.
2023-01-13 20:06:30 +08:00
MengzhangLI 933e4d3cb6
[Feature] Support MaskFormer(NeurIPS'2021) in MMSeg 1.x (#2215)
* [Feature] Support MaskFormer(NeurIPS'2021) in MMSeg 1.x

* add mmdet try except logic

* refactor config files

* add readme

* fix config

* update models & logs

* add MMDET installation and fix info

* fix comments

* fix

* fix config norm optimizer setting

* update models & logs & unittest

* add docstring of MaskFormerHead

* wait for mmdet 3.0.0rc4

* replace seg_mask with seg_logits & add docstring for batch_input_shape

* use mmdet3.0.0rc4

* fix readme and modify config comments

* add mmdet installation in pr_stage_test.yml

* update mmcv version in pr_stage_test.yml

* add mmdet in build_cpu of pr_stage_test.yml

* modify mmdet& mmcv installation in merge_stage_test.yml

* fix typo

* update test.yml

* update test.yml
2022-12-01 19:03:10 +08:00
MengzhangLI 90c816b6de
[Enchancement] Delete mmcls in runtime.txt in dev-1.x (#2368)
* [Enchancement] Delete mmcls in runtime.txt in dev-1.x

* fix mmcv minimal version
2022-12-01 16:35:22 +08:00
MengzhangLI e98231ba5f [Enhance] Make scipy as a default dependency in runtime 1.x 2022-11-30 20:11:14 +08:00
Miao Zheng 92ebba6c0e
[Doc] Add Migration documentation (#2066)
* wip

* [Doc] Migration

* [wip] add package changes

* remove zoo stat

* add dataset migration

* add package changes

* revise based on comments

* revise based on comments

* typo

* fix

* add engine requirements

* revise mmcv dependency
2022-10-28 21:20:15 +08:00
Miao Zheng 20c7dc689c
[Feature] Add BioMedical data loading (#2176)
* [WIP] Add BioMedical data loading

* add depends nibabel

* fix bug

* fix ut

* fix

* add test data

* xyz2zyx zyx2xyz

* format

* remove ignore empty

* remove ignore empty

* remove with seg in LoadBiomedicalAnnotation

* float32

* docstring

* toxyz

* docstring
2022-10-18 16:30:08 +08:00
谢昕辰 84e76492b9
mmengine requirement (#2186) 2022-10-13 20:43:44 +08:00
Miao Zheng 211584ffa2
[Fix] Revise MMEngine mim version (#2008) 2022-08-31 22:09:48 +08:00
Miao Zheng 8ba80176a5
[Enhancement] version check codebase from openmmlab (#2006) 2022-08-31 18:46:43 +08:00
Miao Zheng 45b63c584f [Doc] MMSeg 1.x Documentation (#1924)
* [Doc] MMSeg 1.x Documentation

* revise index
2022-08-19 20:50:03 +08:00
Miao Zheng e0499d5a77 [Fix] Fix repo based on refactoring standard (#1869)
* [Fix] Fix repo based on refactory standard

* fix ut
2022-08-19 20:50:02 +08:00
Miao Zheng 464ebab53e [Enhancement] MMCV maximum_version set to 1.6 (#1480)
* [Enhancement] MMCV maximum_version set to 1.6

* [Enhancement] MMCV maximum_version set to 1.6
2022-04-19 16:19:56 +08:00
MengzhangLI befdc93dc3 [Feature] Support ConvNext (#1216)
* upload original backbone and configs

* ConvNext Refactor

* ConvNext Refactor

* convnext customization refactor with mmseg style

* convnext customization refactor with mmseg style

* add ade20k_640x640.py

* upload files for training

* delete dist_optimizer_hook and remove layer_decay_optimizer_constructor

* check max(out_indices) < num_stages

* add unittest

* fix lint error

* use MMClassification backbone

* fix bugs in base_1k

* add mmcls in requirements/mminstall.txt

* add mmcls in requirements/mminstall.txt

* fix drop_path_rate and layer_scale_init_value

* use logger.info instead of print

* add mmcls in runtime.txt

* fix f string && delete

* add doctring in LearningRateDecayOptimizerConstructor and fix mmcls version in requirements

* fix typo in LearningRateDecayOptimizerConstructor

* use ConvNext models in unit test for LearningRateDecayOptimizerConstructor

* add unit test

* fix typo

* fix typo

* add layer_wise and fix redundant backbone.downsample_norm in it

* fix unit test

* give a ground truth lr_scale and weight_decay

* upload models and readme

* delete 'backbone.stem_norm' and 'backbone.downsample_norm' in get_num_layer()

* fix unit test and use mmcls url

* update md2yml.py and metafile

* fix typo
2022-03-04 15:52:01 +08:00
MengzhangLI bcd0c89ebb [Enhancement] Add win-ci (#1296)
* [Enhancement] Add win-ci

* add timm in win unittest

* remove mmflow with mmseg in win unittest

* remove opencv-python in requirements

* add opencv2 back

* move opencv installation into build.yml
2022-02-22 21:06:57 +08:00
Junjun2016 9162d058d9 [Docs] Improve docs style (#879)
* Improve docs style

* update lists

* update the size of image

* modify duplicate mmdet3d
2021-09-16 08:23:50 -07:00
Junjun2016 9186858336 Fix sphinx version (#827) 2021-09-01 18:45:53 -07:00
Junjun2016 93a558f0d7 [Fix] Update digit_version (#778)
* update digit_version

* add unittest

* fix import
2021-08-11 23:34:02 -07:00
Jerry Jiarui XU ef819df1b9 [Doc] Fixed doc api display (#725)
* [Doc] Fixed doc api display

* add missing pretty table
2021-07-26 02:04:14 +08:00
谢昕辰 725d5aa002 [Feature] support mim (#549)
* dice loss

* format code, add docstring and calculate denominator without valid_mask

* minor change

* restore

* add metafile

* add manifest.in and add config at setup.py

* add requirements

* modify manifest

* modify manifest

* Update MANIFEST.in

* add metafile

* add metadata

* fix typo

* Update metafile.yml

* Update metafile.yml

* minor change

* Update metafile.yml

* add subfix

* fix mmshow

* add more  metafile

* add config to model_zoo

* fix bug

* Update mminstall.txt

* [fix] Add models

* [Fix] Add collections

* [fix] Modify collection name

* [Fix] Set datasets to unet metafile

* [Fix] Modify collection names

* complement inference time
2021-05-31 15:07:24 -07:00
sshuair 7fbdd6f197 add metric mFscore (#509)
* add mFscore and refactor the metrics return value

* fix linting

* some docstring and name fix
2021-04-30 11:34:57 -07:00
Junjun2016 1530af6533 add dice evaluation metric (#225)
* add dice evaluation metric

* add dice evaluation metric

* add dice evaluation metric

* support 2 metrics

* support 2 metrics

* support 2 metrics

* support 2 metrics

* fix docstring

* use np.round once for all
2020-11-23 19:21:22 -08:00
Kai Chen bc285bea28 Add pypi deployment (#11)
* add pypi deployment

* remove useless jobs

* fixed typo and cleanup

* delete build.tx

* add change log

Co-authored-by: Jiarui XU <xvjiarui0826@gmail.com>
2020-07-13 20:54:32 +08:00
Jerry Jiarui XU 2fc821ec13 Add test tutorial (#9)
* add test tutorial

* remote torch/torchvision from requirements

* update getting started

* rename drop_out_ratio -> dropout_ratio
2020-07-12 23:53:56 +08:00
Jerry Jiarui XU 6c6330fe85 Add Colab Tutorial (#7)
* add badge

* Created using Colaboratory

* add read docs

* Fixed readthedocs

* fixed colab ref

* add readthedocs.txt

* add link

* fixed modelzoo link

* add missing reference

* fixed docs

* remove relative path in docs

* add colab in README.md

* update docker image

* add newline

* fixed br
2020-07-10 16:55:47 +08:00
Jiarui XU b2724da80b init commit 2020-07-10 02:39:01 +08:00