diff --git a/.style.yapf b/.style.yapf
new file mode 100644
index 0000000000000000000000000000000000000000..286a3f1d7ae2ae8eb6374043fff78b7ff71f1786
--- /dev/null
+++ b/.style.yapf
@@ -0,0 +1,4 @@
+[style]
+BASED_ON_STYLE = pep8
+BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF = true
+SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN = true
diff --git a/configs/dcn/cascade_mask_rcnn_dconv_c3-c5_r50_fpn_1x.py b/configs/dcn/cascade_mask_rcnn_dconv_c3-c5_r50_fpn_1x.py
index afd31839e5987e76f26364d68ef462d3190f29fe..711231eaac99977a143e8a1a2f5a1354aedcce79 100644
--- a/configs/dcn/cascade_mask_rcnn_dconv_c3-c5_r50_fpn_1x.py
+++ b/configs/dcn/cascade_mask_rcnn_dconv_c3-c5_r50_fpn_1x.py
@@ -11,9 +11,7 @@ model = dict(
         frozen_stages=1,
         style='pytorch',
         dcn=dict(
-            modulated=False,
-            deformable_groups=1,
-            fallback_on_stride=False),
+            modulated=False, deformable_groups=1, fallback_on_stride=False),
         stage_with_dcn=(False, True, True, True)),
     neck=dict(
         type='FPN',
diff --git a/configs/dcn/cascade_rcnn_dconv_c3-c5_r50_fpn_1x.py b/configs/dcn/cascade_rcnn_dconv_c3-c5_r50_fpn_1x.py
index 19f281f0cc4cbe5b910be388e4cb28ab089b0f9e..cc00d912f48171ea7c44fd119afe81424f21e21e 100644
--- a/configs/dcn/cascade_rcnn_dconv_c3-c5_r50_fpn_1x.py
+++ b/configs/dcn/cascade_rcnn_dconv_c3-c5_r50_fpn_1x.py
@@ -11,9 +11,7 @@ model = dict(
         frozen_stages=1,
         style='pytorch',
         dcn=dict(
-            modulated=False,
-            deformable_groups=1,
-            fallback_on_stride=False),
+            modulated=False, deformable_groups=1, fallback_on_stride=False),
         stage_with_dcn=(False, True, True, True)),
     neck=dict(
         type='FPN',
diff --git a/configs/dcn/faster_rcnn_dconv_c3-c5_r50_fpn_1x.py b/configs/dcn/faster_rcnn_dconv_c3-c5_r50_fpn_1x.py
index 5d24d81e15c91a48187c8cfe211bb6926cf6b8b5..5e47eaedd7dd05a0df483df0512b6df9da346ab6 100644
--- a/configs/dcn/faster_rcnn_dconv_c3-c5_r50_fpn_1x.py
+++ b/configs/dcn/faster_rcnn_dconv_c3-c5_r50_fpn_1x.py
@@ -10,9 +10,7 @@ model = dict(
         frozen_stages=1,
         style='pytorch',
         dcn=dict(
-            modulated=False,
-            deformable_groups=1,
-            fallback_on_stride=False),
+            modulated=False, deformable_groups=1, fallback_on_stride=False),
         stage_with_dcn=(False, True, True, True)),
     neck=dict(
         type='FPN',
diff --git a/configs/dcn/faster_rcnn_mdconv_c3-c5_r50_fpn_1x.py b/configs/dcn/faster_rcnn_mdconv_c3-c5_r50_fpn_1x.py
index 10279acc89376b5353d788f832a5017b8504d71a..73dc579ba3535720f58c7aecf7d8363c376843b1 100644
--- a/configs/dcn/faster_rcnn_mdconv_c3-c5_r50_fpn_1x.py
+++ b/configs/dcn/faster_rcnn_mdconv_c3-c5_r50_fpn_1x.py
@@ -10,9 +10,7 @@ model = dict(
         frozen_stages=1,
         style='pytorch',
         dcn=dict(
-            modulated=True,
-            deformable_groups=1,
-            fallback_on_stride=False),
+            modulated=True, deformable_groups=1, fallback_on_stride=False),
         stage_with_dcn=(False, True, True, True)),
     neck=dict(
         type='FPN',
diff --git a/configs/dcn/mask_rcnn_dconv_c3-c5_r50_fpn_1x.py b/configs/dcn/mask_rcnn_dconv_c3-c5_r50_fpn_1x.py
index 33259432922adc543204dfaf41343093bba16aed..8135f098e9a00a0b75c14160c29292f4e546b6a3 100644
--- a/configs/dcn/mask_rcnn_dconv_c3-c5_r50_fpn_1x.py
+++ b/configs/dcn/mask_rcnn_dconv_c3-c5_r50_fpn_1x.py
@@ -10,9 +10,7 @@ model = dict(
         frozen_stages=1,
         style='pytorch',
         dcn=dict(
-            modulated=False,
-            deformable_groups=1,
-            fallback_on_stride=False),
+            modulated=False, deformable_groups=1, fallback_on_stride=False),
         stage_with_dcn=(False, True, True, True)),
     neck=dict(
         type='FPN',
diff --git a/configs/gn+ws/faster_rcnn_r50_fpn_gn_ws_1x.py b/configs/gn+ws/faster_rcnn_r50_fpn_gn_ws_1x.py
index ef635839bb026a747154622285a67cef6a37e600..396993faff4698d3c40d2dc07f154cbfe33f7205 100644
--- a/configs/gn+ws/faster_rcnn_r50_fpn_gn_ws_1x.py
+++ b/configs/gn+ws/faster_rcnn_r50_fpn_gn_ws_1x.py
@@ -99,9 +99,7 @@ test_cfg = dict(
         nms_thr=0.7,
         min_bbox_size=0),
     rcnn=dict(
-        score_thr=0.05,
-        nms=dict(type='nms', iou_thr=0.5),
-        max_per_img=100))
+        score_thr=0.05, nms=dict(type='nms', iou_thr=0.5), max_per_img=100))
 # dataset settings
 dataset_type = 'CocoDataset'
 data_root = 'data/coco/'
