diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 0000000000000000000000000000000000000000..c1684dddc8a36fd02b5a9310a5b70cecb8194a7c --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,7 @@ +[isort] +line_length = 79 +multi_line_output = 0 +known_first_party = mmdet +known_third_party = mmcv,numpy,matplotlib,pycocotools,six,seaborn,terminaltables,torch,torchvision +no_lines_before = STDLIB,LOCALFOLDER +default_section = THIRDPARTY \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 127b9030a6fcc860a7c72af2d635908dc23eb190..8ef07f0559c9d8bcbeee6dd6452d91d5d6d83b1f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ dist: xenial language: python install: - - pip install flake8 yapf + - pip install isort flake8 yapf python: - "3.5" @@ -11,4 +11,5 @@ python: script: - flake8 + - isort -rc --diff mmdet/ tools/ - yapf -r -d --style .style.yapf mmdet/ tools/ \ No newline at end of file diff --git a/mmdet/apis/train.py b/mmdet/apis/train.py index 0ebbb9e110fb1c246916ba7c5efbdef96d9c7025..dc51381815174c5d5b1366642d0c0fc7aa126755 100644 --- a/mmdet/apis/train.py +++ b/mmdet/apis/train.py @@ -1,17 +1,15 @@ from __future__ import division - import re from collections import OrderedDict import torch -from mmcv.runner import Runner, DistSamplerSeedHook, obj_from_dict from mmcv.parallel import MMDataParallel, MMDistributedDataParallel +from mmcv.runner import DistSamplerSeedHook, Runner, obj_from_dict from mmdet import datasets -from mmdet.core import (DistOptimizerHook, DistEvalmAPHook, - CocoDistEvalRecallHook, CocoDistEvalmAPHook, - Fp16OptimizerHook) -from mmdet.datasets import build_dataloader, DATASETS +from mmdet.core import (CocoDistEvalmAPHook, CocoDistEvalRecallHook, + DistEvalmAPHook, DistOptimizerHook, Fp16OptimizerHook) +from mmdet.datasets import DATASETS, build_dataloader from mmdet.models import RPN from .env import get_root_logger diff --git a/mmdet/core/anchor/anchor_target.py b/mmdet/core/anchor/anchor_target.py index 60c902eaa86575f5ea3632f4ffea1c65e4dc1c0e..91238e6bdf9101ae37eee1b39f9b640a45b68134 100644 --- a/mmdet/core/anchor/anchor_target.py +++ b/mmdet/core/anchor/anchor_target.py @@ -1,6 +1,6 @@ import torch -from ..bbox import assign_and_sample, build_assigner, PseudoSampler, bbox2delta +from ..bbox import PseudoSampler, assign_and_sample, bbox2delta, build_assigner from ..utils import multi_apply diff --git a/mmdet/core/anchor/guided_anchor_target.py b/mmdet/core/anchor/guided_anchor_target.py index 7284a73c3ade0c62862e8cf009609274d4dcc0fe..21abe5ec508722c13147c9b524fb86cd600a136e 100644 --- a/mmdet/core/anchor/guided_anchor_target.py +++ b/mmdet/core/anchor/guided_anchor_target.py @@ -1,7 +1,7 @@ import torch -from ..bbox import build_assigner, build_sampler, PseudoSampler -from ..utils import unmap, multi_apply +from ..bbox import PseudoSampler, build_assigner, build_sampler +from ..utils import multi_apply, unmap def calc_region(bbox, ratio, featmap_size=None): diff --git a/mmdet/core/bbox/assigners/approx_max_iou_assigner.py b/mmdet/core/bbox/assigners/approx_max_iou_assigner.py index 867a56b87e869d6b38ca379a4ff1231ffd9f7e20..4ab52590bcddde63f27b5e24b282528f78fb3e73 100644 --- a/mmdet/core/bbox/assigners/approx_max_iou_assigner.py +++ b/mmdet/core/bbox/assigners/approx_max_iou_assigner.py @@ -1,7 +1,7 @@ import torch -from .max_iou_assigner import MaxIoUAssigner from ..geometry import bbox_overlaps +from .max_iou_assigner import MaxIoUAssigner class ApproxMaxIoUAssigner(MaxIoUAssigner): diff --git a/mmdet/core/bbox/assigners/max_iou_assigner.py b/mmdet/core/bbox/assigners/max_iou_assigner.py index 99dcbe8e0f640fb84f0d9e995212405b0fe628ef..5c93b36e3f5496b5334eb8425bbc9ad70cf70261 100644 --- a/mmdet/core/bbox/assigners/max_iou_assigner.py +++ b/mmdet/core/bbox/assigners/max_iou_assigner.py @@ -1,8 +1,8 @@ import torch -from .base_assigner import BaseAssigner -from .assign_result import AssignResult from ..geometry import bbox_overlaps +from .assign_result import AssignResult +from .base_assigner import BaseAssigner class MaxIoUAssigner(BaseAssigner): diff --git a/mmdet/core/bbox/bbox_target.py b/mmdet/core/bbox/bbox_target.py index 20b3957bcfe303225a3f5704e46c1a2832d85935..2a918bf87e45ec0847cff403a9698914b7d382dd 100644 --- a/mmdet/core/bbox/bbox_target.py +++ b/mmdet/core/bbox/bbox_target.py @@ -1,7 +1,7 @@ import torch -from .transforms import bbox2delta from ..utils import multi_apply +from .transforms import bbox2delta def bbox_target(pos_bboxes_list, diff --git a/mmdet/core/bbox/samplers/combined_sampler.py b/mmdet/core/bbox/samplers/combined_sampler.py index 25e820be19a4d0542a9e94639e765b1ad60bcd2d..351a097f671cd4d3e7d396972f74b750438ff67b 100644 --- a/mmdet/core/bbox/samplers/combined_sampler.py +++ b/mmdet/core/bbox/samplers/combined_sampler.py @@ -1,5 +1,5 @@ -from .base_sampler import BaseSampler from ..assign_sampling import build_sampler +from .base_sampler import BaseSampler class CombinedSampler(BaseSampler): diff --git a/mmdet/core/bbox/samplers/ohem_sampler.py b/mmdet/core/bbox/samplers/ohem_sampler.py index 0711d976c3393ee1339899f5346fbd28f29ab418..2500f3113cf222391aacabdb0d0b59543a61f00a 100644 --- a/mmdet/core/bbox/samplers/ohem_sampler.py +++ b/mmdet/core/bbox/samplers/ohem_sampler.py @@ -1,7 +1,7 @@ import torch -from .base_sampler import BaseSampler from ..transforms import bbox2roi +from .base_sampler import BaseSampler class OHEMSampler(BaseSampler): diff --git a/mmdet/core/evaluation/eval_hooks.py b/mmdet/core/evaluation/eval_hooks.py index 1786d9362410bc3e535f436bdd7777746dab141c..c37f7bd0291474d1411cc4e5f0799bf6959385f5 100644 --- a/mmdet/core/evaluation/eval_hooks.py +++ b/mmdet/core/evaluation/eval_hooks.py @@ -5,14 +5,14 @@ import mmcv import numpy as np import torch import torch.distributed as dist +from mmcv.parallel import collate, scatter from mmcv.runner import Hook -from mmcv.parallel import scatter, collate from pycocotools.cocoeval import COCOeval from torch.utils.data import Dataset -from .coco_utils import results2json, fast_eval_recall -from .mean_ap import eval_map from mmdet import datasets +from .coco_utils import fast_eval_recall, results2json +from .mean_ap import eval_map class DistEvalHook(Hook): diff --git a/mmdet/core/fp16/hooks.py b/mmdet/core/fp16/hooks.py index b1ab45ef5612f99f645fc0f9c33856947f70cb08..6b4dacb1c7ce93aed1a9dbff231840f62847e47f 100644 --- a/mmdet/core/fp16/hooks.py +++ b/mmdet/core/fp16/hooks.py @@ -1,10 +1,11 @@ import copy + import torch import torch.nn as nn from mmcv.runner import OptimizerHook -from .utils import cast_tensor_type from ..utils.dist_utils import allreduce_grads +from .utils import cast_tensor_type class Fp16OptimizerHook(OptimizerHook): diff --git a/mmdet/core/mask/mask_target.py b/mmdet/core/mask/mask_target.py index be93dfc28934052a7497b3c42aa3e9dd1b3b3fe6..0acbc0033e1c43069f21ffdbdbbbaaf49f48c199 100644 --- a/mmdet/core/mask/mask_target.py +++ b/mmdet/core/mask/mask_target.py @@ -1,6 +1,6 @@ -import torch -import numpy as np import mmcv +import numpy as np +import torch def mask_target(pos_proposals_list, pos_assigned_gt_inds_list, gt_masks_list, diff --git a/mmdet/core/post_processing/merge_augs.py b/mmdet/core/post_processing/merge_augs.py index f97954b8a77ebe97cec74ee4420be953146c63e4..fcee4fb043ff88597861d88449d38dc341152019 100644 --- a/mmdet/core/post_processing/merge_augs.py +++ b/mmdet/core/post_processing/merge_augs.py @@ -1,6 +1,5 @@ -import torch - import numpy as np +import torch from mmdet.ops import nms from ..bbox import bbox_mapping_back diff --git a/mmdet/core/utils/dist_utils.py b/mmdet/core/utils/dist_utils.py index 51d7e3c91e9fffc76d4ac6d71abe05f4f8a039e6..be830b6a2fdf536caf3e2175182462869d302150 100644 --- a/mmdet/core/utils/dist_utils.py +++ b/mmdet/core/utils/dist_utils.py @@ -1,9 +1,9 @@ from collections import OrderedDict import torch.distributed as dist -from torch._utils import (_flatten_dense_tensors, _unflatten_dense_tensors, - _take_tensors) from mmcv.runner import OptimizerHook +from torch._utils import (_flatten_dense_tensors, _take_tensors, + _unflatten_dense_tensors) def _allreduce_coalesced(tensors, world_size, bucket_size_mb=-1): diff --git a/mmdet/datasets/custom.py b/mmdet/datasets/custom.py index e0ea78ceb7fb7332a597bb10093f1b247c1790d5..18d7195da8dcf539827921dd7e2323d630c91d20 100644 --- a/mmdet/datasets/custom.py +++ b/mmdet/datasets/custom.py @@ -6,11 +6,11 @@ import numpy as np from mmcv.parallel import DataContainer as DC from torch.utils.data import Dataset -from .registry import DATASETS -from .transforms import (ImageTransform, BboxTransform, MaskTransform, - SegMapTransform, Numpy2Tensor) -from .utils import to_tensor, random_scale from .extra_aug import ExtraAugmentation +from .registry import DATASETS +from .transforms import (BboxTransform, ImageTransform, MaskTransform, + Numpy2Tensor, SegMapTransform) +from .utils import random_scale, to_tensor @DATASETS.register_module diff --git a/mmdet/datasets/loader/build_loader.py b/mmdet/datasets/loader/build_loader.py index 1843713738ef417b17aa090b2d69562b131a8626..d3746e1b237727eccc52cb4619f549f93a1c97e6 100644 --- a/mmdet/datasets/loader/build_loader.py +++ b/mmdet/datasets/loader/build_loader.py @@ -1,11 +1,11 @@ import platform from functools import partial -from mmcv.runner import get_dist_info from mmcv.parallel import collate +from mmcv.runner import get_dist_info from torch.utils.data import DataLoader -from .sampler import GroupSampler, DistributedGroupSampler, DistributedSampler +from .sampler import DistributedGroupSampler, DistributedSampler, GroupSampler if platform.system() != 'Windows': # https://github.com/pytorch/pytorch/issues/973 diff --git a/mmdet/datasets/loader/sampler.py b/mmdet/datasets/loader/sampler.py index c222eb293416813f982be06d2a98736eac85f1c4..6c529008249149ae8d90a2f0b427a74f97b98048 100644 --- a/mmdet/datasets/loader/sampler.py +++ b/mmdet/datasets/loader/sampler.py @@ -1,12 +1,11 @@ from __future__ import division - import math -import torch -import numpy as np +import numpy as np +import torch from mmcv.runner.utils import get_dist_info -from torch.utils.data import Sampler from torch.utils.data import DistributedSampler as _DistributedSampler +from torch.utils.data import Sampler class DistributedSampler(_DistributedSampler): diff --git a/mmdet/models/anchor_heads/anchor_head.py b/mmdet/models/anchor_heads/anchor_head.py index 2b8b144071b09b93ef7569e824252ca3bdb1d3d3..b3fb5b4f29e112a6e061c7e8ac63d02719284765 100644 --- a/mmdet/models/anchor_heads/anchor_head.py +++ b/mmdet/models/anchor_heads/anchor_head.py @@ -5,8 +5,8 @@ import torch import torch.nn as nn from mmcv.cnn import normal_init -from mmdet.core import (AnchorGenerator, anchor_target, delta2bbox, - multi_apply, multiclass_nms, force_fp32) +from mmdet.core import (AnchorGenerator, anchor_target, delta2bbox, force_fp32, + multi_apply, multiclass_nms) from ..builder import build_loss from ..registry import HEADS diff --git a/mmdet/models/anchor_heads/fcos_head.py b/mmdet/models/anchor_heads/fcos_head.py index 957906dc7d3b199e48f2d582a247b26b6a13486f..6ddf6c14f5a27c38a42ef6855aedff501ba22eaf 100644 --- a/mmdet/models/anchor_heads/fcos_head.py +++ b/mmdet/models/anchor_heads/fcos_head.py @@ -2,10 +2,10 @@ import torch import torch.nn as nn from mmcv.cnn import normal_init -from mmdet.core import multi_apply, multiclass_nms, distance2bbox, force_fp32 +from mmdet.core import distance2bbox, force_fp32, multi_apply, multiclass_nms from ..builder import build_loss from ..registry import HEADS -from ..utils import bias_init_with_prob, Scale, ConvModule +from ..utils import ConvModule, Scale, bias_init_with_prob INF = 1e8 diff --git a/mmdet/models/anchor_heads/ga_retina_head.py b/mmdet/models/anchor_heads/ga_retina_head.py index 40ad0499f0b3ef99859ddf796c1197f1d0dd0f76..73f89d725b202d880cdbb05b01ba7aace2691110 100644 --- a/mmdet/models/anchor_heads/ga_retina_head.py +++ b/mmdet/models/anchor_heads/ga_retina_head.py @@ -1,10 +1,10 @@ import torch.nn as nn from mmcv.cnn import normal_init -from .guided_anchor_head import GuidedAnchorHead, FeatureAdaption -from ..registry import HEADS -from ..utils import bias_init_with_prob, ConvModule from mmdet.ops import MaskedConv2d +from ..registry import HEADS +from ..utils import ConvModule, bias_init_with_prob +from .guided_anchor_head import FeatureAdaption, GuidedAnchorHead @HEADS.register_module diff --git a/mmdet/models/anchor_heads/ga_rpn_head.py b/mmdet/models/anchor_heads/ga_rpn_head.py index aecef2b2169b9acd5fd767c2a4696b68f6ac9511..11512ffc578fd4b10f17f6129b517bc887594440 100644 --- a/mmdet/models/anchor_heads/ga_rpn_head.py +++ b/mmdet/models/anchor_heads/ga_rpn_head.py @@ -5,8 +5,8 @@ from mmcv.cnn import normal_init from mmdet.core import delta2bbox from mmdet.ops import nms -from .guided_anchor_head import GuidedAnchorHead from ..registry import HEADS +from .guided_anchor_head import GuidedAnchorHead @HEADS.register_module diff --git a/mmdet/models/anchor_heads/guided_anchor_head.py b/mmdet/models/anchor_heads/guided_anchor_head.py index c3cc7051c03d34c7e00adf94d01022e0baaec942..d2d71d0e4bef21ec5a9dd430ac62466e317fd6fd 100644 --- a/mmdet/models/anchor_heads/guided_anchor_head.py +++ b/mmdet/models/anchor_heads/guided_anchor_head.py @@ -5,14 +5,14 @@ import torch import torch.nn as nn from mmcv.cnn import normal_init -from mmdet.core import (AnchorGenerator, anchor_target, anchor_inside_flags, - ga_loc_target, ga_shape_target, delta2bbox, - multi_apply, multiclass_nms, force_fp32) +from mmdet.core import (AnchorGenerator, anchor_inside_flags, anchor_target, + delta2bbox, force_fp32, ga_loc_target, ga_shape_target, + multi_apply, multiclass_nms) from mmdet.ops import DeformConv, MaskedConv2d from ..builder import build_loss -from .anchor_head import AnchorHead from ..registry import HEADS from ..utils import bias_init_with_prob +from .anchor_head import AnchorHead class FeatureAdaption(nn.Module): diff --git a/mmdet/models/anchor_heads/retina_head.py b/mmdet/models/anchor_heads/retina_head.py index 53a5cc9f6b35bdb467d609bbe4aecfcddfea4c26..045db70b918974a6c9b5f5acafd872bb71b0aba1 100644 --- a/mmdet/models/anchor_heads/retina_head.py +++ b/mmdet/models/anchor_heads/retina_head.py @@ -2,9 +2,9 @@ import numpy as np import torch.nn as nn from mmcv.cnn import normal_init -from .anchor_head import AnchorHead from ..registry import HEADS -from ..utils import bias_init_with_prob, ConvModule +from ..utils import ConvModule, bias_init_with_prob +from .anchor_head import AnchorHead @HEADS.register_module diff --git a/mmdet/models/anchor_heads/rpn_head.py b/mmdet/models/anchor_heads/rpn_head.py index 0a5fd37a5a2f4edc4f42f5e39ebcc748b387851a..50f1cc515e05f0fa4e485960db2035156c9434e7 100644 --- a/mmdet/models/anchor_heads/rpn_head.py +++ b/mmdet/models/anchor_heads/rpn_head.py @@ -5,8 +5,8 @@ from mmcv.cnn import normal_init from mmdet.core import delta2bbox from mmdet.ops import nms -from .anchor_head import AnchorHead from ..registry import HEADS +from .anchor_head import AnchorHead @HEADS.register_module diff --git a/mmdet/models/anchor_heads/ssd_head.py b/mmdet/models/anchor_heads/ssd_head.py index db86c470ea6aa4b3097f080476f97fac67a30703..600dd4a13b6473af50fd761260dec92cb555c4e6 100644 --- a/mmdet/models/anchor_heads/ssd_head.py +++ b/mmdet/models/anchor_heads/ssd_head.py @@ -5,9 +5,9 @@ import torch.nn.functional as F from mmcv.cnn import xavier_init from mmdet.core import AnchorGenerator, anchor_target, multi_apply -from .anchor_head import AnchorHead from ..losses import smooth_l1_loss from ..registry import HEADS +from .anchor_head import AnchorHead # TODO: add loss evaluator for SSD diff --git a/mmdet/models/backbones/hrnet.py b/mmdet/models/backbones/hrnet.py index 178d1025a26354a3c6f149e0d15555544332a340..9c942d6ace8c628a7319303db01d33b95065647a 100644 --- a/mmdet/models/backbones/hrnet.py +++ b/mmdet/models/backbones/hrnet.py @@ -6,7 +6,7 @@ from mmcv.runner import load_checkpoint from torch.nn.modules.batchnorm import _BatchNorm from ..registry import BACKBONES -from ..utils import build_norm_layer, build_conv_layer +from ..utils import build_conv_layer, build_norm_layer from .resnet import BasicBlock, Bottleneck diff --git a/mmdet/models/backbones/resnet.py b/mmdet/models/backbones/resnet.py index abe128030690f900eb78a6b2406aab03d0de0dc4..eaead29a9fa27dd45f7c3421e77cbb7681ef0f20 100644 --- a/mmdet/models/backbones/resnet.py +++ b/mmdet/models/backbones/resnet.py @@ -2,14 +2,12 @@ import logging import torch.nn as nn import torch.utils.checkpoint as cp -from torch.nn.modules.batchnorm import _BatchNorm - from mmcv.cnn import constant_init, kaiming_init from mmcv.runner import load_checkpoint +from torch.nn.modules.batchnorm import _BatchNorm -from mmdet.ops import DeformConv, ModulatedDeformConv, ContextBlock from mmdet.models.plugins import GeneralizedAttention - +from mmdet.ops import ContextBlock, DeformConv, ModulatedDeformConv from ..registry import BACKBONES from ..utils import build_conv_layer, build_norm_layer diff --git a/mmdet/models/backbones/resnext.py b/mmdet/models/backbones/resnext.py index c0b42b291e3ef5249c4d1c2ceb2e0993c0e999f9..c5feaa48c2bf6529f168277edecb01adfd142a13 100644 --- a/mmdet/models/backbones/resnext.py +++ b/mmdet/models/backbones/resnext.py @@ -3,10 +3,10 @@ import math import torch.nn as nn from mmdet.ops import DeformConv, ModulatedDeformConv -from .resnet import Bottleneck as _Bottleneck -from .resnet import ResNet from ..registry import BACKBONES from ..utils import build_conv_layer, build_norm_layer +from .resnet import Bottleneck as _Bottleneck +from .resnet import ResNet class Bottleneck(_Bottleneck): diff --git a/mmdet/models/backbones/ssd_vgg.py b/mmdet/models/backbones/ssd_vgg.py index f7ba8a4e5eabda9605e71a9371709224fb16730d..ae65711332b738ba174bad5b1e92c4a762f19376 100644 --- a/mmdet/models/backbones/ssd_vgg.py +++ b/mmdet/models/backbones/ssd_vgg.py @@ -3,8 +3,7 @@ import logging import torch import torch.nn as nn import torch.nn.functional as F -from mmcv.cnn import (VGG, xavier_init, constant_init, kaiming_init, - normal_init) +from mmcv.cnn import VGG, constant_init, kaiming_init, normal_init, xavier_init from mmcv.runner import load_checkpoint from ..registry import BACKBONES diff --git a/mmdet/models/bbox_heads/bbox_head.py b/mmdet/models/bbox_heads/bbox_head.py index df80570bdd5ee9b93e59694cc6c00fb80955d6a4..1a155f9ee2acd459518cf4597ac77447550a3791 100644 --- a/mmdet/models/bbox_heads/bbox_head.py +++ b/mmdet/models/bbox_heads/bbox_head.py @@ -2,8 +2,8 @@ import torch import torch.nn as nn import torch.nn.functional as F -from mmdet.core import (delta2bbox, multiclass_nms, bbox_target, force_fp32, - auto_fp16) +from mmdet.core import (auto_fp16, bbox_target, delta2bbox, force_fp32, + multiclass_nms) from ..builder import build_loss from ..losses import accuracy from ..registry import HEADS diff --git a/mmdet/models/bbox_heads/convfc_bbox_head.py b/mmdet/models/bbox_heads/convfc_bbox_head.py index 470c511f6bd8729a1af9e97454bc62d446c3c4b2..801cf8f15f2f47e9f67d9f79d663e9a97a437318 100644 --- a/mmdet/models/bbox_heads/convfc_bbox_head.py +++ b/mmdet/models/bbox_heads/convfc_bbox_head.py @@ -1,8 +1,8 @@ import torch.nn as nn -from .bbox_head import BBoxHead from ..registry import HEADS from ..utils import ConvModule +from .bbox_head import BBoxHead @HEADS.register_module diff --git a/mmdet/models/builder.py b/mmdet/models/builder.py index 0c9b6444e63e4d9c846bf5e624e9d99179f5b0b2..dc82ab711e83dc0238b135be5303b1198ae599f2 100644 --- a/mmdet/models/builder.py +++ b/mmdet/models/builder.py @@ -1,8 +1,8 @@ from torch import nn from mmdet.utils import build_from_cfg -from .registry import (BACKBONES, NECKS, ROI_EXTRACTORS, SHARED_HEADS, HEADS, - LOSSES, DETECTORS) +from .registry import (BACKBONES, DETECTORS, HEADS, LOSSES, NECKS, + ROI_EXTRACTORS, SHARED_HEADS) def build(cfg, registry, default_args=None): diff --git a/mmdet/models/detectors/base.py b/mmdet/models/detectors/base.py index 96fb48ee06a9208172af60d0731cdd3681e63d13..038dd109c08a454d4505616a3c7c8eb9ffe0580e 100644 --- a/mmdet/models/detectors/base.py +++ b/mmdet/models/detectors/base.py @@ -3,10 +3,10 @@ from abc import ABCMeta, abstractmethod import mmcv import numpy as np -import torch.nn as nn import pycocotools.mask as maskUtils +import torch.nn as nn -from mmdet.core import tensor2imgs, get_classes, auto_fp16 +from mmdet.core import auto_fp16, get_classes, tensor2imgs class BaseDetector(nn.Module): diff --git a/mmdet/models/detectors/cascade_rcnn.py b/mmdet/models/detectors/cascade_rcnn.py index f76bdc53293370348449f0c204d8a0b535a23791..9bd0207df4f4d0f474a443aa8230bbf8b5895546 100644 --- a/mmdet/models/detectors/cascade_rcnn.py +++ b/mmdet/models/detectors/cascade_rcnn.py @@ -3,12 +3,12 @@ from __future__ import division import torch import torch.nn as nn -from .base import BaseDetector -from .test_mixins import RPNTestMixin +from mmdet.core import (bbox2result, bbox2roi, build_assigner, build_sampler, + merge_aug_masks) from .. import builder from ..registry import DETECTORS -from mmdet.core import (build_assigner, bbox2roi, bbox2result, build_sampler, - merge_aug_masks) +from .base import BaseDetector +from .test_mixins import RPNTestMixin @DETECTORS.register_module diff --git a/mmdet/models/detectors/fast_rcnn.py b/mmdet/models/detectors/fast_rcnn.py index 64c03916498cc4ce8cb28d2f4ce026f88dd55037..9e3b2aa70e27c56e41d4daddeae0ad47f4b2c5ca 100644 --- a/mmdet/models/detectors/fast_rcnn.py +++ b/mmdet/models/detectors/fast_rcnn.py @@ -1,5 +1,5 @@ -from .two_stage import TwoStageDetector from ..registry import DETECTORS +from .two_stage import TwoStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/faster_rcnn.py b/mmdet/models/detectors/faster_rcnn.py index b4e961b128b5ba1969aeb0618150acfb67a7d9c7..969cd7ccd76b00352c74a2d7dd135f03cff906bc 100644 --- a/mmdet/models/detectors/faster_rcnn.py +++ b/mmdet/models/detectors/faster_rcnn.py @@ -1,5 +1,5 @@ -from .two_stage import TwoStageDetector from ..registry import DETECTORS +from .two_stage import TwoStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/fcos.py b/mmdet/models/detectors/fcos.py index 4c3dce1b164c750f58f9fb2fc0e836a1dcc0e8d1..89cc5929af2127d380f8c74d8d001d1601981063 100644 --- a/mmdet/models/detectors/fcos.py +++ b/mmdet/models/detectors/fcos.py @@ -1,5 +1,5 @@ -from .single_stage import SingleStageDetector from ..registry import DETECTORS +from .single_stage import SingleStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/grid_rcnn.py b/mmdet/models/detectors/grid_rcnn.py index 49c4a33070c04e1a0b2d85c08b6b9921d157128f..2c321646151ce915bedd28f958d92bdc1f15196b 100644 --- a/mmdet/models/detectors/grid_rcnn.py +++ b/mmdet/models/detectors/grid_rcnn.py @@ -1,10 +1,9 @@ -from .two_stage import TwoStageDetector -from ..registry import DETECTORS - import torch +from mmdet.core import bbox2result, bbox2roi, build_assigner, build_sampler from .. import builder -from mmdet.core import bbox2roi, bbox2result, build_assigner, build_sampler +from ..registry import DETECTORS +from .two_stage import TwoStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/htc.py b/mmdet/models/detectors/htc.py index bcf410f35cb35e628ca8f9fc4bb47242ae8c0c93..7135fe1d38d1c1d73952569079b097aea7f821ab 100644 --- a/mmdet/models/detectors/htc.py +++ b/mmdet/models/detectors/htc.py @@ -1,11 +1,11 @@ import torch import torch.nn.functional as F -from .cascade_rcnn import CascadeRCNN +from mmdet.core import (bbox2result, bbox2roi, build_assigner, build_sampler, + merge_aug_masks) from .. import builder from ..registry import DETECTORS -from mmdet.core import (bbox2roi, bbox2result, build_assigner, build_sampler, - merge_aug_masks) +from .cascade_rcnn import CascadeRCNN @DETECTORS.register_module diff --git a/mmdet/models/detectors/mask_rcnn.py b/mmdet/models/detectors/mask_rcnn.py index 003e87f9817e1eeff8c5860395270ec7ebf8a0eb..becfdad534ca2d6a0e473e0630138e20866bb476 100644 --- a/mmdet/models/detectors/mask_rcnn.py +++ b/mmdet/models/detectors/mask_rcnn.py @@ -1,5 +1,5 @@ -from .two_stage import TwoStageDetector from ..registry import DETECTORS +from .two_stage import TwoStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/mask_scoring_rcnn.py b/mmdet/models/detectors/mask_scoring_rcnn.py index 9153bcd147b5c4f9658fb7d09403b78b8ba4e181..b035f53e1683bf11f85f318b6d94c6d4730332e6 100644 --- a/mmdet/models/detectors/mask_scoring_rcnn.py +++ b/mmdet/models/detectors/mask_scoring_rcnn.py @@ -1,9 +1,9 @@ import torch from mmdet.core import bbox2roi, build_assigner, build_sampler -from .two_stage import TwoStageDetector from .. import builder from ..registry import DETECTORS +from .two_stage import TwoStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/retinanet.py b/mmdet/models/detectors/retinanet.py index 0e5b6fdb816d4ba92e4d6d361779b7f190c66f1e..7c93d7419981edde1c725e45002931e70d8f4ed2 100644 --- a/mmdet/models/detectors/retinanet.py +++ b/mmdet/models/detectors/retinanet.py @@ -1,5 +1,5 @@ -from .single_stage import SingleStageDetector from ..registry import DETECTORS +from .single_stage import SingleStageDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/rpn.py b/mmdet/models/detectors/rpn.py index 51043af85ad6bddef41c29e8ae2c3ef9cd8491f0..2f947fae474b5efe17152649f3ddcde6980d0078 100644 --- a/mmdet/models/detectors/rpn.py +++ b/mmdet/models/detectors/rpn.py @@ -1,10 +1,10 @@ import mmcv -from mmdet.core import tensor2imgs, bbox_mapping -from .base import BaseDetector -from .test_mixins import RPNTestMixin +from mmdet.core import bbox_mapping, tensor2imgs from .. import builder from ..registry import DETECTORS +from .base import BaseDetector +from .test_mixins import RPNTestMixin @DETECTORS.register_module diff --git a/mmdet/models/detectors/single_stage.py b/mmdet/models/detectors/single_stage.py index 6f73b34a976e76f1a5a117c42c9de2e81f41f9ff..f7e0fa6f82d9fec45bf65301c902ed5f256f83d0 100644 --- a/mmdet/models/detectors/single_stage.py +++ b/mmdet/models/detectors/single_stage.py @@ -1,9 +1,9 @@ import torch.nn as nn -from .base import BaseDetector +from mmdet.core import bbox2result from .. import builder from ..registry import DETECTORS -from mmdet.core import bbox2result +from .base import BaseDetector @DETECTORS.register_module diff --git a/mmdet/models/detectors/test_mixins.py b/mmdet/models/detectors/test_mixins.py index 6924818d0b6bf0b8340c3ef509b60ab1b0e9ba85..1abd6094644bb5ee2779401c8ed31525cf997903 100644 --- a/mmdet/models/detectors/test_mixins.py +++ b/mmdet/models/detectors/test_mixins.py @@ -1,5 +1,5 @@ -from mmdet.core import (bbox2roi, bbox_mapping, merge_aug_proposals, - merge_aug_bboxes, merge_aug_masks, multiclass_nms) +from mmdet.core import (bbox2roi, bbox_mapping, merge_aug_bboxes, + merge_aug_masks, merge_aug_proposals, multiclass_nms) class RPNTestMixin(object): diff --git a/mmdet/models/detectors/two_stage.py b/mmdet/models/detectors/two_stage.py index f70510cecaf633bc140f5d0280b6040db7788e73..e1536b54b5a0ca3595890ce57bc335ec11ef7766 100644 --- a/mmdet/models/detectors/two_stage.py +++ b/mmdet/models/detectors/two_stage.py @@ -1,11 +1,11 @@ import torch import torch.nn as nn -from .base import BaseDetector -from .test_mixins import RPNTestMixin, BBoxTestMixin, MaskTestMixin +from mmdet.core import bbox2result, bbox2roi, build_assigner, build_sampler from .. import builder from ..registry import DETECTORS -from mmdet.core import bbox2roi, bbox2result, build_assigner, build_sampler +from .base import BaseDetector +from .test_mixins import BBoxTestMixin, MaskTestMixin, RPNTestMixin @DETECTORS.register_module diff --git a/mmdet/models/losses/balanced_l1_loss.py b/mmdet/models/losses/balanced_l1_loss.py index 8593396d73e9cd35cdd5e2da4e9b3cece24176bb..fab60dbc61081a69460c6684fc9fcb792bce7087 100644 --- a/mmdet/models/losses/balanced_l1_loss.py +++ b/mmdet/models/losses/balanced_l1_loss.py @@ -2,8 +2,8 @@ import numpy as np import torch import torch.nn as nn -from .utils import weighted_loss from ..registry import LOSSES +from .utils import weighted_loss @weighted_loss diff --git a/mmdet/models/losses/cross_entropy_loss.py b/mmdet/models/losses/cross_entropy_loss.py index fe10b866456ed8bc88910733ba0b14d18d817af6..dd9d4776f87b93397ece03a49f5a2e30dcb174cd 100644 --- a/mmdet/models/losses/cross_entropy_loss.py +++ b/mmdet/models/losses/cross_entropy_loss.py @@ -2,8 +2,8 @@ import torch import torch.nn as nn import torch.nn.functional as F -from .utils import weight_reduce_loss from ..registry import LOSSES +from .utils import weight_reduce_loss def cross_entropy(pred, label, weight=None, reduction='mean', avg_factor=None): diff --git a/mmdet/models/losses/focal_loss.py b/mmdet/models/losses/focal_loss.py index 7a463560d0be442ac342543ccf0592a2aa674a26..6b28e1257ad871da9a49a0045d02853f42ca9ab6 100644 --- a/mmdet/models/losses/focal_loss.py +++ b/mmdet/models/losses/focal_loss.py @@ -2,8 +2,8 @@ import torch.nn as nn import torch.nn.functional as F from mmdet.ops import sigmoid_focal_loss as _sigmoid_focal_loss -from .utils import weight_reduce_loss from ..registry import LOSSES +from .utils import weight_reduce_loss # This method is only for debugging diff --git a/mmdet/models/losses/iou_loss.py b/mmdet/models/losses/iou_loss.py index 011ff3620fe9562f57124970b323386493221319..cf2499463d94a557e9ca85844c1717f186be3833 100644 --- a/mmdet/models/losses/iou_loss.py +++ b/mmdet/models/losses/iou_loss.py @@ -2,8 +2,8 @@ import torch import torch.nn as nn from mmdet.core import bbox_overlaps -from .utils import weighted_loss from ..registry import LOSSES +from .utils import weighted_loss @weighted_loss diff --git a/mmdet/models/losses/mse_loss.py b/mmdet/models/losses/mse_loss.py index a50f4592017e4413989874ea19342edad94fead7..a868b2be97ce2578c8e510986c848a314a783f52 100644 --- a/mmdet/models/losses/mse_loss.py +++ b/mmdet/models/losses/mse_loss.py @@ -1,8 +1,8 @@ import torch.nn as nn import torch.nn.functional as F -from .utils import weighted_loss from ..registry import LOSSES +from .utils import weighted_loss mse_loss = weighted_loss(F.mse_loss) diff --git a/mmdet/models/losses/smooth_l1_loss.py b/mmdet/models/losses/smooth_l1_loss.py index 75d71e8a9c4da5220dea44b2d5d418c4bc22101a..bc340730b2ec0db938508dfc94e71369484d1918 100644 --- a/mmdet/models/losses/smooth_l1_loss.py +++ b/mmdet/models/losses/smooth_l1_loss.py @@ -1,8 +1,8 @@ import torch import torch.nn as nn -from .utils import weighted_loss from ..registry import LOSSES +from .utils import weighted_loss @weighted_loss diff --git a/mmdet/models/mask_heads/fcn_mask_head.py b/mmdet/models/mask_heads/fcn_mask_head.py index af5cee853db176a00f0a3e63a04cee6652e7d802..96ebd11a4e8dde654ef655ae4f7ecc75d59bd23a 100644 --- a/mmdet/models/mask_heads/fcn_mask_head.py +++ b/mmdet/models/mask_heads/fcn_mask_head.py @@ -4,10 +4,10 @@ import pycocotools.mask as mask_util import torch import torch.nn as nn +from mmdet.core import auto_fp16, force_fp32, mask_target from ..builder import build_loss from ..registry import HEADS from ..utils import ConvModule -from mmdet.core import mask_target, force_fp32, auto_fp16 @HEADS.register_module diff --git a/mmdet/models/mask_heads/htc_mask_head.py b/mmdet/models/mask_heads/htc_mask_head.py index 9ba3ed72298a36ed63a185f581de889b72324f8d..7c8125543e6fba2441fcff2536054317ad8e241e 100644 --- a/mmdet/models/mask_heads/htc_mask_head.py +++ b/mmdet/models/mask_heads/htc_mask_head.py @@ -1,6 +1,6 @@ -from .fcn_mask_head import FCNMaskHead from ..registry import HEADS from ..utils import ConvModule +from .fcn_mask_head import FCNMaskHead @HEADS.register_module diff --git a/mmdet/models/mask_heads/maskiou_head.py b/mmdet/models/mask_heads/maskiou_head.py index 457a560cc1fe06a6ee390226aa7b92111e5e0343..704978fddb0892dbae6ca51776b026310596107f 100644 --- a/mmdet/models/mask_heads/maskiou_head.py +++ b/mmdet/models/mask_heads/maskiou_head.py @@ -2,8 +2,8 @@ import numpy as np import torch import torch.nn as nn from mmcv.cnn import kaiming_init, normal_init -from mmdet.core import force_fp32 +from mmdet.core import force_fp32 from ..builder import build_loss from ..registry import HEADS diff --git a/mmdet/models/necks/hrfpn.py b/mmdet/models/necks/hrfpn.py index 743eba6de19cf10e1b3dbd841c31dde053f9796b..06a8fbf4285b4a9576ef65bc881974746a1071f1 100644 --- a/mmdet/models/necks/hrfpn.py +++ b/mmdet/models/necks/hrfpn.py @@ -1,11 +1,11 @@ import torch import torch.nn as nn import torch.nn.functional as F -from torch.utils.checkpoint import checkpoint from mmcv.cnn.weight_init import caffe2_xavier_init +from torch.utils.checkpoint import checkpoint -from ..utils import ConvModule from ..registry import NECKS +from ..utils import ConvModule @NECKS.register_module diff --git a/mmdet/models/plugins/generalized_attention.py b/mmdet/models/plugins/generalized_attention.py index 7786837ba9238fc4871b69d70351c71ec92c7312..9517776fe7e9a10b66fbc4db762541dacc96183e 100644 --- a/mmdet/models/plugins/generalized_attention.py +++ b/mmdet/models/plugins/generalized_attention.py @@ -1,9 +1,9 @@ +import math + +import numpy as np import torch import torch.nn as nn import torch.nn.functional as F - -import math -import numpy as np from mmcv.cnn import kaiming_init diff --git a/mmdet/models/utils/conv_module.py b/mmdet/models/utils/conv_module.py index ef9a538f85932402c5faa1cbf5a0176b426ee995..f2bddc445b5eb5217695b734cf8a6d4006915033 100644 --- a/mmdet/models/utils/conv_module.py +++ b/mmdet/models/utils/conv_module.py @@ -1,7 +1,7 @@ import warnings import torch.nn as nn -from mmcv.cnn import kaiming_init, constant_init +from mmcv.cnn import constant_init, kaiming_init from .conv_ws import ConvWS2d from .norm import build_norm_layer diff --git a/mmdet/ops/nms/nms_wrapper.py b/mmdet/ops/nms/nms_wrapper.py index 8ce5bc443a66e4cbf6b6cd45d61b1a22989c9a90..03215f1249df4cc54b8e65aca737fcb3b4810be4 100644 --- a/mmdet/ops/nms/nms_wrapper.py +++ b/mmdet/ops/nms/nms_wrapper.py @@ -1,7 +1,7 @@ import numpy as np import torch -from . import nms_cuda, nms_cpu +from . import nms_cpu, nms_cuda from .soft_nms_cpu import soft_nms_cpu diff --git a/mmdet/ops/roi_align/gradcheck.py b/mmdet/ops/roi_align/gradcheck.py index 394cd69c5064e097becf12752755ee510045193b..136456b398b0ac4caab113e996b6f4d0548fee5c 100644 --- a/mmdet/ops/roi_align/gradcheck.py +++ b/mmdet/ops/roi_align/gradcheck.py @@ -1,11 +1,12 @@ +import os.path as osp +import sys + import numpy as np import torch from torch.autograd import gradcheck -import os.path as osp -import sys sys.path.append(osp.abspath(osp.join(__file__, '../../'))) -from roi_align import RoIAlign # noqa: E402 +from roi_align import RoIAlign # noqa: E402, isort:skip feat_size = 15 spatial_scale = 1.0 / 8 diff --git a/mmdet/ops/roi_pool/gradcheck.py b/mmdet/ops/roi_pool/gradcheck.py index c39616086a240cf57cf115d4264eb32b9cc9f7c7..d11af790241baeb84af617211c7bf0a95e7a2dbb 100644 --- a/mmdet/ops/roi_pool/gradcheck.py +++ b/mmdet/ops/roi_pool/gradcheck.py @@ -1,10 +1,11 @@ +import os.path as osp +import sys + import torch from torch.autograd import gradcheck -import os.path as osp -import sys sys.path.append(osp.abspath(osp.join(__file__, '../../'))) -from roi_pool import RoIPool # noqa: E402 +from roi_pool import RoIPool # noqa: E402, isort:skip feat = torch.randn(4, 16, 15, 15, requires_grad=True).cuda() rois = torch.Tensor([[0, 0, 0, 50, 50], [0, 10, 30, 43, 55], diff --git a/tools/publish_model.py b/tools/publish_model.py index 39795f14a59cf526cae0a5ed46e185a6871f632c..a049f17674b7a1aa730057e5cc294d2368fe707c 100644 --- a/tools/publish_model.py +++ b/tools/publish_model.py @@ -1,5 +1,6 @@ import argparse import subprocess + import torch diff --git a/tools/test.py b/tools/test.py index f3a3f25304059c702db2c3413400623d9291c885..c0fdec700ca63b3f68f78187ad1f0ec4d3021db2 100644 --- a/tools/test.py +++ b/tools/test.py @@ -7,11 +7,11 @@ import tempfile import mmcv import torch import torch.distributed as dist -from mmcv.runner import load_checkpoint, get_dist_info from mmcv.parallel import MMDataParallel, MMDistributedDataParallel +from mmcv.runner import get_dist_info, load_checkpoint from mmdet.apis import init_dist -from mmdet.core import results2json, coco_eval, wrap_fp16_model +from mmdet.core import coco_eval, results2json, wrap_fp16_model from mmdet.datasets import build_dataloader, build_dataset from mmdet.models import build_detector diff --git a/tools/train.py b/tools/train.py index 8c3290a89a3aa4686aed87c888136c17e3c69e9f..7909cde157769993cb1c4d789af67ba4b666042c 100644 --- a/tools/train.py +++ b/tools/train.py @@ -1,15 +1,15 @@ from __future__ import division - import argparse import os + +import torch from mmcv import Config from mmdet import __version__ +from mmdet.apis import (get_root_logger, init_dist, set_random_seed, + train_detector) from mmdet.datasets import build_dataset -from mmdet.apis import (train_detector, init_dist, get_root_logger, - set_random_seed) from mmdet.models import build_detector -import torch def parse_args():