I am using albumentations for my object detection data augmentation because it deals with bbox at the same time. My format is [xmin, ymin, xmax, ymax] with pascal_voc format. A.Compose( [ A.HorizontalFlip(p=0.5), A.VerticalFlip(p=0.5), A.OneOf( [ A.ShiftScaleRotate( shift_limit=0.2, scale_limit=(-0.1, 0.6), rotate_limit=0, p=0.5, ), A.RandomSizedCrop( min_max_height=[200, 352], size=(352, 2048), p=0.5 ), ], p=0.5, ), A.AdditiveNoise( noise_type="uniform", noise_params={"ranges":[(-0.2, 0.2)]}, p=0.5 ), ToTensorV2(), ], bbox_params=A.BboxParams( format="pascal_voc", label_fields=["class_labels"] ), ) Then I create my data as: def __getitem__(self, index): data = get_data(index) torch_target = _to_torch_target(data) torch_img = _get_torch_image(data) if self.transform: sample = self.transform( image=torch_img.numpy(), bboxes=torch_target["boxes"], class_labels=torch_target["labels"], ) torch_img = sample["image"] torch_target["boxes"] = torch.Tensor(sample["bboxes"]) torch_target["labels"] = torch.Tensor(sample["class_labels"]) torch_target["boxes"] = torch.as_tensor(torch_target["boxes"], dtype=torch.float32) torch_target["labels"] = torch.as_tensor(torch_target["labels"], dtype=torch.int64) return torch_img, torch_target But I am getting an error: Traceback (most recent call last): File "/opt/conda/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "/opt/conda/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "/home/.../main.py", line 116, in <module> train(results_path, dataset_path, weights_path, **conf) File "/home/.../main.py", line 77, in train trainer.fit(model, train_dataloader, val_dataloader) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 543, in fit call._call_and_handle_interrupt( File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py", line 44, in _call_and_handle_interrupt return trainer_fn(*args, **kwargs) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 579, in _fit_impl self._run(model, ckpt_path=ckpt_path) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 986, in _run results = self._run_stage() File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 1032, in _run_stage self.fit_loop.run() File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/loops/fit_loop.py", line 205, in run self.advance() File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/loops/fit_loop.py", line 363, in advance self.epoch_loop.run(self._data_fetcher) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 138, in run self.advance(data_fetcher) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 204, in advance batch, _, __ = next(data_fetcher) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/loops/fetchers.py", line 133, in __next__ batch = super().__next__() File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/loops/fetchers.py", line 60, in __next__ batch = next(self.iterator) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/utilities/combined_loader.py", line 341, in __next__ out = next(self._iterator) File "/opt/conda/lib/python3.10/site-packages/lightning/pytorch/utilities/combined_loader.py", line 78, in __next__ out = next(self.iterators) File "/opt/conda/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 628, in __next__ data = self._next_data() File "/opt/conda/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 671, in _next_data data = self._dataset_fetcher.fetch(index) # may raise StopIteration File "/opt/conda/lib/python3.10/site-packages/torch/utils/data/_utils/fetch.py", line 58, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/opt/conda/lib/python3.10/site-packages/torch/utils/data/_utils/fetch.py", line 58, in <listcomp> data = [self.dataset[idx] for idx in possibly_batched_index] File "/home/jovyan/trv/MVP_SPACE/mvp_space/src/train_pipeline/dataset.py", line 184, in __getitem__ sample = self.transform( File "/opt/conda/lib/python3.10/site-packages/albumentations/core/composition.py", line 493, in __call__ self.preprocess(data) File "/opt/conda/lib/python3.10/site-packages/albumentations/core/composition.py", line 533, in preprocess self._preprocess_processors(data) File "/opt/conda/lib/python3.10/site-packages/albumentations/core/composition.py", line 560, in _preprocess_processors processor.preprocess(data) File "/opt/conda/lib/python3.10/site-packages/albumentations/core/utils.py", line 155, in preprocess data[data_name] = self.check_and_convert(data[data_name], shape, direction="to") File "/opt/conda/lib/python3.10/site-packages/albumentations/core/bbox_utils.py", line 306, in check_and_convert self.check(converted_data, shape) File "/opt/conda/lib/python3.10/site-packages/albumentations/core/bbox_utils.py", line 314, in check check_bboxes(data) File "/opt/conda/lib/python3.10/site-packages/albumentations/augmentations/utils.py", line 189, in wrapper return func(*args, **kwargs) File "/opt/conda/lib/python3.10/site-packages/albumentations/core/bbox_utils.py", line 549, in check_bboxes raise ValueError( ValueError: Expected x_min for bbox [ 4.372159 20.666666 4.9176135 26.666666 1. ] to be in the range [0.0, 1.0], got 4.372159004211426. Epoch 0: 0%| | 0/569 [00:00<?, ?it/s] However, pascal_voc is NOT supposed to be between [0, 1]... What is going on here? Something more weird are the numbers, they are all integers, as you can see by this assert I added at the start. I don't know when they are transformed to float. for bbox in torch_target["boxes"]: assert np.all([int(x) == x for x in bbox]) if self.transform: sample = self.transform( image=torch_img.numpy(), bboxes=torch_target["boxes"], class_labels=torch_target["labels"], ) Continue reading...