From 11b6393bc1a6e1bd2d34c890dfb04941962af69e Mon Sep 17 00:00:00 2001 From: RangeKing Date: Wed, 28 Dec 2022 19:11:13 +0800 Subject: [PATCH 1/2] deprecating `np.bool` type alias --- mmdet/datasets/transforms/augment_wrappers.py | 4 +-- mmdet/datasets/transforms/loading.py | 12 ++++---- mmdet/datasets/transforms/transforms.py | 28 +++++++++---------- mmdet/evaluation/functional/mean_ap.py | 14 +++++----- mmdet/visualization/local_visualizer.py | 2 +- .../test_transforms/test_formatting.py | 2 +- .../test_transforms/test_loading.py | 2 +- .../test_transforms/test_transforms.py | 4 +-- tools/analysis_tools/browse_dataset.py | 3 +- 9 files changed, 35 insertions(+), 36 deletions(-) diff --git a/mmdet/datasets/transforms/augment_wrappers.py b/mmdet/datasets/transforms/augment_wrappers.py index d7ca1598890..19fae6efdf6 100644 --- a/mmdet/datasets/transforms/augment_wrappers.py +++ b/mmdet/datasets/transforms/augment_wrappers.py @@ -97,7 +97,7 @@ class AutoAugment(RandomChoice): - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - gt_masks (BitmapMasks | PolygonMasks) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - gt_seg_map (np.uint8) (optional) Modified Keys: @@ -178,7 +178,7 @@ class RandAugment(RandomChoice): - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - gt_masks (BitmapMasks | PolygonMasks) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - gt_seg_map (np.uint8) (optional) Modified Keys: diff --git a/mmdet/datasets/transforms/loading.py b/mmdet/datasets/transforms/loading.py index 00923e0c4ba..6136ad81fb7 100644 --- a/mmdet/datasets/transforms/loading.py +++ b/mmdet/datasets/transforms/loading.py @@ -218,7 +218,7 @@ class LoadAnnotations(MMCV_LoadAnnotations): - gt_bboxes_labels (np.int64) - gt_masks (BitmapMasks | PolygonMasks) - gt_seg_map (np.uint8) - - gt_ignore_flags (np.bool) + - gt_ignore_flags (bool) Args: with_bbox (bool): Whether to parse and load the bbox annotation. @@ -270,7 +270,7 @@ def _load_bboxes(self, results: dict) -> None: else: _, box_type_cls = get_box_type(self.box_type) results['gt_bboxes'] = box_type_cls(gt_bboxes, dtype=torch.float32) - results['gt_ignore_flags'] = np.array(gt_ignore_flags, dtype=np.bool) + results['gt_ignore_flags'] = np.array(gt_ignore_flags, dtype=bool) def _load_labels(self, results: dict) -> None: """Private function to load label annotations. @@ -356,7 +356,7 @@ def _process_masks(self, results: dict) -> list: gt_masks.append(gt_mask) # re-process gt_ignore_flags gt_ignore_flags.append(instance['ignore_flag']) - results['gt_ignore_flags'] = np.array(gt_ignore_flags, dtype=np.bool) + results['gt_ignore_flags'] = np.array(gt_ignore_flags, dtype=bool) return gt_masks def _load_masks(self, results: dict) -> None: @@ -485,7 +485,7 @@ class LoadPanopticAnnotations(LoadAnnotations): - gt_bboxes_labels (np.int64) - gt_masks (BitmapMasks | PolygonMasks) - gt_seg_map (np.uint8) - - gt_ignore_flags (np.bool) + - gt_ignore_flags (bool) Args: with_bbox (bool): Whether to parse and load the bbox annotation. @@ -667,7 +667,7 @@ class FilterAnnotations(BaseTransform): - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - gt_masks (BitmapMasks | PolygonMasks) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Modified Keys: @@ -758,7 +758,7 @@ class LoadEmptyAnnotations(BaseTransform): - gt_bboxes_labels (np.int64) - gt_masks (BitmapMasks | PolygonMasks) - gt_seg_map (np.uint8) - - gt_ignore_flags (np.bool) + - gt_ignore_flags (bool) Args: with_bbox (bool): Whether to load the pseudo bbox annotation. diff --git a/mmdet/datasets/transforms/transforms.py b/mmdet/datasets/transforms/transforms.py index 18b646bd26d..6037aba01f6 100644 --- a/mmdet/datasets/transforms/transforms.py +++ b/mmdet/datasets/transforms/transforms.py @@ -419,14 +419,14 @@ class RandomShift(BaseTransform): - img - gt_bboxes (BaseBoxes[torch.float32]) - gt_bboxes_labels (np.int64) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Modified Keys: - img - gt_bboxes - gt_bboxes_labels - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Args: prob (float): Probability of shifts. Defaults to 0.5. @@ -611,7 +611,7 @@ class RandomCrop(BaseTransform): - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - gt_masks (BitmapMasks | PolygonMasks) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - gt_seg_map (np.uint8) (optional) Modified Keys: @@ -1157,7 +1157,7 @@ class MinIoURandomCrop(BaseTransform): - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - gt_masks (BitmapMasks | PolygonMasks) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - gt_seg_map (np.uint8) (optional) Modified Keys: @@ -1554,7 +1554,7 @@ def _postprocess_results( if 'gt_ignore_flags' in results and isinstance( results['gt_ignore_flags'], list): results['gt_ignore_flags'] = np.array( - results['gt_ignore_flags'], dtype=np.bool) + results['gt_ignore_flags'], dtype=bool) if 'bboxes' in results: if isinstance(results['bboxes'], list): @@ -1656,7 +1656,7 @@ class RandomCenterCropPad(BaseTransform): - img_shape (tuple) - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Modified Keys: @@ -1664,7 +1664,7 @@ class RandomCenterCropPad(BaseTransform): - img_shape (tuple) - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Args: crop_size (tuple, optional): expected size after crop, final size will @@ -2094,7 +2094,7 @@ class Mosaic(BaseTransform): - img - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - mix_results (List[dict]) Modified Keys: @@ -2347,7 +2347,7 @@ class MixUp(BaseTransform): - img - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - mix_results (List[dict]) @@ -2549,7 +2549,7 @@ class RandomAffine(BaseTransform): - img - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Modified Keys: @@ -2791,7 +2791,7 @@ class CopyPaste(BaseTransform): - img - gt_bboxes (BaseBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - gt_masks (BitmapMasks) (optional) Modified Keys: @@ -2971,7 +2971,7 @@ class RandomErasing(BaseTransform): - img - gt_bboxes (HorizontalBoxes[torch.float32]) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - gt_masks (BitmapMasks) (optional) Modified Keys: @@ -3156,7 +3156,7 @@ class CachedMosaic(Mosaic): - img - gt_bboxes (np.float32) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) Modified Keys: @@ -3385,7 +3385,7 @@ class CachedMixUp(BaseTransform): - img - gt_bboxes (np.float32) (optional) - gt_bboxes_labels (np.int64) (optional) - - gt_ignore_flags (np.bool) (optional) + - gt_ignore_flags (bool) (optional) - mix_results (List[dict]) diff --git a/mmdet/evaluation/functional/mean_ap.py b/mmdet/evaluation/functional/mean_ap.py index 4f049d47965..989972a4846 100644 --- a/mmdet/evaluation/functional/mean_ap.py +++ b/mmdet/evaluation/functional/mean_ap.py @@ -93,8 +93,8 @@ def tpfp_imagenet(det_bboxes, # an indicator of ignored gts gt_ignore_inds = np.concatenate( - (np.zeros(gt_bboxes.shape[0], dtype=np.bool), - np.ones(gt_bboxes_ignore.shape[0], dtype=np.bool))) + (np.zeros(gt_bboxes.shape[0], + dtype=bool), np.ones(gt_bboxes_ignore.shape[0], dtype=bool))) # stack gt_bboxes and gt_bboxes_ignore for convenience gt_bboxes = np.vstack((gt_bboxes, gt_bboxes_ignore)) @@ -202,8 +202,8 @@ def tpfp_default(det_bboxes, # an indicator of ignored gts gt_ignore_inds = np.concatenate( - (np.zeros(gt_bboxes.shape[0], dtype=np.bool), - np.ones(gt_bboxes_ignore.shape[0], dtype=np.bool))) + (np.zeros(gt_bboxes.shape[0], + dtype=bool), np.ones(gt_bboxes_ignore.shape[0], dtype=bool))) # stack gt_bboxes and gt_bboxes_ignore for convenience gt_bboxes = np.vstack((gt_bboxes, gt_bboxes_ignore)) @@ -317,8 +317,8 @@ def tpfp_openimages(det_bboxes, # an indicator of ignored gts gt_ignore_inds = np.concatenate( - (np.zeros(gt_bboxes.shape[0], dtype=np.bool), - np.ones(gt_bboxes_ignore.shape[0], dtype=np.bool))) + (np.zeros(gt_bboxes.shape[0], + dtype=bool), np.ones(gt_bboxes_ignore.shape[0], dtype=bool))) # stack gt_bboxes and gt_bboxes_ignore for convenience gt_bboxes = np.vstack((gt_bboxes, gt_bboxes_ignore)) @@ -517,7 +517,7 @@ def get_cls_group_ofs(annotations, class_id): if ann.get('gt_is_group_ofs', None) is not None: gt_group_ofs.append(ann['gt_is_group_ofs'][gt_inds]) else: - gt_group_ofs.append(np.empty((0, 1), dtype=np.bool)) + gt_group_ofs.append(np.empty((0, 1), dtype=bool)) return gt_group_ofs diff --git a/mmdet/visualization/local_visualizer.py b/mmdet/visualization/local_visualizer.py index d0124179d5f..46f77b0e863 100644 --- a/mmdet/visualization/local_visualizer.py +++ b/mmdet/visualization/local_visualizer.py @@ -168,7 +168,7 @@ def _draw_instances(self, image: np.ndarray, instances: ['InstanceData'], elif isinstance(masks, (PolygonMasks, BitmapMasks)): masks = masks.to_ndarray() - masks = masks.astype(np.bool) + masks = masks.astype(bool) max_label = int(max(labels) if len(labels) > 0 else 0) mask_color = palette if self.mask_color is None \ diff --git a/tests/test_datasets/test_transforms/test_formatting.py b/tests/test_datasets/test_transforms/test_formatting.py index df6aaef4875..bd668cb44f6 100644 --- a/tests/test_datasets/test_transforms/test_formatting.py +++ b/tests/test_datasets/test_transforms/test_formatting.py @@ -35,7 +35,7 @@ def setUp(self): 'gt_masks': BitmapMasks(rng.rand(3, 300, 400), height=300, width=400), 'gt_bboxes_labels': rng.rand(3, ), - 'gt_ignore_flags': np.array([0, 0, 1], dtype=np.bool), + 'gt_ignore_flags': np.array([0, 0, 1], dtype=bool), 'proposals': rng.rand(2, 4), 'proposals_scores': rng.rand(2, ) } diff --git a/tests/test_datasets/test_transforms/test_loading.py b/tests/test_datasets/test_transforms/test_loading.py index e3d4159de27..74377c3e806 100644 --- a/tests/test_datasets/test_transforms/test_loading.py +++ b/tests/test_datasets/test_transforms/test_loading.py @@ -71,7 +71,7 @@ def test_load_bboxes(self): self.assertEqual(results['gt_bboxes'].dtype, np.float32) self.assertTrue((results['gt_ignore_flags'] == np.array([0, 0, 1])).all()) - self.assertEqual(results['gt_ignore_flags'].dtype, np.bool) + self.assertEqual(results['gt_ignore_flags'].dtype, bool) def test_load_labels(self): transform = LoadAnnotations( diff --git a/tests/test_datasets/test_transforms/test_transforms.py b/tests/test_datasets/test_transforms/test_transforms.py index b0cb2c29d04..a257fa2156e 100644 --- a/tests/test_datasets/test_transforms/test_transforms.py +++ b/tests/test_datasets/test_transforms/test_transforms.py @@ -922,7 +922,7 @@ def test_transform(self): def test_transform_with_no_gt(self): self.results['gt_bboxes'] = np.empty((0, 4), dtype=np.float32) self.results['gt_bboxes_labels'] = np.empty((0, ), dtype=np.int64) - self.results['gt_ignore_flags'] = np.empty((0, ), dtype=np.bool) + self.results['gt_ignore_flags'] = np.empty((0, ), dtype=bool) transform = Mosaic(img_scale=(12, 10)) self.results['mix_results'] = [copy.deepcopy(self.results)] * 3 results = transform(copy.deepcopy(self.results)) @@ -1532,7 +1532,7 @@ def test_transform(self): results = albu_transform(results) self.assertEqual(results['img'].dtype, np.float64) self.assertEqual(results['gt_bboxes'].dtype, np.float32) - self.assertEqual(results['gt_ignore_flags'].dtype, np.bool) + self.assertEqual(results['gt_ignore_flags'].dtype, bool) self.assertEqual(results['gt_bboxes_labels'].dtype, np.int64) @unittest.skipIf(albumentations is None, 'albumentations is not installed') diff --git a/tools/analysis_tools/browse_dataset.py b/tools/analysis_tools/browse_dataset.py index b9d90ab1fc1..038cde411f4 100644 --- a/tools/analysis_tools/browse_dataset.py +++ b/tools/analysis_tools/browse_dataset.py @@ -2,7 +2,6 @@ import argparse import os.path as osp -import numpy as np from mmengine.config import Config, DictAction from mmengine.utils import ProgressBar @@ -71,7 +70,7 @@ def main(): gt_masks = gt_instances.get('masks', None) if gt_masks is not None: masks = mask2ndarray(gt_masks) - gt_instances.masks = masks.astype(np.bool) + gt_instances.masks = masks.astype(bool) data_sample.gt_instances = gt_instances visualizer.add_datasample( From 95ca4aba307f08e8a00b5221c7f8e061273d660b Mon Sep 17 00:00:00 2001 From: RangeKing Date: Wed, 28 Dec 2022 19:13:16 +0800 Subject: [PATCH 2/2] deprecating `np.int` type alias --- .../task_modules/samplers/iou_balanced_neg_sampler.py | 6 +++--- mmdet/structures/mask/structures.py | 4 ++-- mmdet/testing/_utils.py | 2 +- tests/test_models/test_dense_heads/test_boxinst_head.py | 2 +- tests/test_models/test_dense_heads/test_condinst_head.py | 2 +- tests/test_models/test_dense_heads/test_solo_head.py | 2 +- tests/test_models/test_dense_heads/test_solov2_head.py | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mmdet/models/task_modules/samplers/iou_balanced_neg_sampler.py b/mmdet/models/task_modules/samplers/iou_balanced_neg_sampler.py index c27fb800244..dc1f46413c9 100644 --- a/mmdet/models/task_modules/samplers/iou_balanced_neg_sampler.py +++ b/mmdet/models/task_modules/samplers/iou_balanced_neg_sampler.py @@ -73,7 +73,7 @@ def sample_via_interval(self, max_overlaps, full_set, num_expected): tmp_sampled_set = self.random_choice(tmp_inds, per_num_expected) else: - tmp_sampled_set = np.array(tmp_inds, dtype=np.int) + tmp_sampled_set = np.array(tmp_inds, dtype=np.int64) sampled_inds.append(tmp_sampled_set) sampled_inds = np.concatenate(sampled_inds) @@ -138,13 +138,13 @@ def _sample_neg(self, assign_result, num_expected, **kwargs): iou_sampling_neg_inds, num_expected_iou_sampling) else: iou_sampled_inds = np.array( - iou_sampling_neg_inds, dtype=np.int) + iou_sampling_neg_inds, dtype=np.int64) num_expected_floor = num_expected - len(iou_sampled_inds) if len(floor_neg_inds) > num_expected_floor: sampled_floor_inds = self.random_choice( floor_neg_inds, num_expected_floor) else: - sampled_floor_inds = np.array(floor_neg_inds, dtype=np.int) + sampled_floor_inds = np.array(floor_neg_inds, dtype=np.int64) sampled_inds = np.concatenate( (sampled_floor_inds, iou_sampled_inds)) if len(sampled_inds) < num_expected: diff --git a/mmdet/structures/mask/structures.py b/mmdet/structures/mask/structures.py index c8e268f2732..7e51e128dea 100644 --- a/mmdet/structures/mask/structures.py +++ b/mmdet/structures/mask/structures.py @@ -235,7 +235,7 @@ class BitmapMasks(BaseInstanceMasks): >>> from mmdet.data_elements.mask.structures import * # NOQA >>> num_masks, H, W = 3, 32, 32 >>> rng = np.random.RandomState(0) - >>> masks = (rng.rand(num_masks, H, W) > 0.1).astype(np.int) + >>> masks = (rng.rand(num_masks, H, W) > 0.1).astype(np.int64) >>> self = BitmapMasks(masks, height=H, width=W) >>> # demo crop_and_resize @@ -824,7 +824,7 @@ def translate(self, """Translate the PolygonMasks. Example: - >>> self = PolygonMasks.random(dtype=np.int) + >>> self = PolygonMasks.random(dtype=np.int64) >>> out_shape = (self.height, self.width) >>> new = self.translate(out_shape, 4., direction='horizontal') >>> assert np.all(new.masks[0][0][1::2] == self.masks[0][0][1::2]) diff --git a/mmdet/testing/_utils.py b/mmdet/testing/_utils.py index 13473336595..471a6bd3a7b 100644 --- a/mmdet/testing/_utils.py +++ b/mmdet/testing/_utils.py @@ -81,7 +81,7 @@ def _rand_masks(rng, num_boxes, bboxes, img_w, img_h): for i, bbox in enumerate(bboxes): bbox = bbox.astype(np.int32) mask = (rng.rand(1, bbox[3] - bbox[1], bbox[2] - bbox[0]) > - 0.3).astype(np.int) + 0.3).astype(np.int64) masks[i:i + 1, bbox[1]:bbox[3], bbox[0]:bbox[2]] = mask return BitmapMasks(masks, height=img_h, width=img_w) diff --git a/tests/test_models/test_dense_heads/test_boxinst_head.py b/tests/test_models/test_dense_heads/test_boxinst_head.py index b5fe30695ac..d677a1d2047 100644 --- a/tests/test_models/test_dense_heads/test_boxinst_head.py +++ b/tests/test_models/test_dense_heads/test_boxinst_head.py @@ -17,7 +17,7 @@ def _rand_masks(num_items, bboxes, img_w, img_h): for i, bbox in enumerate(bboxes): bbox = bbox.astype(np.int32) mask = (rng.rand(1, bbox[3] - bbox[1], bbox[2] - bbox[0]) > - 0.3).astype(np.int) + 0.3).astype(np.int64) masks[i:i + 1, bbox[1]:bbox[3], bbox[0]:bbox[2]] = mask return BitmapMasks(masks, height=img_h, width=img_w) diff --git a/tests/test_models/test_dense_heads/test_condinst_head.py b/tests/test_models/test_dense_heads/test_condinst_head.py index 71deb2fc599..b2938f86cbb 100644 --- a/tests/test_models/test_dense_heads/test_condinst_head.py +++ b/tests/test_models/test_dense_heads/test_condinst_head.py @@ -16,7 +16,7 @@ def _rand_masks(num_items, bboxes, img_w, img_h): for i, bbox in enumerate(bboxes): bbox = bbox.astype(np.int32) mask = (rng.rand(1, bbox[3] - bbox[1], bbox[2] - bbox[0]) > - 0.3).astype(np.int) + 0.3).astype(np.int64) masks[i:i + 1, bbox[1]:bbox[3], bbox[0]:bbox[2]] = mask return BitmapMasks(masks, height=img_h, width=img_w) diff --git a/tests/test_models/test_dense_heads/test_solo_head.py b/tests/test_models/test_dense_heads/test_solo_head.py index 29e41c441fd..1182d85b6f7 100644 --- a/tests/test_models/test_dense_heads/test_solo_head.py +++ b/tests/test_models/test_dense_heads/test_solo_head.py @@ -19,7 +19,7 @@ def _rand_masks(num_items, bboxes, img_w, img_h): for i, bbox in enumerate(bboxes): bbox = bbox.astype(np.int32) mask = (rng.rand(1, bbox[3] - bbox[1], bbox[2] - bbox[0]) > - 0.3).astype(np.int) + 0.3).astype(np.int64) masks[i:i + 1, bbox[1]:bbox[3], bbox[0]:bbox[2]] = mask return BitmapMasks(masks, height=img_h, width=img_w) diff --git a/tests/test_models/test_dense_heads/test_solov2_head.py b/tests/test_models/test_dense_heads/test_solov2_head.py index ca27d977715..6abf91664dc 100644 --- a/tests/test_models/test_dense_heads/test_solov2_head.py +++ b/tests/test_models/test_dense_heads/test_solov2_head.py @@ -17,7 +17,7 @@ def _rand_masks(num_items, bboxes, img_w, img_h): for i, bbox in enumerate(bboxes): bbox = bbox.astype(np.int32) mask = (rng.rand(1, bbox[3] - bbox[1], bbox[2] - bbox[0]) > - 0.3).astype(np.int) + 0.3).astype(np.int64) masks[i:i + 1, bbox[1]:bbox[3], bbox[0]:bbox[2]] = mask return BitmapMasks(masks, height=img_h, width=img_w)