diff --git a/mmdet/apis/inference.py b/mmdet/apis/inference.py
index d2f455ebfa66d9b33b7d6035e4fc4962b0bac32d..222fc8319f1d2d07c4cfdfd7a246131b649489cc 100644
--- a/mmdet/apis/inference.py
+++ b/mmdet/apis/inference.py
@@ -124,8 +124,7 @@ def show_result(img, result, class_names, score_thr=0.3, out_file=None):
         segms = mmcv.concat_list(segm_result)
         inds = np.where(bboxes[:, -1] > score_thr)[0]
         for i in inds:
-            color_mask = np.random.randint(
-                0, 256, (1, 3), dtype=np.uint8)
+            color_mask = np.random.randint(0, 256, (1, 3), dtype=np.uint8)
             mask = maskUtils.decode(segms[i]).astype(np.bool)
             img[mask] = img[mask] * 0.5 + color_mask * 0.5
     # draw bounding boxes
diff --git a/mmdet/apis/train.py b/mmdet/apis/train.py
index 6732664b3b049ee10f4337d6bda946b947c4e789..44ec2cc321259433fc87a5fde049b54958b197dc 100644
--- a/mmdet/apis/train.py
+++ b/mmdet/apis/train.py
@@ -91,8 +91,8 @@ def build_optimizer(model, optimizer_cfg):
     paramwise_options = optimizer_cfg.pop('paramwise_options', None)
     # if no paramwise option is specified, just use the global setting
     if paramwise_options is None:
-        return obj_from_dict(optimizer_cfg, torch.optim,
-                             dict(params=model.parameters()))
+        return obj_from_dict(
+            optimizer_cfg, torch.optim, dict(params=model.parameters()))
     else:
         assert isinstance(paramwise_options, dict)
         # get base lr and weight decay
diff --git a/mmdet/core/bbox/assign_sampling.py b/mmdet/core/bbox/assign_sampling.py
index 70d9fdf04257d8b908b654ba2791923b3a7fe2b2..4267174bbece23c9b49a35f81f01533eeeef1e98 100644
--- a/mmdet/core/bbox/assign_sampling.py
+++ b/mmdet/core/bbox/assign_sampling.py
@@ -7,8 +7,7 @@ def build_assigner(cfg, **kwargs):
     if isinstance(cfg, assigners.BaseAssigner):
         return cfg
     elif isinstance(cfg, dict):
-        return mmcv.runner.obj_from_dict(
-            cfg, assigners, default_args=kwargs)
+        return mmcv.runner.obj_from_dict(cfg, assigners, default_args=kwargs)
     else:
         raise TypeError('Invalid type {} for building a sampler'.format(
             type(cfg)))
@@ -18,8 +17,7 @@ def build_sampler(cfg, **kwargs):
     if isinstance(cfg, samplers.BaseSampler):
         return cfg
     elif isinstance(cfg, dict):
