OpenRobotLab / EmbodiedScan

[CVPR 2024] EmbodiedScan: A Holistic Multi-Modal 3D Perception Suite Towards Embodied AI
https://tai-wang.github.io/embodiedscan/
Apache License 2.0
395 stars 26 forks source link

[Docs] Relation between bbox_3d_lable in embodiedscan_infos_val.pkl and target_id in embodiedscan_val_full_vg.json #23

Closed Hoyyyaard closed 4 months ago

Hoyyyaard commented 4 months ago

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