I've managed to train the GroundingDino model on the example cat dataset that was provided in the README.
However, upon trying to modify the code on the example grounding_dino_swin-t_finetune_8xb2_20e_cat.py config file to train on a custom dataset, I obtain 'RuntimeError: each data_itement in list of batch should be of equal size'.
Given that the cat_dataset works, I believe the error would probably be in relation to the dataset, yet the only modification i've made to the dataset is in relation to the 'categories'.
Did you make any modifications on the code or config? Did you understand what you have modified?
I copied the cat config file exactly but modified the following parts:
(I've also checked the paths to the config files, annotation json files as well as image datasets)
ShrimpDensity Computer Vision Project
This dataset was downloaded in the coco_mmdetection format.
I didn't make any modifications to the annotations JSON files except the "categories": [{ "id": 1, "name": "Shrimp" }] portion modified any category_id == 2 to be 1 for the sake of testing.
Environment
sys.platform: win32
Python: 3.9.18 (main, Sep 11 2023, 14:09:26) [MSC v.1916 64 bit (AMD64)]
CUDA available: True
numpy_random_seed: 2147483648
GPU 0: NVIDIA GeForce RTX 3070 Ti
CUDA_HOME: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
NVCC: Cuda compilation tools, release 11.8, V11.8.89
MSVC: Microsoft (R) C/C++ Optimizing Compiler Version 19.38.33130 for x64
GCC: n/a
PyTorch: 2.1.1
PyTorch compiling details: PyTorch built with:
C++ Version: 199711
MSVC 192930151
Intel(R) Math Kernel Library Version 2020.0.2 Product Build 20200624 for Intel(R) 64 architecture applications
01/20 14:42:28 - mmengine - INFO - Load checkpoint from https://download.openmmlab.com/mmdetection/v3.0/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det/grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth
01/20 14:42:28 - mmengine - WARNING - "FileClient" will be deprecated in future. Please use io functions in https://mmengine.readthedocs.io/en/latest/api/fileio.html#file-io
01/20 14:42:28 - mmengine - WARNING - "HardDiskBackend" is the alias of "LocalBackend" and the former will be deprecated in future.
01/20 14:42:28 - mmengine - INFO - Checkpoints will be saved to c:\Users\inferna\work_dirs\grounding_dino_swint-finetune.
Traceback (most recent call last):
File "c:\Users\inferna\mmdetection\tools\train.py", line 121, in <module>
main()
File "c:\Users\inferna\mmdetection\tools\train.py", line 117, in main
runner.train()
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\mmengine\runner\runner.py", line 1777, in train
model = self.train_loop.run() # type: ignore
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\mmengine\runner\loops.py", line 96, in run
self.run_epoch()
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\mmengine\runner\loops.py", line 111, in run_epoch
for idx, data_batch in enumerate(self.dataloader):
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\torch\utils\data\dataloader.py", line 630, in __next__
data = self._next_data()
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\torch\utils\data\dataloader.py", line 1345, in _next_data
return self._process_data(data)
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\torch\utils\data\dataloader.py", line 1371, in _process_data
data.reraise()
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\torch\_utils.py", line 694, in reraise
raise exception
RuntimeError: Caught RuntimeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\torch\utils\data\_utils\worker.py", line 308, in _worker_loop
data = fetcher.fetch(index)
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\torch\utils\data\_utils\fetch.py", line 54, in fetch
return self.collate_fn(data)
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\mmengine\dataset\utils.py", line 94, in pseudo_collate
return data_item_type({
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\mmengine\dataset\utils.py", line 95, in <dictcomp>
key: pseudo_collate([d[key] for d in data_batch])
File "c:\Users\inferna\anaconda3\envs\cv\lib\site-packages\mmengine\dataset\utils.py", line 78, in pseudo_collate
raise RuntimeError(
RuntimeError: each data_itement in list of batch should be of equal size
I've managed to train the GroundingDino model on the example cat dataset that was provided in the README.
However, upon trying to modify the code on the example grounding_dino_swin-t_finetune_8xb2_20e_cat.py config file to train on a custom dataset, I obtain 'RuntimeError: each data_itement in list of batch should be of equal size'.
Given that the cat_dataset works, I believe the error would probably be in relation to the dataset, yet the only modification i've made to the dataset is in relation to the 'categories'.
Reproduction
I copied the cat config file exactly but modified the following parts: (I've also checked the paths to the config files, annotation json files as well as image datasets)
ShrimpDensity Computer Vision Project This dataset was downloaded in the coco_mmdetection format. I didn't make any modifications to the annotations JSON files except the "categories": [{ "id": 1, "name": "Shrimp" }] portion modified any category_id == 2 to be 1 for the sake of testing.
Environment
sys.platform: win32 Python: 3.9.18 (main, Sep 11 2023, 14:09:26) [MSC v.1916 64 bit (AMD64)] CUDA available: True numpy_random_seed: 2147483648 GPU 0: NVIDIA GeForce RTX 3070 Ti CUDA_HOME: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 NVCC: Cuda compilation tools, release 11.8, V11.8.89 MSVC: Microsoft (R) C/C++ Optimizing Compiler Version 19.38.33130 for x64 GCC: n/a PyTorch: 2.1.1 PyTorch compiling details: PyTorch built with:
TorchVision: 0.16.1 OpenCV: 4.8.1 MMEngine: 0.10.1 MMDetection: 3.3.0+86bfcfa
Error traceback