if isinstance(metainfo['categories'], list):
classes = metainfo['categories']
id_to_index = {i: i for i in range(len(classes))}
elif isinstance(metainfo['categories'], dict):
classes = list(metainfo['categories'].keys())
id_to_index = {
i: classes.index(classes)
for classes, i in metainfo['categories'].items()
}
Extract objcet bbox info
bbox_info_dict = {}
for info in bbox_info:
instances = {ins['bbox_label_3d']:ins['bbox_3d'] for ins in info['instances']}
bbox_info_dict[info['sample_idx']] = instances
Extract annotation info
for anno in annotation:
if 'scan' not in anno['scan_id']:
continue
scan_id = anno['scan_id']
tgt_ids = anno['target_id']
tgt_obj_name = anno['target']
tgt_bbox = bbox_info_dict[scan_id][tgt_ids]
`
Branch
main branch https://mmdetection3d.readthedocs.io/en/latest/
📚 The doc issue
I want to extract the bbox of the objects in embodiedscan_val_full_vg.json from embodiedscan_infos_val.pkl. But the error appeared in incorrect info.
Here is my code : `import os import json import pickle
vg_data = pickle.load(open("data/embodiedscan_infos_val.pkl","rb")) metainfo = vg_data['metainfo'] bbox_info = vg_data['data_list'] ## list annotation = json.load(open("data/embodiedscan_val_full_vg.json","r"))
Extract object mapping info
if isinstance(metainfo['categories'], list): classes = metainfo['categories'] id_to_index = {i: i for i in range(len(classes))} elif isinstance(metainfo['categories'], dict): classes = list(metainfo['categories'].keys()) id_to_index = { i: classes.index(classes) for classes, i in metainfo['categories'].items() }
Extract objcet bbox info
bbox_info_dict = {} for info in bbox_info: instances = {ins['bbox_label_3d']:ins['bbox_3d'] for ins in info['instances']} bbox_info_dict[info['sample_idx']] = instances
Extract annotation info
for anno in annotation: if 'scan' not in anno['scan_id']: continue scan_id = anno['scan_id'] tgt_ids = anno['target_id'] tgt_obj_name = anno['target'] tgt_bbox = bbox_info_dict[scan_id][tgt_ids] `
Suggest a potential alternative/fix
No response