Evaluation of egohumans dataset.

This commit is contained in:
Daniel
2024-10-09 10:40:53 +02:00
parent 35ac5711bf
commit 2f093e9f82
3 changed files with 1920 additions and 3 deletions

File diff suppressed because it is too large Load Diff

View File

@ -25,6 +25,7 @@ dataset_use = "human36m"
# dataset_use = "ikeaasm"
# dataset_use = "tsinghua"
# dataset_use = "human36m_wb"
# dataset_use = "egohumans"
datasets = {
"panoptic": {
"path": "/datasets/panoptic/skelda/test.json",
@ -63,6 +64,17 @@ datasets = {
"path": "/datasets/human36m/skelda/wb/test.json",
"take_interval": 100,
},
"egohumans": {
"path": "/datasets/egohumans/skelda/all.json",
"take_interval": 2,
# "subset": "tagging",
"subset": "legoassemble",
# "subset": "fencing",
# "subset": "basketball",
# "subset": "volleyball",
# "subset": "badminton",
# "subset": "tennis",
},
}
joint_names_2d = test_triangulate.joint_names_2d
@ -169,6 +181,13 @@ def load_labels(dataset: dict):
elif "human36m_wb" in dataset:
labels = load_json(dataset["human36m_wb"]["path"])
elif "egohumans" in dataset:
labels = load_json(dataset["egohumans"]["path"])
labels = [lb for lb in labels if "test" in lb["splits"]]
labels = [lb for lb in labels if dataset["egohumans"]["subset"] in lb["seq"]]
if dataset["egohumans"]["subset"] in ["volleyball", "tennis"]:
labels = [lb for i, lb in enumerate(labels) if i % 150 < 60]
else:
raise ValueError("Dataset not available")
@ -215,8 +234,8 @@ def main():
print(labels[0])
minscores = {
# Choose this depending on the fraction of invalid/missing persons
# A higher value reduces the number of proposals
# Describes how good two 2D poses need to match each other to create a valid triangulation
# If the quality of the 2D detections is poor, use a lower value
"panoptic": 0.94,
"human36m": 0.94,
"mvor": 0.86,
@ -224,19 +243,32 @@ def main():
"shelf": 0.96,
"ikeaasm": 0.89,
"tsinghua": 0.96,
"egohumans": 0.95,
"human36m_wb": 0.94,
"koarob": 0.91,
}
minscore = minscores.get(dataset_use, 0.95)
min_group_sizes = {
# Describes the minimum number of camera pairs that need to detect the same person
# If the number of cameras is high, and the views are not occluded, use a higher value
"panoptic": 1,
"shelf": 2,
"tsinghua": 2,
"egohumans": 4,
}
min_group_size = min_group_sizes.get(dataset_use, 1)
if dataset_use == "panoptic" and len(datasets["panoptic"]["cams"]) == 10:
min_group_size = 4
if dataset_use == "egohumans" and (
"lego" in labels[0]["seq"] or "tagging" in labels[0]["seq"]
):
min_group_size = 2
if dataset_use == "egohumans" and (
"volleyball" in labels[0]["seq"] or "badminton" in labels[0]["seq"]
):
min_group_size = 7
if dataset_use == "egohumans" and "tennis" in labels[0]["seq"]:
min_group_size = 11
print("\nRunning predictions ...")
all_poses = []

2
skelda

Submodule skelda updated: acae51f7ba...87caa796fd