Prerequisite
Task
I'm using the official example scripts/configs for the officially supported tasks/models/datasets.
Branch
main branch https://github.com/open-mmlab/mmdetection3d
Environment
I want to evaluate 3D Visual Grounding model.
However, when I implement test.py for 3D Visual Grounding model evaluation,
there is an error about annation.
How should I do for evaluation using img feature?
Thank you,
Reproduces the problem - code sample
foridxinrange(len(batch_img_metas)):
img_meta=batch_img_metas[idx]
img_scale_factor= (
img.new_tensor(img_meta["scale_factor"][:2])
if"scale_factor"inimg_meta.keys()
else1
)
img_flip=img_meta["flip"] if"flip"inimg_meta.keys() elseFalseimg_crop_offset= (
img.new_tensor(img_meta["img_crop_offset"])
if"img_crop_offset"inimg_meta.keys()
else0
)
proj_mat=get_proj_mat_by_coord_type(img_meta, self.coord_type)
# Multi-View Sparse Fusionifisinstance(proj_mat, dict):
assert"extrinsic"inproj_mat.keys()
assert"intrinsic"inproj_mat.keys()
projection= []
# Support different intrinsic matrices for different images# if the original intrinsic is only a matrix# we will simply copy it to construct the intrinsic matrix list# in MultiViewPipelineassertisinstance(proj_mat["intrinsic"], list)
forproj_idxinrange(len(proj_mat["extrinsic"])):
intrinsic=img.new_tensor(proj_mat["intrinsic"][proj_idx])
extrinsic=img.new_tensor(proj_mat["extrinsic"][proj_idx])
projection.append(intrinsic @ extrinsic)
proj_mat=torch.stack(projection)
points_imgfeats= []
forlevel_idxinrange(num_levels):
point=x[level_idx].decomposed_coordinates[idx] *self.voxel_sizepoints_imgfeat=batch_point_sample(
img_meta,
img_features=img_features[level_idx][idx],
points=point,
proj_mat=proj_mat,
coord_type=self.coord_type,
img_scale_factor=img_scale_factor,
img_crop_offset=img_crop_offset,
img_flip=img_flip,
img_pad_shape=img.shape[-2:],
img_shape=img_meta["img_shape"][:2],
aligned=False,
)
points_imgfeats.append(points_imgfeat) # one sample, all levelselse:
feature=img_features[idx]
proj_mat=points.new_tensor(proj_mat)
points_imgfeats= []
forlevel_idxinrange(num_levels):
point=x[level_idx].decomposed_coordinates[idx] *self.voxel_sizepoints_imgfeat=point_sample(
img_meta,
img_features=feature[None, ...],
points=point,
proj_mat=point.new_tensor(proj_mat),
coord_type="CAMERA",
img_scale_factor=img_scale_factor,
img_crop_offset=img_crop_offset,
img_flip=img_flip,
img_pad_shape=img.shape[-2:],
img_shape=img_meta["img_shape"][:2],
aligned=False,
)
points_imgfeats.append(points_imgfeat) # one sample, all levelsall_points_imgfeats.append(points_imgfeats) # all samples, all levels# append img featuresforlevel_idxinrange(num_levels):
mlvl_feats=torch.cat([
all_points_imgfeats[sample_idx][level_idx]
forsample_idxinrange(num_samples)
])
img_x=ME.SparseTensor(
features=mlvl_feats,
coordinate_map_key=x[level_idx].coordinate_map_key,
coordinate_manager=x[level_idx].coordinate_manager,
)
x[level_idx] =ME.cat(x[level_idx], img_x)
# channel mapper feature of different level to the fixed numberfeats, scores, coords=self.neck_3d(x, batch_size)
Reproduces the problem - command or script
python tools/test.py configs/grounding/mv-grounding_8xb12_embodiedscan-vg-9dof.py work_dirs/mv-3dvg/epoch_12.pth
Reproduces the problem - error message
Traceback (most recent call last):
File "tools/test.py", line 167, in <module>
main()
File "tools/test.py", line 163, in main
runner.test()
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1823, in test
metrics = self.test_loop.run() # type: ignore
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/mmengine/runner/loops.py", line 463, in run
self.run_iter(idx, data_batch)
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/mmengine/runner/loops.py", line 487, in run_iter
outputs = self.runner.model.test_step(data_batch)
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/mmengine/model/base_model/base_model.py", line 145, in test_step
return self._run_forward(data, mode='predict') # type: ignore
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/mmengine/model/base_model/base_model.py", line 361, in _run_forward
results = self(**data, mode=mode)
File "/opt/conda/envs/embodiedscan-env/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
return forward_call(*input, **kwargs)
File "/embodiedscan_dev/embodiedscan/models/detectors/sparse_featfusion_captioner.py", line 360, in forward
return self.predict(
File "/embodiedscan_dev/embodiedscan/models/detectors/sparse_featfusion_captioner.py", line 476, in predict
point_feats, logit_scores, point_xyz = self.extract_feat(
File "/embodiedscan_dev/embodiedscan/models/detectors/sparse_featfusion_captioner.py", line 211, in extract_feat
points_imgfeat = batch_point_sample(
File "/embodiedscan_dev/embodiedscan/models/layers/fusion_layers/point_fusion.py", line 275, in batch_point_sample
points = apply_3d_transformation(points, coord_type, img_meta, reverse=True)
File "/embodiedscan_dev/embodiedscan/models/layers/fusion_layers/point_fusion.py", line 52, in apply_3d_transformation
if isinstance(img_meta["pcd_rotation"], torch.Tensor)
KeyError: 'pcd_rotation'
Additional information
No response
Prerequisite
Task
I'm using the official example scripts/configs for the officially supported tasks/models/datasets.
Branch
main branch https://github.com/open-mmlab/mmdetection3d
Environment
I want to evaluate 3D Visual Grounding model.
However, when I implement test.py for 3D Visual Grounding model evaluation,
there is an error about annation.
How should I do for evaluation using img feature?
Thank you,
Reproduces the problem - code sample
Reproduces the problem - command or script
Reproduces the problem - error message
Additional information
No response