[Fix]Remove modules from mmcv.runner and mmcv.utils (#1966)

* [WIP] mmcv-clean

* [WIP]Remove modules from mmcv.runner and mmcv.utils

* wip

* fix import mmengine

* remove ut

* loadcheckpoint in mae
This commit is contained in:
Miao Zheng 2022-08-25 15:15:21 +08:00 committed by GitHub
parent c93210262a
commit 50546da85c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
77 changed files with 308 additions and 291 deletions

View File

@ -7,7 +7,7 @@ import warnings
from argparse import ArgumentParser
import requests
from mmcv import Config
from mmengine import Config
from mmseg.apis import inference_model, init_model, show_result_pyplot
from mmseg.utils import get_root_logger

View File

@ -3,8 +3,8 @@ import argparse
import glob
import os.path as osp
import mmcv
from mmcv import Config
from mmengine import Config
from mmengine.fileio import dump, load
def parse_args():
@ -56,7 +56,7 @@ if __name__ == '__main__':
continue
log_json_path = list(sorted(json_list))[-1]
metric = mmcv.load(log_json_path)
metric = load(log_json_path)
if config not in metric.get('config', {}):
print(f'{config} not included in {log_json_path}')
continue
@ -84,7 +84,7 @@ if __name__ == '__main__':
new=new_metrics)
if metrics_out:
mmcv.dump(result_dict, metrics_out, indent=4)
dump(result_dict, metrics_out, indent=4)
print('===================================')
for config_name, metrics in result_dict.items():
print(config_name, metrics)

View File

@ -2,9 +2,9 @@ import argparse
import glob
import os.path as osp
import mmcv
from gather_models import get_final_results
from mmcv import Config
from mmengine import Config
from mmengine.fileio import dump
def parse_args():
@ -50,7 +50,7 @@ if __name__ == '__main__':
continue
# parse config
cfg = mmcv.Config.fromfile(config)
cfg = Config.fromfile(config)
total_iters = cfg.runner.max_iters
exp_metric = cfg.evaluation.metric
if not isinstance(exp_metric, list):
@ -93,7 +93,7 @@ if __name__ == '__main__':
# 4 save or print results
if metrics_out:
mmcv.dump(result_dict, metrics_out, indent=4)
dump(result_dict, metrics_out, indent=4)
print('===================================')
for config_name, metrics in result_dict.items():
print(config_name, metrics)

View File

