When I apply the FewX on custom dataset, I meet an error:
Traceback (most recent call last):
File "/root/FewX-master/fsod_train_net.py", line 323, in
launch(
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/launch.py", line 62, in launch
main_func(args)
File "/root/FewX-master/fsod_train_net.py", line 317, in main
return trainer.train()
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/defaults.py", line 431, in train
super().train(self.start_iter, self.max_iter)
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/train_loop.py", line 138, in train
self.run_step()
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/defaults.py", line 441, in run_step
self._trainer.run_step()
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/train_loop.py", line 226, in run_step
data = next(self._data_loader_iter)
File "/root/.local/lib/python3.9/site-packages/detectron2/data/common.py", line 179, in iter
for d in self.dataset:
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 517, in next
data = self._next_data()
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 557, in _next_data
data = self._dataset_fetcher.fetch(index) # may raise StopIteration
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 44, in
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/root/.local/lib/python3.9/site-packages/detectron2/data/common.py", line 43, in getitem
data = self._map_func(self._dataset[cur_idx])
File "/root/.local/lib/python3.9/site-packages/detectron2/utils/serialize.py", line 23, in call
return self._obj(args, **kwargs)
File "/root/FewX-master/fewx/data/dataset_mapper.py", line 123, in call
support_images, support_bboxes, support_cls = self.generate_support(dataset_dict)
File "/root/FewX-master/fewx/data/dataset_mapper.py", line 208, in generate_support
id = dataset_dict['annotations'][0]['id']
KeyError: 'id'
When I apply the FewX on custom dataset, I meet an error:
Traceback (most recent call last): File "/root/FewX-master/fsod_train_net.py", line 323, in
launch(
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/launch.py", line 62, in launch
main_func(args)
File "/root/FewX-master/fsod_train_net.py", line 317, in main
return trainer.train()
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/defaults.py", line 431, in train
super().train(self.start_iter, self.max_iter)
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/train_loop.py", line 138, in train
self.run_step()
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/defaults.py", line 441, in run_step
self._trainer.run_step()
File "/root/.local/lib/python3.9/site-packages/detectron2/engine/train_loop.py", line 226, in run_step
data = next(self._data_loader_iter)
File "/root/.local/lib/python3.9/site-packages/detectron2/data/common.py", line 179, in iter
for d in self.dataset:
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 517, in next
data = self._next_data()
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 557, in _next_data
data = self._dataset_fetcher.fetch(index) # may raise StopIteration
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 44, in
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/root/.local/lib/python3.9/site-packages/detectron2/data/common.py", line 43, in getitem
data = self._map_func(self._dataset[cur_idx])
File "/root/.local/lib/python3.9/site-packages/detectron2/utils/serialize.py", line 23, in call
return self._obj( args, **kwargs)
File "/root/FewX-master/fewx/data/dataset_mapper.py", line 123, in call
support_images, support_bboxes, support_cls = self.generate_support(dataset_dict)
File "/root/FewX-master/fewx/data/dataset_mapper.py", line 208, in generate_support
id = dataset_dict['annotations'][0]['id']
KeyError: 'id'
I print the dataset_dict as follow:
{'file_name': 'datasets/my_data/support/train2017/9838da66b7ca2606a418900fd6c33f34.jpg', 'height': 800, 'width': 800, 'annotations': [{'iscrowd': 0, 'bbox': [38, 40, 109, 141], 'category_id': 5, 'bbox_mode': <BoxMode.XYWH_ABS: 1>}, {'iscrowd': 0, 'bbox': [466, 391, 15, 29], 'category_id': 5, 'bbox_mode': <BoxMode.XYWH_ABS: 1>}]}
In dataset_dict['annotations'], there is no item called 'id', but in my json file the 'id' is included.
{"height": 800, "width": 800, "id": 635, "file_name": "9838da66b7ca2606a418900fd6c33f34.jpg"} {"id": 1554, "image_id": 635, "category_id": 6, "segmentation": [[38, 40, 38, 110.5, 38, 181, 92.5, 181, 147, 181, 147, 110.5, 147, 40, 92.5, 40]], "bbox": [38, 40, 109, 141], "iscrowd": 0, "area": 15620}, {"id": 1555, "image_id": 635, "category_id": 6, "segmentation": [[466, 391, 466, 405.5, 466, 420, 473.5, 420, 481, 420, 481, 405.5, 481, 391, 473.5, 391]], "bbox": [466, 391, 15, 29], "iscrowd": 0, "area": 480},
Would you please explain why there is no 'id' in the dataset_dict['annotations']?