-        return mmcv.runner.obj_from_dict(
-            cfg, samplers, default_args=kwargs)
+        return mmcv.runner.obj_from_dict(cfg, samplers, default_args=kwargs)
     else:
         raise TypeError('Invalid type {} for building a sampler'.format(
             type(cfg)))
diff --git a/mmdet/core/evaluation/mean_ap.py b/mmdet/core/evaluation/mean_ap.py
index d69eda714560bb447432d32d48e0952b17ac1cc5..8f0474aae21a530efc173ea426a08d1691daab72 100644
--- a/mmdet/core/evaluation/mean_ap.py
+++ b/mmdet/core/evaluation/mean_ap.py
@@ -261,8 +261,8 @@ def eval_map(det_results,
         cls_dets, cls_gts, cls_gt_ignore = get_cls_results(
             det_results, gt_bboxes, gt_labels, gt_ignore, i)
         # calculate tp and fp for each image
-        tpfp_func = (tpfp_imagenet
-                     if dataset in ['det', 'vid'] else tpfp_default)
+        tpfp_func = (
+            tpfp_imagenet if dataset in ['det', 'vid'] else tpfp_default)
         tpfp = [
             tpfp_func(cls_dets[j], cls_gts[j], cls_gt_ignore[j], iou_thr,
                       area_ranges) for j in range(len(cls_dets))
diff --git a/mmdet/core/post_processing/bbox_nms.py b/mmdet/core/post_processing/bbox_nms.py
index 01beecd43abc7641d43773b192f988a55f4295d9..cb3fe21e036ee33cabc027567c26f651ac7424ef 100644
--- a/mmdet/core/post_processing/bbox_nms.py
+++ b/mmdet/core/post_processing/bbox_nms.py
@@ -45,9 +45,8 @@ def multiclass_nms(multi_bboxes,
             _scores *= score_factors[cls_inds]
         cls_dets = torch.cat([_bboxes, _scores[:, None]], dim=1)
         cls_dets, _ = nms_op(cls_dets, **nms_cfg_)
-        cls_labels = multi_bboxes.new_full((cls_dets.shape[0], ),
-                                           i - 1,
-                                           dtype=torch.long)
+        cls_labels = multi_bboxes.new_full(
+            (cls_dets.shape[0], ), i - 1, dtype=torch.long)
         bboxes.append(cls_dets)
         labels.append(cls_labels)
     if bboxes:
diff --git a/mmdet/datasets/extra_aug.py b/mmdet/datasets/extra_aug.py
index c9e0734da130486c912e07a2043c53fdcf26c442..a9f4f44c5cce27a71bc7af989436e7a0842d1937 100644
--- a/mmdet/datasets/extra_aug.py
+++ b/mmdet/datasets/extra_aug.py
@@ -91,9 +91,7 @@ class Expand(object):
 
 class RandomCrop(object):
 
-    def __init__(self,
-                 min_ious=(0.1, 0.3, 0.5, 0.7, 0.9),
-                 min_crop_size=0.3):
+    def __init__(self, min_ious=(0.1, 0.3, 0.5, 0.7, 0.9), min_crop_size=0.3):
         # 1: return ori img
         self.sample_mode = (1, *min_ious, 0)
         self.min_crop_size = min_crop_size
diff --git a/mmdet/datasets/loader/__init__.py b/mmdet/datasets/loader/__init__.py
index a3d4fdd2cbbe85b26b4c5fa4898315accbe94c0a..1f23fa4436df8587cfa1476d28673117fa0c5e83 100644
--- a/mmdet/datasets/loader/__init__.py
+++ b/mmdet/datasets/loader/__init__.py
@@ -1,6 +1,4 @@
 from .build_loader import build_dataloader
 from .sampler import GroupSampler, DistributedGroupSampler
 
-__all__ = [
-    'GroupSampler', 'DistributedGroupSampler', 'build_dataloader'
-]
+__all__ = ['GroupSampler', 'DistributedGroupSampler', 'build_dataloader']
diff --git a/mmdet/datasets/loader/build_loader.py b/mmdet/datasets/loader/build_loader.py
index 248f8f8900dd5217d4128f6058146f968f6c65bc..8759b0612638479247e1a536eca895224aebcbd0 100644
--- a/mmdet/datasets/loader/build_loader.py
+++ b/mmdet/datasets/loader/build_loader.py
@@ -25,10 +25,8 @@ def build_dataloader(dataset,
             sampler = DistributedGroupSampler(dataset, imgs_per_gpu,
                                               world_size, rank)
         else:
-            sampler = DistributedSampler(dataset,
-                                         world_size,
-                                         rank,
-                                         shuffle=False)
+            sampler = DistributedSampler(
+                dataset, world_size, rank, shuffle=False)
         batch_size = imgs_per_gpu
         num_workers = workers_per_gpu
     else:
@@ -36,13 +34,13 @@ def build_dataloader(dataset,
         batch_size = num_gpus * imgs_per_gpu
         num_workers = num_gpus * workers_per_gpu
 
-    data_loader = DataLoader(dataset,
-                             batch_size=batch_size,
-                             sampler=sampler,
-                             num_workers=num_workers,
-                             collate_fn=partial(collate,
-                                                samples_per_gpu=imgs_per_gpu),
-                             pin_memory=False,
-                             **kwargs)
+    data_loader = DataLoader(
+        dataset,
+        batch_size=batch_size,
+        sampler=sampler,
+        num_workers=num_workers,
+        collate_fn=partial(collate, samples_per_gpu=imgs_per_gpu),
+        pin_memory=False,
+        **kwargs)
 
     return data_loader
diff --git a/mmdet/datasets/loader/sampler.py b/mmdet/datasets/loader/sampler.py
index d2eef23bf780b97ee5839617f75b4b1fc79d1826..1e454b741c8e2dbee10ba25b928a13ba1da18392 100644
--- a/mmdet/datasets/loader/sampler.py
+++ b/mmdet/datasets/loader/sampler.py
@@ -139,8 +139,8 @@ class DistributedGroupSampler(Sampler):
 
         indices = [
             indices[j] for i in list(
-                torch.randperm(len(indices) // self.samples_per_gpu,
-                               generator=g))
+                torch.randperm(
+                    len(indices) // self.samples_per_gpu, generator=g))
             for j in range(i * self.samples_per_gpu, (i + 1) *
                            self.samples_per_gpu)
         ]
diff --git a/mmdet/datasets/transforms.py b/mmdet/datasets/transforms.py
index df36590020c98c10cce118a72df60977cb4109aa..ff575dba3f1b13a9df5392c059e2a98985fd4030 100644
--- a/mmdet/datasets/transforms.py
+++ b/mmdet/datasets/transforms.py
@@ -34,8 +34,8 @@ class ImageTransform(object):
         else:
             img, w_scale, h_scale = mmcv.imresize(
                 img, scale, return_scale=True)
-            scale_factor = np.array([w_scale, h_scale, w_scale, h_scale],
-                                    dtype=np.float32)
+            scale_factor = np.array(
+                [w_scale, h_scale, w_scale, h_scale], dtype=np.float32)
         img_shape = img.shape
         img = mmcv.imnormalize(img, self.mean, self.std, self.to_rgb)
         if flip:
diff --git a/mmdet/models/anchor_heads/anchor_head.py b/mmdet/models/anchor_heads/anchor_head.py
index 54096a4f814da76788b88f6e0c0d2355485a2957..881415be267d91d5ab097f2f316cef98b7a4c91d 100644
--- a/mmdet/models/anchor_heads/anchor_head.py
+++ b/mmdet/models/anchor_heads/anchor_head.py
@@ -196,8 +196,9 @@ class AnchorHead(nn.Module):
             return None
         (labels_list, label_weights_list, bbox_targets_list, bbox_weights_list,
          num_total_pos, num_total_neg) = cls_reg_targets
-        num_total_samples = (num_total_pos if self.cls_focal_loss else
-                             num_total_pos + num_total_neg)
+        num_total_samples = (
+            num_total_pos
+            if self.cls_focal_loss else num_total_pos + num_total_neg)
         losses_cls, losses_reg = multi_apply(
             self.loss_single,
             cls_scores,
diff --git a/mmdet/models/backbones/resnet.py b/mmdet/models/backbones/resnet.py
index 564b5657cb51810efc2241e6964b9f432c9af811..d1db1dda7d87d810db49819a25de04d0fc3346ae 100644
--- a/mmdet/models/backbones/resnet.py
+++ b/mmdet/models/backbones/resnet.py
@@ -43,12 +43,7 @@ class BasicBlock(nn.Module):
             bias=False)
         self.add_module(self.norm1_name, norm1)
         self.conv2 = build_conv_layer(
-            conv_cfg,
-            planes,
-            planes,
-            3,
-            padding=1,
-            bias=False)
+            conv_cfg, planes, planes, 3, padding=1, bias=False)
         self.add_module(self.norm2_name, norm2)
 
         self.relu = nn.ReLU(inplace=True)
diff --git a/mmdet/models/bbox_heads/convfc_bbox_head.py b/mmdet/models/bbox_heads/convfc_bbox_head.py
index c0e715415f8b8eb5f519dd25e22d9df757d299c8..2ce687ed07b7c0b66c4b96b796d26ab8c4ec95aa 100644
--- a/mmdet/models/bbox_heads/convfc_bbox_head.py
+++ b/mmdet/models/bbox_heads/convfc_bbox_head.py
@@ -94,8 +94,8 @@ class ConvFCBBoxHead(BBoxHead):
         branch_convs = nn.ModuleList()
         if num_branch_convs > 0:
             for i in range(num_branch_convs):
-                conv_in_channels = (last_layer_dim
-                                    if i == 0 else self.conv_out_channels)
+                conv_in_channels = (
+                    last_layer_dim if i == 0 else self.conv_out_channels)
                 branch_convs.append(
                     ConvModule(
                         conv_in_channels,
@@ -114,8 +114,8 @@ class ConvFCBBoxHead(BBoxHead):
                     or self.num_shared_fcs == 0) and not self.with_avg_pool:
                 last_layer_dim *= (self.roi_feat_size * self.roi_feat_size)
             for i in range(num_branch_fcs):
-                fc_in_channels = (last_layer_dim
-                                  if i == 0 else self.fc_out_channels)
+                fc_in_channels = (
+                    last_layer_dim if i == 0 else self.fc_out_channels)
                 branch_fcs.append(
                     nn.Linear(fc_in_channels, self.fc_out_channels))
             last_layer_dim = self.fc_out_channels
diff --git a/mmdet/models/detectors/cascade_rcnn.py b/mmdet/models/detectors/cascade_rcnn.py
index 6eb83e8eaa85b50f644225e524fde9c6689fd66f..f0564c9eb16ccf5184f94d29e33c889fbe80c143 100644
--- a/mmdet/models/detectors/cascade_rcnn.py
+++ b/mmdet/models/detectors/cascade_rcnn.py
@@ -186,8 +186,8 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
                                                 gt_labels, rcnn_train_cfg)
             loss_bbox = bbox_head.loss(cls_score, bbox_pred, *bbox_targets)
             for name, value in loss_bbox.items():
-                losses['s{}.{}'.format(
-                    i, name)] = (value * lw if 'loss' in name else value)
+                losses['s{}.{}'.format(i, name)] = (
+                    value * lw if 'loss' in name else value)
 
             # mask head forward and loss
             if self.with_mask:
@@ -224,8 +224,8 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
                     [res.pos_gt_labels for res in sampling_results])
                 loss_mask = mask_head.loss(mask_pred, mask_targets, pos_labels)
                 for name, value in loss_mask.items():
-                    losses['s{}.{}'.format(
-                        i, name)] = (value * lw if 'loss' in name else value)
+                    losses['s{}.{}'.format(i, name)] = (
+                        value * lw if 'loss' in name else value)
 
             # refine bboxes
             if i < self.num_stages - 1:
@@ -286,8 +286,9 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
                             [] for _ in range(mask_head.num_classes - 1)
                         ]
                     else:
-                        _bboxes = (det_bboxes[:, :4] * scale_factor
-                                   if rescale else det_bboxes)
+                        _bboxes = (
+                            det_bboxes[:, :4] * scale_factor
+                            if rescale else det_bboxes)
                         mask_rois = bbox2roi([_bboxes])
                         mask_feats = mask_roi_extractor(
                             x[:len(mask_roi_extractor.featmap_strides)],
@@ -324,8 +325,9 @@ class CascadeRCNN(BaseDetector, RPNTestMixin):
                     [] for _ in range(self.mask_head[-1].num_classes - 1)
                 ]
             else:
-                _bboxes = (det_bboxes[:, :4] * scale_factor
-                           if rescale else det_bboxes)
+                _bboxes = (
+                    det_bboxes[:, :4] * scale_factor
+                    if rescale else det_bboxes)
                 mask_rois = bbox2roi([_bboxes])
                 aug_masks = []
                 for i in range(self.num_stages):
diff --git a/mmdet/models/detectors/htc.py b/mmdet/models/detectors/htc.py
index b7ac7ae0cc9a9a05029c3a4508b1cfb349780982..0384aa99b110a6ecbf3ad5038ec9b07343fef28c 100644
--- a/mmdet/models/detectors/htc.py
+++ b/mmdet/models/detectors/htc.py
@@ -224,8 +224,8 @@ class HybridTaskCascade(CascadeRCNN):
             roi_labels = bbox_targets[0]
 
             for name, value in loss_bbox.items():
-                losses['s{}.{}'.format(
-                    i, name)] = (value * lw if 'loss' in name else value)
+                losses['s{}.{}'.format(i, name)] = (
+                    value * lw if 'loss' in name else value)
 
             # mask head forward and loss
             if self.with_mask:
@@ -253,8 +253,8 @@ class HybridTaskCascade(CascadeRCNN):
                                                      gt_masks, rcnn_train_cfg,
                                                      semantic_feat)
                 for name, value in loss_mask.items():
-                    losses['s{}.{}'.format(
-                        i, name)] = (value * lw if 'loss' in name else value)
+                    losses['s{}.{}'.format(i, name)] = (
+                        value * lw if 'loss' in name else value)
 
             # refine bboxes (same as Cascade R-CNN)
             if i < self.num_stages - 1 and not self.interleaved:
@@ -312,8 +312,9 @@ class HybridTaskCascade(CascadeRCNN):
                             [] for _ in range(mask_head.num_classes - 1)
                         ]
                     else:
-                        _bboxes = (det_bboxes[:, :4] * scale_factor
-                                   if rescale else det_bboxes)
+                        _bboxes = (
+                            det_bboxes[:, :4] * scale_factor
+                            if rescale else det_bboxes)
                         mask_pred = self._mask_forward_test(
                             i, x, _bboxes, semantic_feat=semantic_feat)
                         segm_result = mask_head.get_seg_masks(
@@ -345,8 +346,9 @@ class HybridTaskCascade(CascadeRCNN):
                     [] for _ in range(self.mask_head[-1].num_classes - 1)
                 ]
             else:
-                _bboxes = (det_bboxes[:, :4] * scale_factor
-                           if rescale else det_bboxes)
+                _bboxes = (
+                    det_bboxes[:, :4] * scale_factor
+                    if rescale else det_bboxes)
 
                 mask_rois = bbox2roi([_bboxes])
                 aug_masks = []
diff --git a/mmdet/models/detectors/test_mixins.py b/mmdet/models/detectors/test_mixins.py
index 709ee39ac2446bf78971960cb853fee00d599573..b64f2cda43059b9735d9b8a5beb50606d4192332 100644
--- a/mmdet/models/detectors/test_mixins.py
+++ b/mmdet/models/detectors/test_mixins.py
@@ -105,8 +105,8 @@ class MaskTestMixin(object):
         else:
             # if det_bboxes is rescaled to the original image size, we need to
             # rescale it back to the testing scale to obtain RoIs.
-            _bboxes = (det_bboxes[:, :4] * scale_factor
-                       if rescale else det_bboxes)
+            _bboxes = (
+                det_bboxes[:, :4] * scale_factor if rescale else det_bboxes)
             mask_rois = bbox2roi([_bboxes])
             mask_feats = self.mask_roi_extractor(
                 x[:len(self.mask_roi_extractor.featmap_strides)], mask_rois)
diff --git a/mmdet/models/mask_heads/fcn_mask_head.py b/mmdet/models/mask_heads/fcn_mask_head.py
index 9274e7c8cea60d3c3d5a606b5e9f3207aeacb7a5..0a5054c7a0ed38ffde90e8d1ff6c2d3e1810f257 100644
--- a/mmdet/models/mask_heads/fcn_mask_head.py
+++ b/mmdet/models/mask_heads/fcn_mask_head.py
@@ -43,8 +43,8 @@ class FCNMaskHead(nn.Module):
 
         self.convs = nn.ModuleList()
         for i in range(self.num_convs):
-            in_channels = (self.in_channels
-                           if i == 0 else self.conv_out_channels)
+            in_channels = (
+                self.in_channels if i == 0 else self.conv_out_channels)
             padding = (self.conv_kernel_size - 1) // 2
             self.convs.append(
                 ConvModule(
@@ -54,8 +54,8 @@ class FCNMaskHead(nn.Module):
                     padding=padding,
                     conv_cfg=conv_cfg,
                     norm_cfg=norm_cfg))
-        upsample_in_channels = (self.conv_out_channels
-                                if self.num_convs > 0 else in_channels)
+        upsample_in_channels = (
+            self.conv_out_channels if self.num_convs > 0 else in_channels)
         if self.upsample_method is None:
             self.upsample = None
         elif self.upsample_method == 'deconv':
@@ -69,9 +69,9 @@ class FCNMaskHead(nn.Module):
                 scale_factor=self.upsample_ratio, mode=self.upsample_method)
 
         out_channels = 1 if self.class_agnostic else self.num_classes
