Skip to content
Snippets Groups Projects
  1. Feb 14, 2025
  2. Dec 04, 2024
  3. May 06, 2024
  4. Jan 24, 2024
  5. Jan 23, 2024
  6. Dec 06, 2023
  7. Nov 17, 2023
  8. Nov 09, 2023
  9. Nov 08, 2023
  10. Oct 06, 2023
  11. Aug 30, 2023
  12. Aug 15, 2023
  13. Aug 07, 2023
  14. Jul 12, 2023
  15. Jul 04, 2023
  16. Jun 30, 2023
  17. 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
  18. May 10, 2023
  19. May 08, 2023
    • zoulinxin's avatar
      [Feature] Add GDAL backend and Support LEVIR-CD Dataset (#2903) · 77591b9e
      zoulinxin authored
      ## Motivation
      
      For support with reading multiple remote sensing image formats, please
      refer to https://gdal.org/drivers/raster/index.html
      
      .
      
      Byte, UInt16, Int16, UInt32, Int32, Float32, Float64, CInt16, CInt32,
      CFloat32 and CFloat64 are supported for reading and writing.
      
      Support input of two images for change detection tasks, and support the
      LEVIR-CD dataset.
      
      ## Modification
      
      Add LoadSingleRSImageFromFile in 'mmseg/datasets/transforms/loading.py'.
      Load a single remote sensing image for object segmentation tasks.
      
      Add LoadMultipleRSImageFromFile in
      'mmseg/datasets/transforms/loading.py'.
      Load two remote sensing images for change detection tasks.
      
      Add ConcatCDInput  in 'mmseg/datasets/transforms/transforms.py'.
      Combine images that have been separately augmented for data enhancement.
      
      Add BaseCDDataset in 'mmseg/datasets/basesegdataset.py'
      Base class for datasets used in change detection tasks.
      
      ---------
      
      Co-authored-by: default avatarxiexinch <xiexinch@outlook.com>
      77591b9e
  20. May 06, 2023
  21. Apr 27, 2023
  22. Mar 31, 2023
  23. Mar 17, 2023
  24. Mar 16, 2023
  25. Mar 15, 2023
  26. Feb 28, 2023
  27. Feb 23, 2023
  28. Feb 16, 2023
  29. Feb 03, 2023
  30. Feb 01, 2023
    • 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
  31. Jan 31, 2023
  32. Jan 06, 2023
  33. Dec 30, 2022
    • 谢昕辰's avatar
      [Refactor] Support TTA (#2184) · da412558
      谢昕辰 authored
      * tta init
      
      * use mmcv transform
      
      * test city
      
      * add multiscale
      
      * fix merge
      
      * add softmax to post process
      
      * add ut
      
      * add tta pipeline to other datasets
      
      * remove softmax
      
      * add encoder_decoder_tta ut
      
      * add encoder_decoder_tta ut
      
      * rename
      
      * rename file
      
      * rename config
      
      * rm aug_test
      
      * move flip to post process
      
      * fix channel
      da412558
    • haofeng's avatar
      add pspnet model structure graph (#2437) · 20a6c584
      haofeng authored
      20a6c584
Loading