@ -7,8 +7,10 @@ import os
import os.path as osp
import shutil
import mmcv
import torch
from mmengine import Config
from mmengine.fileio import dump
from mmengine.utils import mkdir_or_exist, scandir
# build schedule look-up table to automatically find the final model
RESULTS_LUT = ['mIoU', 'mAcc', 'aAcc']
@ -100,10 +102,10 @@ def main():
work_dir = args.work_dir
collect_dir = args.collect_dir
selected_config_name = args.config_name
mmcv.mkdir_or_exist(collect_dir)
mkdir_or_exist(collect_dir)
# find all models in the root directory to be gathered
raw_configs = list(mmcv.scandir('./configs', '.py', recursive=True))
raw_configs = list(scandir('./configs', '.py', recursive=True))
# filter configs that is not trained in the experiments dir
used_configs = []
@ -175,7 +177,7 @@ def main():
print(f'dir {model_publish_dir} exists, no model found')
else:
mmcv.mkdir_or_exist(model_publish_dir)
mkdir_or_exist(model_publish_dir)
# convert model
final_model_path = process_checkpoint(trained_model_path,
@ -198,13 +200,13 @@ def main():
if args.all:
# copy config to guarantee reproducibility
raw_config = osp.join('./configs', f'{config_name}.py')
mmcv.Config.fromfile(raw_config).dump(
Config.fromfile(raw_config).dump(
osp.join(model_publish_dir, osp.basename(raw_config)))
publish_model_infos.append(model)
models = dict(models=publish_model_infos)
mmcv.dump(models, osp.join(collect_dir, 'model_infos.json'), indent=4)
dump(models, osp.join(collect_dir, 'model_infos.json'), indent=4)
if __name__ == '__main__':

View File

@ -2,7 +2,7 @@
import argparse
import os.path as osp
from mmcv import Config
from mmengine import Config
def parse_args():

View File

@ -13,7 +13,7 @@ import re
import sys
from lxml import etree
from mmcv.fileio import dump
from mmengine.fileio import dump
MMSEG_ROOT = osp.dirname(osp.dirname((osp.dirname(__file__))))

View File

@ -1,7 +1,7 @@
# Copyright (c) OpenMMLab. All rights reserved.
from argparse import ArgumentParser
from mmengine.utils import revert_sync_batchnorm
from mmengine.model import revert_sync_batchnorm
from mmseg.apis import inference_model, init_model, show_result_pyplot
from mmseg.utils import register_all_modules

View File

@ -21,7 +21,7 @@
"outputs": [],
"source": [
"import torch\n",
"from mmengine import revert_sync_batchnorm\n",
"from mmengine.model.utils import revert_sync_batchnorm\n",
"from mmseg.apis import init_model, inference_model, show_result_pyplot\n",
"from mmseg.utils import register_all_modules\n",
"register_all_modules()"

View File

@ -2,7 +2,7 @@
from argparse import ArgumentParser
import cv2
from mmengine.utils import revert_sync_batchnorm
from mmengine.model.utils import revert_sync_batchnorm
from mmseg.apis import inference_model, init_model
from mmseg.apis.inference import show_result_pyplot

View File

@ -9,6 +9,7 @@ import torch
from mmengine import Config
from mmengine.dataset import Compose
from mmengine.runner import load_checkpoint
from mmengine.utils import mkdir_or_exist
from mmseg.data import SegDataSample
from mmseg.models import BaseSegmentor
@ -179,7 +180,7 @@ def show_result_pyplot(model: BaseSegmentor,
else:
image = img
if save_dir is not None:
mmcv.mkdir_or_exist(save_dir)
mkdir_or_exist(save_dir)
# init visualizer
visualizer = SegLocalVisualizer(
vis_backends=[dict(type='LocalVisBackend')],

View File

@ -73,7 +73,7 @@ class BaseSegDataset(BaseDataset):
reduce_zero_label (bool): Whether to mark label zero as ignored.
Default to False.
file_client_args (dict): Arguments to instantiate a FileClient.
See :class:`mmcv.fileio.FileClient` for details.
See :class:`mmengine.fileio.FileClient` for details.
Defaults to ``dict(backend='disk')``.
"""
METAINFO: dict = dict()

View File

@ -2,7 +2,7 @@
import numpy as np
from mmcv.transforms import to_tensor
from mmcv.transforms.base import BaseTransform
from mmengine.data import PixelData
from mmengine.structures import PixelData
from mmseg.registry import TRANSFORMS
from mmseg.structures import SegDataSample

View File

@ -6,7 +6,7 @@ import mmcv
import numpy as np
from mmcv.transforms.base import BaseTransform
from mmcv.transforms.utils import cache_randomness
from mmcv.utils import is_tuple_of
from mmengine.utils import is_tuple_of
from numpy import random
from mmseg.datasets.dataset_wrappers import MultiImageMixDataset

View File

@ -4,6 +4,7 @@ import warnings
from typing import Sequence
import mmcv
from mmengine.fileio import FileClient
from mmengine.hooks import Hook
from mmengine.runner import Runner
@ -30,7 +31,7 @@ class SegVisualizationHook(Hook):
show (bool): Whether to display the drawn image. Default to False.
wait_time (float): The interval of show (s). Defaults to 0.
file_client_args (dict): Arguments to instantiate a FileClient.
See :class:`mmcv.fileio.FileClient` for details.
See :class:`mmengine.fileio.FileClient` for details.
Defaults to ``dict(backend='disk')``.
"""
@ -81,7 +82,7 @@ class SegVisualizationHook(Hook):
return
if self.file_client is None:
self.file_client = mmcv.FileClient(**self.file_client_args)
self.file_client = FileClient(**self.file_client_args)
if self.every_n_inner_iters(batch_idx, self.interval):
for input_data, output in zip(data_batch, outputs):

View File

@ -2,10 +2,10 @@
import os.path as osp
from typing import Dict, List, Optional, Sequence
import mmcv
import numpy as np
from mmengine.evaluator import BaseMetric
from mmengine.logging import MMLogger, print_log
from mmengine.utils import mkdir_or_exist, scandir
from PIL import Image
from mmseg.registry import METRICS
@ -60,7 +60,7 @@ class CitysMetric(BaseMetric):
data_batch (Sequence[dict]): A batch of data from the dataloader.
predictions (Sequence[dict]): A batch of outputs from the model.
"""
mmcv.mkdir_or_exist(self.suffix)
mkdir_or_exist(self.suffix)
for pred in predictions:
pred_label = pred['pred_sem_seg']['data'][0].cpu().numpy()
@ -121,8 +121,7 @@ class CitysMetric(BaseMetric):
ann_dir = results[0]
# when evaluating with official cityscapesscripts,
# **_gtFine_labelIds.png is used
for seg_map in mmcv.scandir(
ann_dir, 'gtFine_labelIds.png', recursive=True):
for seg_map in scandir(ann_dir, 'gtFine_labelIds.png', recursive=True):
seg_map_list.append(osp.join(ann_dir, seg_map))
pred_list.append(CSEval.getPrediction(CSEval.args, seg_map))
metric = dict()

View File

@ -7,9 +7,9 @@ import torch.nn as nn
import torch.nn.functional as F
from mmcv.cnn import build_norm_layer
from mmcv.cnn.bricks.drop import build_dropout
from mmcv.cnn.utils.weight_init import (constant_init, kaiming_init,
trunc_normal_)
from mmengine.model import BaseModule, ModuleList
from mmengine.model.weight_init import (constant_init, kaiming_init,
trunc_normal_)
from mmengine.runner.checkpoint import _load_checkpoint
from torch.nn.modules.batchnorm import _BatchNorm
from torch.nn.modules.utils import _pair as to_2tuple

View File

@ -5,8 +5,8 @@ import torch
import torch.nn as nn
import torch.utils.checkpoint as cp
from mmcv.cnn import ConvModule, build_conv_layer, build_norm_layer
from mmcv.utils.parrots_wrapper import _BatchNorm
from mmengine.model import BaseModule
from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
from mmseg.registry import MODELS

View File

@ -3,8 +3,8 @@ import warnings
import torch.nn as nn
from mmcv.cnn import build_conv_layer, build_norm_layer
from mmcv.utils.parrots_wrapper import _BatchNorm
from mmengine.model import BaseModule, ModuleList, Sequential
from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
from mmseg.registry import MODELS
from ..utils import Upsample, resize

View File

@ -3,9 +3,10 @@ import math
import torch
import torch.nn as nn
from mmcv.cnn.utils.weight_init import (constant_init, kaiming_init,
from mmengine.model import ModuleList
from mmengine.model.weight_init import (constant_init, kaiming_init,
trunc_normal_)
from mmcv.runner import ModuleList, _load_checkpoint
from mmengine.runner.checkpoint import _load_checkpoint
from torch.nn.modules.batchnorm import _BatchNorm
from mmseg.registry import MODELS

View File

@ -8,9 +8,9 @@ import torch.utils.checkpoint as cp
from mmcv.cnn import Conv2d, build_activation_layer, build_norm_layer
from mmcv.cnn.bricks.drop import build_dropout
from mmcv.cnn.bricks.transformer import MultiheadAttention
from mmcv.cnn.utils.weight_init import (constant_init, normal_init,
trunc_normal_init)
from mmengine.model import BaseModule, ModuleList, Sequential
from mmengine.model.weight_init import (constant_init, normal_init,
trunc_normal_init)
from mmseg.registry import MODELS
from ..utils import PatchEmbed, nchw_to_nlc, nlc_to_nchw

View File

@ -1,10 +1,10 @@
# Copyright (c) OpenMMLab. All rights reserved.
import warnings
import mmcv
from mmcv.cnn import ConvModule
from mmcv.cnn.bricks import Conv2dAdaptivePadding
from mmengine.model import BaseModule
from mmengine.utils import is_tuple_of
from torch.nn.modules.batchnorm import _BatchNorm
from mmseg.registry import MODELS
@ -104,7 +104,7 @@ class MobileNetV3(BaseModule):
assert arch in self.arch_settings
assert isinstance(reduction_factor, int) and reduction_factor > 0
assert mmcv.is_tuple_of(out_indices, int)
assert is_tuple_of(out_indices, int)
for index in out_indices:
if index not in range(0, len(self.arch_settings[arch]) + 2):
raise ValueError(

View File

@ -4,8 +4,8 @@ import warnings
import torch.nn as nn
import torch.utils.checkpoint as cp
from mmcv.cnn import build_conv_layer, build_norm_layer, build_plugin_layer
from mmcv.utils.parrots_wrapper import _BatchNorm
from mmengine.model import BaseModule
from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
from mmseg.registry import MODELS
from ..utils import ResLayer

View File

@ -9,12 +9,12 @@ import torch.nn.functional as F
import torch.utils.checkpoint as cp
from mmcv.cnn import build_norm_layer
from mmcv.cnn.bricks.transformer import FFN, build_dropout
from mmcv.cnn.utils.weight_init import (constant_init, trunc_normal_,
trunc_normal_init)
from mmcv.runner import CheckpointLoader, load_state_dict
from mmcv.utils import to_2tuple
from mmengine.logging import print_log
from mmengine.model import BaseModule, ModuleList
from mmengine.model.weight_init import (constant_init, trunc_normal_,
trunc_normal_init)
from mmengine.runner import CheckpointLoader, load_state_dict
from mmengine.utils import to_2tuple
from mmseg.registry import MODELS
from ..utils.embed import PatchEmbed, PatchMerging

View File

@ -4,8 +4,8 @@ try:
except ImportError:
timm = None
from mmcv.cnn.bricks.registry import NORM_LAYERS
from mmengine.model import BaseModule
from mmengine.registry import MODELS as MMENGINE_MODELS
from mmseg.registry import MODELS
@ -39,7 +39,7 @@ class TIMMBackbone(BaseModule):
raise RuntimeError('timm is not installed')
super(TIMMBackbone, self).__init__(init_cfg)
if 'norm_layer' in kwargs:
kwargs['norm_layer'] = NORM_LAYERS.get(kwargs['norm_layer'])
kwargs['norm_layer'] = MMENGINE_MODELS.get(kwargs['norm_layer'])
self.timm_model = timm.create_model(
model_name=model_name,
features_only=features_only,

View File

@ -8,9 +8,9 @@ import torch.nn.functional as F
from mmcv.cnn import build_norm_layer
from mmcv.cnn.bricks.drop import build_dropout
from mmcv.cnn.bricks.transformer import FFN
from mmcv.cnn.utils.weight_init import (constant_init, normal_init,
trunc_normal_init)
from mmengine.model import BaseModule, ModuleList
from mmengine.model.weight_init import (constant_init, normal_init,
trunc_normal_init)
from torch.nn.modules.batchnorm import _BatchNorm
from mmseg.models.backbones.mit import EfficientMultiheadAttention

View File

@ -3,10 +3,9 @@ import warnings
import torch.nn as nn
import torch.utils.checkpoint as cp
from mmcv.cnn import (UPSAMPLE_LAYERS, ConvModule, build_activation_layer,
build_norm_layer)
from mmcv.utils.parrots_wrapper import _BatchNorm
from mmcv.cnn import ConvModule, build_activation_layer, build_norm_layer
from mmengine.model import BaseModule
from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
from mmseg.registry import MODELS
from ..utils import UpConvBlock, Upsample
@ -85,7 +84,7 @@ class BasicConvBlock(nn.Module):
return out
@UPSAMPLE_LAYERS.register_module()
@MODELS.register_module()
class DeconvModule(nn.Module):
"""Deconvolution upsample module in decoder for UNet (2X upsample).
@ -146,7 +145,7 @@ class DeconvModule(nn.Module):
return out
@UPSAMPLE_LAYERS.register_module()
@MODELS.register_module()
class InterpConv(nn.Module):
"""Interpolation upsample module in decoder for UNet.

View File

@ -7,11 +7,11 @@ import torch.nn as nn
import torch.utils.checkpoint as cp
from mmcv.cnn import build_norm_layer
from mmcv.cnn.bricks.transformer import FFN, MultiheadAttention
from mmcv.cnn.utils.weight_init import (constant_init, kaiming_init,
trunc_normal_)
from mmcv.runner import CheckpointLoader, load_state_dict
from mmengine.logging import print_log
from mmengine.model import BaseModule, ModuleList
from mmengine.model.weight_init import (constant_init, kaiming_init,
trunc_normal_)
from mmengine.runner.checkpoint import CheckpointLoader, load_state_dict
from torch.nn.modules.batchnorm import _BatchNorm
from torch.nn.modules.utils import _pair as to_2tuple

View File

@ -5,8 +5,7 @@ import torch
import torch.nn as nn
import torch.nn.functional as F
from mmcv.cnn import ConvModule, build_activation_layer, build_norm_layer
from mmcv.cnn.bricks.transformer import (FFN, TRANSFORMER_LAYER,
MultiheadAttention,
from mmcv.cnn.bricks.transformer import (FFN, MultiheadAttention,
build_transformer_layer)
from mmengine.logging import print_log
from torch import Tensor
@ -16,7 +15,7 @@ from mmseg.registry import MODELS
from mmseg.utils import SampleList
@TRANSFORMER_LAYER.register_module()
@MODELS.register_module()
class KernelUpdator(nn.Module):
"""Dynamic Kernel Updator in Kernel Update Head.

View File

@ -1,8 +1,8 @@
# Copyright (c) OpenMMLab. All rights reserved.
import torch
import torch.nn as nn
from mmcv import is_tuple_of
from mmcv.cnn import ConvModule
from mmengine.utils import is_tuple_of
from mmseg.registry import MODELS
from ..utils import resize

View File

@ -3,9 +3,9 @@ import torch
import torch.nn as nn
import torch.nn.functional as F
from mmcv.cnn import build_norm_layer
from mmcv.cnn.utils.weight_init import (constant_init, trunc_normal_,
from mmengine.model import ModuleList
from mmengine.model.weight_init import (constant_init, trunc_normal_,
trunc_normal_init)
from mmcv.runner import ModuleList
from mmseg.models.backbones.vit import TransformerEncoderLayer
from mmseg.registry import MODELS
@ -17,7 +17,7 @@ class SegmenterMaskTransformerHead(BaseDecodeHead):
"""Segmenter: Transformer for Semantic Segmentation.
This head is the implementation of
`Segmenter: <https://arxiv.org/abs/2105.05633>`_.
`Segmenter: <https://arxiv.org/abs/2105.05633>`_.
Args:
backbone_cfg:(dict): Config of backbone of

View File

@ -1,7 +1,7 @@
# Copyright (c) OpenMMLab. All rights reserved.
import torch
import torch.nn.functional as F
from mmengine.data import PixelData
from mmengine.structures import PixelData
from torch import Tensor
from mmseg.registry import MODELS

View File

@ -3,10 +3,10 @@
ch/lovasz_losses.py Lovasz-Softmax and Jaccard hinge loss in PyTorch Maxim
Berman 2018 ESAT-PSI KU Leuven (MIT License)"""
import mmcv
import torch
import torch.nn as nn
import torch.nn.functional as F
from mmengine.utils import is_list_of
from mmseg.registry import MODELS
from .utils import get_class_weight, weight_reduce_loss
@ -265,7 +265,7 @@ class LovaszLoss(nn.Module):
self.cls_criterion = lovasz_hinge
else:
self.cls_criterion = lovasz_softmax
assert classes in ('all', 'present') or mmcv.is_list_of(classes, int)
assert classes in ('all', 'present') or is_list_of(classes, int)
if not per_image:
assert reduction == 'none', "reduction should be 'none' when \
per_image is False."

View File

@ -1,10 +1,10 @@
# Copyright (c) OpenMMLab. All rights reserved.
import functools
import mmcv
import numpy as np
import torch
import torch.nn.functional as F
from mmengine.fileio import load
def get_class_weight(class_weight):
@ -20,7 +20,7 @@ def get_class_weight(class_weight):
class_weight = np.load(class_weight)
else:
# pkl, json or yaml
class_weight = mmcv.load(class_weight)
class_weight = load(class_weight)
return class_weight

View File

@ -1,6 +1,7 @@
# Copyright (c) OpenMMLab. All rights reserved.
import torch.nn as nn
from mmcv.cnn import ConvModule, xavier_init
from mmcv.cnn import ConvModule
from mmengine.model.weight_init import xavier_init
from mmseg.registry import MODELS
from ..utils import resize

View File

@ -2,8 +2,8 @@
from abc import ABCMeta, abstractmethod
from typing import List, Tuple
from mmengine.data import PixelData
from mmengine.model import BaseModel
from mmengine.structures import PixelData
from torch import Tensor
from mmseg.structures import SegDataSample

View File

@ -5,8 +5,8 @@ from typing import Sequence
import torch.nn as nn
import torch.nn.functional as F
from mmcv.cnn import build_conv_layer, build_norm_layer
from mmcv.utils import to_2tuple
from mmengine.model import BaseModule
from mmengine.utils import to_2tuple
class AdaptivePadding(nn.Module):
@ -104,8 +104,8 @@ class PatchEmbed(BaseModule):
input_size (int | tuple | None): The size of input, which will be
used to calculate the out size. Only work when `dynamic_size`
is False. Default: None.
init_cfg (`mmcv.ConfigDict`, optional): The Config for initialization.
Default: None.
init_cfg (`mmengine.ConfigDict`, optional): The Config for
initialization. Default: None.
"""
def __init__(self,

View File

@ -1,7 +1,7 @@
# Copyright (c) OpenMMLab. All rights reserved.
import mmcv
import torch.nn as nn
from mmcv.cnn import ConvModule
from mmengine.utils import is_tuple_of
from .make_divisible import make_divisible
@ -34,7 +34,7 @@ class SELayer(nn.Module):
if isinstance(act_cfg, dict):
act_cfg = (act_cfg, act_cfg)
assert len(act_cfg) == 2
assert mmcv.is_tuple_of(act_cfg, dict)
assert is_tuple_of(act_cfg, dict)
self.global_avgpool = nn.AdaptiveAvgPool2d(1)
self.conv1 = ConvModule(
in_channels=channels,

View File

@ -1,6 +1,7 @@
# Copyright (c) OpenMMLab. All rights reserved.
import torch
from mmcv.cnn import ConvModule, constant_init
from mmcv.cnn import ConvModule
from mmengine.model.weight_init import constant_init
from torch import nn as nn
from torch.nn import functional as F

View File

@ -1,5 +1,5 @@
# Copyright (c) OpenMMLab. All rights reserved.
from mmengine.data import BaseDataElement, PixelData
from mmengine.structures import BaseDataElement, PixelData
class SegDataSample(BaseDataElement):
@ -15,7 +15,7 @@ class SegDataSample(BaseDataElement):
Examples:
>>> import torch
>>> import numpy as np
>>> from mmengine.data import PixelData
>>> from mmengine.structures import PixelData
>>> from mmseg.core import SegDataSample
>>> data_sample = SegDataSample()

View File

@ -1,5 +1,5 @@
# Copyright (c) OpenMMLab. All rights reserved.
import mmcv
from mmengine.utils import is_str
def cityscapes_classes():
@ -289,7 +289,7 @@ def get_classes(dataset):
for alias in aliases:
alias2name[alias] = name
if mmcv.is_str(dataset):
if is_str(dataset):
if dataset in alias2name:
labels = eval(alias2name[dataset] + '_classes()')
else:
@ -306,7 +306,7 @@ def get_palette(dataset):
for alias in aliases:
alias2name[alias] = name
if mmcv.is_str(dataset):
if is_str(dataset):
if dataset in alias2name:
labels = eval(alias2name[dataset] + '_palette()')
else:

View File

@ -1,6 +1,6 @@
# Copyright (c) OpenMMLab. All rights reserved.
from mmcv.utils import collect_env as collect_base_env
from mmcv.utils import get_git_hash
from mmengine.utils import get_git_hash
from mmengine.utils.dl_utils import collect_env as collect_base_env
import mmseg

View File

@ -2,9 +2,9 @@
from typing import Dict, List, Optional, Tuple
import numpy as np
from mmengine import Visualizer
from mmengine.data import PixelData
from mmengine.dist import master_only
from mmengine.structures import PixelData
from mmengine.visualization import Visualizer
from mmseg.registry import VISUALIZERS
from mmseg.structures import SegDataSample
@ -28,7 +28,7 @@ class SegLocalVisualizer(Visualizer):
Examples:
>>> import numpy as np
>>> import torch
>>> from mmengine.data import PixelData
>>> from mmengine.structures import PixelData
>>> from mmseg.data import SegDataSample
>>> from mmseg.engine.visualization import SegLocalVisualizer

View File

@ -3,13 +3,14 @@ import glob
import os
from os.path import dirname, exists, isdir, join, relpath
import numpy as np
# import numpy as np
from mmengine import Config
from mmengine.dataset import Compose
# from mmengine.dataset import Compose
from torch import nn
from mmseg.models import build_segmentor
from mmseg.utils import register_all_modules
# from mmseg.utils import register_all_modules
def _get_config_directory():
@ -63,69 +64,70 @@ def test_config_build_segmentor():
_check_decode_head(head_config, segmentor.decode_head)
def test_config_data_pipeline():
"""Test whether the data pipeline is valid and can process corner cases.
# def test_config_data_pipeline():
# """Test whether the data pipeline is valid and can process corner cases.
CommandLine:
xdoctest -m tests/test_config.py test_config_build_data_pipeline
"""
# CommandLine:
# xdoctest -m tests/test_config.py test_config_build_data_pipeline
# """
register_all_modules()
config_dpath = _get_config_directory()
print('Found config_dpath = {!r}'.format(config_dpath))
# register_all_modules()
# config_dpath = _get_config_directory()
# print('Found config_dpath = {!r}'.format(config_dpath))
import glob
config_fpaths = list(glob.glob(join(config_dpath, '**', '*.py')))
config_fpaths = [p for p in config_fpaths if p.find('_base_') == -1]
config_names = [relpath(p, config_dpath) for p in config_fpaths]
# import glob
# config_fpaths = list(glob.glob(join(config_dpath, '**', '*.py')))
# config_fpaths = [p for p in config_fpaths if p.find('_base_') == -1]
# config_names = [relpath(p, config_dpath) for p in config_fpaths]
print('Using {} config files'.format(len(config_names)))
# print('Using {} config files'.format(len(config_names)))
for config_fname in config_names:
config_fpath = join(config_dpath, config_fname)
print(
'Building data pipeline, config_fpath = {!r}'.format(config_fpath))
config_mod = Config.fromfile(config_fpath)
# for config_fname in config_names:
# config_fpath = join(config_dpath, config_fname)
# print(
# 'Building data pipeline, config_fpath = {!r}'.
# format(config_fpath))
# config_mod = Config.fromfile(config_fpath)
# remove loading pipeline
load_img_pipeline = config_mod.train_pipeline.pop(0)
to_float32 = load_img_pipeline.get('to_float32', False)
config_mod.train_pipeline.pop(0)
config_mod.test_pipeline.pop(0)
# remove loading annotation in test pipeline
config_mod.test_pipeline.pop(1)
# # remove loading pipeline
# load_img_pipeline = config_mod.train_pipeline.pop(0)
# to_float32 = load_img_pipeline.get('to_float32', False)
# config_mod.train_pipeline.pop(0)
# config_mod.test_pipeline.pop(0)
# # remove loading annotation in test pipeline
# config_mod.test_pipeline.pop(1)
train_pipeline = Compose(config_mod.train_pipeline)
test_pipeline = Compose(config_mod.test_pipeline)
# train_pipeline = Compose(config_mod.train_pipeline)
# test_pipeline = Compose(config_mod.test_pipeline)
img = np.random.randint(0, 255, size=(1024, 2048, 3), dtype=np.uint8)
if to_float32:
img = img.astype(np.float32)
seg = np.random.randint(0, 255, size=(1024, 2048, 1), dtype=np.uint8)
# img = np.random.randint(0, 255, size=(1024, 2048, 3), dtype=np.uint8)
# if to_float32:
# img = img.astype(np.float32)
# seg = np.random.randint(0, 255, size=(1024, 2048, 1), dtype=np.uint8)
results = dict(
filename='test_img.png',
ori_filename='test_img.png',
img=img,
img_shape=img.shape,
ori_shape=img.shape,
gt_seg_map=seg)
results['seg_fields'] = ['gt_seg_map']
# results = dict(
# filename='test_img.png',
# ori_filename='test_img.png',
# img=img,
# img_shape=img.shape,
# ori_shape=img.shape,
# gt_seg_map=seg)
# results['seg_fields'] = ['gt_seg_map']
print('Test training data pipeline: \n{!r}'.format(train_pipeline))
output_results = train_pipeline(results)
assert output_results is not None
# print('Test training data pipeline: \n{!r}'.format(train_pipeline))
# output_results = train_pipeline(results)
# assert output_results is not None
results = dict(
filename='test_img.png',
ori_filename='test_img.png',
img=img,
img_shape=img.shape,
ori_shape=img.shape,
)
print('Test testing data pipeline: \n{!r}'.format(test_pipeline))
output_results = test_pipeline(results)
assert output_results is not None
# results = dict(
# filename='test_img.png',
# ori_filename='test_img.png',
# img=img,
# img_shape=img.shape,
# ori_shape=img.shape,
# )
# print('Test testing data pipeline: \n{!r}'.format(test_pipeline))
# output_results = test_pipeline(results)
# assert output_results is not None
def _check_decode_head(decode_head_cfg, decode_head):

View File

@ -4,7 +4,7 @@ import os.path as osp
import unittest
import numpy as np
from mmengine.data import BaseDataElement
from mmengine.structures import BaseDataElement
from mmseg.datasets.transforms import PackSegInputs
from mmseg.structures import SegDataSample

View File

@ -3,7 +3,7 @@ from unittest import TestCase
from unittest.mock import Mock
import torch
from mmengine.data import PixelData
from mmengine.structures import PixelData
from mmseg.engine.hooks import SegVisualizationHook
from mmseg.structures import SegDataSample

View File

@ -3,7 +3,7 @@ from unittest import TestCase
import numpy as np
import torch
from mmengine.data import BaseDataElement, PixelData
from mmengine.structures import BaseDataElement, PixelData
from mmseg.evaluation import CitysMetric
from mmseg.structures import SegDataSample

View File

@ -3,7 +3,7 @@ from unittest import TestCase
import numpy as np
import torch
from mmengine.data import BaseDataElement, PixelData
from mmengine.structures import BaseDataElement, PixelData
from mmseg.evaluation import IoUMetric
from mmseg.structures import SegDataSample

View File

@ -2,7 +2,8 @@
import mmcv
import pytest
import torch
from mmcv.utils import TORCH_VERSION, digit_version
from mmengine.utils import digit_version
from mmengine.utils.dl_utils import TORCH_VERSION
from mmseg.models.utils import (InvertedResidual, InvertedResidualV3, SELayer,
make_divisible)

View File

@ -1,7 +1,7 @@
# Copyright (c) OpenMMLab. All rights reserved.
import pytest
import torch
from mmcv.utils.parrots_wrapper import _BatchNorm
from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
from mmseg.models.backbones.hrnet import HRModule, HRNet
from mmseg.models.backbones.resnet import BasicBlock, Bottleneck

View File

@ -2,7 +2,7 @@
import pytest
import torch
from mmcv.ops import DeformConv2dPack
from mmcv.utils.parrots_wrapper import _BatchNorm
from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
from torch.nn.modules import AvgPool2d, GroupNorm
from mmseg.models.backbones import ResNet, ResNetV1d

View File

@ -1,11 +1,12 @@
# Copyright (c) OpenMMLab. All rights reserved.
from unittest import TestCase
import torch
from mmengine.data import PixelData
from mmseg.models import SegDataPreProcessor
from mmseg.structures import SegDataSample
# import torch
# from mmengine.structures import PixelData
# from mmseg.structures import SegDataSample
class TestSegDataPreProcessor(TestCase):
@ -30,16 +31,16 @@ class TestSegDataPreProcessor(TestCase):
with self.assertRaises(AssertionError):
SegDataPreProcessor(bgr_to_rgb=True, rgb_to_bgr=True)
def test_forward(self):
data_sample = SegDataSample()
data_sample.gt_sem_seg = PixelData(
**{'data': torch.randint(0, 10, (1, 11, 10))})
processor = SegDataPreProcessor(
mean=[0, 0, 0], std=[1, 1, 1], size=(20, 20))
data = {
'inputs': torch.randint(0, 256, (3, 11, 10)),
'data_sample': data_sample
}
inputs, data_samples = processor([data, data], training=True)
self.assertEqual(inputs.shape, (2, 3, 20, 20))
self.assertEqual(len(data_samples), 2)
# def test_forward(self):
# data_sample = SegDataSample()
# data_sample.gt_sem_seg = PixelData(
# **{'data': torch.randint(0, 10, (1, 11, 10))})
# processor = SegDataPreProcessor(
# mean=[0, 0, 0], std=[1, 1, 1], size=(20, 20))
# data = {
# 'inputs': torch.randint(0, 256, (3, 11, 10)),
# 'data_sample': data_sample
# }
# inputs, data_samples = processor([data, data], training=True)
# self.assertEqual(inputs.shape, (2, 3, 20, 20))
# self.assertEqual(len(data_samples), 2)

View File

@ -8,9 +8,9 @@ import numpy as np
import pytest
import torch
import torch.nn as nn
from mmcv import is_list_of, is_tuple_of
from mmcv.cnn.utils import revert_sync_batchnorm
from mmengine.data import PixelData
from mmengine.model.utils import revert_sync_batchnorm
from mmengine.structures import PixelData
from mmengine.utils import is_list_of, is_tuple_of
from torch import Tensor
from mmseg.structures import SegDataSample
@ -85,7 +85,7 @@ def _get_config_directory():
def _get_config_module(fname):
"""Load a configuration as a python module."""
from mmcv import Config
from mmengine import Config
config_dpath = _get_config_directory()
config_fpath = join(config_dpath, fname)
config_mod = Config.fromfile(config_fpath)

View File

@ -2,7 +2,7 @@
import pytest
import torch
from mmcv.cnn import ConvModule, DepthwiseSeparableConvModule
from mmcv.utils.parrots_wrapper import SyncBatchNorm
from mmengine.utils.dl_utils.parrots_wrapper import SyncBatchNorm
from mmseg.models.decode_heads import DepthwiseSeparableFCNHead, FCNHead
from .utils import to_cuda

View File

@ -1,6 +1,6 @@
# Copyright (c) OpenMMLab. All rights reserved.
from mmcv.cnn import ConvModule
from mmcv.utils.parrots_wrapper import SyncBatchNorm
from mmengine.utils.dl_utils.parrots_wrapper import SyncBatchNorm
def _conv_has_norm(module, sync_bn):

View File

@ -4,7 +4,7 @@ from unittest import TestCase
import numpy as np
import pytest
import torch
from mmengine.data import PixelData
from mmengine.structures import PixelData
from mmseg.structures import SegDataSample

View File

@ -8,7 +8,7 @@ import cv2
import mmcv
import numpy as np
import torch
from mmengine.data import PixelData
from mmengine.structures import PixelData
from mmseg.structures import SegDataSample
from mmseg.visualization import SegLocalVisualizer

View File

@ -3,13 +3,12 @@ import argparse
import os.path as osp
import time
import mmcv
import numpy as np
import torch
from mmcv import Config
from mmcv.runner import load_checkpoint, wrap_fp16_model
from mmengine.runner import Runner
from mmengine.utils import revert_sync_batchnorm
from mmengine import Config
from mmengine.fileio import dump, mkdir_or_exist
from mmengine.model.utils import revert_sync_batchnorm
from mmengine.runner import Runner, load_checkpoint, wrap_fp16_model
from mmseg.registry import MODELS
from mmseg.utils import register_all_modules
@ -36,13 +35,13 @@ def main():
cfg = Config.fromfile(args.config)
timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime())
if args.work_dir is not None:
mmcv.mkdir_or_exist(osp.abspath(args.work_dir))
mkdir_or_exist(osp.abspath(args.work_dir))
json_file = osp.join(args.work_dir, f'fps_{timestamp}.json')
else:
# use config filename as default work_dir if cfg.work_dir is None
work_dir = osp.join('./work_dirs',
osp.splitext(osp.basename(args.config))[0])
mmcv.mkdir_or_exist(osp.abspath(work_dir))
mkdir_or_exist(osp.abspath(work_dir))
json_file = osp.join(work_dir, f'fps_{timestamp}.json')
repeat_times = args.repeat_times
@ -112,7 +111,7 @@ def main():
f'{benchmark_dict["average_fps"]}')
print(f'The variance of {repeat_times} evaluations: '
f'{benchmark_dict["fps_variance"]}')
mmcv.dump(benchmark_dict, json_file, indent=4)
dump(benchmark_dict, json_file, indent=4)
if __name__ == '__main__':

View File

@ -3,10 +3,10 @@ import argparse
import os
import matplotlib.pyplot as plt
import mmcv
import numpy as np
from matplotlib.ticker import MultipleLocator
from mmcv import Config, DictAction
from mmengine import Config, DictAction
from mmengine.utils import ProgressBar, load
from mmseg.datasets import build_dataset
@ -53,7 +53,7 @@ def calculate_confusion_matrix(dataset, results):
n = len(dataset.CLASSES)
confusion_matrix = np.zeros(shape=[n, n])
assert len(dataset) == len(results)
prog_bar = mmcv.ProgressBar(len(results))
prog_bar = ProgressBar(len(results))
for idx, per_img_res in enumerate(results):
res_segm = per_img_res
gt_segm = dataset.get_gt_seg_map_by_idx(idx)
@ -155,7 +155,7 @@ def main():
if args.cfg_options is not None:
cfg.merge_from_dict(args.cfg_options)
results = mmcv.load(args.prediction_path)
results = load(args.prediction_path)
assert isinstance(results, list)
if isinstance(results[0], np.ndarray):

View File

@ -1,8 +1,8 @@
# Copyright (c) OpenMMLab. All rights reserved.
import argparse
from mmcv import Config
from mmcv.cnn import get_model_complexity_info
from mmengine import Config
from mmseg.models import build_segmentor

View File

@ -6,6 +6,7 @@ import tempfile
import zipfile
import mmcv
from mmengine.utils import mkdir_or_exist
CHASE_DB1_LEN = 28 * 3
TRAINING_LEN = 60
@ -30,13 +31,13 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(out_dir)
mmcv.mkdir_or_exist(osp.join(out_dir, 'images'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
mkdir_or_exist(out_dir)
mkdir_or_exist(osp.join(out_dir, 'images'))
mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mkdir_or_exist(osp.join(out_dir, 'annotations'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
with tempfile.TemporaryDirectory(dir=args.tmp_dir) as tmp_dir:
print('Extracting CHASEDB1.zip...')

View File

@ -2,8 +2,9 @@
import argparse
import os.path as osp
import mmcv
from cityscapesscripts.preparation.json2labelImg import json2labelImg
from mmengine.utils import (mkdir_or_exist, scandir, track_parallel_progress,
track_progress)
def convert_json_to_label(json_file):
@ -27,25 +28,24 @@ def main():
args = parse_args()
cityscapes_path = args.cityscapes_path
out_dir = args.out_dir if args.out_dir else cityscapes_path
mmcv.mkdir_or_exist(out_dir)
mkdir_or_exist(out_dir)
gt_dir = osp.join(cityscapes_path, args.gt_dir)
poly_files = []
for poly in mmcv.scandir(gt_dir, '_polygons.json', recursive=True):
for poly in scandir(gt_dir, '_polygons.json', recursive=True):
poly_file = osp.join(gt_dir, poly)
poly_files.append(poly_file)
if args.nproc > 1:
mmcv.track_parallel_progress(convert_json_to_label, poly_files,
args.nproc)
track_parallel_progress(convert_json_to_label, poly_files, args.nproc)
else:
mmcv.track_progress(convert_json_to_label, poly_files)
track_progress(convert_json_to_label, poly_files)
split_names = ['train', 'val', 'test']
for split in split_names:
filenames = []
for poly in mmcv.scandir(
for poly in scandir(
osp.join(gt_dir, split), '_polygons.json', recursive=True):
filenames.append(poly.replace('_gtFine_polygons.json', ''))
with open(osp.join(out_dir, f'{split}.txt'), 'w') as f:

View File

@ -4,8 +4,9 @@ import os.path as osp
import shutil
from functools import partial
import mmcv
import numpy as np
from mmengine.utils import (mkdir_or_exist, track_parallel_progress,
track_progress)
from PIL import Image
from scipy.io import loadmat
@ -251,10 +252,10 @@ def main():
out_img_dir = osp.join(out_dir, 'images')
out_mask_dir = osp.join(out_dir, 'annotations')
mmcv.mkdir_or_exist(osp.join(out_img_dir, 'train2014'))
mmcv.mkdir_or_exist(osp.join(out_img_dir, 'test2014'))
mmcv.mkdir_or_exist(osp.join(out_mask_dir, 'train2014'))
mmcv.mkdir_or_exist(osp.join(out_mask_dir, 'test2014'))
mkdir_or_exist(osp.join(out_img_dir, 'train2014'))
mkdir_or_exist(osp.join(out_img_dir, 'test2014'))
mkdir_or_exist(osp.join(out_mask_dir, 'train2014'))
mkdir_or_exist(osp.join(out_mask_dir, 'test2014'))
train_list, test_list = generate_coco_list(coco_path)
assert (len(train_list) +
@ -262,7 +263,7 @@ def main():
len(train_list), len(test_list))
if args.nproc > 1:
mmcv.track_parallel_progress(
track_parallel_progress(
partial(
convert_to_trainID,
in_img_dir=osp.join(coco_path, 'images'),
@ -272,7 +273,7 @@ def main():
is_train=True),
train_list,
nproc=nproc)
mmcv.track_parallel_progress(
track_parallel_progress(
partial(
convert_to_trainID,
in_img_dir=osp.join(coco_path, 'images'),
@ -283,7 +284,7 @@ def main():
test_list,
nproc=nproc)
else:
mmcv.track_progress(
track_progress(
partial(
convert_to_trainID,
in_img_dir=osp.join(coco_path, 'images'),
@ -291,7 +292,7 @@ def main():
out_img_dir=out_img_dir,
out_mask_dir=out_mask_dir,
is_train=True), train_list)
mmcv.track_progress(
track_progress(
partial(
convert_to_trainID,
in_img_dir=osp.join(coco_path, 'images'),

View File

@ -5,8 +5,9 @@ import shutil
from functools import partial
from glob import glob
import mmcv
import numpy as np
from mmengine.utils import (mkdir_or_exist, track_parallel_progress,
track_progress)
from PIL import Image
COCO_LEN = 123287
@ -222,8 +223,8 @@ def main():
out_img_dir = osp.join(out_dir, 'images')
out_mask_dir = osp.join(out_dir, 'annotations')
mmcv.mkdir_or_exist(osp.join(out_mask_dir, 'train2017'))
mmcv.mkdir_or_exist(osp.join(out_mask_dir, 'val2017'))
mkdir_or_exist(osp.join(out_mask_dir, 'train2017'))
mkdir_or_exist(osp.join(out_mask_dir, 'val2017'))
if out_dir != coco_path:
shutil.copytree(osp.join(coco_path, 'images'), out_img_dir)
@ -237,22 +238,22 @@ def main():
len(train_list), len(test_list))
if args.nproc > 1:
mmcv.track_parallel_progress(
track_parallel_progress(
partial(
convert_to_trainID, out_mask_dir=out_mask_dir, is_train=True),
train_list,
nproc=nproc)
mmcv.track_parallel_progress(
track_parallel_progress(
partial(
convert_to_trainID, out_mask_dir=out_mask_dir, is_train=False),
test_list,
nproc=nproc)
else:
mmcv.track_progress(
track_progress(
partial(
convert_to_trainID, out_mask_dir=out_mask_dir, is_train=True),
train_list)
mmcv.track_progress(
track_progress(
partial(
convert_to_trainID, out_mask_dir=out_mask_dir, is_train=False),
test_list)

View File

@ -7,6 +7,7 @@ import zipfile
import cv2
import mmcv
from mmengine.utils import mkdir_or_exist
def parse_args():
@ -32,13 +33,13 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(out_dir)
mmcv.mkdir_or_exist(osp.join(out_dir, 'images'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
mkdir_or_exist(out_dir)
mkdir_or_exist(osp.join(out_dir, 'images'))
mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mkdir_or_exist(osp.join(out_dir, 'annotations'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
with tempfile.TemporaryDirectory(dir=args.tmp_dir) as tmp_dir:
print('Extracting training.zip...')

View File

@ -6,6 +6,7 @@ import tempfile
import zipfile
import mmcv
from mmengine.utils import mkdir_or_exist
HRF_LEN = 15
TRAINING_LEN = 5
@ -47,13 +48,13 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(out_dir)
mmcv.mkdir_or_exist(osp.join(out_dir, 'images'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
mkdir_or_exist(out_dir)
mkdir_or_exist(osp.join(out_dir, 'images'))
mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mkdir_or_exist(osp.join(out_dir, 'annotations'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
print('Generating images...')
for now_path in images_path:

View File

@ -9,6 +9,7 @@ import zipfile
import mmcv
import numpy as np
from mmengine.utils import ProgressBar, mkdir_or_exist
from PIL import Image
iSAID_palette = \
@ -178,13 +179,13 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'test'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'test'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'test'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'test'))
assert os.path.exists(os.path.join(dataset_path, 'train')), \
'train is not in {}'.format(dataset_path)
@ -207,7 +208,7 @@ def main():
src_path_list = glob.glob(
os.path.join(tmp_dir, dataset_mode, 'img', 'images', '*.png'))
src_prog_bar = mmcv.ProgressBar(len(src_path_list))
src_prog_bar = ProgressBar(len(src_path_list))
for i, img_path in enumerate(src_path_list):
if dataset_mode != 'test':
slide_crop_image(img_path, out_dir, dataset_mode, patch_H,
@ -230,7 +231,7 @@ def main():
lab_path_list = glob.glob(
os.path.join(tmp_dir, dataset_mode, 'lab', 'images',
'*.png'))
lab_prog_bar = mmcv.ProgressBar(len(lab_path_list))
lab_prog_bar = ProgressBar(len(lab_path_list))
for i, lab_path in enumerate(lab_path_list):
slide_crop_label(lab_path, out_dir, dataset_mode, patch_H,
patch_W, overlap)

View File

@ -6,7 +6,7 @@ import shutil
import tempfile
import zipfile
import mmcv
from mmengine.utils import mkdir_or_exist
def parse_args():
@ -28,14 +28,14 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(out_dir)
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'test'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
mkdir_or_exist(out_dir)
mkdir_or_exist(osp.join(out_dir, 'img_dir'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'test'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
assert 'Train.zip' in os.listdir(dataset_path), \
'Train.zip is not in {}'.format(dataset_path)

View File

@ -3,9 +3,9 @@ import argparse
import os.path as osp
from functools import partial
import mmcv
import numpy as np
from detail import Detail
from mmengine.utils import mkdir_or_exist, track_progress
from PIL import Image
_mapping = np.sort(
@ -53,7 +53,7 @@ def main():
else:
out_dir = args.out_dir
json_path = args.json_path
mmcv.mkdir_or_exist(out_dir)
mkdir_or_exist(out_dir)
img_dir = osp.join(devkit_path, 'VOC2010', 'JPEGImages')
train_detail = Detail(json_path, img_dir, 'train')
@ -62,10 +62,10 @@ def main():
val_detail = Detail(json_path, img_dir, 'val')
val_ids = val_detail.getImgs()
mmcv.mkdir_or_exist(
mkdir_or_exist(
osp.join(devkit_path, 'VOC2010/ImageSets/SegmentationContext'))
train_list = mmcv.track_progress(
train_list = track_progress(
partial(generate_labels, detail=train_detail, out_dir=out_dir),
train_ids)
with open(
@ -73,7 +73,7 @@ def main():
'train.txt'), 'w') as f:
f.writelines(line + '\n' for line in sorted(train_list))
val_list = mmcv.track_progress(
val_list = track_progress(
partial(generate_labels, detail=val_detail, out_dir=out_dir), val_ids)
with open(
osp.join(devkit_path, 'VOC2010/ImageSets/SegmentationContext',

View File

@ -9,6 +9,7 @@ import zipfile
import mmcv
import numpy as np
from mmengine.utils import ProgressBar, mkdir_or_exist
def parse_args():
@ -118,10 +119,10 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
zipp_list = glob.glob(os.path.join(dataset_path, '*.zip'))
print('Find the data', zipp_list)
@ -135,7 +136,7 @@ def main():
sub_tmp_dir = os.path.join(tmp_dir, os.listdir(tmp_dir)[0])
src_path_list = glob.glob(os.path.join(sub_tmp_dir, '*.tif'))
prog_bar = mmcv.ProgressBar(len(src_path_list))
prog_bar = ProgressBar(len(src_path_list))
for i, src_path in enumerate(src_path_list):
idx_i, idx_j = osp.basename(src_path).split('_')[2:4]
data_type = 'train' if f'{idx_i}_{idx_j}' in splits[

View File

@ -7,6 +7,7 @@ import tarfile
import tempfile
import mmcv
from mmengine.utils import mkdir_or_exist
STARE_LEN = 20
TRAINING_LEN = 10
@ -42,17 +43,17 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(out_dir)
mmcv.mkdir_or_exist(osp.join(out_dir, 'images'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
mkdir_or_exist(out_dir)
mkdir_or_exist(osp.join(out_dir, 'images'))
mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mkdir_or_exist(osp.join(out_dir, 'annotations'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
with tempfile.TemporaryDirectory(dir=args.tmp_dir) as tmp_dir:
mmcv.mkdir_or_exist(osp.join(tmp_dir, 'gz'))
mmcv.mkdir_or_exist(osp.join(tmp_dir, 'files'))
mkdir_or_exist(osp.join(tmp_dir, 'gz'))
mkdir_or_exist(osp.join(tmp_dir, 'files'))
print('Extracting stare-images.tar...')
with tarfile.open(image_path) as f:
@ -86,8 +87,8 @@ def main():
print('Removing the temporary files...')
with tempfile.TemporaryDirectory(dir=args.tmp_dir) as tmp_dir:
mmcv.mkdir_or_exist(osp.join(tmp_dir, 'gz'))
mmcv.mkdir_or_exist(osp.join(tmp_dir, 'files'))
mkdir_or_exist(osp.join(tmp_dir, 'gz'))
mkdir_or_exist(osp.join(tmp_dir, 'files'))
print('Extracting labels-ah.tar...')
with tarfile.open(labels_ah) as f:
@ -125,8 +126,8 @@ def main():
print('Removing the temporary files...')
with tempfile.TemporaryDirectory(dir=args.tmp_dir) as tmp_dir:
mmcv.mkdir_or_exist(osp.join(tmp_dir, 'gz'))
mmcv.mkdir_or_exist(osp.join(tmp_dir, 'files'))
mkdir_or_exist(osp.join(tmp_dir, 'gz'))
mkdir_or_exist(osp.join(tmp_dir, 'files'))
print('Extracting labels-vk.tar...')
with tarfile.open(labels_vk) as f:

View File

@ -9,6 +9,7 @@ import zipfile
import mmcv
import numpy as np
from mmengine.utils import ProgressBar, mkdir_or_exist
def parse_args():
@ -111,10 +112,10 @@ def main():
out_dir = args.out_dir
print('Making directories...')
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mmcv.mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'img_dir', 'val'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'train'))
mkdir_or_exist(osp.join(out_dir, 'ann_dir', 'val'))
zipp_list = glob.glob(os.path.join(dataset_path, '*.zip'))
print('Find the data', zipp_list)
@ -133,7 +134,7 @@ def main():
for area_ann in src_path_list:
if 'area9' in area_ann:
src_path_list.remove(area_ann)
prog_bar = mmcv.ProgressBar(len(src_path_list))
prog_bar = ProgressBar(len(src_path_list))
for i, src_path in enumerate(src_path_list):
area_idx = osp.basename(src_path).split('_')[3].strip('.tif')
data_type = 'train' if area_idx in splits['train'] else 'val'

View File

@ -3,8 +3,8 @@ import argparse
import os.path as osp
from functools import partial
import mmcv
import numpy as np
from mmengine.utils import mkdir_or_exist, scandir, track_parallel_progress
from PIL import Image
from scipy.io import loadmat
@ -43,12 +43,12 @@ def main():
out_dir = osp.join(devkit_path, 'VOC2012', 'SegmentationClassAug')
else:
out_dir = args.out_dir
mmcv.mkdir_or_exist(out_dir)
mkdir_or_exist(out_dir)
in_dir = osp.join(aug_path, 'dataset', 'cls')
mmcv.track_parallel_progress(
track_parallel_progress(
partial(convert_mat, in_dir=in_dir, out_dir=out_dir),
list(mmcv.scandir(in_dir, suffix='.mat')),
list(scandir(in_dir, suffix='.mat')),
nproc=nproc)
full_aug_list = []

View File

@ -1,12 +1,12 @@
# Copyright (c) OpenMMLab. All rights reserved.
import argparse
import mmcv
import numpy as np
import torch
import torch._C
import torch.serialization
from mmcv.runner import load_checkpoint
from mmengine import Config
from mmengine.runner import load_checkpoint
from torch import nn
from mmseg.models import build_segmentor
@ -163,7 +163,7 @@ if __name__ == '__main__':
else:
raise ValueError('invalid input shape')
cfg = mmcv.Config.fromfile(args.config)
cfg = Config.fromfile(args.config)
cfg.model.pretrained = None
# build the model and load checkpoint

View File

@ -2,8 +2,8 @@
import argparse
import os.path as osp
import mmcv
from mmcv import Config, DictAction
from mmengine import Config, DictAction
from mmengine.utils import ProgressBar
from mmseg.datasets import DATASETS
from mmseg.registry import VISUALIZERS
@ -52,7 +52,7 @@ def main():
visualizer = VISUALIZERS.build(cfg.visualizer)
visualizer.dataset_meta = dataset.METAINFO
progress_bar = mmcv.ProgressBar(len(dataset))
progress_bar = ProgressBar(len(dataset))
for item in dataset:
img = item['inputs'].permute(1, 2, 0).numpy()
data_sample = item['data_sample'].numpy()

View File

@ -2,7 +2,7 @@
import argparse
import warnings
from mmcv import Config, DictAction
from mmengine import Config, DictAction
from mmseg.apis import init_model

View File

@ -3,7 +3,8 @@ from argparse import ArgumentParser, Namespace
from pathlib import Path
from tempfile import TemporaryDirectory
import mmcv
from mmengine import Config
from mmengine.utils import mkdir_or_exist
try:
from model_archiver.model_packaging import package_model
@ -43,9 +44,9 @@ def mmseg2torchserve(
If True, if there is an existing `{model_name}.mar`
file under `output_folder` it will be overwritten.
"""
mmcv.mkdir_or_exist(output_folder)
mkdir_or_exist(output_folder)
config = mmcv.Config.fromfile(config_file)
config = Config.fromfile(config_file)
with TemporaryDirectory() as tmpdir:
config.dump(f'{tmpdir}/config.py')

View File

@ -5,7 +5,7 @@ import os
import cv2
import mmcv
import torch
from mmcv.cnn.utils.sync_bn import revert_sync_batchnorm
from mmengine.model.utils import revert_sync_batchnorm
from ts.torch_handler.base_handler import BaseHandler
from mmseg.apis import inference_model, init_model