yuxumin/PoinTr

Hello, I encountered a problem during testing, as follows

huyanbi opened this issue · 8 comments

`(pointr) root@I1217f58864008015fe:/hy-tmp/PoinTr# bash ./scripts/test.sh 0 --ckpts ./PCN_models/example/ckpt-best.pth --config ./cfgs/PCN_models/PoinTr.yaml --exp_name example

  • GPUS=0
  • PY_ARGS='--ckpts ./PCN_models/example/ckpt-best.pth --config ./cfgs/PCN_models/PoinTr.yaml --exp_name example'
  • CUDA_VISIBLE_DEVICES=0
  • python main.py --test --ckpts ./PCN_models/example/ckpt-best.pth --config ./cfgs/PCN_models/PoinTr.yaml --exp_name example
    2023-04-24 15:56:24,063 - PoinTr - INFO - Copy the Config file from ./cfgs/PCN_models/PoinTr.yaml to ./experiments/PoinTr/PCN_models/test_example/config.yaml
    2023-04-24 15:56:24,063 - PoinTr - INFO - args.config : ./cfgs/PCN_models/PoinTr.yaml
    2023-04-24 15:56:24,063 - PoinTr - INFO - args.launcher : none
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.local_rank : 0
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.num_workers : 4
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.seed : 0
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.deterministic : False
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.sync_bn : False
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.exp_name : test_example
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.start_ckpts : None
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.ckpts : ./PCN_models/example/ckpt-best.pth
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.val_freq : 1
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.resume : False
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.test : True
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.mode : None
    2023-04-24 15:56:24,064 - PoinTr - INFO - args.experiment_path : ./experiments/PoinTr/PCN_models/test_example
    2023-04-24 15:56:24,065 - PoinTr - INFO - args.tfboard_path : ./experiments/PoinTr/PCN_models/TFBoard/test_example
    2023-04-24 15:56:24,065 - PoinTr - INFO - args.log_name : PoinTr
    2023-04-24 15:56:24,065 - PoinTr - INFO - args.use_gpu : True
    2023-04-24 15:56:24,065 - PoinTr - INFO - args.distributed : False
    2023-04-24 15:56:24,065 - PoinTr - INFO - config.optimizer = edict()
    2023-04-24 15:56:24,065 - PoinTr - INFO - config.optimizer.type : AdamW
    2023-04-24 15:56:24,065 - PoinTr - INFO - config.optimizer.kwargs = edict()
    2023-04-24 15:56:24,065 - PoinTr - INFO - config.optimizer.kwargs.lr : 0.0005
    2023-04-24 15:56:24,065 - PoinTr - INFO - config.optimizer.kwargs.weight_decay : 0.0005
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.scheduler = edict()
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.scheduler.type : LambdaLR
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.scheduler.kwargs = edict()
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.scheduler.kwargs.decay_step : 21
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.scheduler.kwargs.lr_decay : 0.9
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.scheduler.kwargs.lowest_decay : 0.02
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.bnmscheduler = edict()
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.bnmscheduler.type : Lambda
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.bnmscheduler.kwargs = edict()
    2023-04-24 15:56:24,066 - PoinTr - INFO - config.bnmscheduler.kwargs.decay_step : 21
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.bnmscheduler.kwargs.bn_decay : 0.5
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.bnmscheduler.kwargs.bn_momentum : 0.9
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.bnmscheduler.kwargs.lowest_decay : 0.01
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.dataset = edict()
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.dataset.train = edict()
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.dataset.train.base = edict()
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.dataset.train.base.NAME : PCN
    2023-04-24 15:56:24,067 - PoinTr - INFO - config.dataset.train.base.CATEGORY_FILE_PATH : data/PCN/PCN.json
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.base.N_POINTS : 2048
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.base.N_RENDERINGS : 8
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.base.PARTIAL_POINTS_PATH : data/PCN/%s/partial/%s/%s/%02d.pcd
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.base.COMPLETE_POINTS_PATH : data/PCN/%s/complete/%s/%s.pcd
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.base.CARS : False
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.others = edict()
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.others.subset : train
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.train.others.bs : 48
    2023-04-24 15:56:24,068 - PoinTr - INFO - config.dataset.val = edict()
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base = edict()
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base.NAME : PCN
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base.CATEGORY_FILE_PATH : data/PCN/PCN.json
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base.N_POINTS : 2048
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base.N_RENDERINGS : 8
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base.PARTIAL_POINTS_PATH : data/PCN/%s/partial/%s/%s/%02d.pcd
    2023-04-24 15:56:24,069 - PoinTr - INFO - config.dataset.val.base.COMPLETE_POINTS_PATH : data/PCN/%s/complete/%s/%s.pcd
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.val.base.CARS : False
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.val.others = edict()
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.val.others.subset : test
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test = edict()
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test.base = edict()
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test.base.NAME : PCN
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test.base.CATEGORY_FILE_PATH : data/PCN/PCN.json
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test.base.N_POINTS : 2048
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test.base.N_RENDERINGS : 8
    2023-04-24 15:56:24,070 - PoinTr - INFO - config.dataset.test.base.PARTIAL_POINTS_PATH : data/PCN/%s/partial/%s/%s/%02d.pcd
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.dataset.test.base.COMPLETE_POINTS_PATH : data/PCN/%s/complete/%s/%s.pcd
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.dataset.test.base.CARS : False
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.dataset.test.others = edict()
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.dataset.test.others.subset : test
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.model = edict()
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.model.NAME : PoinTr
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.model.num_pred : 2048
    2023-04-24 15:56:24,071 - PoinTr - INFO - config.model.num_query : 224
    2023-04-24 15:56:24,072 - PoinTr - INFO - config.model.knn_layer : 1
    2023-04-24 15:56:24,072 - PoinTr - INFO - config.model.trans_dim : 384
    2023-04-24 15:56:24,072 - PoinTr - INFO - config.total_bs : 48
    2023-04-24 15:56:24,072 - PoinTr - INFO - config.step_per_update : 1
    2023-04-24 15:56:24,072 - PoinTr - INFO - config.max_epoch : 300
    2023-04-24 15:56:24,072 - PoinTr - INFO - config.consider_metric : CDL1
    2023-04-24 15:56:24,072 - PoinTr - INFO - Distributed training: False
    2023-04-24 15:56:24,072 - PoinTr - INFO - Set random seed to 0, deterministic: False
    2023-04-24 15:56:24,074 - PoinTr - INFO - Tester start ...
    2023-04-24 15:56:24,082 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=02691156, Name=airplane]
    2023-04-24 15:56:24,083 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=02933112, Name=cabinet]
    2023-04-24 15:56:24,083 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=02958343, Name=car]
    2023-04-24 15:56:24,084 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=03001627, Name=chair]
    2023-04-24 15:56:24,084 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=03636649, Name=lamp]
    2023-04-24 15:56:24,086 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=04256520, Name=sofa]
    2023-04-24 15:56:24,087 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=04379243, Name=table]
    2023-04-24 15:56:24,087 - PCNDATASET - INFO - Collecting files of Taxonomy [ID=04530566, Name=watercraft]
    2023-04-24 15:56:24,087 - PCNDATASET - INFO - Complete collecting files of the dataset. Total files: 1200
    2023-04-24 15:56:24,088 - MODEL - INFO - Transformer with knn_layer 1
    2023-04-24 15:56:27,205 - PoinTr - INFO - Loading weights from ./PCN_models/example/ckpt-best.pth...
    2023-04-24 15:56:28,094 - PoinTr - INFO - ckpts @ 296 epoch( performance = {'F-Score': 0.5812608525777857, 'CDL1': 9.672165468335152, 'CDL2': 0.3736594878990824, 'EMDistance': 0.0})
    Traceback (most recent call last):
    File "main.py", line 68, in
    main()
    File "main.py", line 62, in main
    test_net(args, config)
    File "/hy-tmp/PoinTr/tools/runner.py", line 336, in test_net
    test(base_model, test_dataloader, ChamferDisL1, ChamferDisL2, args, config, logger=logger)
    File "/hy-tmp/PoinTr/tools/runner.py", line 348, in test
    for idx, (taxonomy_ids, model_ids, data) in enumerate(test_dataloader):
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 435, in next
    data = self._next_data()
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1085, in _next_data
    return self._process_data(data)
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1111, in _process_data
    data.reraise()
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/_utils.py", line 428, in reraise
    raise self.exc_type(msg)
    AssertionError: Caught AssertionError in DataLoader worker process 0.
    Original Traceback (most recent call last):
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop
    data = fetcher.fetch(index)
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
    File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in
    data = [self.dataset[idx] for idx in possibly_batched_index]
    File "/hy-tmp/PoinTr/datasets/PCNDataset.py", line 103, in getitem
    assert data['gt'].shape[0] == self.npoints
    AssertionError`
    Could you please help me check where the problem is. Thank you.I retrained the model because I wanted to see the complete point cloud of 2048 points. But during testing, the above situation will occur

