Skip to content
Snippets Groups Projects
  1. Jul 04, 2023
  2. Jun 26, 2023
    • 谢昕辰's avatar
      [Fix] Fix dependency (#3136) · ffb7e2e2
      谢昕辰 authored
      ## Motivation
      
      Change the dependency `mmcls` to `mmpretrain`
      
      ## Modification
      
      - modify `mmcls` to `mmpretrain`
      - modify CI requirements
      
      ## BC-breaking (Optional)
      
      If users have installed mmcls but not install mmpretrain, it might raise some error.
      ffb7e2e2
  3. Apr 06, 2023
  4. Apr 03, 2023
  5. Mar 31, 2023
  6. Mar 03, 2023
  7. Feb 24, 2023
  8. 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
  9. Jan 30, 2023
  10. Dec 31, 2022
    • Miao Zheng's avatar
      Bump 1.0.0rc3 (#2446) · 6eb1a95a
      Miao Zheng authored
      ## Motivation
      
      To release 1.0.0rc3  
      
      ## Modification
      
      1. Modify mmseg version 
      2. Add change log
      3. Modify README
      4. Modify faq 
      5. Revise docker file
      6eb1a95a
  11. Dec 06, 2022
  12. Nov 02, 2022
  13. Aug 31, 2022
    • Miao Zheng's avatar
      [Refactor] Refine documentation (#1993) · 309528de
      Miao Zheng authored
      * [WIP] Refine documentation
      
      * get started done
      
      * config refine
      
      * train_test
      
      * refine user guides
      
      * add contribution
      
      * add contribution
      
      * refine visualization
      
      * advanced tutorial
      
      * advanced guides
      
      * tricks
      
      * refine zh doc
      
      * refactor changelog
      309528de
  14. Aug 19, 2022
  15. Jul 05, 2022
  16. Mar 28, 2022
Loading