Evaluation of symmetric object pose needs to compute the index of nearest point neighbor.
The user can choose to use GPU to speed up the computation.
Please first compile the module by cd
into nn/
directory and python setup.py
.
The command script for launching 6D pose evaluation on a single object class is command_evaluate_add_s_single_class.sh
.
Please change the value of input_json
flag in the script to be the path to the input json file that contains the pose predictions of an object class.
The example format of the input json file is
{
"cls_type": "blade_razor",
"split": "test",
"pred": {
"mechanics_scene_1_07272020_13": {
"000000": [
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
],
"000001": [
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
],
...
},
"mechanics_scene_2_08012020_17": {
"000000": [ ...
],
...
},
...
},
}
-
The value of the
cls_type
key should be the object class name. -
The value of the
split
key should be the dataset split (usually "val" or "test"). -
The value of the
pred
key should be the 6D pose predictions of each frame in each sequence, indexed by sequence name (e.g. "mechanics_scene_1_07272020_13") and frame index (e.g. "000000"). The 6D pose should be represented by a 3x4 array of [R|t], where R is the 3x3 rotation matrix and t is the 3x1 translation vector.
The command script for launching 6D pose evaluation on all object classes is command_evaluate_add_s_overall.sh
.
Please change the value of input_json
flag in the script to be the path to the input json file that contains the pose predictions of an object class.
The python script evaluate_add_s_overall.py
is also used in our EvalAI challenge.
Different from a single object class, the example format of the input json file that contains pose predictions of all object classes is
{
"split": "test",
"pred": {
"blade_razor": {
"mechanics_scene_1_07272020_13": {
"000000": [
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
],
"000001": [
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
],
...
},
"mechanics_scene_2_08012020_17": {
"000000": [ ...
],
...
},
...
},
"hammer": {
"mechanics_scene_11_08212020_3": {
...
},
...
},
},
}
-
The value of the
split
key should be the dataset split (usually "val" or "test"). -
The value of the
pred
key should be the 6D pose predictions of each frame in each sequence, indexed by object class name (e.g. "blade_razor"), sequence name (e.g. "mechanics_scene_1_07272020_13") and frame index (e.g. "000000"). The 6D pose should be represented by a 3x4 array of [R|t], where R is the 3x3 rotation matrix and t is the 3x1 translation vector.
The above format for all object classes is the required format for the submission to EvalAI!