diff --git a/.style.yapf b/.style.yapf new file mode 100644 index 0000000..286a3f1 --- /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 afd3183..711231e 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 @@ 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 19f281f..cc00d91 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 @@ 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 5d24d81..5e47eae 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 @@ 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 10279ac..73dc579 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 @@ 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 3325943..8135f09 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 @@ 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 ef63583..396993f 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 @@ 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 d2f455e..222fc83 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 6732664..44ec2cc 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 70d9fdf..4267174 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 d69eda7..8f0474a 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 01beecd..cb3fe21 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 c9e0734..a9f4f44 100644 --- a/mmdet/datasets/extra_aug.py +++ b/mmdet/datasets/extra_aug.py @@ -91,9 +91,7 @@ def __call__(self, img, boxes, labels): 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 a3d4fdd..1f23fa4 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 248f8f8..8759b06 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 d2eef23..1e454b7 100644 --- a/mmdet/datasets/loader/sampler.py +++ b/mmdet/datasets/loader/sampler.py @@ -139,8 +139,8 @@ def __iter__(self): 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 df36590..ff575db 100644 --- a/mmdet/datasets/transforms.py +++ b/mmdet/datasets/transforms.py @@ -34,8 +34,8 @@ def __call__(self, img, scale, flip=False, keep_ratio=True): 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 54096a4..881415b 100644 --- a/mmdet/models/anchor_heads/anchor_head.py +++ b/mmdet/models/anchor_heads/anchor_head.py @@ -196,8 +196,9 @@ def loss(self, 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 564b565..d1db1dd 100644 --- a/mmdet/models/backbones/resnet.py +++ b/mmdet/models/backbones/resnet.py @@ -43,12 +43,7 @@ def __init__(self, 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 c0e7154..2ce687e 100644 --- a/mmdet/models/bbox_heads/convfc_bbox_head.py +++ b/mmdet/models/bbox_heads/convfc_bbox_head.py @@ -94,8 +94,8 @@ def _add_conv_fc_branch(self, 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 @@ def _add_conv_fc_branch(self, 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 6eb83e8..f0564c9 100644 --- a/mmdet/models/detectors/cascade_rcnn.py +++ b/mmdet/models/detectors/cascade_rcnn.py @@ -186,8 +186,8 @@ def forward_train(self, 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 @@ def forward_train(self, [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 @@ def simple_test(self, img, img_meta, proposals=None, rescale=False): [] 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 @@ def simple_test(self, img, img_meta, proposals=None, rescale=False): [] 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 b7ac7ae..0384aa9 100644 --- a/mmdet/models/detectors/htc.py +++ b/mmdet/models/detectors/htc.py @@ -224,8 +224,8 @@ def forward_train(self, 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 @@ def forward_train(self, 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 @@ def simple_test(self, img, img_meta, proposals=None, rescale=False): [] 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 @@ def simple_test(self, img, img_meta, proposals=None, rescale=False): [] 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 709ee39..b64f2cd 100644 --- a/mmdet/models/detectors/test_mixins.py +++ b/mmdet/models/detectors/test_mixins.py @@ -105,8 +105,8 @@ def simple_test_mask(self, 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 9274e7c..0a5054c 100644 --- a/mmdet/models/mask_heads/fcn_mask_head.py +++ b/mmdet/models/mask_heads/fcn_mask_head.py @@ -43,8 +43,8 @@ def __init__(self, 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 @@ def __init__(self, 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 @@ def __init__(self, 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 12b8302..6107423 100644 --- a/mmdet/models/mask_heads/fused_semantic_head.py +++ b/mmdet/models/mask_heads/fused_semantic_head.py @@ -85,10 +85,7 @@ def forward(self, feats): 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 fc14bc1..d5f8e67 100644 --- a/mmdet/models/registry.py +++ b/mmdet/models/registry.py @@ -22,8 +22,9 @@ def _register_module(self, module_class): 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 329b235..623d691 100644 --- a/mmdet/models/utils/conv_module.py +++ b/mmdet/models/utils/conv_module.py @@ -98,15 +98,16 @@ def __init__(self, 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 a912a19..d5687cb 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 020d5ed..9638018 100644 --- a/mmdet/ops/dcn/setup.py +++ b/mmdet/ops/dcn/setup.py @@ -8,8 +8,8 @@ '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 b56f3de..c9f603f 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 dc94b6d..9719f45 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 97a253f..3e06d6f 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