-        logits_in_channel = (self.conv_out_channels
-                             if self.upsample_method == 'deconv' else
-                             upsample_in_channels)
+        logits_in_channel = (
+            self.conv_out_channels
+            if self.upsample_method == 'deconv' else upsample_in_channels)
         self.conv_logits = nn.Conv2d(logits_in_channel, out_channels, 1)
         self.relu = nn.ReLU(inplace=True)
         self.debug_imgs = None
diff --git a/mmdet/models/mask_heads/fused_semantic_head.py b/mmdet/models/mask_heads/fused_semantic_head.py
index 12b8302ab11507234e3a78146f77a0ba67f4e242..6107423395c27361d8e3da311a106d31769d53af 100644
--- a/mmdet/models/mask_heads/fused_semantic_head.py
+++ b/mmdet/models/mask_heads/fused_semantic_head.py
@@ -85,10 +85,7 @@ class FusedSemanticHead(nn.Module):
         for i, feat in enumerate(feats):
             if i != self.fusion_level:
                 feat = F.interpolate(
-                    feat,
-                    size=fused_size,
-                    mode='bilinear',
-                    align_corners=True)
+                    feat, size=fused_size, mode='bilinear', align_corners=True)
                 x += self.lateral_convs[i](feat)
 
         for i in range(self.num_convs):
