jcorsetti / oryon

Official implementation of CVPR24 Highlight paper "Open-vocabulary object 6D pose estimation"
22 stars 2 forks source link

convert the data into torch.tensor give this error: can't convert np.ndarray of type numpy.uint16 #6

Closed Metwalli closed 2 months ago

Metwalli commented 3 months ago

File "run_train.py", line 82, in run_pipeline trainer.fit( File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 544, in fit call._call_and_handle_interrupt( File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py", line 43, in _call_and_handle_interrupt return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, *kwargs) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/strategies/launchers/subprocess_script.py", line 102, in launch return function(args, **kwargs) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 580, in _fit_impl self._run(model, ckpt_path=ckpt_path) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 989, in _run results = self._run_stage() File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1035, in _run_stage self.fit_loop.run() File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 202, in run self.advance() File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 359, in advance self.epoch_loop.run(self._data_fetcher) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 136, in run self.advance(data_fetcher) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/loops/training_epochloop.py", line 202, in advance batch, , = next(data_fetcher) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/loops/fetchers.py", line 127, in next batch = super().next() File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/loops/fetchers.py", line 56, in next batch = next(self.iterator) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/utilities/combined_loader.py", line 326, in next out = next(self._iterator) File "/data/users/liming/anaconda3/envs/oryon/lib/python3.8/site-packages/pytorch_lightning/utilities/combined_loader.py", line 74, in next out[i] = next(self.iterators[i]) File "/data/users/liming/.local/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 652, in next data = self._next_data() File "/data/users/liming/.local/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1347, in _next_data return self._process_data(data) File "/data/users/liming/.local/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1373, in _process_data data.reraise() File "/data/users/liming/.local/lib/python3.8/site-packages/torch/_utils.py", line 461, in reraise raise exception TypeError: Caught TypeError in DataLoader worker process 0. Original Traceback (most recent call last): File "/data/users/liming/.local/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop data = fetcher.fetch(index) File "/data/users/liming/.local/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/data/users/liming/.local/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 49, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/data/users/liming/CV/oryon/datasets.py", line 327, in getitem__ item_a = common.preprocess_item(item_a) File "/data/users/liming/CV/oryon/utils/data/common.py", line 54, in preprocess_item item[k] = torch.tensor(v) TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.

jcorsetti commented 2 months ago

Hi, I am not able of reproducing this error. Probably is due to a different numpy version we are using. Could you print the key name of the dictionary that causes this error? Probably converting it to int16 instead of uint16 will solve the issue

Metwalli commented 2 months ago

Thank you for your quick reply. I have solved it by adding condition before convert to the tensor in common.py>preprocess_item function

move to tensor

for k, v in item.items():
    if isinstance(v, np.ndarray):
        if v.dtype == np.uint16:
            v = v.astype(np.uint8)
        item[k] = torch.tensor(v)