hi, i see that you modify N_POINTS in the base config and get an error when checking the number of points in point cloud raw data.
So, add a fps operation when you initialize data['gt'] to contains 'N_POINTS' points

@yuxumin ,Thank you for your answer, but I still don't quite understand. Could you please help me explain how to operate it specifically

https://github.com/yuxumin/PoinTr/blob/master/datasets/PCNDataset.py#L101
Here, add a FPS to downsample the gt point cloud from 16384 points to 2048 points

Okay, can I do this? First add the class for fps, then add on line 101 gt = farthest_point_sample(gt, 2048).def farthest_point_sample(point, npoint): N, D = point.shape xyz = point[:,:3] centroids = np.zeros((npoint,)) distance = np.ones((N,)) * 1e10 farthest = np.random.randint(0, N) for i in range(npoint): centroids[i] = farthest centroid = xyz[farthest, :] dist = np.sum((xyz - centroid) ** 2, -1) mask = dist < distance distance[mask] = dist[mask] farthest = np.argmax(distance, -1) point = point[centroids.astype(np.int32)] return point

@yuxumin .Boss, it seems that it's not possible. I made a mistake here.Traceback (most recent call last): File "main.py", line 68, in <module> main() File "main.py", line 62, in main test_net(args, config) File "/hy-tmp/PoinTr/tools/runner.py", line 336, in test_net test(base_model, test_dataloader, ChamferDisL1, ChamferDisL2, args, config, logger=logger) File "/hy-tmp/PoinTr/tools/runner.py", line 348, in test for idx, (taxonomy_ids, model_ids, data) in enumerate(test_dataloader): File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 435, in __next__ data = self._next_data() File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1085, in _next_data return self._process_data(data) File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1111, in _process_data data.reraise() File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/_utils.py", line 428, in reraise raise self.exc_type(msg) UnboundLocalError: Caught UnboundLocalError in DataLoader worker process 0. Original Traceback (most recent call last): File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop data = fetcher.fetch(index) File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/miniconda3/envs/pointr/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp> data = [self.dataset[idx] for idx in possibly_batched_index] File "/hy-tmp/PoinTr/datasets/PCNDataset.py", line 102, in __getitem__ gt = farthest_point_sample(gt, 2048) UnboundLocalError: local variable 'gt' referenced before assignment

What should I do?thank you

orfps_idx = farthest_point_sample(16384, 2048, points[:, :3]) new_points = points[fps_idx]

您好 我在训练过程中也遇到同样的问题,请问您最后怎么解决这个问题的呢?