diff --git a/mmdet/models/registry.py b/mmdet/models/registry.py
index fc14bc11b6c6ab468e9791c0303b9606c7eed3ec..d5f8e67cfe96af410169af7295ff26ab88498179 100644
--- a/mmdet/models/registry.py
+++ b/mmdet/models/registry.py
@@ -22,8 +22,9 @@ class Registry(object):
             module (:obj:`nn.Module`): Module to be registered.
         """
         if not issubclass(module_class, nn.Module):
-            raise TypeError('module must be a child of nn.Module, but got {}'.
-                            format(module_class))
+            raise TypeError(
+                'module must be a child of nn.Module, but got {}'.format(
+                    module_class))
         module_name = module_class.__name__
         if module_name in self._module_dict:
             raise KeyError('{} is already registered in {}'.format(
diff --git a/mmdet/models/utils/conv_module.py b/mmdet/models/utils/conv_module.py
index 329b2352767949eab9c1e3d5adda52e1f23558e5..623d691259c8de23dda86d5795e82002e0b49ccd 100644
--- a/mmdet/models/utils/conv_module.py
+++ b/mmdet/models/utils/conv_module.py
@@ -98,15 +98,16 @@ class ConvModule(nn.Module):
             warnings.warn('ConvModule has norm and bias at the same time')
 
         # build convolution layer
-        self.conv = build_conv_layer(conv_cfg,
-                                     in_channels,
-                                     out_channels,
-                                     kernel_size,
-                                     stride=stride,
-                                     padding=padding,
-                                     dilation=dilation,
-                                     groups=groups,
-                                     bias=bias)
+        self.conv = build_conv_layer(
+            conv_cfg,
+            in_channels,
+            out_channels,
+            kernel_size,
+            stride=stride,
+            padding=padding,
+            dilation=dilation,
+            groups=groups,
+            bias=bias)
         # export the attributes of self.conv to a higher level for convenience
         self.in_channels = self.conv.in_channels
         self.out_channels = self.conv.out_channels
diff --git a/mmdet/models/utils/norm.py b/mmdet/models/utils/norm.py
index a912a19b5a3a5de5090865f28cebf230862b6375..d5687cbd9a31be259ee0b202800af53fbba8ca1a 100644
--- a/mmdet/models/utils/norm.py
+++ b/mmdet/models/utils/norm.py
@@ -1,6 +1,5 @@
 import torch.nn as nn
 
-
 norm_cfg = {
     # format: layer_type: (abbreviation, module)
     'BN': ('bn', nn.BatchNorm2d),
diff --git a/mmdet/ops/dcn/setup.py b/mmdet/ops/dcn/setup.py
index 020d5edc4b2308aa1a32092e7d75da599da27f28..96380181d848545d21aca6e33686a7bc33f57d94 100644
--- a/mmdet/ops/dcn/setup.py
+++ b/mmdet/ops/dcn/setup.py
@@ -8,8 +8,8 @@ setup(
             'src/deform_conv_cuda.cpp',
             'src/deform_conv_cuda_kernel.cu',
         ]),
-        CUDAExtension('deform_pool_cuda', [
-            'src/deform_pool_cuda.cpp', 'src/deform_pool_cuda_kernel.cu'
-        ]),
+        CUDAExtension(
+            'deform_pool_cuda',
+            ['src/deform_pool_cuda.cpp', 'src/deform_pool_cuda_kernel.cu']),
     ],
     cmdclass={'build_ext': BuildExtension})
diff --git a/tools/analyze_logs.py b/tools/analyze_logs.py
index b56f3defbd890926e0207eeefad160f231b4e9a9..c9f603f46fd3bba4226733c953b3d8bd2ef598d8 100644
--- a/tools/analyze_logs.py
+++ b/tools/analyze_logs.py
@@ -51,8 +51,8 @@ def plot_curve(log_dicts, args):
         for j, metric in enumerate(metrics):
             print('plot curve of {}, metric is {}'.format(
                 args.json_logs[i], metric))
-            assert metric in log_dict[
-                epochs[0]], '{} does not contain metric {}'.format(
+            assert metric in log_dict[epochs[
+                0]], '{} does not contain metric {}'.format(
                     args.json_logs[i], metric)
 
             if 'mAP' in metric:
diff --git a/tools/test.py b/tools/test.py
index dc94b6dfa0c4e50158281d4bbd255450eb5b3594..9719f45e3f881a7632bbd7f99187efe3181b35a3 100644
--- a/tools/test.py
+++ b/tools/test.py
@@ -63,15 +63,12 @@ def collect_results(result_part, size, tmpdir=None):
     if tmpdir is None:
         MAX_LEN = 512
         # 32 is whitespace
-        dir_tensor = torch.full((MAX_LEN, ),
-                                32,
-                                dtype=torch.uint8,
-                                device='cuda')
+        dir_tensor = torch.full(
+            (MAX_LEN, ), 32, dtype=torch.uint8, device='cuda')
         if rank == 0:
             tmpdir = tempfile.mkdtemp()
-            tmpdir = torch.tensor(bytearray(tmpdir.encode()),
-                                  dtype=torch.uint8,
-                                  device='cuda')
+            tmpdir = torch.tensor(
+                bytearray(tmpdir.encode()), dtype=torch.uint8, device='cuda')
             dir_tensor[:len(tmpdir)] = tmpdir
         dist.broadcast(dir_tensor, 0)
         tmpdir = dir_tensor.cpu().numpy().tobytes().decode().rstrip()
@@ -113,10 +110,11 @@ def parse_args():
         help='eval types')
     parser.add_argument('--show', action='store_true', help='show results')
     parser.add_argument('--tmpdir', help='tmp dir for writing some results')
-    parser.add_argument('--launcher',
-                        choices=['none', 'pytorch', 'slurm', 'mpi'],
-                        default='none',
-                        help='job launcher')
+    parser.add_argument(
+        '--launcher',
+        choices=['none', 'pytorch', 'slurm', 'mpi'],
+        default='none',
+        help='job launcher')
     parser.add_argument('--local_rank', type=int, default=0)
     args = parser.parse_args()
     return args
@@ -145,11 +143,12 @@ def main():
     # build the dataloader
     # TODO: support multiple images per gpu (only minor changes are needed)
     dataset = get_dataset(cfg.data.test)
-    data_loader = build_dataloader(dataset,
-                                   imgs_per_gpu=1,
-                                   workers_per_gpu=cfg.data.workers_per_gpu,
-                                   dist=distributed,
-                                   shuffle=False)
+    data_loader = build_dataloader(
+        dataset,
+        imgs_per_gpu=1,
+        workers_per_gpu=cfg.data.workers_per_gpu,
+        dist=distributed,
+        shuffle=False)
 
     # build the model and load checkpoint
     model = build_detector(cfg.model, train_cfg=None, test_cfg=cfg.test_cfg)
diff --git a/tools/train.py b/tools/train.py
index 97a253fd3a7f78daae5acb0360ae051a69b6034c..3e06d6f56cd6109f6788e84fd7284a852809a612 100644
--- a/tools/train.py
+++ b/tools/train.py
@@ -77,7 +77,8 @@ def main():
         # save mmdet version, config file content and class names in
         # checkpoints as meta data
         cfg.checkpoint_config.meta = dict(
-            mmdet_version=__version__, config=cfg.text,
+            mmdet_version=__version__,
+            config=cfg.text,
             classes=train_dataset.CLASSES)
     # add an attribute for visualization convenience
     model.CLASSES = train_dataset.CLASSES