Open1
faster_coco_eval - TypeError: unhashable type: 'list'
faster_coco_eval
と PyTorch
と TorchVision
のバージョン
pip show faster_coco_eval torch torchvision | grep Version
Version: 1.6.5
Version: 2.8.0.dev20250313+cu126
Version: 0.22.0.dev20250313+cu126
eval
の際に下記のエラーが発生する。
[rank0]: Traceback (most recent call last):
[rank0]: File "/home/ubuntu/DEIM/train.py", line 84, in <module>
[rank0]: main(args)
[rank0]: File "/home/ubuntu/DEIM/train.py", line 54, in main
[rank0]: solver.fit()
[rank0]: File "/home/ubuntu/DEIM/engine/solver/det_solver.py", line 108, in fit
[rank0]: test_stats, coco_evaluator = evaluate(
[rank0]: File "/home/ubuntu/.local/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 116, in decorate_context
[rank0]: return func(*args, **kwargs)
[rank0]: File "/home/ubuntu/DEIM/engine/solver/det_engine.py", line 156, in evaluate
[rank0]: coco_evaluator.update(res)
[rank0]: File "/home/ubuntu/DEIM/engine/data/dataset/coco_eval.py", line 58, in update
[rank0]: coco_eval.evaluate()
[rank0]: File "/home/ubuntu/.local/lib/python3.10/site-packages/faster_coco_eval/core/faster_eval_api.py", line 44, in evaluate
[rank0]: self._prepare() # not more bottleneck!
[rank0]: File "/home/ubuntu/.local/lib/python3.10/site-packages/faster_coco_eval/core/cocoeval.py", line 133, in _prepare
[rank0]: dts = self.cocoDt.loadAnns(self.cocoDt.getAnnIds(imgIds=p.imgIds, catIds=cat_ids))
[rank0]: File "/home/ubuntu/.local/lib/python3.10/site-packages/faster_coco_eval/core/coco.py", line 166, in getAnnIds
[rank0]: anns = list(filter(lambda ann: ann["category_id"] in catIds, anns))
[rank0]: File "/home/ubuntu/.local/lib/python3.10/site-packages/faster_coco_eval/core/coco.py", line 166, in <lambda>
[rank0]: anns = list(filter(lambda ann: ann["category_id"] in catIds, anns))
[rank0]: TypeError: unhashable type: 'list'
faster_coco_eval
を下記のように修正する。
~/.local/lib/python3.10/site-packages/faster_coco_eval/core/coco.py
103 if "annotations" in self.dataset and "categories" in self.dataset:
104 for ann in self.dataset["annotations"]:
105 if isinstance(ann["category_id"], list):
106 ann["category_id"] = ann["category_id"][0]
107 else:
108 ann["category_id"] = int(ann["category_id"])
109 catToImgs[ann["category_id"]].append(ann["image_id"])
~/.local/lib/python3.10/site-packages/faster_coco_eval/core/coco.py
165 if check_cat:
166 sanitized_anns = []
167 for ann in anns:
168 if isinstance(ann["category_id"], list):
169 ann["category_id"] = ann["category_id"][0]
170 else:
171 ann["category_id"] = int(ann["category_id"])
172 if ann["category_id"] in catIds:
173 sanitized_anns.append(ann)
174 anns = sanitized_anns