Skip to content
Snippets Groups Projects
  1. Mar 30, 2023
  2. Mar 23, 2023
  3. Mar 22, 2023
  4. Mar 21, 2023
  5. Mar 17, 2023
    • Miao Zheng's avatar
      [Features]Support dump segment predition (#2712) · ff95416c
      Miao Zheng authored
      ## Motivation
      
      1. It is used to save the segmentation predictions as files and upload
      these files to a test server
      
      ## Modification
      
      1. Add output_file and format only in `IoUMetric`
       
      ## BC-breaking (Optional)
      
      No
      
      ## Use cases (Optional)
      
      If this PR introduces a new feature, it is better to list some use cases
      here, and update the documentation.
      
      ## Checklist
      
      1. Pre-commit or other linting tools are used to fix the potential lint
      issues.
      3. The modification is covered by complete unit tests. If not, please
      add more unit test to ensure the correctness.
      4. If the modification has potential influence on downstream projects,
      this PR should be tested with downstream projects, like MMDet or
      MMDet3D.
      5. The documentation has been modified accordingly, like docstring or
      example tutorials.
      ff95416c
  6. Mar 15, 2023
    • Tianlong Ai's avatar
      [Datasets] Add Mapillary Vistas Datasets to MMSeg Core Package. (#2576) · 8c89ff3d
      Tianlong Ai authored
      
      ## [Datasets] Add Mapillary Vistas Datasets to MMSeg Core Package .
      ## Motivation
      Add Mapillary Vistas Datasets to core package.
      Old PR #2484 
      
      ## Modification
      - Add Mapillary Vistas Datasets to core package.
      - Delete `tools/datasets_convert/mapillary.py` , dataset does't need
      converting.
      - Add `schedule_240k.py`  config.
      - Add configs files.  
        ```none
        deeplabv3plus_r101-d8_4xb2-240k_mapillay_v1-512x1024.py
        deeplabv3plus_r101-d8_4xb2-240k_mapillay_v2-512x1024.py
        maskformer_swin-s_4xb2-240k_mapillary_v1-512x1024.py
        maskformer_swin-s_4xb2-240k_mapillary_v2-512x1024.py
        maskformer_r101-d8_4xb2-240k_mapillary_v1-512x1024.py
        maskformer_r101-d8_4xb2-240k_mapillary_v2-512x1024.py
        pspnet_r101-d8_4xb2-240k_mapillay_v1-512x1024.py
        pspnet_r101-d8_4xb2-240k_mapillay_v2-512x1024.py
        ```
      - Synchronized changes to `projects/mapillary_datasets`
      
      ---------
      
      Co-authored-by: default avatarMiao Zheng <76149310+MeowZheng@users.noreply.github.com>
      Co-authored-by: default avatarxiexinch <xiexinch@outlook.com>
      8c89ff3d
  7. Mar 13, 2023
  8. Mar 09, 2023
  9. Mar 07, 2023
  10. Mar 06, 2023
  11. Mar 03, 2023
  12. Mar 02, 2023
  13. Feb 24, 2023
  14. Feb 23, 2023
  15. Feb 16, 2023
  16. Feb 15, 2023
  17. Feb 08, 2023
  18. Feb 07, 2023
  19. Feb 03, 2023
  20. Feb 01, 2023
    • 谢昕辰's avatar
      Bump v1.0.0rc5 (#2549) · 7ac0888d
      谢昕辰 authored
      as title
      7ac0888d
    • Qingyun's avatar
      [Fix] Fix MaskFormer and Mask2Former of MMSegmentation (#2532) · a092fea8
      Qingyun authored
      ## 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: default avatarMeowZheng <meowzheng@outlook.com>
      a092fea8
    • 谢昕辰's avatar
      [Refactor] Refactor fileio (#2543) · 124b87ce
      谢昕辰 authored
      ## 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.
      124b87ce
  21. Jan 30, 2023
  22. Jan 22, 2023
  23. Jan 19, 2023
Loading