From 278a9a3aa88f49b5438c512b08570763fb4e5490 Mon Sep 17 00:00:00 2001 From: ShiroDoMain Date: Sat, 12 Aug 2023 20:00:57 +0800 Subject: [PATCH] Fixed the numpy floating point type error --- test_partseg.py | 2 +- test_semseg.py | 6 +++--- train_classification.py | 1 + train_partseg.py | 7 ++++--- train_semseg.py | 10 ++++++---- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/test_partseg.py b/test_partseg.py index 687e1deab..e86bddc32 100644 --- a/test_partseg.py +++ b/test_partseg.py @@ -150,7 +150,7 @@ def log_string(str): mean_shape_ious = np.mean(list(shape_ious.values())) test_metrics['accuracy'] = total_correct / float(total_seen) test_metrics['class_avg_accuracy'] = np.mean( - np.array(total_correct_class) / np.array(total_seen_class, dtype=np.float)) + np.array(total_correct_class) / np.array(total_seen_class, dtype=np.float32)) for cat in sorted(shape_ious.keys()): log_string('eval mIoU of %s %f' % (cat + ' ' * (14 - len(cat)), shape_ious[cat])) test_metrics['class_avg_iou'] = mean_shape_ious diff --git a/test_semseg.py b/test_semseg.py index a8d8a688a..988da5f75 100644 --- a/test_semseg.py +++ b/test_semseg.py @@ -155,7 +155,7 @@ def log_string(str): total_correct_class[l] += total_correct_class_tmp[l] total_iou_deno_class[l] += total_iou_deno_class_tmp[l] - iou_map = np.array(total_correct_class_tmp) / (np.array(total_iou_deno_class_tmp, dtype=np.float) + 1e-6) + iou_map = np.array(total_correct_class_tmp) / (np.array(total_iou_deno_class_tmp, dtype=np.float32) + 1e-6) print(iou_map) arr = np.array(total_seen_class_tmp) tmp_iou = np.mean(iou_map[arr != 0]) @@ -182,7 +182,7 @@ def log_string(str): fout.close() fout_gt.close() - IoU = np.array(total_correct_class) / (np.array(total_iou_deno_class, dtype=np.float) + 1e-6) + IoU = np.array(total_correct_class) / (np.array(total_iou_deno_class, dtype=np.float32) + 1e-6) iou_per_class_str = '------- IoU --------\n' for l in range(NUM_CLASSES): iou_per_class_str += 'class %s, IoU: %.3f \n' % ( @@ -191,7 +191,7 @@ def log_string(str): log_string(iou_per_class_str) log_string('eval point avg class IoU: %f' % np.mean(IoU)) log_string('eval whole scene point avg class acc: %f' % ( - np.mean(np.array(total_correct_class) / (np.array(total_seen_class, dtype=np.float) + 1e-6)))) + np.mean(np.array(total_correct_class) / (np.array(total_seen_class, dtype=np.float32) + 1e-6)))) log_string('eval whole scene point accuracy: %f' % ( np.sum(total_correct_class) / float(np.sum(total_seen_class) + 1e-6))) diff --git a/train_classification.py b/train_classification.py index 229f49db4..160b80ea1 100644 --- a/train_classification.py +++ b/train_classification.py @@ -40,6 +40,7 @@ def parse_args(): parser.add_argument('--use_normals', action='store_true', default=False, help='use normals') parser.add_argument('--process_data', action='store_true', default=False, help='save data offline') parser.add_argument('--use_uniform_sample', action='store_true', default=False, help='use uniform sampiling') + parser.add_argument('--num_workers', type=int, default=0, help='dataloader num_workers') return parser.parse_args() diff --git a/train_partseg.py b/train_partseg.py index bb85e434e..bf78b45e7 100644 --- a/train_partseg.py +++ b/train_partseg.py @@ -58,6 +58,7 @@ def parse_args(): parser.add_argument('--normal', action='store_true', default=False, help='use normals') parser.add_argument('--step_size', type=int, default=20, help='decay step for lr decay') parser.add_argument('--lr_decay', type=float, default=0.5, help='decay rate for lr decay') + parser.add_argument('--num_workers', type=int, default=0, help='dataloader num_workers') return parser.parse_args() @@ -101,9 +102,9 @@ def log_string(str): root = 'data/shapenetcore_partanno_segmentation_benchmark_v0_normal/' TRAIN_DATASET = PartNormalDataset(root=root, npoints=args.npoint, split='trainval', normal_channel=args.normal) - trainDataLoader = torch.utils.data.DataLoader(TRAIN_DATASET, batch_size=args.batch_size, shuffle=True, num_workers=10, drop_last=True) + trainDataLoader = torch.utils.data.DataLoader(TRAIN_DATASET, batch_size=args.batch_size, shuffle=True, num_workers=args.num_workers, drop_last=True) TEST_DATASET = PartNormalDataset(root=root, npoints=args.npoint, split='test', normal_channel=args.normal) - testDataLoader = torch.utils.data.DataLoader(TEST_DATASET, batch_size=args.batch_size, shuffle=False, num_workers=10) + testDataLoader = torch.utils.data.DataLoader(TEST_DATASET, batch_size=args.batch_size, shuffle=False, num_workers=args.num_workers) log_string("The number of training data is: %d" % len(TRAIN_DATASET)) log_string("The number of test data is: %d" % len(TEST_DATASET)) @@ -264,7 +265,7 @@ def bn_momentum_adjust(m, momentum): mean_shape_ious = np.mean(list(shape_ious.values())) test_metrics['accuracy'] = total_correct / float(total_seen) test_metrics['class_avg_accuracy'] = np.mean( - np.array(total_correct_class) / np.array(total_seen_class, dtype=np.float)) + np.array(total_correct_class) / np.array(total_seen_class, dtype=np.float32)) for cat in sorted(shape_ious.keys()): log_string('eval mIoU of %s %f' % (cat + ' ' * (14 - len(cat)), shape_ious[cat])) test_metrics['class_avg_iou'] = mean_shape_ious diff --git a/train_semseg.py b/train_semseg.py index fd1df5f88..88dea8985 100644 --- a/train_semseg.py +++ b/train_semseg.py @@ -48,6 +48,8 @@ def parse_args(): parser.add_argument('--step_size', type=int, default=10, help='Decay step for lr decay [default: every 10 epochs]') parser.add_argument('--lr_decay', type=float, default=0.7, help='Decay rate for lr decay [default: 0.7]') parser.add_argument('--test_area', type=int, default=5, help='Which area to use for test, option: 1-6 [default: 5]') + parser.add_argument('--num_workers', type=int, default=0, help='dataloader num_workers') + return parser.parse_args() @@ -98,10 +100,10 @@ def log_string(str): print("start loading test data ...") TEST_DATASET = S3DISDataset(split='test', data_root=root, num_point=NUM_POINT, test_area=args.test_area, block_size=1.0, sample_rate=1.0, transform=None) - trainDataLoader = torch.utils.data.DataLoader(TRAIN_DATASET, batch_size=BATCH_SIZE, shuffle=True, num_workers=10, + trainDataLoader = torch.utils.data.DataLoader(TRAIN_DATASET, batch_size=BATCH_SIZE, shuffle=True, num_workers=args.num_workers, pin_memory=True, drop_last=True, worker_init_fn=lambda x: np.random.seed(x + int(time.time()))) - testDataLoader = torch.utils.data.DataLoader(TEST_DATASET, batch_size=BATCH_SIZE, shuffle=False, num_workers=10, + testDataLoader = torch.utils.data.DataLoader(TEST_DATASET, batch_size=BATCH_SIZE, shuffle=False, num_workers=args.num_workers, pin_memory=True, drop_last=True) weights = torch.Tensor(TRAIN_DATASET.labelweights).cuda() @@ -255,12 +257,12 @@ def bn_momentum_adjust(m, momentum): total_iou_deno_class[l] += np.sum(((pred_val == l) | (batch_label == l))) labelweights = labelweights.astype(np.float32) / np.sum(labelweights.astype(np.float32)) - mIoU = np.mean(np.array(total_correct_class) / (np.array(total_iou_deno_class, dtype=np.float) + 1e-6)) + mIoU = np.mean(np.array(total_correct_class) / (np.array(total_iou_deno_class, dtype=np.float32) + 1e-6)) log_string('eval mean loss: %f' % (loss_sum / float(num_batches))) log_string('eval point avg class IoU: %f' % (mIoU)) log_string('eval point accuracy: %f' % (total_correct / float(total_seen))) log_string('eval point avg class acc: %f' % ( - np.mean(np.array(total_correct_class) / (np.array(total_seen_class, dtype=np.float) + 1e-6)))) + np.mean(np.array(total_correct_class) / (np.array(total_seen_class, dtype=np.float32) + 1e-6)))) iou_per_class_str = '------- IoU --------\n' for l in range(NUM_CLASSES):