From 98399cc00e0c49b3ced749e356d10091e074a38e Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 22 Apr 2025 17:13:30 +0200 Subject: [PATCH] Small updates. --- media/RESULTS.md | 490 ++++++++++++++++---------------- rpt/tracker.hpp | 14 +- scripts/test_skelda_dataset.cpp | 33 ++- scripts/test_skelda_dataset.py | 4 +- 4 files changed, 277 insertions(+), 264 deletions(-) diff --git a/media/RESULTS.md b/media/RESULTS.md index bbd819b..183289f 100644 --- a/media/RESULTS.md +++ b/media/RESULTS.md @@ -7,27 +7,27 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.00954196, - "demosaicing": 0.000437263, - "avg_time_2d": 0.00563337, - "avg_time_3d": 3.22195e-05, - "time_tracks": 2.56698e-06, - "fps": 163.789 + "img_loading": 0.0096864, + "demosaicing": 0.000437641, + "avg_time_2d": 0.00566353, + "avg_time_3d": 3.24314e-05, + "time_tracks": 3.44966e-07, + "fps": 163.027 } { "triangulator_calls": 600, - "init_time": 2.34263e-06, - "undistort_time": 3.69506e-06, - "project_time": 5.953e-07, - "match_time": 1.23644e-06, - "pairs_time": 1.78917e-07, - "pair_scoring_time": 5.10816e-06, - "grouping_time": 8.91258e-07, - "full_time": 6.67602e-06, - "merge_time": 2.95392e-06, - "post_time": 3.7758e-06, - "convert_time": 5.69e-08, - "total_time": 2.7759e-05 + "init_time": 2.23792e-06, + "undistort_time": 3.78982e-06, + "project_time": 6.23085e-07, + "match_time": 1.21714e-06, + "pairs_time": 1.845e-07, + "pair_scoring_time": 5.14351e-06, + "grouping_time": 9.24192e-07, + "full_time": 6.75532e-06, + "merge_time": 3.04371e-06, + "post_time": 3.80595e-06, + "convert_time": 5.85167e-08, + "total_time": 2.80385e-05 } { "person_nums": { @@ -46,23 +46,23 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 600, - "mean": 0.060543, - "median": 0.053007, - "std": 0.028089, - "sem": 0.001148, + "mean": 0.060397, + "median": 0.052935, + "std": 0.028061, + "sem": 0.001147, "min": 0.037548, "max": 0.192385, "recall-0.025": 0.0, - "recall-0.05": 0.325, - "recall-0.1": 0.946667, + "recall-0.05": 0.333333, + "recall-0.1": 0.948333, "recall-0.15": 0.95, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600, "ap-0.025": 0.0, - "ap-0.05": 0.179324, - "ap-0.1": 0.907003, - "ap-0.15": 0.91147, + "ap-0.05": 0.188107, + "ap-0.1": 0.910493, + "ap-0.15": 0.913236, "ap-0.25": 1.0, "ap-0.5": 1.0 }, @@ -100,82 +100,82 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_right": { "count": 600, - "mean": 0.046158, + "mean": 0.045983, "median": 0.034992, - "std": 0.039877, - "sem": 0.001629, + "std": 0.039542, + "sem": 0.001616, "min": 0.00206, "max": 0.240597, "recall-0.025": 0.298333, "recall-0.05": 0.753333, - "recall-0.1": 0.908333, - "recall-0.15": 0.945, + "recall-0.1": 0.91, + "recall-0.15": 0.946667, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "elbow_left": { "count": 600, - "mean": 0.045362, - "median": 0.034249, - "std": 0.037307, - "sem": 0.001524, + "mean": 0.045328, + "median": 0.034177, + "std": 0.03755, + "sem": 0.001534, "min": 0.002988, "max": 0.194229, - "recall-0.025": 0.258333, - "recall-0.05": 0.761667, - "recall-0.1": 0.925, - "recall-0.15": 0.955, + "recall-0.025": 0.26, + "recall-0.05": 0.763333, + "recall-0.1": 0.926667, + "recall-0.15": 0.953333, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "elbow_right": { "count": 600, - "mean": 0.04432, + "mean": 0.044168, "median": 0.03193, - "std": 0.038646, - "sem": 0.001579, + "std": 0.03869, + "sem": 0.001581, "min": 0.005218, - "max": 0.383954, + "max": 0.427232, "recall-0.025": 0.268333, "recall-0.05": 0.783333, - "recall-0.1": 0.926667, - "recall-0.15": 0.94, + "recall-0.1": 0.928333, + "recall-0.15": 0.941667, "recall-0.25": 0.998333, "recall-0.5": 1.0, "num_labels": 600 }, "wrist_left": { "count": 600, - "mean": 0.04031, - "median": 0.022792, - "std": 0.044965, - "sem": 0.001837, + "mean": 0.039884, + "median": 0.022739, + "std": 0.04461, + "sem": 0.001823, "min": 0.002345, "max": 0.289452, - "recall-0.025": 0.551667, - "recall-0.05": 0.763333, - "recall-0.1": 0.906667, + "recall-0.025": 0.553333, + "recall-0.05": 0.766667, + "recall-0.1": 0.91, "recall-0.15": 0.93, "recall-0.25": 0.998333, "recall-0.5": 1.0, "num_labels": 600 }, "wrist_right": { - "count": 600, - "mean": 0.041059, - "median": 0.026221, - "std": 0.04525, - "sem": 0.001849, + "count": 599, + "mean": 0.040157, + "median": 0.026117, + "std": 0.044323, + "sem": 0.001812, "min": 0.003181, "max": 0.296936, - "recall-0.025": 0.476667, - "recall-0.05": 0.801667, - "recall-0.1": 0.91, - "recall-0.15": 0.921667, - "recall-0.25": 0.996667, - "recall-0.5": 1.0, + "recall-0.025": 0.481667, + "recall-0.05": 0.806667, + "recall-0.1": 0.915, + "recall-0.15": 0.925, + "recall-0.25": 0.995, + "recall-0.5": 0.998333, "num_labels": 600 }, "hip_left": { @@ -212,31 +212,31 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 599, - "mean": 0.05212, + "mean": 0.052251, "median": 0.042367, - "std": 0.039681, - "sem": 0.001623, + "std": 0.042631, + "sem": 0.001743, "min": 0.014466, - "max": 0.303977, + "max": 0.482769, "recall-0.025": 0.06, - "recall-0.05": 0.696667, - "recall-0.1": 0.921667, - "recall-0.15": 0.943333, - "recall-0.25": 0.996667, + "recall-0.05": 0.698333, + "recall-0.1": 0.925, + "recall-0.15": 0.945, + "recall-0.25": 0.995, "recall-0.5": 0.998333, "num_labels": 600 }, "knee_right": { "count": 600, - "mean": 0.045269, - "median": 0.034108, - "std": 0.03723, - "sem": 0.001521, + "mean": 0.045065, + "median": 0.034037, + "std": 0.037143, + "sem": 0.001518, "min": 0.010961, "max": 0.293895, - "recall-0.025": 0.105, - "recall-0.05": 0.821667, - "recall-0.1": 0.93, + "recall-0.025": 0.106667, + "recall-0.05": 0.825, + "recall-0.1": 0.931667, "recall-0.15": 0.948333, "recall-0.25": 0.998333, "recall-0.5": 1.0, @@ -244,50 +244,50 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 599, - "mean": 0.089795, - "median": 0.082637, - "std": 0.03326, - "sem": 0.00136, + "mean": 0.089107, + "median": 0.082601, + "std": 0.030725, + "sem": 0.001256, "min": 0.048202, - "max": 0.351142, + "max": 0.271976, "recall-0.025": 0.0, "recall-0.05": 0.001667, - "recall-0.1": 0.871667, - "recall-0.15": 0.94, - "recall-0.25": 0.991667, + "recall-0.1": 0.876667, + "recall-0.15": 0.941667, + "recall-0.25": 0.995, "recall-0.5": 0.998333, "num_labels": 600 }, "ankle_right": { "count": 600, - "mean": 0.077779, - "median": 0.066732, - "std": 0.039218, - "sem": 0.001602, - "min": 0.018484, + "mean": 0.077527, + "median": 0.06667, + "std": 0.038806, + "sem": 0.001586, + "min": 0.033001, "max": 0.281311, - "recall-0.025": 0.003333, - "recall-0.05": 0.041667, - "recall-0.1": 0.893333, - "recall-0.15": 0.923333, + "recall-0.025": 0.0, + "recall-0.05": 0.036667, + "recall-0.1": 0.9, + "recall-0.15": 0.926667, "recall-0.25": 0.991667, "recall-0.5": 1.0, "num_labels": 600 }, "joint_recalls": { "num_labels": 7800, - "recall-0.025": 0.18897, - "recall-0.05": 0.50064, - "recall-0.1": 0.87718, - "recall-0.15": 0.93423, + "recall-0.025": 0.18962, + "recall-0.05": 0.50128, + "recall-0.1": 0.87962, + "recall-0.15": 0.93526, "recall-0.25": 0.99603, - "recall-0.5": 0.99949 + "recall-0.5": 0.99923 } } { "total_parts": 8400, - "correct_parts": 8130, - "pcp": 0.967857 + "correct_parts": 8134, + "pcp": 0.968333 } ``` @@ -295,27 +295,27 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.0415743, - "demosaicing": 0.000548337, - "avg_time_2d": 0.0104442, - "avg_time_3d": 0.000102827, - "time_tracks": 7.53299e-07, - "fps": 90.1218 + "img_loading": 0.041449, + "demosaicing": 0.000538481, + "avg_time_2d": 0.010343, + "avg_time_3d": 0.000104335, + "time_tracks": 7.30172e-07, + "fps": 91.0205 } { "triangulator_calls": 301, - "init_time": 2.5757e-06, - "undistort_time": 1.38599e-05, - "project_time": 1.70299e-06, - "match_time": 7.42211e-06, - "pairs_time": 3.51909e-06, - "pair_scoring_time": 2.20828e-05, - "grouping_time": 4.00774e-06, - "full_time": 2.23789e-05, - "merge_time": 1.09032e-05, - "post_time": 6.10427e-06, - "convert_time": 1.11395e-07, - "total_time": 9.49145e-05 + "init_time": 2.5243e-06, + "undistort_time": 1.40503e-05, + "project_time": 1.76531e-06, + "match_time": 7.66701e-06, + "pairs_time": 3.58301e-06, + "pair_scoring_time": 2.2612e-05, + "grouping_time": 4.06582e-06, + "full_time": 2.25735e-05, + "merge_time": 1.10049e-05, + "post_time": 6.13977e-06, + "convert_time": 1.12691e-07, + "total_time": 9.63485e-05 } { "person_nums": { @@ -334,10 +334,10 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 477, - "mean": 0.047597, - "median": 0.042661, - "std": 0.014947, - "sem": 0.000685, + "mean": 0.047552, + "median": 0.042651, + "std": 0.014836, + "sem": 0.00068, "min": 0.028932, "max": 0.107384, "recall-0.025": 0.0, @@ -348,18 +348,18 @@ Results of the model in various experiments on different datasets. \ "recall-0.5": 1.0, "num_labels": 477, "ap-0.025": 0.0, - "ap-0.05": 0.456736, - "ap-0.1": 0.755053, - "ap-0.15": 0.764546, - "ap-0.25": 0.764546, - "ap-0.5": 0.764546 + "ap-0.05": 0.453828, + "ap-0.1": 0.752279, + "ap-0.15": 0.761672, + "ap-0.25": 0.761672, + "ap-0.5": 0.761672 }, "head": { "count": 477, - "mean": 0.053421, + "mean": 0.053389, "median": 0.049509, - "std": 0.025337, - "sem": 0.001161, + "std": 0.025237, + "sem": 0.001157, "min": 0.005816, "max": 0.182842, "recall-0.025": 0.098532, @@ -404,9 +404,9 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 477, - "mean": 0.040136, + "mean": 0.04012, "median": 0.032194, - "std": 0.026056, + "std": 0.026044, "sem": 0.001194, "min": 0.003888, "max": 0.146492, @@ -436,14 +436,14 @@ Results of the model in various experiments on different datasets. \ }, "wrist_left": { "count": 477, - "mean": 0.059143, - "median": 0.05442, - "std": 0.038602, + "mean": 0.059128, + "median": 0.054299, + "std": 0.038605, "sem": 0.001769, "min": 0.001595, "max": 0.314599, "recall-0.025": 0.155136, - "recall-0.05": 0.410901, + "recall-0.05": 0.412998, "recall-0.1": 0.91195, "recall-0.15": 0.968553, "recall-0.25": 0.991614, @@ -452,10 +452,10 @@ Results of the model in various experiments on different datasets. \ }, "wrist_right": { "count": 477, - "mean": 0.05783, + "mean": 0.057842, "median": 0.053422, - "std": 0.030837, - "sem": 0.001413, + "std": 0.030863, + "sem": 0.001415, "min": 0.008434, "max": 0.207547, "recall-0.025": 0.109015, @@ -516,15 +516,15 @@ Results of the model in various experiments on different datasets. \ }, "knee_right": { "count": 477, - "mean": 0.039912, + "mean": 0.039775, "median": 0.035222, - "std": 0.023393, - "sem": 0.001072, + "std": 0.023097, + "sem": 0.001059, "min": 0.006395, "max": 0.184949, "recall-0.025": 0.303983, "recall-0.05": 0.727463, - "recall-0.1": 0.972746, + "recall-0.1": 0.974843, "recall-0.15": 0.997904, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -532,10 +532,10 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 477, - "mean": 0.036485, + "mean": 0.036458, "median": 0.028094, - "std": 0.030728, - "sem": 0.001408, + "std": 0.03061, + "sem": 0.001403, "min": 0.004185, "max": 0.222831, "recall-0.025": 0.429769, @@ -548,25 +548,25 @@ Results of the model in various experiments on different datasets. \ }, "ankle_right": { "count": 477, - "mean": 0.041358, + "mean": 0.040999, "median": 0.030877, - "std": 0.040428, - "sem": 0.001853, + "std": 0.038354, + "sem": 0.001758, "min": 0.002443, - "max": 0.355429, + "max": 0.287278, "recall-0.025": 0.30608, "recall-0.05": 0.813417, "recall-0.1": 0.928721, "recall-0.15": 0.966457, - "recall-0.25": 0.993711, + "recall-0.25": 0.995807, "recall-0.5": 1.0, "num_labels": 477 }, "joint_recalls": { "num_labels": 6201, "recall-0.025": 0.21351, - "recall-0.05": 0.62119, - "recall-0.1": 0.94323, + "recall-0.05": 0.62151, + "recall-0.1": 0.94356, "recall-0.15": 0.98662, "recall-0.25": 0.99871, "recall-0.5": 1.0 @@ -574,8 +574,8 @@ Results of the model in various experiments on different datasets. \ } { "total_parts": 6678, - "correct_parts": 6623, - "pcp": 0.991764 + "correct_parts": 6625, + "pcp": 0.992063 } ``` @@ -583,27 +583,27 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.00477884, - "demosaicing": 0.000105891, - "avg_time_2d": 0.00475547, - "avg_time_3d": 3.45411e-05, - "time_tracks": 8.63962e-07, - "fps": 204.216 + "img_loading": 0.00479131, + "demosaicing": 0.000109975, + "avg_time_2d": 0.00481255, + "avg_time_3d": 3.46939e-05, + "time_tracks": 5.59292e-07, + "fps": 201.703 } { "triangulator_calls": 222, - "init_time": 1.99938e-06, - "undistort_time": 5.71187e-06, - "project_time": 8.61266e-07, - "match_time": 2.61942e-06, - "pairs_time": 4.20405e-07, - "pair_scoring_time": 4.35068e-06, - "grouping_time": 9.27387e-07, - "full_time": 5.49219e-06, - "merge_time": 2.62484e-06, - "post_time": 5.03611e-06, - "convert_time": 9.22072e-08, - "total_time": 3.03843e-05 + "init_time": 2.07871e-06, + "undistort_time": 5.81449e-06, + "project_time": 9.79824e-07, + "match_time": 2.67114e-06, + "pairs_time": 4.23829e-07, + "pair_scoring_time": 4.36216e-06, + "grouping_time": 9.25365e-07, + "full_time": 5.44962e-06, + "merge_time": 2.59767e-06, + "post_time": 4.98663e-06, + "convert_time": 8.98243e-08, + "total_time": 3.06292e-05 } { "person_nums": { @@ -622,32 +622,32 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 376, - "mean": 0.075498, - "median": 0.073144, - "std": 0.014424, + "mean": 0.075152, + "median": 0.072589, + "std": 0.014426, "sem": 0.000745, "min": 0.040047, "max": 0.12107, "recall-0.025": 0.0, "recall-0.05": 0.007979, - "recall-0.1": 0.933511, + "recall-0.1": 0.930851, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 376, "ap-0.025": 0.0, - "ap-0.05": 9.4e-05, - "ap-0.1": 0.843551, - "ap-0.15": 0.959589, - "ap-0.25": 0.959589, - "ap-0.5": 0.959589 + "ap-0.05": 8.3e-05, + "ap-0.1": 0.842634, + "ap-0.15": 0.966628, + "ap-0.25": 0.966628, + "ap-0.5": 0.966628 }, "head": { "count": 376, - "mean": 0.063289, + "mean": 0.06324, "median": 0.062777, - "std": 0.02607, - "sem": 0.001346, + "std": 0.025964, + "sem": 0.001341, "min": 0.007715, "max": 0.197424, "recall-0.025": 0.055851, @@ -660,9 +660,9 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 376, - "mean": 0.066843, - "median": 0.064619, - "std": 0.029378, + "mean": 0.066815, + "median": 0.064487, + "std": 0.029383, "sem": 0.001517, "min": 0.016733, "max": 0.205046, @@ -676,10 +676,10 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_right": { "count": 376, - "mean": 0.069399, + "mean": 0.069422, "median": 0.062402, - "std": 0.031883, - "sem": 0.001646, + "std": 0.03191, + "sem": 0.001648, "min": 0.017401, "max": 0.198707, "recall-0.025": 0.018617, @@ -692,15 +692,15 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 376, - "mean": 0.089682, + "mean": 0.089749, "median": 0.072996, - "std": 0.053299, - "sem": 0.002752, + "std": 0.053356, + "sem": 0.002755, "min": 0.009937, "max": 0.283516, "recall-0.025": 0.029255, "recall-0.05": 0.242021, - "recall-0.1": 0.651596, + "recall-0.1": 0.648936, "recall-0.15": 0.867021, "recall-0.25": 0.992021, "recall-0.5": 1.0, @@ -708,9 +708,9 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 376, - "mean": 0.077757, + "mean": 0.077764, "median": 0.070519, - "std": 0.037705, + "std": 0.037706, "sem": 0.001947, "min": 0.004749, "max": 0.194529, @@ -724,33 +724,33 @@ Results of the model in various experiments on different datasets. \ }, "wrist_left": { "count": 376, - "mean": 0.128965, - "median": 0.113502, - "std": 0.068869, - "sem": 0.003556, + "mean": 0.128876, + "median": 0.113244, + "std": 0.068811, + "sem": 0.003553, "min": 0.015136, - "max": 0.352772, + "max": 0.348579, "recall-0.025": 0.013298, "recall-0.05": 0.079787, - "recall-0.1": 0.417553, + "recall-0.1": 0.420213, "recall-0.15": 0.670213, - "recall-0.25": 0.920213, + "recall-0.25": 0.917553, "recall-0.5": 1.0, "num_labels": 376 }, "wrist_right": { "count": 376, - "mean": 0.102037, - "median": 0.097009, - "std": 0.044155, - "sem": 0.00228, + "mean": 0.101938, + "median": 0.097149, + "std": 0.043861, + "sem": 0.002265, "min": 0.002425, - "max": 0.277303, + "max": 0.277643, "recall-0.025": 0.005319, - "recall-0.05": 0.095745, + "recall-0.05": 0.093085, "recall-0.1": 0.521277, - "recall-0.15": 0.864362, - "recall-0.25": 0.994681, + "recall-0.15": 0.867021, + "recall-0.25": 0.992021, "recall-0.5": 1.0, "num_labels": 376 }, @@ -772,10 +772,10 @@ Results of the model in various experiments on different datasets. \ }, "hip_right": { "count": 376, - "mean": 0.065421, + "mean": 0.065513, "median": 0.059695, - "std": 0.034174, - "sem": 0.001765, + "std": 0.034493, + "sem": 0.001781, "min": 0.005283, "max": 0.259007, "recall-0.025": 0.053191, @@ -804,15 +804,15 @@ Results of the model in various experiments on different datasets. \ }, "knee_right": { "count": 376, - "mean": 0.053806, - "median": 0.049906, - "std": 0.027608, - "sem": 0.001426, + "mean": 0.053549, + "median": 0.049537, + "std": 0.02723, + "sem": 0.001406, "min": 0.008841, "max": 0.230822, "recall-0.025": 0.087766, - "recall-0.05": 0.5, - "recall-0.1": 0.952128, + "recall-0.05": 0.50266, + "recall-0.1": 0.954787, "recall-0.15": 0.992021, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -820,50 +820,50 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 376, - "mean": 0.074289, - "median": 0.066969, - "std": 0.045644, - "sem": 0.002357, + "mean": 0.072542, + "median": 0.066373, + "std": 0.043744, + "sem": 0.002259, "min": 0.009841, "max": 0.378337, "recall-0.025": 0.042553, - "recall-0.05": 0.327128, - "recall-0.1": 0.832447, - "recall-0.15": 0.944149, + "recall-0.05": 0.332447, + "recall-0.1": 0.853723, + "recall-0.15": 0.954787, "recall-0.25": 0.989362, "recall-0.5": 1.0, "num_labels": 376 }, "ankle_right": { "count": 376, - "mean": 0.066324, - "median": 0.052238, - "std": 0.048596, - "sem": 0.002509, + "mean": 0.063903, + "median": 0.052158, + "std": 0.045647, + "sem": 0.002357, "min": 0.007344, "max": 0.373408, "recall-0.025": 0.069149, - "recall-0.05": 0.430851, - "recall-0.1": 0.859043, - "recall-0.15": 0.946809, - "recall-0.25": 0.986702, + "recall-0.05": 0.43617, + "recall-0.1": 0.87766, + "recall-0.15": 0.957447, + "recall-0.25": 0.989362, "recall-0.5": 1.0, "num_labels": 376 }, "joint_recalls": { "num_labels": 4888, "recall-0.025": 0.04194, - "recall-0.05": 0.30115, - "recall-0.1": 0.79705, - "recall-0.15": 0.93208, - "recall-0.25": 0.98977, + "recall-0.05": 0.30176, + "recall-0.1": 0.79992, + "recall-0.15": 0.93351, + "recall-0.25": 0.98936, "recall-0.5": 1.0 } } { "total_parts": 5264, - "correct_parts": 5005, - "pcp": 0.950798 + "correct_parts": 5004, + "pcp": 0.950608 } ``` diff --git a/rpt/tracker.hpp b/rpt/tracker.hpp index d15937b..3d42643 100644 --- a/rpt/tracker.hpp +++ b/rpt/tracker.hpp @@ -24,7 +24,7 @@ struct Track class PoseTracker { public: - PoseTracker(float max_distance); + PoseTracker(float fps); std::vector>>> track_poses( const std::vector>> &poses_3d, @@ -36,7 +36,13 @@ public: private: float max_distance; size_t history_size = 3; - float max_movement_speed = 2.0; + + // Approach speed of EN ISO 13855 with 2000 mm/sec for hand speed + // and an additional factor to compensate for noise-based jumps + float max_movement_speed = 2.0 * 1.5; + + // The size of an A4 sheet of paper which is assumed to fit between two different persons + float max_base_distance = 0.3; std::vector timestamps; std::vector pose_tracks; @@ -64,9 +70,9 @@ private: // ================================================================================================= // ================================================================================================= -PoseTracker::PoseTracker(float max_distance) +PoseTracker::PoseTracker(float fps) { - this->max_distance = max_distance; + this->max_distance = max_base_distance + max_movement_speed / fps; } // ================================================================================================= diff --git a/scripts/test_skelda_dataset.cpp b/scripts/test_skelda_dataset.cpp index 7875106..c823fd9 100644 --- a/scripts/test_skelda_dataset.cpp +++ b/scripts/test_skelda_dataset.cpp @@ -130,12 +130,11 @@ int main(int argc, char **argv) std::make_unique( use_wb, min_bbox_score, min_bbox_area, batch_poses); - // Load 3D model + // Load 3D models std::unique_ptr tri_model = std::make_unique( min_match_score, min_group_size); - const float max_distance = 0.3 + 2.0 / ifps; std::unique_ptr pose_tracker = std::make_unique( - max_distance); + ifps); // Timers size_t time_count = dataset.size(); @@ -249,18 +248,26 @@ int main(int argc, char **argv) elapsed = std::chrono::high_resolution_clock::now() - stime; times_pose3d.push_back(elapsed.count()); - stime = std::chrono::high_resolution_clock::now(); - double ts = ((int)item["index"]) / ifps; - auto pose_tracks = pose_tracker->track_poses(poses_3d, joint_names_2d, ts); - std::vector>> poses_3d_refined; - for (size_t j = 0; j < pose_tracks.size(); j++) + if (ifps < 1) { - auto &pose = std::get<1>(pose_tracks[j]); - poses_3d_refined.push_back(pose); + // Disable pose tracking if frame rate is too low + times_tracks.push_back(0.0); + } + else + { + stime = std::chrono::high_resolution_clock::now(); + double ts = ((int)item["index"]) / ifps; + auto pose_tracks = pose_tracker->track_poses(poses_3d, joint_names_2d, ts); + std::vector>> poses_3d_refined; + for (size_t j = 0; j < pose_tracks.size(); j++) + { + auto &pose = std::get<1>(pose_tracks[j]); + poses_3d_refined.push_back(pose); + } + poses_3d = poses_3d_refined; + elapsed = std::chrono::high_resolution_clock::now() - stime; + times_tracks.push_back(elapsed.count()); } - poses_3d = poses_3d_refined; - elapsed = std::chrono::high_resolution_clock::now() - stime; - times_tracks.push_back(elapsed.count()); all_poses_3d.push_back(std::move(poses_3d)); all_ids.push_back(item["id"].get()); diff --git a/scripts/test_skelda_dataset.py b/scripts/test_skelda_dataset.py index 24c5b88..4c69657 100644 --- a/scripts/test_skelda_dataset.py +++ b/scripts/test_skelda_dataset.py @@ -85,7 +85,7 @@ datasets = { }, "campus": { "path": "/datasets/campus/skelda/test.json", - "fps": 20, + "fps": 25, "take_interval": 1, "min_match_score": 0.92, "min_bbox_score": 0.5, @@ -93,7 +93,7 @@ datasets = { "shelf": { "path": "/datasets/shelf/skelda/test.json", "take_interval": 1, - "fps": 20, + "fps": 25, "min_match_score": 0.95, "min_group_size": 2, },