From 2f52521b9af0545dff5449152ded520c315a214a Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 13 Jan 2025 16:50:08 +0100 Subject: [PATCH 01/10] Using bayer encoding for images. --- media/RESULTS.md | 5218 ++++++++++++++++---------------- scripts/test_skelda_dataset.py | 33 +- scripts/test_triangulate.py | 19 + 3 files changed, 2657 insertions(+), 2613 deletions(-) diff --git a/media/RESULTS.md b/media/RESULTS.md index df99e2d..9b16064 100644 --- a/media/RESULTS.md +++ b/media/RESULTS.md @@ -7,10 +7,10 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.01979934926760399, - "avg_time_2d": 0.008879996154267909, - "avg_time_3d": 0.0003021462488982637, - "avg_fps": 108.9070454467338 + "img_loading": 0.02141373965699794, + "avg_time_2d": 0.009271658073037358, + "avg_time_3d": 0.00028209807509082857, + "avg_fps": 104.67087337119489 } { "person_nums": { @@ -29,165 +29,165 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 600, - "mean": 0.066667, - "median": 0.058614, - "std": 0.028022, - "sem": 0.001145, - "min": 0.043676, - "max": 0.196063, + "mean": 0.061683, + "median": 0.053445, + "std": 0.028882, + "sem": 0.00118, + "min": 0.036411, + "max": 0.187982, "recall-0.025": 0.0, - "recall-0.05": 0.048333, - "recall-0.1": 0.931667, + "recall-0.05": 0.34, + "recall-0.1": 0.938333, "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.005384, - "ap-0.1": 0.888068, - "ap-0.15": 0.91386, + "ap-0.05": 0.189939, + "ap-0.1": 0.891718, + "ap-0.15": 0.909546, "ap-0.25": 1.0, "ap-0.5": 1.0 }, "nose": { "count": 600, - "mean": 0.11317, - "median": 0.097143, - "std": 0.041836, - "sem": 0.001709, - "min": 0.036359, - "max": 0.312603, - "recall-0.025": 0.0, - "recall-0.05": 0.013333, - "recall-0.1": 0.528333, - "recall-0.15": 0.815, - "recall-0.25": 0.993333, + "mean": 0.106141, + "median": 0.094448, + "std": 0.038366, + "sem": 0.001568, + "min": 0.024893, + "max": 0.246762, + "recall-0.025": 0.001667, + "recall-0.05": 0.041667, + "recall-0.1": 0.563333, + "recall-0.15": 0.87, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "shoulder_left": { "count": 600, - "mean": 0.034127, - "median": 0.025218, - "std": 0.032234, - "sem": 0.001317, - "min": 0.002674, - "max": 0.18039, - "recall-0.025": 0.49, - "recall-0.05": 0.853333, - "recall-0.1": 0.945, - "recall-0.15": 0.966667, + "mean": 0.035447, + "median": 0.026255, + "std": 0.033951, + "sem": 0.001387, + "min": 0.002737, + "max": 0.175181, + "recall-0.025": 0.471667, + "recall-0.05": 0.818333, + "recall-0.1": 0.94, + "recall-0.15": 0.961667, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "shoulder_right": { "count": 600, - "mean": 0.047591, - "median": 0.034595, - "std": 0.0413, - "sem": 0.001687, - "min": 0.004755, - "max": 0.258638, - "recall-0.025": 0.206667, - "recall-0.05": 0.758333, - "recall-0.1": 0.92, - "recall-0.15": 0.943333, - "recall-0.25": 0.996667, + "mean": 0.044417, + "median": 0.032206, + "std": 0.03933, + "sem": 0.001607, + "min": 0.004924, + "max": 0.213952, + "recall-0.025": 0.32, + "recall-0.05": 0.775, + "recall-0.1": 0.921667, + "recall-0.15": 0.948333, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "elbow_left": { "count": 600, - "mean": 0.042798, - "median": 0.034678, - "std": 0.034312, - "sem": 0.001402, - "min": 0.004685, - "max": 0.196545, - "recall-0.025": 0.241667, - "recall-0.05": 0.806667, - "recall-0.1": 0.945, - "recall-0.15": 0.956667, + "mean": 0.044487, + "median": 0.035673, + "std": 0.036114, + "sem": 0.001476, + "min": 0.000729, + "max": 0.198786, + "recall-0.025": 0.25, + "recall-0.05": 0.786667, + "recall-0.1": 0.933333, + "recall-0.15": 0.953333, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "elbow_right": { "count": 600, - "mean": 0.043928, - "median": 0.032725, - "std": 0.036551, - "sem": 0.001493, - "min": 0.005454, - "max": 0.38468, - "recall-0.025": 0.236667, - "recall-0.05": 0.795, - "recall-0.1": 0.933333, - "recall-0.15": 0.946667, + "mean": 0.043388, + "median": 0.03166, + "std": 0.037156, + "sem": 0.001518, + "min": 0.003144, + "max": 0.305319, + "recall-0.025": 0.268333, + "recall-0.05": 0.818333, + "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.042116, - "median": 0.023567, - "std": 0.046214, - "sem": 0.001888, - "min": 0.000925, - "max": 0.29384, - "recall-0.025": 0.52, - "recall-0.05": 0.755, + "mean": 0.042448, + "median": 0.024983, + "std": 0.046527, + "sem": 0.001901, + "min": 0.002855, + "max": 0.346367, + "recall-0.025": 0.5, + "recall-0.05": 0.75, "recall-0.1": 0.891667, - "recall-0.15": 0.931667, + "recall-0.15": 0.94, "recall-0.25": 0.996667, "recall-0.5": 1.0, "num_labels": 600 }, "wrist_right": { - "count": 598, - "mean": 0.046536, - "median": 0.026456, - "std": 0.056252, - "sem": 0.002302, - "min": 0.003099, - "max": 0.490139, - "recall-0.025": 0.47, - "recall-0.05": 0.753333, - "recall-0.1": 0.886667, - "recall-0.15": 0.901667, - "recall-0.25": 0.99, - "recall-0.5": 0.996667, + "count": 600, + "mean": 0.048379, + "median": 0.027646, + "std": 0.058274, + "sem": 0.002381, + "min": 0.002667, + "max": 0.456727, + "recall-0.025": 0.433333, + "recall-0.05": 0.765, + "recall-0.1": 0.888333, + "recall-0.15": 0.903333, + "recall-0.25": 0.983333, + "recall-0.5": 1.0, "num_labels": 600 }, "hip_left": { "count": 600, - "mean": 0.090083, - "median": 0.085481, - "std": 0.032751, - "sem": 0.001338, - "min": 0.014241, - "max": 0.235833, - "recall-0.025": 0.005, - "recall-0.05": 0.031667, - "recall-0.1": 0.816667, - "recall-0.15": 0.95, + "mean": 0.069635, + "median": 0.058569, + "std": 0.03605, + "sem": 0.001473, + "min": 0.025326, + "max": 0.216965, + "recall-0.025": 0.0, + "recall-0.05": 0.246667, + "recall-0.1": 0.881667, + "recall-0.15": 0.945, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 600 }, "hip_right": { "count": 600, - "mean": 0.113566, - "median": 0.112803, - "std": 0.026148, - "sem": 0.001068, - "min": 0.030358, - "max": 0.235667, - "recall-0.025": 0.0, - "recall-0.05": 0.011667, - "recall-0.1": 0.231667, + "mean": 0.086503, + "median": 0.083243, + "std": 0.029123, + "sem": 0.00119, + "min": 0.01068, + "max": 0.216597, + "recall-0.025": 0.016667, + "recall-0.05": 0.058333, + "recall-0.1": 0.861667, "recall-0.15": 0.95, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -195,82 +195,82 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 600, - "mean": 0.060138, - "median": 0.044911, - "std": 0.057461, - "sem": 0.002348, - "min": 0.013069, - "max": 0.400068, - "recall-0.025": 0.045, - "recall-0.05": 0.6, - "recall-0.1": 0.92, - "recall-0.15": 0.926667, - "recall-0.25": 0.981667, + "mean": 0.058563, + "median": 0.041457, + "std": 0.062525, + "sem": 0.002555, + "min": 0.017158, + "max": 0.477274, + "recall-0.025": 0.086667, + "recall-0.05": 0.675, + "recall-0.1": 0.908333, + "recall-0.15": 0.925, + "recall-0.25": 0.98, "recall-0.5": 1.0, "num_labels": 600 }, "knee_right": { "count": 600, - "mean": 0.052487, - "median": 0.044247, - "std": 0.03625, - "sem": 0.001481, - "min": 0.015468, - "max": 0.233877, - "recall-0.025": 0.035, - "recall-0.05": 0.731667, - "recall-0.1": 0.938333, - "recall-0.15": 0.94, - "recall-0.25": 1.0, + "mean": 0.047268, + "median": 0.035689, + "std": 0.039527, + "sem": 0.001615, + "min": 0.00887, + "max": 0.305548, + "recall-0.025": 0.101667, + "recall-0.05": 0.815, + "recall-0.1": 0.92, + "recall-0.15": 0.941667, + "recall-0.25": 0.998333, "recall-0.5": 1.0, "num_labels": 600 }, "ankle_left": { - "count": 597, - "mean": 0.095334, - "median": 0.084576, - "std": 0.047857, - "sem": 0.00196, - "min": 0.046243, - "max": 0.499049, + "count": 595, + "mean": 0.08962, + "median": 0.082327, + "std": 0.035253, + "sem": 0.001446, + "min": 0.042995, + "max": 0.38092, "recall-0.025": 0.0, - "recall-0.05": 0.001667, - "recall-0.1": 0.846667, + "recall-0.05": 0.003333, + "recall-0.1": 0.875, "recall-0.15": 0.936667, - "recall-0.25": 0.98, - "recall-0.5": 0.995, + "recall-0.25": 0.983333, + "recall-0.5": 0.991667, "num_labels": 600 }, "ankle_right": { "count": 600, - "mean": 0.081125, - "median": 0.068111, - "std": 0.050481, - "sem": 0.002063, - "min": 0.038007, - "max": 0.475069, + "mean": 0.081832, + "median": 0.067407, + "std": 0.051265, + "sem": 0.002095, + "min": 0.03106, + "max": 0.412967, "recall-0.025": 0.0, - "recall-0.05": 0.023333, - "recall-0.1": 0.903333, - "recall-0.15": 0.925, - "recall-0.25": 0.985, + "recall-0.05": 0.043333, + "recall-0.1": 0.891667, + "recall-0.15": 0.915, + "recall-0.25": 0.973333, "recall-0.5": 1.0, "num_labels": 600 }, "joint_recalls": { "num_labels": 7800, - "recall-0.025": 0.17308, - "recall-0.05": 0.47128, - "recall-0.1": 0.82308, - "recall-0.15": 0.92974, - "recall-0.25": 0.99372, + "recall-0.025": 0.18821, + "recall-0.05": 0.50667, + "recall-0.1": 0.87667, + "recall-0.15": 0.93282, + "recall-0.25": 0.99269, "recall-0.5": 0.99936 } } { "total_parts": 8400, - "correct_parts": 8098, - "pcp": 0.964048 + "correct_parts": 8118, + "pcp": 0.966429 } ``` @@ -278,107 +278,107 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.04295783026521558, - "avg_time_2d": 0.01779815503412096, - "avg_time_3d": 0.0006907936633657344, - "avg_fps": 54.08636350080497 + "img_loading": 0.044489096120460744, + "avg_time_2d": 0.018255191979949008, + "avg_time_3d": 0.0006648879690268605, + "avg_fps": 52.85389928038487 } { "person_nums": { "total_frames": 301, "total_labels": 477, - "total_preds": 830, + "total_preds": 833, "considered_empty": 0, "valid_preds": 477, - "invalid_preds": 353, + "invalid_preds": 356, "missing": 0, - "invalid_fraction": 0.4253, - "precision": 0.5747, + "invalid_fraction": 0.42737, + "precision": 0.57263, "recall": 1.0, - "f1": 0.72992, - "non_empty": 830 + "f1": 0.72824, + "non_empty": 833 }, "mpjpe": { "count": 477, - "mean": 0.048293, - "median": 0.043324, - "std": 0.014938, - "sem": 0.000685, - "min": 0.028113, - "max": 0.118923, + "mean": 0.048052, + "median": 0.042852, + "std": 0.015195, + "sem": 0.000696, + "min": 0.028815, + "max": 0.136671, "recall-0.025": 0.0, - "recall-0.05": 0.677149, + "recall-0.05": 0.696017, "recall-0.1": 0.987421, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 477, "ap-0.025": 0.0, - "ap-0.05": 0.357493, - "ap-0.1": 0.705603, - "ap-0.15": 0.717296, - "ap-0.25": 0.717296, - "ap-0.5": 0.717296 + "ap-0.05": 0.379242, + "ap-0.1": 0.724402, + "ap-0.15": 0.737861, + "ap-0.25": 0.737861, + "ap-0.5": 0.737861 }, "head": { "count": 477, - "mean": 0.053512, - "median": 0.049734, - "std": 0.024196, - "sem": 0.001109, - "min": 0.003718, - "max": 0.135757, + "mean": 0.053874, + "median": 0.049955, + "std": 0.025137, + "sem": 0.001152, + "min": 0.006113, + "max": 0.186109, "recall-0.025": 0.081761, - "recall-0.05": 0.509434, - "recall-0.1": 0.93501, - "recall-0.15": 1.0, + "recall-0.05": 0.501048, + "recall-0.1": 0.9413, + "recall-0.15": 0.993711, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 477 }, "shoulder_left": { "count": 477, - "mean": 0.042939, - "median": 0.038208, - "std": 0.020287, - "sem": 0.00093, - "min": 0.004925, - "max": 0.136917, - "recall-0.025": 0.146751, - "recall-0.05": 0.719078, + "mean": 0.042499, + "median": 0.037555, + "std": 0.020829, + "sem": 0.000955, + "min": 0.001617, + "max": 0.150185, + "recall-0.025": 0.165618, + "recall-0.05": 0.727463, "recall-0.1": 0.989518, - "recall-0.15": 1.0, + "recall-0.15": 0.997904, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 477 }, "shoulder_right": { "count": 477, - "mean": 0.050571, - "median": 0.046707, - "std": 0.02374, - "sem": 0.001088, - "min": 0.005888, - "max": 0.135368, - "recall-0.025": 0.098532, - "recall-0.05": 0.536688, - "recall-0.1": 0.949686, - "recall-0.15": 1.0, + "mean": 0.050613, + "median": 0.045164, + "std": 0.024733, + "sem": 0.001134, + "min": 0.005348, + "max": 0.150646, + "recall-0.025": 0.121593, + "recall-0.05": 0.555556, + "recall-0.1": 0.955975, + "recall-0.15": 0.997904, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 477 }, "elbow_left": { "count": 477, - "mean": 0.041528, - "median": 0.032643, - "std": 0.029184, - "sem": 0.001338, - "min": 0.004723, - "max": 0.322505, - "recall-0.025": 0.308176, - "recall-0.05": 0.740042, - "recall-0.1": 0.953878, + "mean": 0.04095, + "median": 0.033218, + "std": 0.028738, + "sem": 0.001317, + "min": 0.003819, + "max": 0.325076, + "recall-0.025": 0.29979, + "recall-0.05": 0.752621, + "recall-0.1": 0.951782, "recall-0.15": 0.997904, "recall-0.25": 0.997904, "recall-0.5": 1.0, @@ -386,79 +386,79 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 477, - "mean": 0.05333, - "median": 0.045195, - "std": 0.040872, - "sem": 0.001873, - "min": 0.002333, - "max": 0.243832, - "recall-0.025": 0.257862, - "recall-0.05": 0.570231, - "recall-0.1": 0.899371, - "recall-0.15": 0.960168, + "mean": 0.053209, + "median": 0.043869, + "std": 0.040698, + "sem": 0.001865, + "min": 0.002722, + "max": 0.236358, + "recall-0.025": 0.262055, + "recall-0.05": 0.561845, + "recall-0.1": 0.895178, + "recall-0.15": 0.958071, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 477 }, "wrist_left": { "count": 477, - "mean": 0.059956, - "median": 0.053843, - "std": 0.038786, - "sem": 0.001778, - "min": 0.002828, - "max": 0.297514, - "recall-0.025": 0.140461, - "recall-0.05": 0.421384, - "recall-0.1": 0.90566, - "recall-0.15": 0.964361, - "recall-0.25": 0.993711, + "mean": 0.060157, + "median": 0.053926, + "std": 0.038715, + "sem": 0.001775, + "min": 0.003566, + "max": 0.32995, + "recall-0.025": 0.138365, + "recall-0.05": 0.419287, + "recall-0.1": 0.901468, + "recall-0.15": 0.962264, + "recall-0.25": 0.991614, "recall-0.5": 1.0, "num_labels": 477 }, "wrist_right": { "count": 477, - "mean": 0.059048, - "median": 0.054666, - "std": 0.032506, - "sem": 0.00149, - "min": 0.003898, - "max": 0.298564, - "recall-0.025": 0.111111, - "recall-0.05": 0.42348, + "mean": 0.059301, + "median": 0.054945, + "std": 0.033581, + "sem": 0.001539, + "min": 0.007479, + "max": 0.373087, + "recall-0.025": 0.102725, + "recall-0.05": 0.404612, "recall-0.1": 0.90566, - "recall-0.15": 0.985325, + "recall-0.15": 0.981132, "recall-0.25": 0.997904, "recall-0.5": 1.0, "num_labels": 477 }, "hip_left": { "count": 477, - "mean": 0.048603, - "median": 0.042469, - "std": 0.025771, - "sem": 0.001181, - "min": 0.005925, - "max": 0.138179, - "recall-0.025": 0.174004, - "recall-0.05": 0.593291, - "recall-0.1": 0.960168, - "recall-0.15": 1.0, + "mean": 0.047596, + "median": 0.042178, + "std": 0.026624, + "sem": 0.00122, + "min": 0.006884, + "max": 0.187638, + "recall-0.025": 0.201258, + "recall-0.05": 0.616352, + "recall-0.1": 0.958071, + "recall-0.15": 0.995807, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 477 }, "hip_right": { "count": 477, - "mean": 0.059734, - "median": 0.057055, - "std": 0.025122, - "sem": 0.001151, - "min": 0.002334, - "max": 0.14119, - "recall-0.025": 0.079665, - "recall-0.05": 0.32914, - "recall-0.1": 0.926625, + "mean": 0.058267, + "median": 0.057363, + "std": 0.023758, + "sem": 0.001089, + "min": 0.004326, + "max": 0.131714, + "recall-0.025": 0.085954, + "recall-0.05": 0.398323, + "recall-0.1": 0.947589, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -466,15 +466,15 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 477, - "mean": 0.041019, - "median": 0.03845, - "std": 0.024637, - "sem": 0.001129, - "min": 0.003899, - "max": 0.189367, - "recall-0.025": 0.24109, - "recall-0.05": 0.737945, - "recall-0.1": 0.972746, + "mean": 0.040442, + "median": 0.038393, + "std": 0.024521, + "sem": 0.001124, + "min": 0.004989, + "max": 0.188675, + "recall-0.025": 0.268344, + "recall-0.05": 0.750524, + "recall-0.1": 0.976939, "recall-0.15": 0.989518, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -482,14 +482,14 @@ Results of the model in various experiments on different datasets. \ }, "knee_right": { "count": 477, - "mean": 0.039858, - "median": 0.036179, - "std": 0.023797, - "sem": 0.001091, - "min": 0.006892, - "max": 0.188435, - "recall-0.025": 0.32914, - "recall-0.05": 0.712788, + "mean": 0.040187, + "median": 0.037048, + "std": 0.023416, + "sem": 0.001073, + "min": 0.007444, + "max": 0.18724, + "recall-0.025": 0.320755, + "recall-0.05": 0.706499, "recall-0.1": 0.976939, "recall-0.15": 0.997904, "recall-0.25": 1.0, @@ -498,15 +498,15 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 477, - "mean": 0.036634, - "median": 0.027899, - "std": 0.031313, - "sem": 0.001435, - "min": 0.005377, - "max": 0.215876, - "recall-0.025": 0.433962, - "recall-0.05": 0.813417, - "recall-0.1": 0.939203, + "mean": 0.036481, + "median": 0.028608, + "std": 0.030745, + "sem": 0.001409, + "min": 0.005139, + "max": 0.223634, + "recall-0.025": 0.425577, + "recall-0.05": 0.819706, + "recall-0.1": 0.9413, "recall-0.15": 0.983229, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -514,27 +514,27 @@ Results of the model in various experiments on different datasets. \ }, "ankle_right": { "count": 477, - "mean": 0.041072, - "median": 0.030714, - "std": 0.038367, - "sem": 0.001759, - "min": 0.002361, - "max": 0.26882, - "recall-0.025": 0.314465, - "recall-0.05": 0.792453, - "recall-0.1": 0.926625, - "recall-0.15": 0.968553, + "mean": 0.041095, + "median": 0.030562, + "std": 0.038332, + "sem": 0.001757, + "min": 0.002637, + "max": 0.270657, + "recall-0.025": 0.312369, + "recall-0.05": 0.807128, + "recall-0.1": 0.928721, + "recall-0.15": 0.966457, "recall-0.25": 0.995807, "recall-0.5": 1.0, "num_labels": 477 }, "joint_recalls": { "num_labels": 6201, - "recall-0.025": 0.20739, - "recall-0.05": 0.60668, - "recall-0.1": 0.94033, - "recall-0.15": 0.98807, - "recall-0.25": 0.99871, + "recall-0.025": 0.21351, + "recall-0.05": 0.61587, + "recall-0.1": 0.94275, + "recall-0.15": 0.98549, + "recall-0.25": 0.99839, "recall-0.5": 1.0 } } @@ -549,59 +549,59 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.004933710368174427, - "avg_time_2d": 0.00870872106192247, - "avg_time_3d": 0.0003379673328039781, - "avg_fps": 110.5376858766271 + "img_loading": 0.005073833015729797, + "avg_time_2d": 0.008780407455732237, + "avg_time_3d": 0.0003352693791659373, + "avg_fps": 109.70112456944842 } { "person_nums": { "total_frames": 222, "total_labels": 376, - "total_preds": 443, + "total_preds": 453, "considered_empty": 0, "valid_preds": 376, - "invalid_preds": 67, + "invalid_preds": 77, "missing": 0, - "invalid_fraction": 0.15124, - "precision": 0.84876, + "invalid_fraction": 0.16998, + "precision": 0.83002, "recall": 1.0, - "f1": 0.91819, - "non_empty": 443 + "f1": 0.90712, + "non_empty": 453 }, "mpjpe": { "count": 376, - "mean": 0.078588, - "median": 0.07461, - "std": 0.020279, - "sem": 0.001047, - "min": 0.046892, - "max": 0.204121, + "mean": 0.079394, + "median": 0.075674, + "std": 0.019424, + "sem": 0.001003, + "min": 0.040193, + "max": 0.254009, "recall-0.025": 0.0, - "recall-0.05": 0.007979, - "recall-0.1": 0.896277, - "recall-0.15": 0.986702, - "recall-0.25": 1.0, + "recall-0.05": 0.005319, + "recall-0.1": 0.864362, + "recall-0.15": 0.994681, + "recall-0.25": 0.99734, "recall-0.5": 1.0, "num_labels": 376, "ap-0.025": 0.0, - "ap-0.05": 0.000678, - "ap-0.1": 0.804939, - "ap-0.15": 0.925765, - "ap-0.25": 0.945337, - "ap-0.5": 0.945337 + "ap-0.05": 7.4e-05, + "ap-0.1": 0.739086, + "ap-0.15": 0.940128, + "ap-0.25": 0.942697, + "ap-0.5": 0.945474 }, "head": { "count": 376, - "mean": 0.069714, - "median": 0.066299, - "std": 0.035144, - "sem": 0.001815, - "min": 0.011434, - "max": 0.264105, - "recall-0.025": 0.077128, - "recall-0.05": 0.31383, - "recall-0.1": 0.845745, + "mean": 0.072768, + "median": 0.068735, + "std": 0.037079, + "sem": 0.001915, + "min": 0.010955, + "max": 0.398709, + "recall-0.025": 0.053191, + "recall-0.05": 0.263298, + "recall-0.1": 0.840426, "recall-0.15": 0.970745, "recall-0.25": 0.99734, "recall-0.5": 1.0, @@ -609,210 +609,210 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 376, - "mean": 0.067876, - "median": 0.061292, - "std": 0.033164, - "sem": 0.001713, - "min": 0.013038, - "max": 0.244502, - "recall-0.025": 0.029255, - "recall-0.05": 0.292553, - "recall-0.1": 0.869681, - "recall-0.15": 0.976064, + "mean": 0.072258, + "median": 0.064827, + "std": 0.034798, + "sem": 0.001797, + "min": 0.011871, + "max": 0.234099, + "recall-0.025": 0.026596, + "recall-0.05": 0.255319, + "recall-0.1": 0.840426, + "recall-0.15": 0.965426, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 376 }, "shoulder_right": { "count": 376, - "mean": 0.074885, - "median": 0.070253, - "std": 0.034983, - "sem": 0.001807, - "min": 0.006692, - "max": 0.194165, - "recall-0.025": 0.029255, - "recall-0.05": 0.268617, - "recall-0.1": 0.787234, - "recall-0.15": 0.957447, - "recall-0.25": 1.0, + "mean": 0.080766, + "median": 0.07291, + "std": 0.042949, + "sem": 0.002218, + "min": 0.012177, + "max": 0.491583, + "recall-0.025": 0.018617, + "recall-0.05": 0.220745, + "recall-0.1": 0.763298, + "recall-0.15": 0.944149, + "recall-0.25": 0.99734, "recall-0.5": 1.0, "num_labels": 376 }, "elbow_left": { "count": 376, - "mean": 0.089187, - "median": 0.077462, - "std": 0.049744, - "sem": 0.002569, - "min": 0.014348, - "max": 0.254225, - "recall-0.025": 0.037234, - "recall-0.05": 0.244681, - "recall-0.1": 0.643617, - "recall-0.15": 0.851064, - "recall-0.25": 0.99734, + "mean": 0.089063, + "median": 0.075083, + "std": 0.052857, + "sem": 0.00273, + "min": 0.007318, + "max": 0.352924, + "recall-0.025": 0.029255, + "recall-0.05": 0.24734, + "recall-0.1": 0.656915, + "recall-0.15": 0.856383, + "recall-0.25": 0.989362, "recall-0.5": 1.0, "num_labels": 376 }, "elbow_right": { - "count": 376, - "mean": 0.080829, - "median": 0.068233, - "std": 0.043987, - "sem": 0.002272, - "min": 0.011725, - "max": 0.233727, - "recall-0.025": 0.058511, - "recall-0.05": 0.279255, - "recall-0.1": 0.702128, - "recall-0.15": 0.898936, - "recall-0.25": 1.0, - "recall-0.5": 1.0, + "count": 375, + "mean": 0.08396, + "median": 0.073184, + "std": 0.045008, + "sem": 0.002327, + "min": 0.005862, + "max": 0.218543, + "recall-0.025": 0.047872, + "recall-0.05": 0.25, + "recall-0.1": 0.664894, + "recall-0.15": 0.901596, + "recall-0.25": 0.99734, + "recall-0.5": 0.99734, "num_labels": 376 }, "wrist_left": { "count": 376, - "mean": 0.115561, - "median": 0.103046, - "std": 0.067613, - "sem": 0.003492, - "min": 0.009428, - "max": 0.484697, - "recall-0.025": 0.026596, - "recall-0.05": 0.12766, - "recall-0.1": 0.457447, - "recall-0.15": 0.771277, - "recall-0.25": 0.946809, + "mean": 0.127485, + "median": 0.111794, + "std": 0.071229, + "sem": 0.003678, + "min": 0.0099, + "max": 0.453164, + "recall-0.025": 0.013298, + "recall-0.05": 0.101064, + "recall-0.1": 0.401596, + "recall-0.15": 0.699468, + "recall-0.25": 0.922872, "recall-0.5": 1.0, "num_labels": 376 }, "wrist_right": { - "count": 376, - "mean": 0.102911, - "median": 0.094236, - "std": 0.045892, - "sem": 0.00237, - "min": 0.027564, - "max": 0.26014, - "recall-0.025": 0.0, - "recall-0.05": 0.071809, - "recall-0.1": 0.579787, - "recall-0.15": 0.845745, - "recall-0.25": 0.994681, - "recall-0.5": 1.0, + "count": 375, + "mean": 0.11421, + "median": 0.107244, + "std": 0.050117, + "sem": 0.002591, + "min": 0.02044, + "max": 0.465366, + "recall-0.025": 0.00266, + "recall-0.05": 0.050532, + "recall-0.1": 0.43883, + "recall-0.15": 0.803191, + "recall-0.25": 0.989362, + "recall-0.5": 0.99734, "num_labels": 376 }, "hip_left": { "count": 376, - "mean": 0.073232, - "median": 0.073273, - "std": 0.031964, - "sem": 0.001651, - "min": 0.005297, - "max": 0.236371, - "recall-0.025": 0.071809, - "recall-0.05": 0.223404, - "recall-0.1": 0.805851, - "recall-0.15": 0.984043, + "mean": 0.072676, + "median": 0.071036, + "std": 0.030176, + "sem": 0.001558, + "min": 0.010522, + "max": 0.160822, + "recall-0.025": 0.055851, + "recall-0.05": 0.244681, + "recall-0.1": 0.795213, + "recall-0.15": 0.992021, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 376 }, "hip_right": { "count": 376, - "mean": 0.08026, - "median": 0.077832, - "std": 0.032959, - "sem": 0.001702, - "min": 0.012152, - "max": 0.227098, + "mean": 0.078253, + "median": 0.073309, + "std": 0.035105, + "sem": 0.001813, + "min": 0.014126, + "max": 0.26013, "recall-0.025": 0.023936, - "recall-0.05": 0.151596, - "recall-0.1": 0.784574, - "recall-0.15": 0.962766, - "recall-0.25": 1.0, + "recall-0.05": 0.196809, + "recall-0.1": 0.808511, + "recall-0.15": 0.952128, + "recall-0.25": 0.99734, "recall-0.5": 1.0, "num_labels": 376 }, "knee_left": { "count": 376, - "mean": 0.056133, - "median": 0.052373, - "std": 0.029066, - "sem": 0.001501, - "min": 0.008066, - "max": 0.244232, - "recall-0.025": 0.103723, - "recall-0.05": 0.465426, - "recall-0.1": 0.93617, - "recall-0.15": 0.989362, + "mean": 0.054201, + "median": 0.049227, + "std": 0.025504, + "sem": 0.001317, + "min": 0.004009, + "max": 0.148583, + "recall-0.025": 0.106383, + "recall-0.05": 0.518617, + "recall-0.1": 0.941489, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 376 }, "knee_right": { "count": 376, - "mean": 0.056384, - "median": 0.051883, - "std": 0.028402, - "sem": 0.001467, - "min": 0.010997, - "max": 0.214376, - "recall-0.025": 0.082447, - "recall-0.05": 0.454787, - "recall-0.1": 0.941489, - "recall-0.15": 0.984043, + "mean": 0.054822, + "median": 0.049053, + "std": 0.031296, + "sem": 0.001616, + "min": 0.003248, + "max": 0.237713, + "recall-0.025": 0.114362, + "recall-0.05": 0.515957, + "recall-0.1": 0.930851, + "recall-0.15": 0.976064, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 376 }, "ankle_left": { - "count": 372, - "mean": 0.077197, - "median": 0.054066, - "std": 0.078374, - "sem": 0.004069, - "min": 0.008893, - "max": 0.494805, - "recall-0.025": 0.074468, - "recall-0.05": 0.441489, - "recall-0.1": 0.819149, - "recall-0.15": 0.925532, - "recall-0.25": 0.93883, - "recall-0.5": 0.989362, + "count": 376, + "mean": 0.066112, + "median": 0.053329, + "std": 0.05061, + "sem": 0.002613, + "min": 0.005836, + "max": 0.393318, + "recall-0.025": 0.103723, + "recall-0.05": 0.446809, + "recall-0.1": 0.861702, + "recall-0.15": 0.960106, + "recall-0.25": 0.978723, + "recall-0.5": 1.0, "num_labels": 376 }, "ankle_right": { "count": 375, - "mean": 0.071603, - "median": 0.048976, - "std": 0.079649, - "sem": 0.004119, - "min": 0.008576, - "max": 0.47531, - "recall-0.025": 0.077128, - "recall-0.05": 0.510638, - "recall-0.1": 0.880319, - "recall-0.15": 0.928191, - "recall-0.25": 0.946809, + "mean": 0.06191, + "median": 0.050364, + "std": 0.046209, + "sem": 0.002389, + "min": 0.008334, + "max": 0.378969, + "recall-0.025": 0.066489, + "recall-0.05": 0.49734, + "recall-0.1": 0.906915, + "recall-0.15": 0.962766, + "recall-0.25": 0.981383, "recall-0.5": 0.99734, "num_labels": 376 }, "joint_recalls": { "num_labels": 4888, - "recall-0.025": 0.05196, - "recall-0.05": 0.29439, - "recall-0.1": 0.77169, - "recall-0.15": 0.92615, - "recall-0.25": 0.98588, + "recall-0.025": 0.0493, + "recall-0.05": 0.29194, + "recall-0.1": 0.75716, + "recall-0.15": 0.92103, + "recall-0.25": 0.98732, "recall-0.5": 0.99877 } } { "total_parts": 5264, - "correct_parts": 4946, - "pcp": 0.93959 + "correct_parts": 4931, + "pcp": 0.93674 } ``` @@ -820,206 +820,206 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.011505636529506504, - "avg_time_2d": 0.00978584589981301, - "avg_time_3d": 0.0003606845566067056, - "avg_fps": 98.55585653589591 + "img_loading": 0.011780858232439623, + "avg_time_2d": 0.010135567823789039, + "avg_time_3d": 0.0004209093207881601, + "avg_fps": 94.72857150206536 } { "person_nums": { "total_frames": 629, "total_labels": 1061, - "total_preds": 1128, + "total_preds": 1154, "considered_empty": 0, - "valid_preds": 812, - "invalid_preds": 316, - "missing": 249, - "invalid_fraction": 0.28014, - "precision": 0.71986, - "recall": 0.76532, - "f1": 0.74189, - "non_empty": 1128 + "valid_preds": 824, + "invalid_preds": 330, + "missing": 237, + "invalid_fraction": 0.28596, + "precision": 0.71404, + "recall": 0.77663, + "f1": 0.74402, + "non_empty": 1154 }, "mpjpe": { - "count": 812, - "mean": 0.119396, - "median": 0.097912, - "std": 0.072582, - "sem": 0.002549, - "min": 0.038651, - "max": 0.488629, + "count": 824, + "mean": 0.116945, + "median": 0.098916, + "std": 0.063493, + "sem": 0.002213, + "min": 0.045377, + "max": 0.476467, "recall-0.025": 0.0, - "recall-0.05": 0.00754, - "recall-0.1": 0.399623, - "recall-0.15": 0.622997, - "recall-0.25": 0.72573, - "recall-0.5": 0.765316, + "recall-0.05": 0.001885, + "recall-0.1": 0.396795, + "recall-0.15": 0.644675, + "recall-0.25": 0.740811, + "recall-0.5": 0.776626, "num_labels": 1061, "ap-0.025": 0.0, - "ap-0.05": 0.000233, - "ap-0.1": 0.249031, - "ap-0.15": 0.506437, - "ap-0.25": 0.644488, - "ap-0.5": 0.687575 + "ap-0.05": 2.4e-05, + "ap-0.1": 0.237052, + "ap-0.15": 0.527948, + "ap-0.25": 0.659535, + "ap-0.5": 0.701101 }, "head": { - "count": 808, - "mean": 0.069186, - "median": 0.052093, - "std": 0.063727, - "sem": 0.002243, - "min": 0.00603, - "max": 0.448877, - "recall-0.025": 0.087653, - "recall-0.05": 0.355325, - "recall-0.1": 0.648445, - "recall-0.15": 0.700283, - "recall-0.25": 0.736098, - "recall-0.5": 0.761546, + "count": 822, + "mean": 0.066104, + "median": 0.051446, + "std": 0.058145, + "sem": 0.002029, + "min": 0.004358, + "max": 0.462004, + "recall-0.025": 0.103676, + "recall-0.05": 0.37606, + "recall-0.1": 0.66541, + "recall-0.15": 0.721018, + "recall-0.25": 0.758718, + "recall-0.5": 0.774741, "num_labels": 1061 }, "shoulder_left": { - "count": 803, - "mean": 0.06642, - "median": 0.045093, - "std": 0.066963, - "sem": 0.002365, - "min": 0.001796, - "max": 0.489619, - "recall-0.025": 0.157399, - "recall-0.05": 0.407163, - "recall-0.1": 0.622997, - "recall-0.15": 0.698398, - "recall-0.25": 0.732328, - "recall-0.5": 0.756833, + "count": 821, + "mean": 0.064231, + "median": 0.045581, + "std": 0.063925, + "sem": 0.002232, + "min": 0.002958, + "max": 0.484606, + "recall-0.025": 0.164939, + "recall-0.05": 0.422243, + "recall-0.1": 0.648445, + "recall-0.15": 0.723845, + "recall-0.25": 0.748351, + "recall-0.5": 0.773798, "num_labels": 1061 }, "shoulder_right": { - "count": 808, - "mean": 0.065599, - "median": 0.04289, - "std": 0.072498, - "sem": 0.002552, - "min": 0.003965, - "max": 0.475914, - "recall-0.025": 0.145146, - "recall-0.05": 0.452403, - "recall-0.1": 0.653157, - "recall-0.15": 0.700283, - "recall-0.25": 0.732328, - "recall-0.5": 0.761546, + "count": 822, + "mean": 0.061466, + "median": 0.041774, + "std": 0.064171, + "sem": 0.00224, + "min": 0.003109, + "max": 0.480916, + "recall-0.025": 0.147031, + "recall-0.05": 0.474081, + "recall-0.1": 0.667295, + "recall-0.15": 0.719133, + "recall-0.25": 0.752121, + "recall-0.5": 0.774741, "num_labels": 1061 }, "elbow_left": { - "count": 797, - "mean": 0.108329, - "median": 0.074253, - "std": 0.094666, - "sem": 0.003355, - "min": 0.006824, - "max": 0.498664, - "recall-0.025": 0.066918, - "recall-0.05": 0.246937, - "recall-0.1": 0.461828, - "recall-0.15": 0.566447, - "recall-0.25": 0.68049, - "recall-0.5": 0.751178, + "count": 813, + "mean": 0.108512, + "median": 0.07863, + "std": 0.092897, + "sem": 0.00326, + "min": 0.003798, + "max": 0.493591, + "recall-0.025": 0.067861, + "recall-0.05": 0.249764, + "recall-0.1": 0.467484, + "recall-0.15": 0.581527, + "recall-0.25": 0.69557, + "recall-0.5": 0.766258, "num_labels": 1061 }, "elbow_right": { - "count": 799, - "mean": 0.08574, - "median": 0.061146, - "std": 0.077756, - "sem": 0.002753, - "min": 0.004711, - "max": 0.488689, - "recall-0.025": 0.094251, - "recall-0.05": 0.295005, - "recall-0.1": 0.557022, - "recall-0.15": 0.6541, - "recall-0.25": 0.71065, - "recall-0.5": 0.753063, + "count": 814, + "mean": 0.085891, + "median": 0.060826, + "std": 0.077751, + "sem": 0.002727, + "min": 0.006041, + "max": 0.484571, + "recall-0.025": 0.095193, + "recall-0.05": 0.303487, + "recall-0.1": 0.572102, + "recall-0.15": 0.660697, + "recall-0.25": 0.724788, + "recall-0.5": 0.767201, "num_labels": 1061 }, "wrist_left": { - "count": 796, - "mean": 0.122303, - "median": 0.08286, - "std": 0.104664, - "sem": 0.003712, - "min": 0.003473, - "max": 0.493134, - "recall-0.025": 0.082941, - "recall-0.05": 0.224317, - "recall-0.1": 0.422243, - "recall-0.15": 0.524976, - "recall-0.25": 0.653157, - "recall-0.5": 0.750236, + "count": 813, + "mean": 0.124956, + "median": 0.092318, + "std": 0.103174, + "sem": 0.003621, + "min": 0.002426, + "max": 0.495895, + "recall-0.025": 0.075401, + "recall-0.05": 0.216777, + "recall-0.1": 0.412818, + "recall-0.15": 0.528746, + "recall-0.25": 0.660697, + "recall-0.5": 0.766258, "num_labels": 1061 }, "wrist_right": { - "count": 800, - "mean": 0.111426, - "median": 0.075329, - "std": 0.102001, - "sem": 0.003609, - "min": 0.005672, - "max": 0.495704, - "recall-0.025": 0.093308, - "recall-0.05": 0.26673, - "recall-0.1": 0.466541, - "recall-0.15": 0.565504, - "recall-0.25": 0.668238, - "recall-0.5": 0.754006, + "count": 810, + "mean": 0.106267, + "median": 0.068354, + "std": 0.098354, + "sem": 0.003458, + "min": 0.001874, + "max": 0.465738, + "recall-0.025": 0.103676, + "recall-0.05": 0.275212, + "recall-0.1": 0.492931, + "recall-0.15": 0.584354, + "recall-0.25": 0.674835, + "recall-0.5": 0.763431, "num_labels": 1061 }, "hip_left": { - "count": 791, - "mean": 0.191628, - "median": 0.174757, - "std": 0.08406, - "sem": 0.002991, - "min": 0.02365, - "max": 0.49955, + "count": 810, + "mean": 0.197711, + "median": 0.177076, + "std": 0.087703, + "sem": 0.003083, + "min": 0.016721, + "max": 0.494996, "recall-0.025": 0.000943, - "recall-0.05": 0.002828, - "recall-0.1": 0.070688, - "recall-0.15": 0.27427, + "recall-0.05": 0.001885, + "recall-0.1": 0.061263, + "recall-0.15": 0.257304, "recall-0.25": 0.590952, - "recall-0.5": 0.745523, + "recall-0.5": 0.763431, "num_labels": 1061 }, "hip_right": { - "count": 796, - "mean": 0.190728, - "median": 0.174197, - "std": 0.085214, - "sem": 0.003022, - "min": 0.033497, - "max": 0.49972, + "count": 809, + "mean": 0.191823, + "median": 0.176535, + "std": 0.078484, + "sem": 0.002761, + "min": 0.035254, + "max": 0.497932, "recall-0.025": 0.0, - "recall-0.05": 0.00377, - "recall-0.1": 0.071631, - "recall-0.15": 0.261074, - "recall-0.25": 0.6164, - "recall-0.5": 0.750236, + "recall-0.05": 0.001885, + "recall-0.1": 0.06409, + "recall-0.15": 0.251649, + "recall-0.25": 0.613572, + "recall-0.5": 0.762488, "num_labels": 1061 }, "joint_recalls": { "num_labels": 9549, - "recall-0.025": 0.08053, - "recall-0.05": 0.25008, - "recall-0.1": 0.44109, - "recall-0.15": 0.54917, - "recall-0.25": 0.67965, - "recall-0.5": 0.75338 + "recall-0.025": 0.08409, + "recall-0.05": 0.25709, + "recall-0.1": 0.44979, + "recall-0.15": 0.55807, + "recall-0.25": 0.69054, + "recall-0.5": 0.76762 } } { "total_parts": 10610, - "correct_parts": 6144, - "pcp": 0.579076 + "correct_parts": 6280, + "pcp": 0.591894 } ``` @@ -1027,270 +1027,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.05675826770503346, - "avg_time_2d": 0.019866665398202293, - "avg_time_3d": 0.0009826898574829101, - "avg_fps": 47.96311385827243 + "img_loading": 0.060430227256402735, + "avg_time_2d": 0.021042059689033322, + "avg_time_3d": 0.0008079400876673256, + "avg_fps": 45.76659085673456 } { "person_nums": { "total_frames": 420, "total_labels": 1466, - "total_preds": 1530, + "total_preds": 1499, "considered_empty": 0, - "valid_preds": 1463, - "invalid_preds": 67, - "missing": 3, - "invalid_fraction": 0.04379, - "precision": 0.95621, - "recall": 0.99795, - "f1": 0.97664, - "non_empty": 1530 + "valid_preds": 1462, + "invalid_preds": 37, + "missing": 4, + "invalid_fraction": 0.02468, + "precision": 0.97532, + "recall": 0.99727, + "f1": 0.98617, + "non_empty": 1499 }, "mpjpe": { - "count": 1463, - "mean": 0.042556, - "median": 0.038353, - "std": 0.01837, - "sem": 0.00048, - "min": 0.014703, - "max": 0.171613, - "recall-0.025": 0.115962, - "recall-0.05": 0.735334, - "recall-0.1": 0.991132, - "recall-0.15": 0.996589, - "recall-0.25": 0.997954, - "recall-0.5": 0.997954, + "count": 1462, + "mean": 0.035187, + "median": 0.031457, + "std": 0.01721, + "sem": 0.00045, + "min": 0.009781, + "max": 0.178708, + "recall-0.025": 0.306276, + "recall-0.05": 0.836971, + "recall-0.1": 0.991814, + "recall-0.15": 0.995907, + "recall-0.25": 0.997271, + "recall-0.5": 0.997271, "num_labels": 1466, - "ap-0.025": 0.034754, - "ap-0.05": 0.637448, - "ap-0.1": 0.979217, - "ap-0.15": 0.987203, - "ap-0.25": 0.988933, - "ap-0.5": 0.988933 + "ap-0.025": 0.167143, + "ap-0.05": 0.767782, + "ap-0.1": 0.975641, + "ap-0.15": 0.983104, + "ap-0.25": 0.985026, + "ap-0.5": 0.985026 }, "nose": { - "count": 1462, - "mean": 0.015328, - "median": 0.012226, - "std": 0.016668, - "sem": 0.000436, - "min": 0.000882, - "max": 0.278769, - "recall-0.025": 0.907724, - "recall-0.05": 0.976077, - "recall-0.1": 0.994532, - "recall-0.15": 0.997266, - "recall-0.25": 0.997266, - "recall-0.5": 0.999316, + "count": 1461, + "mean": 0.015052, + "median": 0.01121, + "std": 0.017634, + "sem": 0.000462, + "min": 0.001066, + "max": 0.282308, + "recall-0.025": 0.911825, + "recall-0.05": 0.970608, + "recall-0.1": 0.991798, + "recall-0.15": 0.996582, + "recall-0.25": 0.996582, + "recall-0.5": 0.998633, "num_labels": 1463 }, "shoulder_left": { - "count": 1463, - "mean": 0.021999, - "median": 0.020104, - "std": 0.011302, - "sem": 0.000296, - "min": 0.001439, - "max": 0.131206, - "recall-0.025": 0.688267, - "recall-0.05": 0.976126, - "recall-0.1": 0.995907, - "recall-0.15": 0.997954, - "recall-0.25": 0.997954, - "recall-0.5": 0.997954, + "count": 1462, + "mean": 0.016775, + "median": 0.014859, + "std": 0.010785, + "sem": 0.000282, + "min": 0.001411, + "max": 0.101796, + "recall-0.025": 0.8397, + "recall-0.05": 0.985675, + "recall-0.1": 0.996589, + "recall-0.15": 0.997271, + "recall-0.25": 0.997271, + "recall-0.5": 0.997271, "num_labels": 1466 }, "shoulder_right": { - "count": 1462, - "mean": 0.022956, - "median": 0.020803, - "std": 0.011561, - "sem": 0.000302, - "min": 0.00245, - "max": 0.137432, - "recall-0.025": 0.67099, - "recall-0.05": 0.972014, - "recall-0.1": 0.996587, - "recall-0.15": 0.997952, - "recall-0.25": 0.997952, - "recall-0.5": 0.997952, + "count": 1461, + "mean": 0.016991, + "median": 0.014819, + "std": 0.011517, + "sem": 0.000301, + "min": 0.000675, + "max": 0.14179, + "recall-0.025": 0.833447, + "recall-0.05": 0.9843, + "recall-0.1": 0.995904, + "recall-0.15": 0.99727, + "recall-0.25": 0.99727, + "recall-0.5": 0.99727, "num_labels": 1465 }, "elbow_left": { - "count": 1462, - "mean": 0.026601, - "median": 0.018958, - "std": 0.024142, - "sem": 0.000632, - "min": 0.001237, - "max": 0.205744, - "recall-0.025": 0.656655, - "recall-0.05": 0.88942, - "recall-0.1": 0.977474, - "recall-0.15": 0.991126, - "recall-0.25": 0.997952, - "recall-0.5": 0.997952, + "count": 1461, + "mean": 0.023847, + "median": 0.016501, + "std": 0.026608, + "sem": 0.000696, + "min": 0.001481, + "max": 0.416112, + "recall-0.025": 0.719454, + "recall-0.05": 0.898976, + "recall-0.1": 0.979522, + "recall-0.15": 0.991809, + "recall-0.25": 0.995904, + "recall-0.5": 0.99727, "num_labels": 1465 }, "elbow_right": { - "count": 1462, - "mean": 0.023462, - "median": 0.018609, - "std": 0.016635, - "sem": 0.000435, - "min": 0.001482, - "max": 0.17964, - "recall-0.025": 0.698565, - "recall-0.05": 0.91661, - "recall-0.1": 0.995899, - "recall-0.15": 0.998633, - "recall-0.25": 0.999316, - "recall-0.5": 0.999316, + "count": 1461, + "mean": 0.020787, + "median": 0.016175, + "std": 0.015723, + "sem": 0.000412, + "min": 0.001779, + "max": 0.172199, + "recall-0.025": 0.77512, + "recall-0.05": 0.93985, + "recall-0.1": 0.997266, + "recall-0.15": 0.997949, + "recall-0.25": 0.998633, + "recall-0.5": 0.998633, "num_labels": 1463 }, "wrist_left": { "count": 1431, - "mean": 0.035656, - "median": 0.017213, - "std": 0.05224, - "sem": 0.001381, - "min": 0.000774, - "max": 0.458808, - "recall-0.025": 0.668759, - "recall-0.05": 0.838215, - "recall-0.1": 0.913529, - "recall-0.15": 0.949791, - "recall-0.25": 0.987448, + "mean": 0.035583, + "median": 0.016794, + "std": 0.05771, + "sem": 0.001526, + "min": 0.00087, + "max": 0.454136, + "recall-0.025": 0.687587, + "recall-0.05": 0.855649, + "recall-0.1": 0.910042, + "recall-0.15": 0.951883, + "recall-0.25": 0.974895, "recall-0.5": 0.997908, "num_labels": 1434 }, "wrist_right": { - "count": 1456, - "mean": 0.026028, - "median": 0.016245, - "std": 0.03312, - "sem": 0.000868, - "min": 0.001409, - "max": 0.294497, - "recall-0.025": 0.699863, - "recall-0.05": 0.893544, - "recall-0.1": 0.971841, - "recall-0.15": 0.985577, - "recall-0.25": 0.992445, - "recall-0.5": 1.0, + "count": 1455, + "mean": 0.025777, + "median": 0.015841, + "std": 0.03213, + "sem": 0.000843, + "min": 0.000903, + "max": 0.299509, + "recall-0.025": 0.699176, + "recall-0.05": 0.896978, + "recall-0.1": 0.967033, + "recall-0.15": 0.98283, + "recall-0.25": 0.995879, + "recall-0.5": 0.999313, "num_labels": 1456 }, "hip_left": { - "count": 1462, - "mean": 0.060757, - "median": 0.05489, - "std": 0.028889, - "sem": 0.000756, - "min": 0.00279, - "max": 0.180301, - "recall-0.025": 0.053925, - "recall-0.05": 0.379522, - "recall-0.1": 0.894198, - "recall-0.15": 0.977474, - "recall-0.25": 0.997952, - "recall-0.5": 0.997952, + "count": 1461, + "mean": 0.036013, + "median": 0.031756, + "std": 0.021526, + "sem": 0.000563, + "min": 0.003549, + "max": 0.221143, + "recall-0.025": 0.322867, + "recall-0.05": 0.821843, + "recall-0.1": 0.985666, + "recall-0.15": 0.993174, + "recall-0.25": 0.99727, + "recall-0.5": 0.99727, "num_labels": 1465 }, "hip_right": { - "count": 1463, - "mean": 0.058756, - "median": 0.055422, - "std": 0.028136, - "sem": 0.000736, - "min": 0.003134, - "max": 0.460084, - "recall-0.025": 0.04502, - "recall-0.05": 0.408595, - "recall-0.1": 0.927694, - "recall-0.15": 0.99045, - "recall-0.25": 0.997271, - "recall-0.5": 0.997954, + "count": 1462, + "mean": 0.039536, + "median": 0.032499, + "std": 0.031236, + "sem": 0.000817, + "min": 0.002738, + "max": 0.473894, + "recall-0.025": 0.319236, + "recall-0.05": 0.789222, + "recall-0.1": 0.959072, + "recall-0.15": 0.991132, + "recall-0.25": 0.994543, + "recall-0.5": 0.997271, "num_labels": 1466 }, "knee_left": { - "count": 1462, - "mean": 0.051199, - "median": 0.044817, - "std": 0.036227, - "sem": 0.000948, - "min": 0.005068, - "max": 0.371012, - "recall-0.025": 0.159044, - "recall-0.05": 0.600683, - "recall-0.1": 0.935836, - "recall-0.15": 0.969966, - "recall-0.25": 0.991809, - "recall-0.5": 0.997952, + "count": 1461, + "mean": 0.040935, + "median": 0.034895, + "std": 0.031356, + "sem": 0.000821, + "min": 0.002789, + "max": 0.369838, + "recall-0.025": 0.265529, + "recall-0.05": 0.769283, + "recall-0.1": 0.96314, + "recall-0.15": 0.983618, + "recall-0.25": 0.993174, + "recall-0.5": 0.99727, "num_labels": 1465 }, "knee_right": { - "count": 1456, - "mean": 0.048841, - "median": 0.041485, - "std": 0.036211, - "sem": 0.000949, - "min": 0.002123, - "max": 0.46502, - "recall-0.025": 0.213845, - "recall-0.05": 0.598355, - "recall-0.1": 0.949966, - "recall-0.15": 0.985607, + "count": 1454, + "mean": 0.040669, + "median": 0.032287, + "std": 0.033872, + "sem": 0.000889, + "min": 0.003492, + "max": 0.492336, + "recall-0.025": 0.334476, + "recall-0.05": 0.726525, + "recall-0.1": 0.956134, + "recall-0.15": 0.984921, "recall-0.25": 0.992461, - "recall-0.5": 0.997944, + "recall-0.5": 0.996573, "num_labels": 1459 }, "ankle_left": { - "count": 1456, - "mean": 0.081315, - "median": 0.036114, - "std": 0.100804, - "sem": 0.002643, - "min": 0.001413, - "max": 0.494506, - "recall-0.025": 0.354751, - "recall-0.05": 0.585099, - "recall-0.1": 0.746411, - "recall-0.15": 0.824334, - "recall-0.25": 0.913876, - "recall-0.5": 0.995215, + "count": 1455, + "mean": 0.070449, + "median": 0.036108, + "std": 0.08514, + "sem": 0.002233, + "min": 0.002984, + "max": 0.49481, + "recall-0.025": 0.330144, + "recall-0.05": 0.620643, + "recall-0.1": 0.792208, + "recall-0.15": 0.866029, + "recall-0.25": 0.944634, + "recall-0.5": 0.994532, "num_labels": 1463 }, "ankle_right": { - "count": 1451, - "mean": 0.075155, - "median": 0.033448, - "std": 0.097645, - "sem": 0.002564, - "min": 0.001242, - "max": 0.497911, - "recall-0.025": 0.369178, - "recall-0.05": 0.666438, - "recall-0.1": 0.775342, - "recall-0.15": 0.834247, - "recall-0.25": 0.909589, - "recall-0.5": 0.993836, + "count": 1441, + "mean": 0.066117, + "median": 0.033187, + "std": 0.08635, + "sem": 0.002276, + "min": 0.00246, + "max": 0.482962, + "recall-0.025": 0.359589, + "recall-0.05": 0.678082, + "recall-0.1": 0.814384, + "recall-0.15": 0.864384, + "recall-0.25": 0.930137, + "recall-0.5": 0.986986, "num_labels": 1460 }, "joint_recalls": { "num_labels": 18990, - "recall-0.025": 0.4752, - "recall-0.05": 0.74581, - "recall-0.1": 0.92854, - "recall-0.15": 0.9614, - "recall-0.25": 0.9822, - "recall-0.5": 0.99742 + "recall-0.025": 0.56862, + "recall-0.05": 0.84086, + "recall-0.1": 0.94666, + "recall-0.15": 0.96888, + "recall-0.25": 0.98494, + "recall-0.5": 0.99642 } } { "total_parts": 20444, - "correct_parts": 19989, - "pcp": 0.977744 + "correct_parts": 20124, + "pcp": 0.984347 } ``` @@ -1841,270 +1841,270 @@ Results of the model in various experiments on different datasets. \ (duration 00:01:45) ```json { - "img_loading": 0.03859993796358739, - "avg_time_2d": 0.010313197747984929, - "avg_time_3d": 0.0003607095177493878, - "avg_fps": 93.68640509087321 + "img_loading": 0.04002083135820401, + "avg_time_2d": 0.011175246635225535, + "avg_time_3d": 0.00039957632133955643, + "avg_fps": 86.39440998385317 } { "person_nums": { "total_frames": 479, "total_labels": 479, - "total_preds": 583, - "considered_empty": 1, - "valid_preds": 433, - "invalid_preds": 149, - "missing": 46, - "invalid_fraction": 0.25601, - "precision": 0.74399, - "recall": 0.90397, - "f1": 0.81621, - "non_empty": 582 + "total_preds": 618, + "considered_empty": 0, + "valid_preds": 447, + "invalid_preds": 171, + "missing": 32, + "invalid_fraction": 0.2767, + "precision": 0.7233, + "recall": 0.93319, + "f1": 0.81495, + "non_empty": 618 }, "mpjpe": { - "count": 433, - "mean": 0.075491, - "median": 0.061131, - "std": 0.046668, - "sem": 0.002245, - "min": 0.018838, - "max": 0.316573, - "recall-0.025": 0.025052, - "recall-0.05": 0.334029, - "recall-0.1": 0.703549, - "recall-0.15": 0.837161, - "recall-0.25": 0.893528, - "recall-0.5": 0.903967, + "count": 447, + "mean": 0.074456, + "median": 0.059695, + "std": 0.046301, + "sem": 0.002192, + "min": 0.018682, + "max": 0.355677, + "recall-0.025": 0.039666, + "recall-0.05": 0.379958, + "recall-0.1": 0.724426, + "recall-0.15": 0.866388, + "recall-0.25": 0.929019, + "recall-0.5": 0.933194, "num_labels": 479, - "ap-0.025": 0.001032, - "ap-0.05": 0.11701, - "ap-0.1": 0.495233, - "ap-0.15": 0.69381, - "ap-0.25": 0.785555, - "ap-0.5": 0.808853 + "ap-0.025": 0.001756, + "ap-0.05": 0.142805, + "ap-0.1": 0.505589, + "ap-0.15": 0.714197, + "ap-0.25": 0.819921, + "ap-0.5": 0.827308 }, "head": { - "count": 411, - "mean": 0.034418, - "median": 0.030763, - "std": 0.017593, - "sem": 0.000869, - "min": 0.001278, - "max": 0.118167, - "recall-0.025": 0.30531, - "recall-0.05": 0.756637, - "recall-0.1": 0.904867, - "recall-0.15": 0.909292, - "recall-0.25": 0.909292, - "recall-0.5": 0.909292, + "count": 425, + "mean": 0.033443, + "median": 0.030112, + "std": 0.017039, + "sem": 0.000827, + "min": 0.000129, + "max": 0.119482, + "recall-0.025": 0.327434, + "recall-0.05": 0.798673, + "recall-0.1": 0.938053, + "recall-0.15": 0.940265, + "recall-0.25": 0.940265, + "recall-0.5": 0.940265, "num_labels": 452 }, "shoulder_left": { - "count": 411, - "mean": 0.042039, - "median": 0.036653, - "std": 0.019302, - "sem": 0.000953, - "min": 0.013911, - "max": 0.191139, - "recall-0.025": 0.0837, - "recall-0.05": 0.700441, - "recall-0.1": 0.889868, - "recall-0.15": 0.903084, - "recall-0.25": 0.905286, - "recall-0.5": 0.905286, + "count": 424, + "mean": 0.040693, + "median": 0.035429, + "std": 0.018036, + "sem": 0.000877, + "min": 0.01015, + "max": 0.15422, + "recall-0.025": 0.10793, + "recall-0.05": 0.73348, + "recall-0.1": 0.920705, + "recall-0.15": 0.931718, + "recall-0.25": 0.933921, + "recall-0.5": 0.933921, "num_labels": 454 }, "shoulder_right": { - "count": 425, - "mean": 0.030327, - "median": 0.027952, - "std": 0.011265, - "sem": 0.000547, - "min": 0.009739, - "max": 0.096534, - "recall-0.025": 0.30621, - "recall-0.05": 0.865096, - "recall-0.1": 0.910064, - "recall-0.15": 0.910064, - "recall-0.25": 0.910064, - "recall-0.5": 0.910064, + "count": 437, + "mean": 0.029215, + "median": 0.027229, + "std": 0.010943, + "sem": 0.000524, + "min": 0.007749, + "max": 0.095911, + "recall-0.025": 0.342612, + "recall-0.05": 0.892934, + "recall-0.1": 0.93576, + "recall-0.15": 0.93576, + "recall-0.25": 0.93576, + "recall-0.5": 0.93576, "num_labels": 467 }, "elbow_left": { - "count": 400, - "mean": 0.031783, - "median": 0.023267, - "std": 0.030317, - "sem": 0.001518, - "min": 0.002354, - "max": 0.343907, - "recall-0.025": 0.508009, - "recall-0.05": 0.791762, - "recall-0.1": 0.887872, - "recall-0.15": 0.90389, - "recall-0.25": 0.913043, - "recall-0.5": 0.915332, + "count": 413, + "mean": 0.030607, + "median": 0.023176, + "std": 0.024438, + "sem": 0.001204, + "min": 0.00303, + "max": 0.190548, + "recall-0.025": 0.514874, + "recall-0.05": 0.819222, + "recall-0.1": 0.919908, + "recall-0.15": 0.940503, + "recall-0.25": 0.94508, + "recall-0.5": 0.94508, "num_labels": 437 }, "elbow_right": { - "count": 404, - "mean": 0.026145, - "median": 0.02257, - "std": 0.018361, - "sem": 0.000915, - "min": 0.00207, - "max": 0.222104, - "recall-0.025": 0.519274, - "recall-0.05": 0.845805, - "recall-0.1": 0.911565, - "recall-0.15": 0.913832, - "recall-0.25": 0.9161, - "recall-0.5": 0.9161, + "count": 416, + "mean": 0.025964, + "median": 0.023121, + "std": 0.017186, + "sem": 0.000844, + "min": 0.002542, + "max": 0.182529, + "recall-0.025": 0.53288, + "recall-0.05": 0.879819, + "recall-0.1": 0.938776, + "recall-0.15": 0.941043, + "recall-0.25": 0.943311, + "recall-0.5": 0.943311, "num_labels": 441 }, "wrist_left": { - "count": 397, - "mean": 0.03262, - "median": 0.025991, - "std": 0.031015, - "sem": 0.001559, - "min": 0.003525, - "max": 0.271267, - "recall-0.025": 0.428899, - "recall-0.05": 0.78211, - "recall-0.1": 0.887615, - "recall-0.15": 0.894495, - "recall-0.25": 0.908257, - "recall-0.5": 0.91055, + "count": 408, + "mean": 0.032042, + "median": 0.025353, + "std": 0.028416, + "sem": 0.001409, + "min": 0.003737, + "max": 0.296087, + "recall-0.025": 0.456422, + "recall-0.05": 0.811927, + "recall-0.1": 0.912844, + "recall-0.15": 0.924312, + "recall-0.25": 0.931193, + "recall-0.5": 0.93578, "num_labels": 436 }, "wrist_right": { - "count": 408, - "mean": 0.029689, - "median": 0.023353, - "std": 0.030703, - "sem": 0.001522, - "min": 0.003792, - "max": 0.315184, - "recall-0.025": 0.493274, - "recall-0.05": 0.840807, - "recall-0.1": 0.890135, - "recall-0.15": 0.894619, - "recall-0.25": 0.912556, - "recall-0.5": 0.914798, + "count": 417, + "mean": 0.028288, + "median": 0.022713, + "std": 0.031025, + "sem": 0.001521, + "min": 0.002872, + "max": 0.32973, + "recall-0.025": 0.513453, + "recall-0.05": 0.865471, + "recall-0.1": 0.910314, + "recall-0.15": 0.921525, + "recall-0.25": 0.930493, + "recall-0.5": 0.934978, "num_labels": 446 }, "hip_left": { - "count": 290, - "mean": 0.104207, - "median": 0.097784, - "std": 0.035307, - "sem": 0.002077, - "min": 0.029375, - "max": 0.296764, + "count": 298, + "mean": 0.09812, + "median": 0.09086, + "std": 0.032706, + "sem": 0.001898, + "min": 0.027606, + "max": 0.284104, "recall-0.025": 0.0, - "recall-0.05": 0.019108, - "recall-0.1": 0.487261, - "recall-0.15": 0.850318, - "recall-0.25": 0.914013, - "recall-0.5": 0.923567, + "recall-0.05": 0.012739, + "recall-0.1": 0.61465, + "recall-0.15": 0.89172, + "recall-0.25": 0.942675, + "recall-0.5": 0.949045, "num_labels": 314 }, "hip_right": { - "count": 237, - "mean": 0.089749, - "median": 0.083848, - "std": 0.035442, - "sem": 0.002307, - "min": 0.014221, - "max": 0.331882, - "recall-0.025": 0.003846, - "recall-0.05": 0.05, - "recall-0.1": 0.642308, - "recall-0.15": 0.865385, - "recall-0.25": 0.903846, - "recall-0.5": 0.911538, + "count": 245, + "mean": 0.085356, + "median": 0.080679, + "std": 0.031076, + "sem": 0.001989, + "min": 0.019868, + "max": 0.323838, + "recall-0.025": 0.011538, + "recall-0.05": 0.073077, + "recall-0.1": 0.719231, + "recall-0.15": 0.919231, + "recall-0.25": 0.938462, + "recall-0.5": 0.942308, "num_labels": 260 }, "knee_left": { - "count": 246, - "mean": 0.137937, - "median": 0.09981, - "std": 0.109557, - "sem": 0.006999, - "min": 0.01084, - "max": 0.494294, - "recall-0.025": 0.018116, - "recall-0.05": 0.152174, - "recall-0.1": 0.445652, - "recall-0.15": 0.630435, - "recall-0.25": 0.753623, - "recall-0.5": 0.891304, + "count": 250, + "mean": 0.129331, + "median": 0.087049, + "std": 0.10624, + "sem": 0.006733, + "min": 0.017263, + "max": 0.498997, + "recall-0.025": 0.025362, + "recall-0.05": 0.163043, + "recall-0.1": 0.514493, + "recall-0.15": 0.652174, + "recall-0.25": 0.778986, + "recall-0.5": 0.905797, "num_labels": 276 }, "knee_right": { - "count": 183, - "mean": 0.115145, - "median": 0.076432, - "std": 0.103939, - "sem": 0.007704, - "min": 0.013731, - "max": 0.496317, + "count": 190, + "mean": 0.114057, + "median": 0.081005, + "std": 0.100495, + "sem": 0.00731, + "min": 0.00936, + "max": 0.49724, "recall-0.025": 0.037209, - "recall-0.05": 0.213953, - "recall-0.1": 0.52093, - "recall-0.15": 0.674419, - "recall-0.25": 0.75814, - "recall-0.5": 0.851163, + "recall-0.05": 0.218605, + "recall-0.1": 0.548837, + "recall-0.15": 0.725581, + "recall-0.25": 0.776744, + "recall-0.5": 0.883721, "num_labels": 215 }, "ankle_left": { - "count": 74, - "mean": 0.35065, - "median": 0.383593, - "std": 0.106306, - "sem": 0.012442, - "min": 0.020267, - "max": 0.479558, - "recall-0.025": 0.007576, - "recall-0.05": 0.007576, - "recall-0.1": 0.015152, + "count": 71, + "mean": 0.357688, + "median": 0.396454, + "std": 0.113189, + "sem": 0.013529, + "min": 0.029788, + "max": 0.489443, + "recall-0.025": 0.0, + "recall-0.05": 0.015152, + "recall-0.1": 0.022727, "recall-0.15": 0.030303, "recall-0.25": 0.098485, - "recall-0.5": 0.560606, + "recall-0.5": 0.537879, "num_labels": 132 }, "ankle_right": { - "count": 69, - "mean": 0.38361, - "median": 0.404354, - "std": 0.092995, - "sem": 0.011277, - "min": 0.059832, - "max": 0.494417, + "count": 60, + "mean": 0.357988, + "median": 0.401673, + "std": 0.113737, + "sem": 0.014807, + "min": 0.061398, + "max": 0.497032, "recall-0.025": 0.0, "recall-0.05": 0.0, "recall-0.1": 0.015748, - "recall-0.15": 0.015748, - "recall-0.25": 0.03937, - "recall-0.5": 0.543307, + "recall-0.15": 0.047244, + "recall-0.25": 0.070866, + "recall-0.5": 0.472441, "num_labels": 127 }, "joint_recalls": { "num_labels": 4457, - "recall-0.025": 0.2661, - "recall-0.05": 0.58335, - "recall-0.1": 0.75499, - "recall-0.15": 0.81714, - "recall-0.25": 0.84272, - "recall-0.5": 0.88535 + "recall-0.025": 0.28203, + "recall-0.05": 0.60848, + "recall-0.1": 0.79358, + "recall-0.15": 0.84855, + "recall-0.25": 0.86897, + "recall-0.5": 0.90868 } } { "total_parts": 4313, - "correct_parts": 3703, - "pcp": 0.858567 + "correct_parts": 3837, + "pcp": 0.889636 } ``` @@ -2112,270 +2112,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.016967525607661196, - "avg_time_2d": 0.012414788572411788, - "avg_time_3d": 0.0003943549959283126, - "avg_fps": 78.06923192520568 + "img_loading": 0.017476047340192293, + "avg_time_2d": 0.012747695571497866, + "avg_time_3d": 0.00040262749320582337, + "avg_fps": 76.04375915935208 } { "person_nums": { "total_frames": 390, "total_labels": 780, - "total_preds": 779, + "total_preds": 778, "considered_empty": 0, - "valid_preds": 779, + "valid_preds": 778, "invalid_preds": 0, - "missing": 1, + "missing": 2, "invalid_fraction": 0.0, "precision": 1.0, - "recall": 0.99872, - "f1": 0.99936, - "non_empty": 779 + "recall": 0.99744, + "f1": 0.99872, + "non_empty": 778 }, "mpjpe": { - "count": 779, - "mean": 0.067986, - "median": 0.065527, - "std": 0.011273, - "sem": 0.000404, - "min": 0.050613, - "max": 0.188087, + "count": 778, + "mean": 0.061256, + "median": 0.058094, + "std": 0.015804, + "sem": 0.000567, + "min": 0.043665, + "max": 0.234462, "recall-0.025": 0.0, - "recall-0.05": 0.0, + "recall-0.05": 0.041026, "recall-0.1": 0.983333, - "recall-0.15": 0.994872, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, + "recall-0.15": 0.991026, + "recall-0.25": 0.997436, + "recall-0.5": 0.997436, "num_labels": 780, "ap-0.025": 0.0, - "ap-0.05": 0.0, - "ap-0.1": 0.979763, - "ap-0.15": 0.994756, - "ap-0.25": 0.998718, - "ap-0.5": 0.998718 + "ap-0.05": 0.002137, + "ap-0.1": 0.98266, + "ap-0.15": 0.990834, + "ap-0.25": 0.997436, + "ap-0.5": 0.997436 }, "head": { - "count": 779, - "mean": 0.037226, - "median": 0.026247, - "std": 0.041514, - "sem": 0.001488, - "min": 0.003041, - "max": 0.437593, - "recall-0.025": 0.478205, - "recall-0.05": 0.828205, - "recall-0.1": 0.95641, - "recall-0.15": 0.970513, - "recall-0.25": 0.988462, - "recall-0.5": 0.998718, - "num_labels": 780 - }, - "shoulder_left": { - "count": 779, - "mean": 0.06726, - "median": 0.069086, - "std": 0.019323, - "sem": 0.000693, - "min": 0.0202, - "max": 0.167015, - "recall-0.025": 0.003846, - "recall-0.05": 0.225641, - "recall-0.1": 0.962821, - "recall-0.15": 0.996154, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, - "num_labels": 780 - }, - "shoulder_right": { - "count": 779, - "mean": 0.074936, - "median": 0.074601, - "std": 0.02024, - "sem": 0.000726, - "min": 0.019108, - "max": 0.265656, - "recall-0.025": 0.003846, - "recall-0.05": 0.079487, - "recall-0.1": 0.915385, - "recall-0.15": 0.996154, - "recall-0.25": 0.997436, - "recall-0.5": 0.998718, - "num_labels": 780 - }, - "elbow_left": { "count": 778, - "mean": 0.059144, - "median": 0.051978, - "std": 0.028849, - "sem": 0.001035, - "min": 0.01471, - "max": 0.394871, - "recall-0.025": 0.007692, - "recall-0.05": 0.419231, - "recall-0.1": 0.944872, - "recall-0.15": 0.976923, - "recall-0.25": 0.994872, + "mean": 0.039793, + "median": 0.029375, + "std": 0.046131, + "sem": 0.001655, + "min": 0.003523, + "max": 0.410789, + "recall-0.025": 0.415385, + "recall-0.05": 0.832051, + "recall-0.1": 0.955128, + "recall-0.15": 0.961538, + "recall-0.25": 0.978205, "recall-0.5": 0.997436, "num_labels": 780 }, - "elbow_right": { - "count": 779, - "mean": 0.067581, - "median": 0.065925, - "std": 0.021887, + "shoulder_left": { + "count": 778, + "mean": 0.062809, + "median": 0.064642, + "std": 0.021891, "sem": 0.000785, - "min": 0.021072, - "max": 0.234581, - "recall-0.025": 0.001282, - "recall-0.05": 0.167949, - "recall-0.1": 0.948718, - "recall-0.15": 0.980769, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, + "min": 0.01029, + "max": 0.171518, + "recall-0.025": 0.019231, + "recall-0.05": 0.326923, + "recall-0.1": 0.957692, + "recall-0.15": 0.994872, + "recall-0.25": 0.997436, + "recall-0.5": 0.997436, + "num_labels": 780 + }, + "shoulder_right": { + "count": 776, + "mean": 0.06692, + "median": 0.066134, + "std": 0.019334, + "sem": 0.000694, + "min": 0.012362, + "max": 0.177966, + "recall-0.025": 0.014103, + "recall-0.05": 0.174359, + "recall-0.1": 0.951282, + "recall-0.15": 0.99359, + "recall-0.25": 0.994872, + "recall-0.5": 0.994872, + "num_labels": 780 + }, + "elbow_left": { + "count": 776, + "mean": 0.057432, + "median": 0.048159, + "std": 0.037166, + "sem": 0.001335, + "min": 0.014258, + "max": 0.471045, + "recall-0.025": 0.019231, + "recall-0.05": 0.533333, + "recall-0.1": 0.942308, + "recall-0.15": 0.969231, + "recall-0.25": 0.988462, + "recall-0.5": 0.994872, + "num_labels": 780 + }, + "elbow_right": { + "count": 778, + "mean": 0.064771, + "median": 0.062808, + "std": 0.023921, + "sem": 0.000858, + "min": 0.025508, + "max": 0.260927, + "recall-0.025": 0.0, + "recall-0.05": 0.262821, + "recall-0.1": 0.938462, + "recall-0.15": 0.982051, + "recall-0.25": 0.996154, + "recall-0.5": 0.997436, "num_labels": 780 }, "wrist_left": { - "count": 777, - "mean": 0.049405, - "median": 0.043104, - "std": 0.040856, - "sem": 0.001467, - "min": 0.010116, - "max": 0.428031, - "recall-0.025": 0.155128, - "recall-0.05": 0.669231, - "recall-0.1": 0.95, - "recall-0.15": 0.975641, + "count": 772, + "mean": 0.049893, + "median": 0.043983, + "std": 0.036923, + "sem": 0.00133, + "min": 0.006115, + "max": 0.445596, + "recall-0.025": 0.125641, + "recall-0.05": 0.64359, + "recall-0.1": 0.947436, + "recall-0.15": 0.976923, "recall-0.25": 0.983333, - "recall-0.5": 0.996154, + "recall-0.5": 0.989744, "num_labels": 780 }, "wrist_right": { - "count": 777, - "mean": 0.066057, - "median": 0.062917, - "std": 0.040925, - "sem": 0.001469, - "min": 0.003696, - "max": 0.425286, - "recall-0.025": 0.032051, - "recall-0.05": 0.360256, - "recall-0.1": 0.911538, - "recall-0.15": 0.962821, - "recall-0.25": 0.985897, - "recall-0.5": 0.996154, + "count": 773, + "mean": 0.067023, + "median": 0.06487, + "std": 0.035726, + "sem": 0.001286, + "min": 0.015542, + "max": 0.341995, + "recall-0.025": 0.024359, + "recall-0.05": 0.328205, + "recall-0.1": 0.912821, + "recall-0.15": 0.957692, + "recall-0.25": 0.987179, + "recall-0.5": 0.991026, "num_labels": 780 }, "hip_left": { - "count": 779, - "mean": 0.110324, - "median": 0.10988, - "std": 0.019327, - "sem": 0.000693, - "min": 0.065041, - "max": 0.354493, + "count": 778, + "mean": 0.083135, + "median": 0.083035, + "std": 0.020092, + "sem": 0.000721, + "min": 0.036304, + "max": 0.142385, "recall-0.025": 0.0, - "recall-0.05": 0.0, - "recall-0.1": 0.296154, - "recall-0.15": 0.983333, + "recall-0.05": 0.044872, + "recall-0.1": 0.807692, + "recall-0.15": 0.997436, "recall-0.25": 0.997436, - "recall-0.5": 0.998718, + "recall-0.5": 0.997436, "num_labels": 780 }, "hip_right": { - "count": 779, - "mean": 0.136734, - "median": 0.137075, - "std": 0.015216, - "sem": 0.000546, - "min": 0.092854, - "max": 0.196536, + "count": 778, + "mean": 0.106615, + "median": 0.105462, + "std": 0.018197, + "sem": 0.000653, + "min": 0.05252, + "max": 0.179121, "recall-0.025": 0.0, "recall-0.05": 0.0, - "recall-0.1": 0.008974, - "recall-0.15": 0.815385, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, + "recall-0.1": 0.379487, + "recall-0.15": 0.982051, + "recall-0.25": 0.997436, + "recall-0.5": 0.997436, "num_labels": 780 }, "knee_left": { - "count": 779, - "mean": 0.050749, - "median": 0.048625, - "std": 0.018121, - "sem": 0.00065, - "min": 0.007613, - "max": 0.196494, - "recall-0.025": 0.021795, - "recall-0.05": 0.557692, - "recall-0.1": 0.965385, - "recall-0.15": 0.996154, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, + "count": 778, + "mean": 0.047598, + "median": 0.045991, + "std": 0.019866, + "sem": 0.000713, + "min": 0.009332, + "max": 0.199038, + "recall-0.025": 0.061538, + "recall-0.05": 0.651282, + "recall-0.1": 0.958974, + "recall-0.15": 0.99359, + "recall-0.25": 0.997436, + "recall-0.5": 0.997436, "num_labels": 780 }, "knee_right": { - "count": 779, - "mean": 0.057894, - "median": 0.055797, - "std": 0.01709, - "sem": 0.000613, - "min": 0.015479, - "max": 0.131481, - "recall-0.025": 0.002564, - "recall-0.05": 0.378205, - "recall-0.1": 0.979487, - "recall-0.15": 0.998718, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, + "count": 778, + "mean": 0.052091, + "median": 0.049774, + "std": 0.018473, + "sem": 0.000663, + "min": 0.0111, + "max": 0.128542, + "recall-0.025": 0.038462, + "recall-0.05": 0.503846, + "recall-0.1": 0.983333, + "recall-0.15": 0.997436, + "recall-0.25": 0.997436, + "recall-0.5": 0.997436, "num_labels": 780 }, "ankle_left": { - "count": 779, - "mean": 0.061382, - "median": 0.059151, - "std": 0.017296, - "sem": 0.00062, - "min": 0.025987, - "max": 0.311869, - "recall-0.025": 0.0, - "recall-0.05": 0.160256, - "recall-0.1": 0.978205, + "count": 778, + "mean": 0.050638, + "median": 0.047403, + "std": 0.019466, + "sem": 0.000698, + "min": 0.012995, + "max": 0.360086, + "recall-0.025": 0.008974, + "recall-0.05": 0.616667, + "recall-0.1": 0.983333, "recall-0.15": 0.99359, - "recall-0.25": 0.997436, - "recall-0.5": 0.998718, + "recall-0.25": 0.996154, + "recall-0.5": 0.997436, "num_labels": 780 }, "ankle_right": { - "count": 779, - "mean": 0.041639, - "median": 0.038442, - "std": 0.014726, - "sem": 0.000528, - "min": 0.013835, - "max": 0.176319, - "recall-0.025": 0.032051, - "recall-0.05": 0.802564, + "count": 778, + "mean": 0.034456, + "median": 0.029475, + "std": 0.016218, + "sem": 0.000582, + "min": 0.004853, + "max": 0.178816, + "recall-0.025": 0.298718, + "recall-0.05": 0.865385, "recall-0.1": 0.994872, - "recall-0.15": 0.997436, - "recall-0.25": 0.998718, - "recall-0.5": 0.998718, + "recall-0.15": 0.996154, + "recall-0.25": 0.997436, + "recall-0.5": 0.997436, "num_labels": 780 }, "joint_recalls": { "num_labels": 10140, - "recall-0.025": 0.05592, - "recall-0.05": 0.3568, - "recall-0.1": 0.83126, - "recall-0.15": 0.97219, - "recall-0.25": 0.99497, - "recall-0.5": 0.99822 + "recall-0.025": 0.0786, + "recall-0.05": 0.44428, + "recall-0.1": 0.9002, + "recall-0.15": 0.98383, + "recall-0.25": 0.9927, + "recall-0.5": 0.99596 } } { "total_parts": 10920, - "correct_parts": 10406, - "pcp": 0.95293 + "correct_parts": 10721, + "pcp": 0.981777 } ``` @@ -2384,10 +2384,10 @@ Results of the model in various experiments on different datasets. \ (duration 00:01:51) ```json { - "img_loading": 0.11105413436889648, - "avg_time_2d": 0.02206600785255432, - "avg_time_3d": 0.0009202849864959717, - "avg_fps": 43.50418777842892 + "img_loading": 0.13135391235351562, + "avg_time_2d": 0.028430829048156737, + "avg_time_3d": 0.0008205056190490722, + "avg_fps": 34.18647427124472 } { "person_nums": { @@ -2406,36 +2406,36 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 630, - "mean": 0.055839, - "median": 0.051061, - "std": 0.018265, - "sem": 0.000728, - "min": 0.032207, - "max": 0.141967, + "mean": 0.053445, + "median": 0.048917, + "std": 0.017742, + "sem": 0.000707, + "min": 0.030125, + "max": 0.13987, "recall-0.025": 0.0, - "recall-0.05": 0.452381, - "recall-0.1": 0.947619, + "recall-0.05": 0.544444, + "recall-0.1": 0.955556, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 630, "ap-0.025": 0.0, - "ap-0.05": 0.237645, - "ap-0.1": 0.923906, + "ap-0.05": 0.330565, + "ap-0.1": 0.92959, "ap-0.15": 1.0, "ap-0.25": 1.0, "ap-0.5": 1.0 }, "head": { "count": 598, - "mean": 0.042, - "median": 0.04034, - "std": 0.013756, - "sem": 0.000563, - "min": 0.014538, - "max": 0.180025, - "recall-0.025": 0.075251, - "recall-0.05": 0.794314, + "mean": 0.040107, + "median": 0.038453, + "std": 0.014264, + "sem": 0.000584, + "min": 0.012854, + "max": 0.181618, + "recall-0.025": 0.107023, + "recall-0.05": 0.804348, "recall-0.1": 0.998328, "recall-0.15": 0.998328, "recall-0.25": 1.0, @@ -2444,31 +2444,31 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 630, - "mean": 0.063395, - "median": 0.061135, - "std": 0.0194, - "sem": 0.000774, - "min": 0.016818, - "max": 0.1384, - "recall-0.025": 0.003175, - "recall-0.05": 0.27619, - "recall-0.1": 0.965079, - "recall-0.15": 1.0, + "mean": 0.059771, + "median": 0.057014, + "std": 0.018422, + "sem": 0.000735, + "min": 0.01946, + "max": 0.152292, + "recall-0.025": 0.007937, + "recall-0.05": 0.333333, + "recall-0.1": 0.98254, + "recall-0.15": 0.998413, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 630 }, "shoulder_right": { "count": 630, - "mean": 0.066349, - "median": 0.064391, - "std": 0.020003, - "sem": 0.000798, - "min": 0.019992, - "max": 0.138156, - "recall-0.025": 0.001587, - "recall-0.05": 0.249206, - "recall-0.1": 0.939683, + "mean": 0.061136, + "median": 0.059692, + "std": 0.019932, + "sem": 0.000795, + "min": 0.013849, + "max": 0.127072, + "recall-0.025": 0.006349, + "recall-0.05": 0.338095, + "recall-0.1": 0.952381, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -2476,15 +2476,15 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 630, - "mean": 0.053244, - "median": 0.05024, - "std": 0.021726, - "sem": 0.000866, - "min": 0.006956, - "max": 0.194577, - "recall-0.025": 0.052381, - "recall-0.05": 0.493651, - "recall-0.1": 0.971429, + "mean": 0.050566, + "median": 0.04785, + "std": 0.020729, + "sem": 0.000827, + "min": 0.006197, + "max": 0.158603, + "recall-0.025": 0.068254, + "recall-0.05": 0.555556, + "recall-0.1": 0.977778, "recall-0.15": 0.996825, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -2492,79 +2492,79 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 629, - "mean": 0.056012, - "median": 0.050853, - "std": 0.027639, - "sem": 0.001103, - "min": 0.001163, - "max": 0.171636, - "recall-0.025": 0.084261, - "recall-0.05": 0.470588, - "recall-0.1": 0.918919, - "recall-0.15": 0.982512, + "mean": 0.052199, + "median": 0.047131, + "std": 0.027734, + "sem": 0.001107, + "min": 0.004759, + "max": 0.168326, + "recall-0.025": 0.112878, + "recall-0.05": 0.565978, + "recall-0.1": 0.930048, + "recall-0.15": 0.987281, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 629 }, "wrist_left": { "count": 630, - "mean": 0.048505, - "median": 0.042435, - "std": 0.031723, - "sem": 0.001265, - "min": 0.00216, - "max": 0.454813, - "recall-0.025": 0.15873, - "recall-0.05": 0.65873, - "recall-0.1": 0.950794, - "recall-0.15": 0.988889, - "recall-0.25": 0.996825, + "mean": 0.047349, + "median": 0.042366, + "std": 0.025887, + "sem": 0.001032, + "min": 0.003905, + "max": 0.262538, + "recall-0.025": 0.146032, + "recall-0.05": 0.661905, + "recall-0.1": 0.965079, + "recall-0.15": 0.995238, + "recall-0.25": 0.998413, "recall-0.5": 1.0, "num_labels": 630 }, "wrist_right": { "count": 625, - "mean": 0.053696, - "median": 0.049092, - "std": 0.024819, - "sem": 0.000994, - "min": 0.012348, - "max": 0.16322, - "recall-0.025": 0.064, - "recall-0.05": 0.5296, - "recall-0.1": 0.9472, - "recall-0.15": 0.9952, + "mean": 0.053221, + "median": 0.048646, + "std": 0.025546, + "sem": 0.001023, + "min": 0.006786, + "max": 0.224126, + "recall-0.025": 0.0784, + "recall-0.05": 0.5264, + "recall-0.1": 0.9504, + "recall-0.15": 0.9968, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 625 }, "hip_left": { "count": 630, - "mean": 0.057704, - "median": 0.055883, - "std": 0.019645, - "sem": 0.000783, - "min": 0.007442, - "max": 0.159265, - "recall-0.025": 0.020635, - "recall-0.05": 0.377778, - "recall-0.1": 0.968254, - "recall-0.15": 0.995238, + "mean": 0.052761, + "median": 0.050105, + "std": 0.020705, + "sem": 0.000826, + "min": 0.006568, + "max": 0.153066, + "recall-0.025": 0.053968, + "recall-0.05": 0.495238, + "recall-0.1": 0.969841, + "recall-0.15": 0.998413, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 630 }, "hip_right": { "count": 629, - "mean": 0.052564, - "median": 0.05066, - "std": 0.021381, - "sem": 0.000853, - "min": 0.007273, - "max": 0.140749, - "recall-0.025": 0.076312, - "recall-0.05": 0.489666, - "recall-0.1": 0.977742, + "mean": 0.051659, + "median": 0.049745, + "std": 0.023579, + "sem": 0.000941, + "min": 0.002706, + "max": 0.129543, + "recall-0.025": 0.127186, + "recall-0.05": 0.502385, + "recall-0.1": 0.963434, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -2572,82 +2572,82 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 628, - "mean": 0.045653, - "median": 0.034096, - "std": 0.047037, - "sem": 0.001878, - "min": 0.003655, - "max": 0.364855, - "recall-0.025": 0.300955, - "recall-0.05": 0.75, - "recall-0.1": 0.947452, - "recall-0.15": 0.960191, + "mean": 0.048396, + "median": 0.036676, + "std": 0.046572, + "sem": 0.00186, + "min": 0.008278, + "max": 0.369992, + "recall-0.025": 0.213376, + "recall-0.05": 0.69586, + "recall-0.1": 0.944268, + "recall-0.15": 0.961783, "recall-0.25": 0.984076, "recall-0.5": 1.0, "num_labels": 628 }, "knee_right": { "count": 629, - "mean": 0.053823, - "median": 0.036351, - "std": 0.072928, - "sem": 0.00291, - "min": 0.000547, - "max": 0.493588, - "recall-0.025": 0.238474, - "recall-0.05": 0.710652, - "recall-0.1": 0.942766, - "recall-0.15": 0.950715, + "mean": 0.0546, + "median": 0.03749, + "std": 0.07228, + "sem": 0.002884, + "min": 0.004193, + "max": 0.495918, + "recall-0.025": 0.213037, + "recall-0.05": 0.72337, + "recall-0.1": 0.941176, + "recall-0.15": 0.952305, "recall-0.25": 0.955485, "recall-0.5": 1.0, "num_labels": 629 }, "ankle_left": { "count": 619, - "mean": 0.062884, - "median": 0.048225, - "std": 0.072502, - "sem": 0.002916, - "min": 0.013361, - "max": 0.495545, - "recall-0.025": 0.059774, - "recall-0.05": 0.531502, - "recall-0.1": 0.95315, + "mean": 0.057531, + "median": 0.042722, + "std": 0.070232, + "sem": 0.002825, + "min": 0.007541, + "max": 0.499413, + "recall-0.025": 0.098546, + "recall-0.05": 0.662359, + "recall-0.1": 0.954766, "recall-0.15": 0.959612, - "recall-0.25": 0.962843, + "recall-0.25": 0.966074, "recall-0.5": 1.0, "num_labels": 619 }, "ankle_right": { - "count": 601, - "mean": 0.05131, - "median": 0.046258, - "std": 0.042077, - "sem": 0.001718, - "min": 0.005895, - "max": 0.453244, - "recall-0.025": 0.138264, - "recall-0.05": 0.551447, - "recall-0.1": 0.937299, + "count": 602, + "mean": 0.047433, + "median": 0.041615, + "std": 0.044675, + "sem": 0.001822, + "min": 0.007662, + "max": 0.450729, + "recall-0.025": 0.173633, + "recall-0.05": 0.662379, + "recall-0.1": 0.940514, "recall-0.15": 0.951768, "recall-0.25": 0.954984, - "recall-0.5": 0.966238, + "recall-0.5": 0.967846, "num_labels": 622 }, "joint_recalls": { "num_labels": 8129, - "recall-0.025": 0.09767, - "recall-0.05": 0.52749, - "recall-0.1": 0.95436, - "recall-0.15": 0.98229, - "recall-0.25": 0.98844, - "recall-0.5": 0.99742 + "recall-0.025": 0.10739, + "recall-0.05": 0.57732, + "recall-0.1": 0.95854, + "recall-0.15": 0.98352, + "recall-0.25": 0.98893, + "recall-0.5": 0.99754 } } { "total_parts": 8725, - "correct_parts": 8591, - "pcp": 0.984642 + "correct_parts": 8606, + "pcp": 0.986361 } ``` @@ -5201,270 +5201,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.3254333310657077, - "avg_time_2d": 0.03075497415330675, - "avg_time_3d": 0.0011614216698540582, - "avg_fps": 31.331858570143712 + "img_loading": 0.3528638998667399, + "avg_time_2d": 0.04470903873443603, + "avg_time_3d": 0.0011984851625230577, + "avg_fps": 21.7829217329284 } { "person_nums": { "total_frames": 100, "total_labels": 400, - "total_preds": 374, + "total_preds": 405, "considered_empty": 0, - "valid_preds": 365, - "invalid_preds": 9, - "missing": 35, - "invalid_fraction": 0.02406, - "precision": 0.97594, - "recall": 0.9125, - "f1": 0.94315, - "non_empty": 374 + "valid_preds": 371, + "invalid_preds": 34, + "missing": 29, + "invalid_fraction": 0.08395, + "precision": 0.91605, + "recall": 0.9275, + "f1": 0.92174, + "non_empty": 405 }, "mpjpe": { - "count": 365, - "mean": 0.038593, - "median": 0.032782, - "std": 0.021124, - "sem": 0.001107, - "min": 0.016319, - "max": 0.261727, - "recall-0.025": 0.135, - "recall-0.05": 0.76, - "recall-0.1": 0.89, - "recall-0.15": 0.9075, - "recall-0.25": 0.91, - "recall-0.5": 0.9125, - "num_labels": 400, - "ap-0.025": 0.022527, - "ap-0.05": 0.670818, - "ap-0.1": 0.884891, - "ap-0.15": 0.905398, - "ap-0.25": 0.909401, - "ap-0.5": 0.912154 - }, - "head": { - "count": 365, - "mean": 0.044278, - "median": 0.038713, - "std": 0.026613, - "sem": 0.001395, - "min": 0.007257, - "max": 0.322893, - "recall-0.025": 0.195, - "recall-0.05": 0.6075, + "count": 371, + "mean": 0.041029, + "median": 0.03212, + "std": 0.030237, + "sem": 0.001572, + "min": 0.014996, + "max": 0.294915, + "recall-0.025": 0.2075, + "recall-0.05": 0.7525, "recall-0.1": 0.8875, "recall-0.15": 0.91, - "recall-0.25": 0.91, - "recall-0.5": 0.9125, + "recall-0.25": 0.9225, + "recall-0.5": 0.9275, + "num_labels": 400, + "ap-0.025": 0.052189, + "ap-0.05": 0.655733, + "ap-0.1": 0.859266, + "ap-0.15": 0.893474, + "ap-0.25": 0.906237, + "ap-0.5": 0.913812 + }, + "head": { + "count": 371, + "mean": 0.043419, + "median": 0.038314, + "std": 0.027822, + "sem": 0.001446, + "min": 0.002897, + "max": 0.28156, + "recall-0.025": 0.2125, + "recall-0.05": 0.6175, + "recall-0.1": 0.9025, + "recall-0.15": 0.9225, + "recall-0.25": 0.9225, + "recall-0.5": 0.9275, "num_labels": 400 }, "shoulder_left": { - "count": 365, - "mean": 0.039667, - "median": 0.03418, - "std": 0.030193, - "sem": 0.001583, - "min": 0.008104, - "max": 0.444591, - "recall-0.025": 0.2525, - "recall-0.05": 0.705, - "recall-0.1": 0.9, - "recall-0.15": 0.91, - "recall-0.25": 0.91, - "recall-0.5": 0.9125, + "count": 370, + "mean": 0.039127, + "median": 0.030649, + "std": 0.034677, + "sem": 0.001805, + "min": 0.002987, + "max": 0.43717, + "recall-0.025": 0.315, + "recall-0.05": 0.72, + "recall-0.1": 0.895, + "recall-0.15": 0.92, + "recall-0.25": 0.92, + "recall-0.5": 0.925, "num_labels": 400 }, "shoulder_right": { - "count": 365, - "mean": 0.039327, - "median": 0.035443, - "std": 0.02307, - "sem": 0.001209, - "min": 0.00436, - "max": 0.268432, - "recall-0.025": 0.205, - "recall-0.05": 0.7175, - "recall-0.1": 0.8975, + "count": 371, + "mean": 0.03898, + "median": 0.032612, + "std": 0.032755, + "sem": 0.001703, + "min": 0.005203, + "max": 0.320625, + "recall-0.025": 0.28, + "recall-0.05": 0.7525, + "recall-0.1": 0.9025, "recall-0.15": 0.91, - "recall-0.25": 0.91, - "recall-0.5": 0.9125, + "recall-0.25": 0.9225, + "recall-0.5": 0.9275, "num_labels": 400 }, "elbow_left": { - "count": 365, - "mean": 0.029722, - "median": 0.025394, - "std": 0.025655, - "sem": 0.001345, - "min": 0.002444, - "max": 0.366985, - "recall-0.025": 0.4375, - "recall-0.05": 0.83, - "recall-0.1": 0.9, - "recall-0.15": 0.91, - "recall-0.25": 0.91, - "recall-0.5": 0.9125, + "count": 371, + "mean": 0.031208, + "median": 0.025565, + "std": 0.031461, + "sem": 0.001636, + "min": 0.002624, + "max": 0.367832, + "recall-0.025": 0.4525, + "recall-0.05": 0.8475, + "recall-0.1": 0.905, + "recall-0.15": 0.915, + "recall-0.25": 0.92, + "recall-0.5": 0.9275, "num_labels": 400 }, "elbow_right": { - "count": 365, - "mean": 0.0375, - "median": 0.030366, - "std": 0.029593, - "sem": 0.001551, - "min": 0.002767, - "max": 0.326305, - "recall-0.025": 0.33, - "recall-0.05": 0.7475, - "recall-0.1": 0.87, - "recall-0.15": 0.91, - "recall-0.25": 0.91, - "recall-0.5": 0.9125, + "count": 370, + "mean": 0.037451, + "median": 0.030453, + "std": 0.030159, + "sem": 0.00157, + "min": 0.003176, + "max": 0.326081, + "recall-0.025": 0.325, + "recall-0.05": 0.76, + "recall-0.1": 0.89, + "recall-0.15": 0.9175, + "recall-0.25": 0.9225, + "recall-0.5": 0.925, "num_labels": 400 }, "wrist_left": { - "count": 365, - "mean": 0.034412, - "median": 0.026054, - "std": 0.031832, - "sem": 0.001668, - "min": 0.002075, - "max": 0.309808, - "recall-0.025": 0.42, - "recall-0.05": 0.77, - "recall-0.1": 0.8775, - "recall-0.15": 0.9025, - "recall-0.25": 0.9075, - "recall-0.5": 0.9125, + "count": 371, + "mean": 0.034956, + "median": 0.025268, + "std": 0.033028, + "sem": 0.001717, + "min": 0.003069, + "max": 0.30281, + "recall-0.025": 0.45, + "recall-0.05": 0.785, + "recall-0.1": 0.885, + "recall-0.15": 0.915, + "recall-0.25": 0.9225, + "recall-0.5": 0.9275, "num_labels": 400 }, "wrist_right": { - "count": 363, - "mean": 0.033548, - "median": 0.023711, - "std": 0.037227, - "sem": 0.001957, - "min": 0.001522, - "max": 0.297089, - "recall-0.025": 0.48, - "recall-0.05": 0.7675, - "recall-0.1": 0.8725, - "recall-0.15": 0.8925, - "recall-0.25": 0.8975, - "recall-0.5": 0.9075, + "count": 370, + "mean": 0.036946, + "median": 0.02456, + "std": 0.046028, + "sem": 0.002396, + "min": 0.002426, + "max": 0.460223, + "recall-0.025": 0.4775, + "recall-0.05": 0.7575, + "recall-0.1": 0.8775, + "recall-0.15": 0.9025, + "recall-0.25": 0.9175, + "recall-0.5": 0.925, "num_labels": 400 }, "hip_left": { - "count": 365, - "mean": 0.047004, - "median": 0.038511, - "std": 0.030961, - "sem": 0.001623, - "min": 0.006648, - "max": 0.155824, - "recall-0.025": 0.215, + "count": 371, + "mean": 0.047198, + "median": 0.038562, + "std": 0.031126, + "sem": 0.001618, + "min": 0.003036, + "max": 0.158187, + "recall-0.025": 0.24, "recall-0.05": 0.6325, - "recall-0.1": 0.83, - "recall-0.15": 0.9075, - "recall-0.25": 0.9125, - "recall-0.5": 0.9125, + "recall-0.1": 0.8475, + "recall-0.15": 0.9225, + "recall-0.25": 0.9275, + "recall-0.5": 0.9275, "num_labels": 400 }, "hip_right": { - "count": 365, - "mean": 0.044064, - "median": 0.036475, - "std": 0.028741, - "sem": 0.001506, - "min": 0.004608, - "max": 0.169965, - "recall-0.025": 0.225, - "recall-0.05": 0.6525, + "count": 371, + "mean": 0.046973, + "median": 0.036296, + "std": 0.036089, + "sem": 0.001876, + "min": 0.004871, + "max": 0.267409, + "recall-0.025": 0.235, + "recall-0.05": 0.6275, "recall-0.1": 0.8525, - "recall-0.15": 0.905, - "recall-0.25": 0.9125, - "recall-0.5": 0.9125, + "recall-0.15": 0.9025, + "recall-0.25": 0.925, + "recall-0.5": 0.9275, "num_labels": 400 }, "knee_left": { - "count": 365, - "mean": 0.027652, - "median": 0.023266, - "std": 0.020515, - "sem": 0.001075, - "min": 0.002102, - "max": 0.22658, - "recall-0.025": 0.5125, - "recall-0.05": 0.85, - "recall-0.1": 0.905, - "recall-0.15": 0.9075, - "recall-0.25": 0.9125, - "recall-0.5": 0.9125, + "count": 371, + "mean": 0.029505, + "median": 0.02473, + "std": 0.021497, + "sem": 0.001118, + "min": 0.001892, + "max": 0.2081, + "recall-0.025": 0.4775, + "recall-0.05": 0.8325, + "recall-0.1": 0.9125, + "recall-0.15": 0.925, + "recall-0.25": 0.9275, + "recall-0.5": 0.9275, "num_labels": 400 }, "knee_right": { - "count": 363, - "mean": 0.029385, - "median": 0.023571, - "std": 0.025782, - "sem": 0.001355, - "min": 0.002521, - "max": 0.263501, - "recall-0.025": 0.4975, - "recall-0.05": 0.815, - "recall-0.1": 0.895, - "recall-0.15": 0.8975, - "recall-0.25": 0.905, - "recall-0.5": 0.9075, + "count": 369, + "mean": 0.039471, + "median": 0.024696, + "std": 0.065749, + "sem": 0.003427, + "min": 0.002502, + "max": 0.485122, + "recall-0.025": 0.4725, + "recall-0.05": 0.81, + "recall-0.1": 0.885, + "recall-0.15": 0.89, + "recall-0.25": 0.8925, + "recall-0.5": 0.9225, "num_labels": 400 }, "ankle_left": { - "count": 365, - "mean": 0.036181, - "median": 0.029006, - "std": 0.035873, - "sem": 0.00188, - "min": 0.003242, - "max": 0.476528, - "recall-0.025": 0.365, - "recall-0.05": 0.77, - "recall-0.1": 0.89, + "count": 370, + "mean": 0.037307, + "median": 0.025284, + "std": 0.050685, + "sem": 0.002639, + "min": 0.002673, + "max": 0.476034, + "recall-0.025": 0.45, + "recall-0.05": 0.765, + "recall-0.1": 0.885, "recall-0.15": 0.905, - "recall-0.25": 0.9075, - "recall-0.5": 0.9125, + "recall-0.25": 0.915, + "recall-0.5": 0.925, "num_labels": 400 }, "ankle_right": { - "count": 364, - "mean": 0.050975, - "median": 0.035809, - "std": 0.052832, - "sem": 0.002773, - "min": 0.003705, - "max": 0.453985, - "recall-0.025": 0.2525, - "recall-0.05": 0.6275, - "recall-0.1": 0.8075, - "recall-0.15": 0.8775, - "recall-0.25": 0.8975, - "recall-0.5": 0.91, + "count": 362, + "mean": 0.046193, + "median": 0.030038, + "std": 0.050436, + "sem": 0.002655, + "min": 0.002157, + "max": 0.393281, + "recall-0.025": 0.3825, + "recall-0.05": 0.65, + "recall-0.1": 0.8175, + "recall-0.15": 0.865, + "recall-0.25": 0.8925, + "recall-0.5": 0.905, "num_labels": 400 }, "joint_recalls": { "num_labels": 5200, - "recall-0.025": 0.33731, - "recall-0.05": 0.72981, - "recall-0.1": 0.87577, - "recall-0.15": 0.90346, - "recall-0.25": 0.90788, - "recall-0.5": 0.91154 + "recall-0.025": 0.36692, + "recall-0.05": 0.73481, + "recall-0.1": 0.88135, + "recall-0.15": 0.90865, + "recall-0.25": 0.9175, + "recall-0.5": 0.92462 } } { "total_parts": 5600, - "correct_parts": 5064, - "pcp": 0.904286 + "correct_parts": 5107, + "pcp": 0.911964 } ``` @@ -5472,10 +5472,10 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.26752570298340944, - "avg_time_2d": 0.029194490329639333, - "avg_time_3d": 0.0013097857569789027, - "avg_fps": 32.78228918334124 + "img_loading": 0.2947925146635588, + "avg_time_2d": 0.0422386156546103, + "avg_time_3d": 0.0009064566981685055, + "avg_fps": 23.177617870783198 } { "person_nums": { @@ -5494,21 +5494,21 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 363, - "mean": 0.029716, - "median": 0.028601, - "std": 0.008223, - "sem": 0.000432, - "min": 0.013567, - "max": 0.059362, - "recall-0.025": 0.292011, - "recall-0.05": 0.975207, + "mean": 0.02595, + "median": 0.025003, + "std": 0.007261, + "sem": 0.000382, + "min": 0.012176, + "max": 0.052961, + "recall-0.025": 0.498623, + "recall-0.05": 0.99449, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 363, - "ap-0.025": 0.089053, - "ap-0.05": 0.967025, + "ap-0.025": 0.281383, + "ap-0.05": 0.993396, "ap-0.1": 1.0, "ap-0.15": 1.0, "ap-0.25": 1.0, @@ -5516,14 +5516,14 @@ Results of the model in various experiments on different datasets. \ }, "head": { "count": 363, - "mean": 0.029838, - "median": 0.025463, - "std": 0.016868, - "sem": 0.000887, - "min": 0.000603, - "max": 0.099895, - "recall-0.025": 0.46832, - "recall-0.05": 0.889807, + "mean": 0.028099, + "median": 0.023086, + "std": 0.017182, + "sem": 0.000903, + "min": 0.002102, + "max": 0.098073, + "recall-0.025": 0.534435, + "recall-0.05": 0.884298, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5532,15 +5532,15 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 363, - "mean": 0.031056, - "median": 0.026049, - "std": 0.02083, - "sem": 0.001095, - "min": 0.003512, - "max": 0.155108, - "recall-0.025": 0.471074, - "recall-0.05": 0.865014, - "recall-0.1": 0.983471, + "mean": 0.027054, + "median": 0.021728, + "std": 0.020627, + "sem": 0.001084, + "min": 0.002837, + "max": 0.160499, + "recall-0.025": 0.586777, + "recall-0.05": 0.900826, + "recall-0.1": 0.980716, "recall-0.15": 0.997245, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5548,14 +5548,14 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_right": { "count": 363, - "mean": 0.030311, - "median": 0.028595, - "std": 0.015195, - "sem": 0.000799, - "min": 0.001788, - "max": 0.106137, - "recall-0.025": 0.396694, - "recall-0.05": 0.898072, + "mean": 0.023748, + "median": 0.021035, + "std": 0.013446, + "sem": 0.000707, + "min": 0.003516, + "max": 0.101881, + "recall-0.025": 0.600551, + "recall-0.05": 0.958678, "recall-0.1": 0.997245, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5564,14 +5564,14 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 363, - "mean": 0.023612, - "median": 0.020719, - "std": 0.014726, - "sem": 0.000774, - "min": 0.003915, - "max": 0.191631, - "recall-0.025": 0.62259, - "recall-0.05": 0.966942, + "mean": 0.022266, + "median": 0.019049, + "std": 0.014795, + "sem": 0.000778, + "min": 0.003514, + "max": 0.194458, + "recall-0.025": 0.702479, + "recall-0.05": 0.961433, "recall-0.1": 0.997245, "recall-0.15": 0.997245, "recall-0.25": 1.0, @@ -5580,15 +5580,15 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 363, - "mean": 0.020607, - "median": 0.019497, - "std": 0.011087, - "sem": 0.000583, - "min": 0.001944, - "max": 0.122093, - "recall-0.025": 0.732782, - "recall-0.05": 0.986226, - "recall-0.1": 0.997245, + "mean": 0.018467, + "median": 0.016303, + "std": 0.010228, + "sem": 0.000538, + "min": 0.001717, + "max": 0.084792, + "recall-0.025": 0.798898, + "recall-0.05": 0.988981, + "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5596,47 +5596,47 @@ Results of the model in various experiments on different datasets. \ }, "wrist_left": { "count": 363, - "mean": 0.025437, - "median": 0.020119, - "std": 0.021536, - "sem": 0.001132, - "min": 0.00071, - "max": 0.22806, - "recall-0.025": 0.639118, - "recall-0.05": 0.931129, - "recall-0.1": 0.988981, - "recall-0.15": 0.99449, + "mean": 0.024304, + "median": 0.018879, + "std": 0.024223, + "sem": 0.001273, + "min": 0.001556, + "max": 0.240021, + "recall-0.025": 0.674931, + "recall-0.05": 0.942149, + "recall-0.1": 0.986226, + "recall-0.15": 0.991736, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 363 }, "wrist_right": { "count": 363, - "mean": 0.020287, - "median": 0.017924, - "std": 0.015259, - "sem": 0.000802, - "min": 0.001418, - "max": 0.228484, - "recall-0.025": 0.749311, - "recall-0.05": 0.975207, - "recall-0.1": 0.997245, - "recall-0.15": 0.997245, + "mean": 0.019756, + "median": 0.017616, + "std": 0.011931, + "sem": 0.000627, + "min": 0.001127, + "max": 0.089718, + "recall-0.025": 0.77686, + "recall-0.05": 0.972452, + "recall-0.1": 1.0, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 363 }, "hip_left": { "count": 363, - "mean": 0.042968, - "median": 0.040979, - "std": 0.020186, - "sem": 0.001061, - "min": 0.003852, - "max": 0.121286, - "recall-0.025": 0.184573, - "recall-0.05": 0.710744, - "recall-0.1": 0.988981, + "mean": 0.031364, + "median": 0.026845, + "std": 0.017668, + "sem": 0.000929, + "min": 0.004869, + "max": 0.123913, + "recall-0.025": 0.429752, + "recall-0.05": 0.848485, + "recall-0.1": 0.997245, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5644,15 +5644,15 @@ Results of the model in various experiments on different datasets. \ }, "hip_right": { "count": 363, - "mean": 0.041088, - "median": 0.038537, - "std": 0.021023, - "sem": 0.001105, - "min": 0.002476, - "max": 0.135356, - "recall-0.025": 0.22865, - "recall-0.05": 0.738292, - "recall-0.1": 0.986226, + "mean": 0.031909, + "median": 0.029546, + "std": 0.017146, + "sem": 0.000901, + "min": 0.002958, + "max": 0.115878, + "recall-0.025": 0.371901, + "recall-0.05": 0.887052, + "recall-0.1": 0.988981, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5660,30 +5660,30 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 363, - "mean": 0.031624, - "median": 0.022421, - "std": 0.027562, - "sem": 0.001449, - "min": 0.002675, - "max": 0.159492, - "recall-0.025": 0.556474, - "recall-0.05": 0.84022, - "recall-0.1": 0.961433, - "recall-0.15": 0.99449, + "mean": 0.028369, + "median": 0.020181, + "std": 0.023944, + "sem": 0.001258, + "min": 0.001137, + "max": 0.126999, + "recall-0.025": 0.62259, + "recall-0.05": 0.865014, + "recall-0.1": 0.972452, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 363 }, "knee_right": { "count": 363, - "mean": 0.027296, - "median": 0.021755, - "std": 0.01716, - "sem": 0.000902, - "min": 0.002347, - "max": 0.083263, - "recall-0.025": 0.561983, - "recall-0.05": 0.876033, + "mean": 0.023918, + "median": 0.020759, + "std": 0.013267, + "sem": 0.000697, + "min": 0.002183, + "max": 0.065309, + "recall-0.025": 0.595041, + "recall-0.05": 0.947658, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5692,15 +5692,15 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 363, - "mean": 0.030852, - "median": 0.024302, - "std": 0.022693, - "sem": 0.001193, - "min": 0.002607, - "max": 0.162734, - "recall-0.025": 0.523416, - "recall-0.05": 0.876033, - "recall-0.1": 0.977961, + "mean": 0.029342, + "median": 0.023488, + "std": 0.022035, + "sem": 0.001158, + "min": 0.001711, + "max": 0.174059, + "recall-0.025": 0.528926, + "recall-0.05": 0.881543, + "recall-0.1": 0.980716, "recall-0.15": 0.997245, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5708,26 +5708,26 @@ Results of the model in various experiments on different datasets. \ }, "ankle_right": { "count": 363, - "mean": 0.031328, - "median": 0.024467, - "std": 0.024414, - "sem": 0.001283, - "min": 0.000726, - "max": 0.173642, - "recall-0.025": 0.506887, - "recall-0.05": 0.862259, + "mean": 0.02875, + "median": 0.021545, + "std": 0.024745, + "sem": 0.001301, + "min": 0.000888, + "max": 0.21264, + "recall-0.025": 0.581267, + "recall-0.05": 0.870523, "recall-0.1": 0.969697, - "recall-0.15": 0.99449, + "recall-0.15": 0.997245, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 363 }, "joint_recalls": { "num_labels": 4719, - "recall-0.025": 0.50901, - "recall-0.05": 0.87667, - "recall-0.1": 0.98686, - "recall-0.15": 0.9964, + "recall-0.025": 0.59886, + "recall-0.05": 0.91524, + "recall-0.1": 0.98898, + "recall-0.15": 0.99767, "recall-0.25": 1.0, "recall-0.5": 1.0 } @@ -5743,59 +5743,59 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.28581791046338206, - "avg_time_2d": 0.034270742000677645, - "avg_time_3d": 0.001717981619712634, - "avg_fps": 27.786481414234594 + "img_loading": 0.3155306088618743, + "avg_time_2d": 0.04939531515806149, + "avg_time_3d": 0.001269202965956468, + "avg_fps": 19.737679090368005 } { "person_nums": { "total_frames": 166, "total_labels": 332, - "total_preds": 664, + "total_preds": 663, "considered_empty": 0, "valid_preds": 332, - "invalid_preds": 332, + "invalid_preds": 331, "missing": 0, - "invalid_fraction": 0.5, - "precision": 0.5, + "invalid_fraction": 0.49925, + "precision": 0.50075, "recall": 1.0, - "f1": 0.66667, - "non_empty": 664 + "f1": 0.66734, + "non_empty": 663 }, "mpjpe": { "count": 332, - "mean": 0.02722, - "median": 0.024488, - "std": 0.007803, - "sem": 0.000429, - "min": 0.014045, - "max": 0.057448, - "recall-0.025": 0.542169, - "recall-0.05": 0.987952, + "mean": 0.024288, + "median": 0.021073, + "std": 0.008508, + "sem": 0.000468, + "min": 0.011237, + "max": 0.054953, + "recall-0.025": 0.644578, + "recall-0.05": 0.98494, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 332, - "ap-0.025": 0.254249, - "ap-0.05": 0.669226, - "ap-0.1": 0.691064, - "ap-0.15": 0.691064, - "ap-0.25": 0.691064, - "ap-0.5": 0.691064 + "ap-0.025": 0.360242, + "ap-0.05": 0.643176, + "ap-0.1": 0.673112, + "ap-0.15": 0.673112, + "ap-0.25": 0.673112, + "ap-0.5": 0.673112 }, "head": { "count": 332, - "mean": 0.042848, - "median": 0.043721, - "std": 0.020907, - "sem": 0.001149, - "min": 0.002922, - "max": 0.108908, - "recall-0.025": 0.243976, - "recall-0.05": 0.641566, - "recall-0.1": 0.993976, + "mean": 0.040173, + "median": 0.040328, + "std": 0.019975, + "sem": 0.001098, + "min": 0.003561, + "max": 0.105944, + "recall-0.025": 0.277108, + "recall-0.05": 0.683735, + "recall-0.1": 0.996988, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5803,14 +5803,14 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 332, - "mean": 0.03085, - "median": 0.029606, - "std": 0.014208, - "sem": 0.000781, - "min": 0.00554, - "max": 0.097975, - "recall-0.025": 0.313253, - "recall-0.05": 0.891566, + "mean": 0.02351, + "median": 0.020707, + "std": 0.013028, + "sem": 0.000716, + "min": 0.002917, + "max": 0.079813, + "recall-0.025": 0.692771, + "recall-0.05": 0.948795, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5819,15 +5819,15 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_right": { "count": 332, - "mean": 0.031783, - "median": 0.02566, - "std": 0.018156, - "sem": 0.000998, - "min": 0.00713, - "max": 0.120358, - "recall-0.025": 0.463855, + "mean": 0.028153, + "median": 0.020467, + "std": 0.021551, + "sem": 0.001185, + "min": 0.003312, + "max": 0.136505, + "recall-0.025": 0.641566, "recall-0.05": 0.864458, - "recall-0.1": 0.990964, + "recall-0.1": 0.993976, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5835,14 +5835,14 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 332, - "mean": 0.019772, - "median": 0.017435, - "std": 0.010728, - "sem": 0.00059, - "min": 0.002567, - "max": 0.070806, - "recall-0.025": 0.801205, - "recall-0.05": 0.960843, + "mean": 0.019389, + "median": 0.01612, + "std": 0.010839, + "sem": 0.000596, + "min": 0.002353, + "max": 0.071358, + "recall-0.025": 0.743976, + "recall-0.05": 0.981928, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5851,13 +5851,13 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 332, - "mean": 0.023422, - "median": 0.019567, - "std": 0.015015, - "sem": 0.000825, - "min": 0.002011, - "max": 0.102676, - "recall-0.025": 0.689759, + "mean": 0.023058, + "median": 0.018475, + "std": 0.016123, + "sem": 0.000886, + "min": 0.002197, + "max": 0.116703, + "recall-0.025": 0.707831, "recall-0.05": 0.927711, "recall-0.1": 0.996988, "recall-0.15": 1.0, @@ -5867,15 +5867,15 @@ Results of the model in various experiments on different datasets. \ }, "wrist_left": { "count": 332, - "mean": 0.018635, - "median": 0.011967, - "std": 0.017734, - "sem": 0.000975, - "min": 0.000885, - "max": 0.116474, - "recall-0.025": 0.78012, - "recall-0.05": 0.936747, - "recall-0.1": 0.993976, + "mean": 0.019662, + "median": 0.013027, + "std": 0.018692, + "sem": 0.001027, + "min": 0.001182, + "max": 0.119575, + "recall-0.025": 0.771084, + "recall-0.05": 0.927711, + "recall-0.1": 0.987952, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5883,30 +5883,30 @@ Results of the model in various experiments on different datasets. \ }, "wrist_right": { "count": 332, - "mean": 0.026923, - "median": 0.020672, - "std": 0.021096, - "sem": 0.00116, - "min": 0.002894, - "max": 0.178181, - "recall-0.025": 0.605422, - "recall-0.05": 0.894578, - "recall-0.1": 0.98494, - "recall-0.15": 0.996988, + "mean": 0.026947, + "median": 0.020307, + "std": 0.02218, + "sem": 0.001219, + "min": 0.003224, + "max": 0.178388, + "recall-0.025": 0.641566, + "recall-0.05": 0.888554, + "recall-0.1": 0.981928, + "recall-0.15": 0.993976, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 332 }, "hip_left": { "count": 332, - "mean": 0.036473, - "median": 0.035653, - "std": 0.015949, - "sem": 0.000877, - "min": 0.003435, - "max": 0.100931, - "recall-0.025": 0.222892, - "recall-0.05": 0.873494, + "mean": 0.028906, + "median": 0.024366, + "std": 0.016605, + "sem": 0.000913, + "min": 0.003937, + "max": 0.119293, + "recall-0.025": 0.527108, + "recall-0.05": 0.912651, "recall-0.1": 0.996988, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5915,15 +5915,15 @@ Results of the model in various experiments on different datasets. \ }, "hip_right": { "count": 332, - "mean": 0.032494, - "median": 0.029056, - "std": 0.017347, - "sem": 0.000953, - "min": 0.003376, - "max": 0.113483, - "recall-0.025": 0.36747, - "recall-0.05": 0.88253, - "recall-0.1": 0.987952, + "mean": 0.029657, + "median": 0.026777, + "std": 0.015822, + "sem": 0.00087, + "min": 0.001441, + "max": 0.105738, + "recall-0.025": 0.451807, + "recall-0.05": 0.915663, + "recall-0.1": 0.990964, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5931,14 +5931,14 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 332, - "mean": 0.021891, - "median": 0.017464, - "std": 0.014978, - "sem": 0.000823, - "min": 0.002454, - "max": 0.088505, - "recall-0.025": 0.716867, - "recall-0.05": 0.933735, + "mean": 0.020668, + "median": 0.015671, + "std": 0.015292, + "sem": 0.000841, + "min": 0.001365, + "max": 0.09652, + "recall-0.025": 0.771084, + "recall-0.05": 0.927711, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5947,15 +5947,15 @@ Results of the model in various experiments on different datasets. \ }, "knee_right": { "count": 332, - "mean": 0.019855, - "median": 0.014147, - "std": 0.015078, - "sem": 0.000829, - "min": 0.002063, - "max": 0.102252, - "recall-0.025": 0.753012, - "recall-0.05": 0.951807, - "recall-0.1": 0.996988, + "mean": 0.019246, + "median": 0.013336, + "std": 0.015752, + "sem": 0.000866, + "min": 0.00138, + "max": 0.104555, + "recall-0.025": 0.740964, + "recall-0.05": 0.945783, + "recall-0.1": 0.993976, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5963,14 +5963,14 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 332, - "mean": 0.019062, - "median": 0.017308, - "std": 0.008737, - "sem": 0.00048, - "min": 0.003768, - "max": 0.051346, - "recall-0.025": 0.768072, - "recall-0.05": 0.996988, + "mean": 0.013814, + "median": 0.011383, + "std": 0.00973, + "sem": 0.000535, + "min": 0.000844, + "max": 0.060583, + "recall-0.025": 0.891566, + "recall-0.05": 0.990964, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5979,15 +5979,15 @@ Results of the model in various experiments on different datasets. \ }, "ankle_right": { "count": 332, - "mean": 0.029855, - "median": 0.028019, - "std": 0.011966, - "sem": 0.000658, - "min": 0.003821, - "max": 0.098185, - "recall-0.025": 0.313253, - "recall-0.05": 0.945783, - "recall-0.1": 1.0, + "mean": 0.022564, + "median": 0.020028, + "std": 0.013416, + "sem": 0.000737, + "min": 0.003082, + "max": 0.105125, + "recall-0.025": 0.777108, + "recall-0.05": 0.954819, + "recall-0.1": 0.993976, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5995,10 +5995,10 @@ Results of the model in various experiments on different datasets. \ }, "joint_recalls": { "num_labels": 4316, - "recall-0.025": 0.53962, - "recall-0.05": 0.89852, - "recall-0.1": 0.9956, - "recall-0.15": 0.99977, + "recall-0.025": 0.66172, + "recall-0.05": 0.91219, + "recall-0.1": 0.9949, + "recall-0.15": 0.99954, "recall-0.25": 1.0, "recall-0.5": 1.0 } @@ -6014,270 +6014,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.2992589259147644, - "avg_time_2d": 0.03299893379211426, - "avg_time_3d": 0.0016231608390808105, - "avg_fps": 28.88329001039076 + "img_loading": 0.32563793182373046, + "avg_time_2d": 0.04618632316589356, + "avg_time_3d": 0.001581103801727295, + "avg_fps": 20.934767968093613 } { "person_nums": { "total_frames": 110, "total_labels": 330, - "total_preds": 482, + "total_preds": 485, "considered_empty": 0, "valid_preds": 330, - "invalid_preds": 152, + "invalid_preds": 155, "missing": 0, - "invalid_fraction": 0.31535, - "precision": 0.68465, + "invalid_fraction": 0.31959, + "precision": 0.68041, "recall": 1.0, - "f1": 0.81281, - "non_empty": 482 + "f1": 0.80982, + "non_empty": 485 }, "mpjpe": { "count": 330, - "mean": 0.044535, - "median": 0.039811, - "std": 0.027284, - "sem": 0.001504, - "min": 0.020143, - "max": 0.449198, - "recall-0.025": 0.063636, - "recall-0.05": 0.709091, - "recall-0.1": 0.990909, - "recall-0.15": 0.99697, - "recall-0.25": 0.99697, + "mean": 0.042084, + "median": 0.038648, + "std": 0.015229, + "sem": 0.00084, + "min": 0.018403, + "max": 0.104468, + "recall-0.025": 0.072727, + "recall-0.05": 0.712121, + "recall-0.1": 0.99697, + "recall-0.15": 1.0, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330, - "ap-0.025": 0.004059, - "ap-0.05": 0.409229, - "ap-0.1": 0.696079, - "ap-0.15": 0.704916, - "ap-0.25": 0.704916, - "ap-0.5": 0.709356 + "ap-0.025": 0.008937, + "ap-0.05": 0.431966, + "ap-0.1": 0.711422, + "ap-0.15": 0.71587, + "ap-0.25": 0.71587, + "ap-0.5": 0.71587 }, "head": { "count": 330, - "mean": 0.050681, - "median": 0.044027, - "std": 0.029855, - "sem": 0.001646, - "min": 0.006061, - "max": 0.309582, - "recall-0.025": 0.154545, - "recall-0.05": 0.572727, - "recall-0.1": 0.936364, - "recall-0.15": 0.993939, - "recall-0.25": 0.99697, + "mean": 0.048769, + "median": 0.042695, + "std": 0.027472, + "sem": 0.001515, + "min": 0.004423, + "max": 0.146109, + "recall-0.025": 0.2, + "recall-0.05": 0.6, + "recall-0.1": 0.939394, + "recall-0.15": 1.0, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330 }, "shoulder_left": { - "count": 329, - "mean": 0.049387, - "median": 0.046574, - "std": 0.025388, - "sem": 0.001402, - "min": 0.006754, - "max": 0.159942, + "count": 330, + "mean": 0.04732, + "median": 0.043445, + "std": 0.024772, + "sem": 0.001366, + "min": 0.006539, + "max": 0.151431, "recall-0.025": 0.148485, - "recall-0.05": 0.575758, - "recall-0.1": 0.948485, - "recall-0.15": 0.990909, - "recall-0.25": 0.99697, - "recall-0.5": 0.99697, + "recall-0.05": 0.627273, + "recall-0.1": 0.966667, + "recall-0.15": 0.99697, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 330 }, "shoulder_right": { "count": 330, - "mean": 0.044585, - "median": 0.037188, - "std": 0.034036, - "sem": 0.001876, - "min": 0.004312, - "max": 0.480158, - "recall-0.025": 0.221212, - "recall-0.05": 0.693939, - "recall-0.1": 0.951515, - "recall-0.15": 0.99697, - "recall-0.25": 0.99697, + "mean": 0.042601, + "median": 0.037662, + "std": 0.023642, + "sem": 0.001303, + "min": 0.004466, + "max": 0.130442, + "recall-0.025": 0.218182, + "recall-0.05": 0.742424, + "recall-0.1": 0.957576, + "recall-0.15": 1.0, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330 }, "elbow_left": { - "count": 329, - "mean": 0.048714, - "median": 0.039751, - "std": 0.033532, - "sem": 0.001852, - "min": 0.005664, - "max": 0.297929, - "recall-0.025": 0.233333, + "count": 330, + "mean": 0.046934, + "median": 0.040257, + "std": 0.027814, + "sem": 0.001533, + "min": 0.004532, + "max": 0.173743, + "recall-0.025": 0.239394, "recall-0.05": 0.630303, - "recall-0.1": 0.933333, - "recall-0.15": 0.984848, - "recall-0.25": 0.993939, - "recall-0.5": 0.99697, + "recall-0.1": 0.942424, + "recall-0.15": 0.993939, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 330 }, "elbow_right": { "count": 330, - "mean": 0.04666, - "median": 0.039808, - "std": 0.036519, - "sem": 0.002013, - "min": 0.004122, - "max": 0.492326, - "recall-0.025": 0.215152, - "recall-0.05": 0.663636, + "mean": 0.04471, + "median": 0.037929, + "std": 0.027937, + "sem": 0.00154, + "min": 0.002027, + "max": 0.215256, + "recall-0.025": 0.251515, + "recall-0.05": 0.660606, "recall-0.1": 0.951515, - "recall-0.15": 0.987879, - "recall-0.25": 0.99697, + "recall-0.15": 0.990909, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330 }, "wrist_left": { - "count": 329, - "mean": 0.052116, - "median": 0.041533, - "std": 0.042712, - "sem": 0.002358, - "min": 0.00523, - "max": 0.427564, - "recall-0.025": 0.248485, - "recall-0.05": 0.581818, - "recall-0.1": 0.906061, - "recall-0.15": 0.972727, - "recall-0.25": 0.987879, - "recall-0.5": 0.99697, + "count": 330, + "mean": 0.049567, + "median": 0.041124, + "std": 0.039975, + "sem": 0.002204, + "min": 0.001161, + "max": 0.432777, + "recall-0.025": 0.254545, + "recall-0.05": 0.606061, + "recall-0.1": 0.936364, + "recall-0.15": 0.984848, + "recall-0.25": 0.990909, + "recall-0.5": 1.0, "num_labels": 330 }, "wrist_right": { "count": 330, - "mean": 0.053122, - "median": 0.045521, - "std": 0.036726, - "sem": 0.002025, - "min": 0.003781, - "max": 0.348793, - "recall-0.025": 0.160606, - "recall-0.05": 0.581818, - "recall-0.1": 0.915152, - "recall-0.15": 0.975758, + "mean": 0.050431, + "median": 0.043957, + "std": 0.032647, + "sem": 0.0018, + "min": 0.005004, + "max": 0.255669, + "recall-0.025": 0.181818, + "recall-0.05": 0.59697, + "recall-0.1": 0.927273, + "recall-0.15": 0.984848, "recall-0.25": 0.99697, "recall-0.5": 1.0, "num_labels": 330 }, "hip_left": { "count": 330, - "mean": 0.044357, - "median": 0.038056, - "std": 0.034153, - "sem": 0.001883, - "min": 0.005615, - "max": 0.481605, - "recall-0.025": 0.248485, - "recall-0.05": 0.690909, - "recall-0.1": 0.975758, - "recall-0.15": 0.993939, - "recall-0.25": 0.99697, + "mean": 0.043482, + "median": 0.039062, + "std": 0.023344, + "sem": 0.001287, + "min": 0.005276, + "max": 0.161056, + "recall-0.025": 0.2, + "recall-0.05": 0.687879, + "recall-0.1": 0.972727, + "recall-0.15": 0.99697, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330 }, "hip_right": { "count": 330, - "mean": 0.042338, - "median": 0.039575, - "std": 0.024517, - "sem": 0.001352, - "min": 0.00294, - "max": 0.272672, + "mean": 0.041775, + "median": 0.038303, + "std": 0.022906, + "sem": 0.001263, + "min": 0.003252, + "max": 0.138516, "recall-0.025": 0.263636, - "recall-0.05": 0.675758, - "recall-0.1": 0.987879, - "recall-0.15": 0.99697, - "recall-0.25": 0.99697, - "recall-0.5": 1.0, - "num_labels": 330 - }, - "knee_left": { - "count": 330, - "mean": 0.034267, - "median": 0.029894, - "std": 0.020986, - "sem": 0.001157, - "min": 0.003382, - "max": 0.128852, - "recall-0.025": 0.418182, - "recall-0.05": 0.836364, + "recall-0.05": 0.657576, "recall-0.1": 0.987879, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330 }, + "knee_left": { + "count": 330, + "mean": 0.034029, + "median": 0.030365, + "std": 0.01994, + "sem": 0.001099, + "min": 0.003464, + "max": 0.111822, + "recall-0.025": 0.4, + "recall-0.05": 0.8, + "recall-0.1": 0.990909, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 330 + }, "knee_right": { - "count": 329, - "mean": 0.035474, - "median": 0.030448, - "std": 0.021352, - "sem": 0.001179, - "min": 0.003813, - "max": 0.109079, - "recall-0.025": 0.384848, - "recall-0.05": 0.784848, - "recall-0.1": 0.981818, - "recall-0.15": 0.99697, - "recall-0.25": 0.99697, - "recall-0.5": 0.99697, + "count": 330, + "mean": 0.034106, + "median": 0.028375, + "std": 0.020734, + "sem": 0.001143, + "min": 0.0005, + "max": 0.114381, + "recall-0.025": 0.412121, + "recall-0.05": 0.815152, + "recall-0.1": 0.987879, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 330 }, "ankle_left": { "count": 330, - "mean": 0.034277, - "median": 0.02631, - "std": 0.024839, - "sem": 0.001369, - "min": 0.004054, - "max": 0.167704, - "recall-0.025": 0.451515, - "recall-0.05": 0.79697, - "recall-0.1": 0.972727, - "recall-0.15": 0.993939, + "mean": 0.032258, + "median": 0.02488, + "std": 0.024517, + "sem": 0.001352, + "min": 0.004647, + "max": 0.177678, + "recall-0.025": 0.509091, + "recall-0.05": 0.833333, + "recall-0.1": 0.975758, + "recall-0.15": 0.990909, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 330 }, "ankle_right": { - "count": 329, - "mean": 0.033823, - "median": 0.030235, - "std": 0.020792, - "sem": 0.001148, - "min": 0.004923, - "max": 0.127201, - "recall-0.025": 0.381818, - "recall-0.05": 0.839394, - "recall-0.1": 0.978788, - "recall-0.15": 0.99697, - "recall-0.25": 0.99697, - "recall-0.5": 0.99697, + "count": 330, + "mean": 0.031109, + "median": 0.026753, + "std": 0.01945, + "sem": 0.001072, + "min": 0.001937, + "max": 0.130621, + "recall-0.025": 0.454545, + "recall-0.05": 0.854545, + "recall-0.1": 0.984848, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 330 }, "joint_recalls": { "num_labels": 4290, - "recall-0.025": 0.2697, - "recall-0.05": 0.68462, - "recall-0.1": 0.95478, - "recall-0.15": 0.98951, - "recall-0.25": 0.99627, - "recall-0.5": 0.99883 + "recall-0.025": 0.28578, + "recall-0.05": 0.69977, + "recall-0.1": 0.962, + "recall-0.15": 0.99417, + "recall-0.25": 0.99883, + "recall-0.5": 1.0 } } { "total_parts": 4620, - "correct_parts": 4582, - "pcp": 0.991775 + "correct_parts": 4601, + "pcp": 0.995887 } ``` @@ -6285,270 +6285,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.44553715259105237, - "avg_time_2d": 0.05800558425284721, - "avg_time_3d": 0.0033270217276908255, - "avg_fps": 16.30454118185225 + "img_loading": 0.48654386589119025, + "avg_time_2d": 0.07935880325935982, + "avg_time_3d": 0.0037131373946731154, + "avg_fps": 12.037758984885981 } { "person_nums": { "total_frames": 121, "total_labels": 484, - "total_preds": 520, + "total_preds": 530, "considered_empty": 0, - "valid_preds": 481, - "invalid_preds": 39, - "missing": 3, - "invalid_fraction": 0.075, - "precision": 0.925, - "recall": 0.9938, - "f1": 0.95817, - "non_empty": 520 + "valid_preds": 483, + "invalid_preds": 47, + "missing": 1, + "invalid_fraction": 0.08868, + "precision": 0.91132, + "recall": 0.99793, + "f1": 0.95266, + "non_empty": 530 }, "mpjpe": { - "count": 481, - "mean": 0.034759, - "median": 0.03089, - "std": 0.023351, - "sem": 0.001066, - "min": 0.013017, - "max": 0.451371, - "recall-0.025": 0.243802, - "recall-0.05": 0.89876, - "recall-0.1": 0.987603, - "recall-0.15": 0.991736, - "recall-0.25": 0.991736, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.031818, + "median": 0.029447, + "std": 0.011896, + "sem": 0.000542, + "min": 0.013382, + "max": 0.119972, + "recall-0.025": 0.322314, + "recall-0.05": 0.919421, + "recall-0.1": 0.995868, + "recall-0.15": 0.997934, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484, - "ap-0.025": 0.062289, - "ap-0.05": 0.809182, - "ap-0.1": 0.965422, - "ap-0.15": 0.97002, - "ap-0.25": 0.97002, - "ap-0.5": 0.976888 + "ap-0.025": 0.10999, + "ap-0.05": 0.837043, + "ap-0.1": 0.968553, + "ap-0.15": 0.972124, + "ap-0.25": 0.972124, + "ap-0.5": 0.972124 }, "head": { - "count": 481, - "mean": 0.033998, - "median": 0.028155, - "std": 0.021372, - "sem": 0.000975, - "min": 0.001252, - "max": 0.122411, - "recall-0.025": 0.433884, - "recall-0.05": 0.77686, - "recall-0.1": 0.981405, - "recall-0.15": 0.993802, - "recall-0.25": 0.993802, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.03173, + "median": 0.027192, + "std": 0.020372, + "sem": 0.000928, + "min": 0.004537, + "max": 0.206998, + "recall-0.025": 0.448347, + "recall-0.05": 0.826446, + "recall-0.1": 0.995868, + "recall-0.15": 0.995868, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "shoulder_left": { - "count": 481, - "mean": 0.034431, - "median": 0.030282, - "std": 0.018907, - "sem": 0.000863, - "min": 0.003665, - "max": 0.112985, - "recall-0.025": 0.376033, - "recall-0.05": 0.793388, - "recall-0.1": 0.985537, - "recall-0.15": 0.993802, - "recall-0.25": 0.993802, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.031043, + "median": 0.02792, + "std": 0.017327, + "sem": 0.000789, + "min": 0.004698, + "max": 0.10187, + "recall-0.025": 0.43595, + "recall-0.05": 0.869835, + "recall-0.1": 0.995868, + "recall-0.15": 0.997934, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "shoulder_right": { - "count": 481, - "mean": 0.03462, - "median": 0.030867, - "std": 0.021896, - "sem": 0.000999, - "min": 0.002155, - "max": 0.162133, - "recall-0.025": 0.373967, - "recall-0.05": 0.801653, - "recall-0.1": 0.977273, - "recall-0.15": 0.989669, - "recall-0.25": 0.993802, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.031959, + "median": 0.026932, + "std": 0.021641, + "sem": 0.000986, + "min": 0.00173, + "max": 0.169613, + "recall-0.025": 0.466942, + "recall-0.05": 0.822314, + "recall-0.1": 0.989669, + "recall-0.15": 0.995868, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "elbow_left": { - "count": 481, - "mean": 0.035617, - "median": 0.031009, - "std": 0.023468, - "sem": 0.001071, - "min": 0.002675, - "max": 0.266279, - "recall-0.025": 0.363636, - "recall-0.05": 0.811983, - "recall-0.1": 0.975207, - "recall-0.15": 0.991736, - "recall-0.25": 0.991736, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.03352, + "median": 0.028175, + "std": 0.021696, + "sem": 0.000988, + "min": 0.00267, + "max": 0.237151, + "recall-0.025": 0.390496, + "recall-0.05": 0.838843, + "recall-0.1": 0.985537, + "recall-0.15": 0.993802, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "elbow_right": { - "count": 481, - "mean": 0.038443, - "median": 0.031099, - "std": 0.036212, - "sem": 0.001653, - "min": 0.004715, - "max": 0.44936, - "recall-0.025": 0.382231, - "recall-0.05": 0.795455, - "recall-0.1": 0.960744, - "recall-0.15": 0.979339, - "recall-0.25": 0.989669, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.035427, + "median": 0.028172, + "std": 0.028765, + "sem": 0.00131, + "min": 0.004364, + "max": 0.39176, + "recall-0.025": 0.419421, + "recall-0.05": 0.818182, + "recall-0.1": 0.964876, + "recall-0.15": 0.993802, + "recall-0.25": 0.995868, + "recall-0.5": 0.997934, "num_labels": 484 }, "wrist_left": { - "count": 480, - "mean": 0.042001, - "median": 0.034797, - "std": 0.02973, - "sem": 0.001358, - "min": 0.001961, - "max": 0.228793, - "recall-0.025": 0.28719, - "recall-0.05": 0.727273, - "recall-0.1": 0.944215, - "recall-0.15": 0.981405, - "recall-0.25": 0.991736, - "recall-0.5": 0.991736, + "count": 483, + "mean": 0.039931, + "median": 0.03297, + "std": 0.029386, + "sem": 0.001339, + "min": 0.004046, + "max": 0.24029, + "recall-0.025": 0.326446, + "recall-0.05": 0.758264, + "recall-0.1": 0.956612, + "recall-0.15": 0.983471, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "wrist_right": { - "count": 480, - "mean": 0.043492, - "median": 0.033949, - "std": 0.040313, - "sem": 0.001842, - "min": 0.003705, - "max": 0.447233, - "recall-0.025": 0.309917, - "recall-0.05": 0.721074, - "recall-0.1": 0.942149, - "recall-0.15": 0.97314, - "recall-0.25": 0.985537, - "recall-0.5": 0.991736, + "count": 482, + "mean": 0.039199, + "median": 0.030247, + "std": 0.030422, + "sem": 0.001387, + "min": 0.005115, + "max": 0.287231, + "recall-0.025": 0.355372, + "recall-0.05": 0.772727, + "recall-0.1": 0.956612, + "recall-0.15": 0.987603, + "recall-0.25": 0.993802, + "recall-0.5": 0.995868, "num_labels": 484 }, "hip_left": { - "count": 481, - "mean": 0.037177, - "median": 0.032733, - "std": 0.020475, - "sem": 0.000935, - "min": 0.00343, - "max": 0.180868, - "recall-0.025": 0.299587, - "recall-0.05": 0.780992, - "recall-0.1": 0.989669, - "recall-0.15": 0.991736, - "recall-0.25": 0.993802, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.03733, + "median": 0.033414, + "std": 0.019106, + "sem": 0.00087, + "min": 0.003062, + "max": 0.130989, + "recall-0.025": 0.278926, + "recall-0.05": 0.807851, + "recall-0.1": 0.983471, + "recall-0.15": 0.997934, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "hip_right": { - "count": 481, - "mean": 0.042934, - "median": 0.034432, - "std": 0.028939, - "sem": 0.001321, - "min": 0.004528, - "max": 0.24836, - "recall-0.025": 0.272727, - "recall-0.05": 0.71281, - "recall-0.1": 0.929752, - "recall-0.15": 0.991736, - "recall-0.25": 0.993802, - "recall-0.5": 0.993802, + "count": 483, + "mean": 0.038573, + "median": 0.032167, + "std": 0.024761, + "sem": 0.001128, + "min": 0.004596, + "max": 0.143812, + "recall-0.025": 0.328512, + "recall-0.05": 0.758264, + "recall-0.1": 0.958678, + "recall-0.15": 0.997934, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "knee_left": { - "count": 480, - "mean": 0.023561, - "median": 0.020356, - "std": 0.014327, - "sem": 0.000655, - "min": 0.00137, - "max": 0.118864, - "recall-0.025": 0.623967, - "recall-0.05": 0.92562, - "recall-0.1": 0.989669, - "recall-0.15": 0.991736, - "recall-0.25": 0.991736, - "recall-0.5": 0.991736, + "count": 483, + "mean": 0.022775, + "median": 0.018507, + "std": 0.016274, + "sem": 0.000741, + "min": 0.001114, + "max": 0.172537, + "recall-0.025": 0.679752, + "recall-0.05": 0.948347, + "recall-0.1": 0.993802, + "recall-0.15": 0.993802, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "knee_right": { - "count": 480, - "mean": 0.026504, - "median": 0.021974, - "std": 0.018036, - "sem": 0.000824, - "min": 0.001679, - "max": 0.140837, - "recall-0.025": 0.582645, - "recall-0.05": 0.894628, - "recall-0.1": 0.979339, - "recall-0.15": 0.991736, - "recall-0.25": 0.991736, - "recall-0.5": 0.991736, + "count": 483, + "mean": 0.025145, + "median": 0.021325, + "std": 0.017533, + "sem": 0.000799, + "min": 0.002353, + "max": 0.193683, + "recall-0.025": 0.617769, + "recall-0.05": 0.909091, + "recall-0.1": 0.995868, + "recall-0.15": 0.995868, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "ankle_left": { - "count": 480, - "mean": 0.023299, - "median": 0.019345, - "std": 0.017265, - "sem": 0.000789, - "min": 0.002519, - "max": 0.246773, - "recall-0.025": 0.677686, - "recall-0.05": 0.948347, - "recall-0.1": 0.987603, - "recall-0.15": 0.989669, - "recall-0.25": 0.991736, - "recall-0.5": 0.991736, + "count": 483, + "mean": 0.022818, + "median": 0.018501, + "std": 0.016028, + "sem": 0.00073, + "min": 0.001942, + "max": 0.181252, + "recall-0.025": 0.665289, + "recall-0.05": 0.942149, + "recall-0.1": 0.993802, + "recall-0.15": 0.995868, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "ankle_right": { - "count": 480, - "mean": 0.024458, - "median": 0.020204, - "std": 0.015961, - "sem": 0.000729, - "min": 0.002284, - "max": 0.117153, - "recall-0.025": 0.642562, - "recall-0.05": 0.907025, - "recall-0.1": 0.989669, - "recall-0.15": 0.991736, - "recall-0.25": 0.991736, - "recall-0.5": 0.991736, + "count": 483, + "mean": 0.023208, + "median": 0.019677, + "std": 0.014591, + "sem": 0.000665, + "min": 0.002229, + "max": 0.095445, + "recall-0.025": 0.669421, + "recall-0.05": 0.931818, + "recall-0.1": 0.997934, + "recall-0.15": 0.997934, + "recall-0.25": 0.997934, + "recall-0.5": 0.997934, "num_labels": 484 }, "joint_recalls": { "num_labels": 6292, - "recall-0.025": 0.43166, - "recall-0.05": 0.81437, - "recall-0.1": 0.97076, - "recall-0.15": 0.98808, - "recall-0.25": 0.99158, - "recall-0.5": 0.99285 + "recall-0.025": 0.46647, + "recall-0.05": 0.8452, + "recall-0.1": 0.98156, + "recall-0.15": 0.99412, + "recall-0.25": 0.99746, + "recall-0.5": 0.99777 } } { "total_parts": 6776, - "correct_parts": 6708, - "pcp": 0.989965 + "correct_parts": 6751, + "pcp": 0.996311 } ``` @@ -6556,270 +6556,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.4311224242855359, - "avg_time_2d": 0.05043543418707875, - "avg_time_3d": 0.0028914909142290237, - "avg_fps": 18.75225316479904 + "img_loading": 0.5080458442599787, + "avg_time_2d": 0.0721634302525162, + "avg_time_3d": 0.002479799910087806, + "avg_fps": 13.397062236207946 } { "person_nums": { "total_frames": 183, "total_labels": 732, - "total_preds": 778, + "total_preds": 790, "considered_empty": 0, - "valid_preds": 731, - "invalid_preds": 47, - "missing": 1, - "invalid_fraction": 0.06041, - "precision": 0.93959, - "recall": 0.99863, - "f1": 0.96821, - "non_empty": 778 + "valid_preds": 732, + "invalid_preds": 58, + "missing": 0, + "invalid_fraction": 0.07342, + "precision": 0.92658, + "recall": 1.0, + "f1": 0.96189, + "non_empty": 790 }, "mpjpe": { - "count": 731, - "mean": 0.028375, - "median": 0.026921, - "std": 0.008531, - "sem": 0.000316, - "min": 0.010555, - "max": 0.077476, - "recall-0.025": 0.382514, + "count": 732, + "mean": 0.027482, + "median": 0.025794, + "std": 0.008978, + "sem": 0.000332, + "min": 0.009846, + "max": 0.093983, + "recall-0.025": 0.464481, "recall-0.05": 0.972678, - "recall-0.1": 0.998634, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "recall-0.1": 1.0, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732, - "ap-0.025": 0.165817, - "ap-0.05": 0.948662, - "ap-0.1": 0.998531, - "ap-0.15": 0.998531, - "ap-0.25": 0.998531, - "ap-0.5": 0.998531 + "ap-0.025": 0.239937, + "ap-0.05": 0.950439, + "ap-0.1": 0.999871, + "ap-0.15": 0.999871, + "ap-0.25": 0.999871, + "ap-0.5": 0.999871 }, "head": { - "count": 731, - "mean": 0.032136, - "median": 0.026718, - "std": 0.021984, - "sem": 0.000814, - "min": 0.001154, - "max": 0.192489, - "recall-0.025": 0.465847, - "recall-0.05": 0.830601, - "recall-0.1": 0.983607, + "count": 732, + "mean": 0.031151, + "median": 0.025369, + "std": 0.022388, + "sem": 0.000828, + "min": 0.00169, + "max": 0.243514, + "recall-0.025": 0.494536, + "recall-0.05": 0.856557, + "recall-0.1": 0.987705, "recall-0.15": 0.995902, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "shoulder_left": { - "count": 731, - "mean": 0.036142, - "median": 0.031195, - "std": 0.021262, - "sem": 0.000787, - "min": 0.001523, - "max": 0.160368, - "recall-0.025": 0.32377, - "recall-0.05": 0.815574, - "recall-0.1": 0.974044, + "count": 732, + "mean": 0.03507, + "median": 0.030037, + "std": 0.022946, + "sem": 0.000849, + "min": 0.003794, + "max": 0.179254, + "recall-0.025": 0.377049, + "recall-0.05": 0.831967, + "recall-0.1": 0.972678, "recall-0.15": 0.997268, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "shoulder_right": { - "count": 731, - "mean": 0.030172, - "median": 0.025994, - "std": 0.018502, - "sem": 0.000685, - "min": 0.002255, - "max": 0.158017, + "count": 732, + "mean": 0.029908, + "median": 0.025489, + "std": 0.018222, + "sem": 0.000674, + "min": 0.002216, + "max": 0.134316, "recall-0.025": 0.486339, "recall-0.05": 0.879781, - "recall-0.1": 0.991803, - "recall-0.15": 0.997268, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "recall-0.1": 0.993169, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "elbow_left": { - "count": 731, - "mean": 0.027326, - "median": 0.02298, - "std": 0.017724, - "sem": 0.000656, - "min": 0.001463, - "max": 0.15734, - "recall-0.025": 0.558743, - "recall-0.05": 0.912568, - "recall-0.1": 0.993169, - "recall-0.15": 0.997268, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.027185, + "median": 0.022875, + "std": 0.017851, + "sem": 0.00066, + "min": 0.002339, + "max": 0.15206, + "recall-0.025": 0.580601, + "recall-0.05": 0.903005, + "recall-0.1": 0.990437, + "recall-0.15": 0.998634, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "elbow_right": { - "count": 731, - "mean": 0.026518, - "median": 0.021664, - "std": 0.018137, - "sem": 0.000671, - "min": 0.003216, - "max": 0.13045, - "recall-0.025": 0.603825, - "recall-0.05": 0.88388, + "count": 732, + "mean": 0.027453, + "median": 0.022125, + "std": 0.01889, + "sem": 0.000699, + "min": 0.001685, + "max": 0.148754, + "recall-0.025": 0.576503, + "recall-0.05": 0.881148, "recall-0.1": 0.994536, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "wrist_left": { - "count": 731, - "mean": 0.03122, - "median": 0.025924, - "std": 0.022608, - "sem": 0.000837, - "min": 0.001212, - "max": 0.200124, - "recall-0.025": 0.468579, - "recall-0.05": 0.860656, - "recall-0.1": 0.98224, - "recall-0.15": 0.994536, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.030291, + "median": 0.02476, + "std": 0.023108, + "sem": 0.000855, + "min": 0.003002, + "max": 0.242479, + "recall-0.025": 0.508197, + "recall-0.05": 0.881148, + "recall-0.1": 0.980874, + "recall-0.15": 0.997268, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "wrist_right": { - "count": 731, - "mean": 0.031709, - "median": 0.026478, - "std": 0.022642, - "sem": 0.000838, - "min": 0.000932, - "max": 0.250222, - "recall-0.025": 0.464481, - "recall-0.05": 0.867486, - "recall-0.1": 0.980874, - "recall-0.15": 0.994536, - "recall-0.25": 0.997268, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.032177, + "median": 0.025579, + "std": 0.022784, + "sem": 0.000843, + "min": 0.003181, + "max": 0.201203, + "recall-0.025": 0.48224, + "recall-0.05": 0.848361, + "recall-0.1": 0.986339, + "recall-0.15": 0.995902, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "hip_left": { - "count": 731, - "mean": 0.030022, - "median": 0.026284, - "std": 0.015478, - "sem": 0.000573, - "min": 0.001958, - "max": 0.102784, - "recall-0.025": 0.441257, - "recall-0.05": 0.894809, - "recall-0.1": 0.997268, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.029042, + "median": 0.027561, + "std": 0.014743, + "sem": 0.000545, + "min": 0.002095, + "max": 0.142802, + "recall-0.025": 0.431694, + "recall-0.05": 0.916667, + "recall-0.1": 0.998634, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "hip_right": { - "count": 731, - "mean": 0.029884, - "median": 0.02722, - "std": 0.015541, - "sem": 0.000575, - "min": 0.001814, - "max": 0.127786, - "recall-0.025": 0.435792, - "recall-0.05": 0.894809, - "recall-0.1": 0.995902, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.02831, + "median": 0.026033, + "std": 0.013968, + "sem": 0.000517, + "min": 0.003467, + "max": 0.09437, + "recall-0.025": 0.464481, + "recall-0.05": 0.931694, + "recall-0.1": 1.0, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "knee_left": { - "count": 731, - "mean": 0.020016, - "median": 0.018453, - "std": 0.009846, - "sem": 0.000364, - "min": 0.002455, - "max": 0.070582, - "recall-0.025": 0.745902, - "recall-0.05": 0.986339, - "recall-0.1": 0.998634, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.019585, + "median": 0.018314, + "std": 0.009514, + "sem": 0.000352, + "min": 0.002117, + "max": 0.07224, + "recall-0.025": 0.795082, + "recall-0.05": 0.987705, + "recall-0.1": 1.0, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "knee_right": { - "count": 731, - "mean": 0.023762, - "median": 0.021864, - "std": 0.012415, - "sem": 0.000459, - "min": 0.002299, - "max": 0.105891, - "recall-0.025": 0.606557, - "recall-0.05": 0.960383, - "recall-0.1": 0.997268, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.022957, + "median": 0.020533, + "std": 0.012582, + "sem": 0.000465, + "min": 0.00129, + "max": 0.092388, + "recall-0.025": 0.65847, + "recall-0.05": 0.956284, + "recall-0.1": 1.0, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "ankle_left": { - "count": 731, - "mean": 0.024101, - "median": 0.02261, - "std": 0.012047, - "sem": 0.000446, - "min": 0.002694, - "max": 0.097153, - "recall-0.025": 0.587432, - "recall-0.05": 0.967213, - "recall-0.1": 0.998634, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.021423, + "median": 0.0198, + "std": 0.011635, + "sem": 0.00043, + "min": 0.000537, + "max": 0.091134, + "recall-0.025": 0.68306, + "recall-0.05": 0.976776, + "recall-0.1": 1.0, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "ankle_right": { - "count": 731, - "mean": 0.025867, - "median": 0.024513, - "std": 0.012665, - "sem": 0.000469, - "min": 0.002228, - "max": 0.093989, - "recall-0.025": 0.521858, - "recall-0.05": 0.956284, - "recall-0.1": 0.998634, - "recall-0.15": 0.998634, - "recall-0.25": 0.998634, - "recall-0.5": 0.998634, + "count": 732, + "mean": 0.022716, + "median": 0.020516, + "std": 0.011964, + "sem": 0.000442, + "min": 0.00268, + "max": 0.086346, + "recall-0.025": 0.644809, + "recall-0.05": 0.968579, + "recall-0.1": 1.0, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, "num_labels": 732 }, "joint_recalls": { "num_labels": 9516, - "recall-0.025": 0.51555, - "recall-0.05": 0.90017, - "recall-0.1": 0.99086, - "recall-0.15": 0.99748, - "recall-0.25": 0.99853, - "recall-0.5": 0.99863 + "recall-0.025": 0.55212, + "recall-0.05": 0.90858, + "recall-0.1": 0.99233, + "recall-0.15": 0.99884, + "recall-0.25": 1.0, + "recall-0.5": 1.0 } } { "total_parts": 10248, - "correct_parts": 10227, - "pcp": 0.997951 + "correct_parts": 10237, + "pcp": 0.998927 } ``` @@ -6827,59 +6827,59 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.6606097068005835, - "avg_time_2d": 0.06163697772555881, - "avg_time_3d": 0.00240840270505314, - "avg_fps": 15.613928643665723 + "img_loading": 0.7245951409925494, + "avg_time_2d": 0.09512041047302602, + "avg_time_3d": 0.002043061786227756, + "avg_fps": 10.2919335502109 } { "person_nums": { "total_frames": 181, "total_labels": 362, - "total_preds": 363, + "total_preds": 362, "considered_empty": 0, "valid_preds": 362, - "invalid_preds": 1, + "invalid_preds": 0, "missing": 0, - "invalid_fraction": 0.00275, - "precision": 0.99725, + "invalid_fraction": 0.0, + "precision": 1.0, "recall": 1.0, - "f1": 0.99862, - "non_empty": 363 + "f1": 1.0, + "non_empty": 362 }, "mpjpe": { "count": 362, - "mean": 0.025628, - "median": 0.024117, - "std": 0.009588, - "sem": 0.000505, - "min": 0.013981, - "max": 0.131115, - "recall-0.025": 0.588398, - "recall-0.05": 0.980663, + "mean": 0.023644, + "median": 0.022255, + "std": 0.009435, + "sem": 0.000497, + "min": 0.012188, + "max": 0.126226, + "recall-0.025": 0.690608, + "recall-0.05": 0.983425, "recall-0.1": 0.997238, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 362, - "ap-0.025": 0.418845, - "ap-0.05": 0.978155, - "ap-0.1": 0.997184, + "ap-0.025": 0.572774, + "ap-0.05": 0.983156, + "ap-0.1": 0.997169, "ap-0.15": 1.0, "ap-0.25": 1.0, "ap-0.5": 1.0 }, "head": { "count": 362, - "mean": 0.038472, - "median": 0.037725, - "std": 0.014629, - "sem": 0.00077, - "min": 0.004845, - "max": 0.13214, - "recall-0.025": 0.168508, - "recall-0.05": 0.820442, - "recall-0.1": 0.997238, + "mean": 0.036626, + "median": 0.036248, + "std": 0.015805, + "sem": 0.000832, + "min": 0.002253, + "max": 0.120652, + "recall-0.025": 0.21547, + "recall-0.05": 0.856354, + "recall-0.1": 0.994475, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -6887,31 +6887,31 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 362, - "mean": 0.027359, - "median": 0.02335, - "std": 0.017146, - "sem": 0.000902, - "min": 0.003874, - "max": 0.205663, - "recall-0.025": 0.546961, - "recall-0.05": 0.925414, - "recall-0.1": 0.997238, - "recall-0.15": 0.997238, + "mean": 0.023775, + "median": 0.020648, + "std": 0.01403, + "sem": 0.000738, + "min": 0.002847, + "max": 0.088362, + "recall-0.025": 0.627072, + "recall-0.05": 0.947514, + "recall-0.1": 1.0, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 362 }, "shoulder_right": { "count": 362, - "mean": 0.034435, - "median": 0.032006, - "std": 0.015656, - "sem": 0.000824, - "min": 0.006446, - "max": 0.14459, - "recall-0.025": 0.251381, - "recall-0.05": 0.872928, - "recall-0.1": 0.994475, + "mean": 0.02824, + "median": 0.02531, + "std": 0.015051, + "sem": 0.000792, + "min": 0.002271, + "max": 0.100955, + "recall-0.025": 0.486188, + "recall-0.05": 0.91989, + "recall-0.1": 0.997238, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -6919,15 +6919,15 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 362, - "mean": 0.020715, - "median": 0.017045, - "std": 0.015227, - "sem": 0.000801, - "min": 0.001981, - "max": 0.129145, - "recall-0.025": 0.748619, - "recall-0.05": 0.950276, - "recall-0.1": 0.994475, + "mean": 0.020885, + "median": 0.016729, + "std": 0.013454, + "sem": 0.000708, + "min": 0.002948, + "max": 0.100452, + "recall-0.025": 0.729282, + "recall-0.05": 0.958564, + "recall-0.1": 0.997238, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -6935,31 +6935,31 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 362, - "mean": 0.024957, - "median": 0.020567, - "std": 0.019737, - "sem": 0.001039, - "min": 0.002462, - "max": 0.168376, - "recall-0.025": 0.646409, - "recall-0.05": 0.939227, - "recall-0.1": 0.983425, - "recall-0.15": 0.997238, + "mean": 0.024025, + "median": 0.021397, + "std": 0.01553, + "sem": 0.000817, + "min": 0.0009, + "max": 0.149873, + "recall-0.025": 0.610497, + "recall-0.05": 0.955801, + "recall-0.1": 0.994475, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 362 }, "wrist_left": { "count": 362, - "mean": 0.02462, - "median": 0.022084, - "std": 0.015491, - "sem": 0.000815, - "min": 0.002166, - "max": 0.129272, - "recall-0.025": 0.588398, + "mean": 0.02249, + "median": 0.018789, + "std": 0.014691, + "sem": 0.000773, + "min": 0.001059, + "max": 0.095284, + "recall-0.025": 0.665746, "recall-0.05": 0.944751, - "recall-0.1": 0.997238, + "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -6967,15 +6967,15 @@ Results of the model in various experiments on different datasets. \ }, "wrist_right": { "count": 362, - "mean": 0.030253, - "median": 0.023575, - "std": 0.028573, - "sem": 0.001504, - "min": 0.001456, - "max": 0.304691, - "recall-0.025": 0.535912, - "recall-0.05": 0.864641, - "recall-0.1": 0.983425, + "mean": 0.028614, + "median": 0.023014, + "std": 0.027617, + "sem": 0.001454, + "min": 0.000565, + "max": 0.309303, + "recall-0.025": 0.538674, + "recall-0.05": 0.89779, + "recall-0.1": 0.98895, "recall-0.15": 0.994475, "recall-0.25": 0.994475, "recall-0.5": 1.0, @@ -6983,31 +6983,31 @@ Results of the model in various experiments on different datasets. \ }, "hip_left": { "count": 362, - "mean": 0.026354, - "median": 0.023315, - "std": 0.01518, - "sem": 0.000799, - "min": 0.002699, - "max": 0.15654, - "recall-0.025": 0.549724, - "recall-0.05": 0.953039, + "mean": 0.0255, + "median": 0.022948, + "std": 0.014585, + "sem": 0.000768, + "min": 0.002524, + "max": 0.140758, + "recall-0.025": 0.552486, + "recall-0.05": 0.944751, "recall-0.1": 0.997238, - "recall-0.15": 0.997238, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 362 }, "hip_right": { "count": 362, - "mean": 0.028051, - "median": 0.025509, - "std": 0.016384, - "sem": 0.000862, - "min": 0.002476, - "max": 0.215051, - "recall-0.025": 0.461326, - "recall-0.05": 0.939227, - "recall-0.1": 0.997238, + "mean": 0.026037, + "median": 0.023594, + "std": 0.017228, + "sem": 0.000907, + "min": 0.001997, + "max": 0.188306, + "recall-0.025": 0.558011, + "recall-0.05": 0.936464, + "recall-0.1": 0.991713, "recall-0.15": 0.997238, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -7015,14 +7015,14 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 362, - "mean": 0.014625, - "median": 0.012931, - "std": 0.007674, - "sem": 0.000404, - "min": 0.000793, - "max": 0.053751, - "recall-0.025": 0.903315, - "recall-0.05": 0.997238, + "mean": 0.015771, + "median": 0.014171, + "std": 0.008043, + "sem": 0.000423, + "min": 0.002213, + "max": 0.04907, + "recall-0.025": 0.864641, + "recall-0.05": 1.0, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -7031,13 +7031,13 @@ Results of the model in various experiments on different datasets. \ }, "knee_right": { "count": 362, - "mean": 0.016569, - "median": 0.013809, - "std": 0.017197, - "sem": 0.000905, - "min": 0.000436, - "max": 0.268298, - "recall-0.025": 0.889503, + "mean": 0.016923, + "median": 0.014611, + "std": 0.016323, + "sem": 0.000859, + "min": 0.001828, + "max": 0.259361, + "recall-0.025": 0.867403, "recall-0.05": 0.991713, "recall-0.1": 0.994475, "recall-0.15": 0.997238, @@ -7047,15 +7047,15 @@ Results of the model in various experiments on different datasets. \ }, "ankle_left": { "count": 362, - "mean": 0.024424, - "median": 0.022628, - "std": 0.011403, - "sem": 0.0006, - "min": 0.004148, - "max": 0.108124, - "recall-0.025": 0.599448, - "recall-0.05": 0.972376, - "recall-0.1": 0.997238, + "mean": 0.019707, + "median": 0.017121, + "std": 0.011593, + "sem": 0.00061, + "min": 0.001651, + "max": 0.078642, + "recall-0.025": 0.767956, + "recall-0.05": 0.966851, + "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -7063,14 +7063,14 @@ Results of the model in various experiments on different datasets. \ }, "ankle_right": { "count": 362, - "mean": 0.022326, - "median": 0.018382, - "std": 0.027706, - "sem": 0.001458, - "min": 0.001387, - "max": 0.477011, - "recall-0.025": 0.740331, - "recall-0.05": 0.950276, + "mean": 0.018776, + "median": 0.014697, + "std": 0.025258, + "sem": 0.001329, + "min": 0.001777, + "max": 0.425641, + "recall-0.025": 0.850829, + "recall-0.05": 0.961326, "recall-0.1": 0.994475, "recall-0.15": 0.997238, "recall-0.25": 0.997238, @@ -7079,17 +7079,17 @@ Results of the model in various experiments on different datasets. \ }, "joint_recalls": { "num_labels": 4706, - "recall-0.025": 0.58606, - "recall-0.05": 0.93136, - "recall-0.1": 0.9932, - "recall-0.15": 0.99809, + "recall-0.025": 0.64003, + "recall-0.05": 0.94369, + "recall-0.1": 0.99511, + "recall-0.15": 0.99873, "recall-0.25": 0.99894, "recall-0.5": 1.0 } } { "total_parts": 5068, - "correct_parts": 5057, - "pcp": 0.99783 + "correct_parts": 5064, + "pcp": 0.999211 } ``` diff --git a/scripts/test_skelda_dataset.py b/scripts/test_skelda_dataset.py index 126f8d1..3dd3967 100644 --- a/scripts/test_skelda_dataset.py +++ b/scripts/test_skelda_dataset.py @@ -61,7 +61,7 @@ datasets = { "human36m": { "path": "/datasets/human36m/skelda/pose_test.json", "take_interval": 5, - "min_match_score": 0.94, + "min_match_score": 0.95, "min_group_size": 1, "min_bbox_score": 0.4, "min_bbox_area": 0.1 * 0.1, @@ -73,6 +73,7 @@ datasets = { # "cams": ["00_03", "00_06", "00_12"], # "cams": ["00_03", "00_06", "00_12", "00_13", "00_23", "00_15", "00_10", "00_21", "00_09", "00_01"], "take_interval": 3, + "min_match_score": 0.95, "use_scenes": ["160906_pizza1", "160422_haggling1", "160906_ian5"], "min_group_size": 1, # "min_group_size": 4, @@ -88,6 +89,7 @@ datasets = { "campus": { "path": "/datasets/campus/skelda/test.json", "take_interval": 1, + "min_match_score": 0.90, "min_bbox_score": 0.5, }, "shelf": { @@ -109,6 +111,7 @@ datasets = { "tsinghua": { "path": "/datasets/tsinghua/skelda/test.json", "take_interval": 3, + "min_match_score": 0.95, "min_group_size": 2, }, "human36m_wb": { @@ -122,7 +125,7 @@ datasets = { "take_interval": 2, "subset": "tagging", "min_group_size": 2, - "min_bbox_score": 0.25, + "min_bbox_score": 0.2, "min_bbox_area": 0.05 * 0.05, }, "egohumans_legoassemble": { @@ -343,19 +346,32 @@ def main(): # Print a dataset sample for debugging print(labels[0]) + print("\nPrefetching images ...") + for label in tqdm.tqdm(labels): + # If the images are stored on a HDD, it sometimes takes a while to load them + # Prefetching them results in more stable timings of the following steps + # To prevent memory overflow, the code only loads the images, but does not store them + try: + for i in range(len(label["imgpaths"])): + imgpath = label["imgpaths"][i] + img = test_triangulate.load_image(imgpath) + except cv2.error: + print("One of the paths not found:", label["imgpaths"]) + continue + time.sleep(3) + print("\nCalculating 2D predictions ...") all_poses_2d = [] times = [] for label in tqdm.tqdm(labels): images_2d = [] + start = time.time() try: - start = time.time() for i in range(len(label["imgpaths"])): imgpath = label["imgpaths"][i] img = test_triangulate.load_image(imgpath) images_2d.append(img) - time_imgs = time.time() - start except cv2.error: print("One of the paths not found:", label["imgpaths"]) continue @@ -373,7 +389,16 @@ def main(): cam["K"][0][2] = cam["K"][0][2] * (1000 / ishape[1]) images_2d[i] = cv2.resize(img, (1000, 1000)) + # Convert image format to Bayer encoding to simulate real camera input + # This also resulted in notably better MPJPE results in most cases, presumbly since the + # demosaicing algorithm from OpenCV is better than the default one from the cameras + for i in range(len(images_2d)): + images_2d[i] = test_triangulate.rgb2bayer(images_2d[i]) + time_imgs = time.time() - start + start = time.time() + for i in range(len(images_2d)): + images_2d[i] = test_triangulate.bayer2rgb(images_2d[i]) poses_2d = utils_2d_pose.get_2d_pose(kpt_model, images_2d) poses_2d = test_triangulate.update_keypoints(poses_2d, joint_names_2d) time_2d = time.time() - start diff --git a/scripts/test_triangulate.py b/scripts/test_triangulate.py index 831a7e6..481e4b0 100644 --- a/scripts/test_triangulate.py +++ b/scripts/test_triangulate.py @@ -227,6 +227,23 @@ def load_image(path: str): # ================================================================================================== +def rgb2bayer(img): + bayer = np.zeros((img.shape[0], img.shape[1]), dtype=img.dtype) + bayer[0::2, 0::2] = img[0::2, 0::2, 0] + bayer[0::2, 1::2] = img[0::2, 1::2, 1] + bayer[1::2, 0::2] = img[1::2, 0::2, 1] + bayer[1::2, 1::2] = img[1::2, 1::2, 2] + return bayer + + +def bayer2rgb(bayer): + img = cv2.cvtColor(bayer, cv2.COLOR_BayerBG2RGB) + return img + + +# ================================================================================================== + + def update_keypoints(poses_2d: list, joint_names: List[str]) -> list: new_views = [] for view in poses_2d: @@ -314,6 +331,8 @@ def main(): for i in range(len(sample["cameras_color"])): imgpath = sample["imgpaths_color"][i] img = load_image(imgpath) + img = rgb2bayer(img) + img = bayer2rgb(img) images_2d.append(img) # Get 2D poses From b804ce149d0ef9953685ba434d092866cf7f0c57 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 14 Jan 2025 17:56:36 +0100 Subject: [PATCH 02/10] Testing bayer decoding on gpu. --- extras/mmdeploy/README.md | 3 +- extras/mmdeploy/dockerfile | 3 + ...xtra_graphs.py => make_extra_graphs_pt.py} | 0 extras/mmdeploy/make_extra_graphs_tf.py | 248 ++++++++++++++++++ 4 files changed, 253 insertions(+), 1 deletion(-) rename extras/mmdeploy/{make_extra_graphs.py => make_extra_graphs_pt.py} (100%) create mode 100644 extras/mmdeploy/make_extra_graphs_tf.py diff --git a/extras/mmdeploy/README.md b/extras/mmdeploy/README.md index c382915..168bfc1 100644 --- a/extras/mmdeploy/README.md +++ b/extras/mmdeploy/README.md @@ -70,7 +70,8 @@ mv /mmdeploy/work_dir/end2end.onnx /RapidPoseTriangulation/extras/mmdeploy/expor ``` ```bash -python3 /RapidPoseTriangulation/extras/mmdeploy/make_extra_graphs.py +python3 /RapidPoseTriangulation/extras/mmdeploy/make_extra_graphs_pt.py +python3 /RapidPoseTriangulation/extras/mmdeploy/make_extra_graphs_tf.py ``` ```bash diff --git a/extras/mmdeploy/dockerfile b/extras/mmdeploy/dockerfile index b285ba6..313be15 100644 --- a/extras/mmdeploy/dockerfile +++ b/extras/mmdeploy/dockerfile @@ -34,5 +34,8 @@ RUN pip3 install --upgrade --no-cache-dir onnxconverter_common # Fix an error when profiling RUN pip3 install --upgrade --no-cache-dir "onnxruntime-gpu<1.17" +RUN pip3 install --upgrade --no-cache-dir tensorflow +RUN pip3 install --upgrade --no-cache-dir tf2onnx + WORKDIR /mmdeploy/ CMD ["/bin/bash"] diff --git a/extras/mmdeploy/make_extra_graphs.py b/extras/mmdeploy/make_extra_graphs_pt.py similarity index 100% rename from extras/mmdeploy/make_extra_graphs.py rename to extras/mmdeploy/make_extra_graphs_pt.py diff --git a/extras/mmdeploy/make_extra_graphs_tf.py b/extras/mmdeploy/make_extra_graphs_tf.py new file mode 100644 index 0000000..e5eb135 --- /dev/null +++ b/extras/mmdeploy/make_extra_graphs_tf.py @@ -0,0 +1,248 @@ +import cv2 + +import numpy as np +import tensorflow as tf +import tf2onnx + +# ================================================================================================== + +base_path = "/RapidPoseTriangulation/extras/mmdeploy/exports/" +det_target_size = (320, 320) + +# ================================================================================================== + + +class BayerToRGB(tf.keras.layers.Layer): + """Convert Bayer image to RGB + See: https://stanford.edu/class/ee367/reading/Demosaicing_ICASSP04.pdf + See: https://github.com/cheind/pytorch-debayer/blob/master/debayer/modules.py#L231 + """ + + def __init__(self): + super().__init__() + self.layout = "RGGB" + self.max_val = 255.0 + + self.kernels = tf.constant( + np.array( + [ + # G at R/B locations + [ + [0, 0, -1, 0, 0], + [0, 0, 2, 0, 0], + [-1, 2, 4, 2, -1], + [0, 0, 2, 0, 0], + [0, 0, -1, 0, 0], + ], + # R/B at G in R/B rows and B/R columns + [ + [0, 0, 0.5, 0, 0], + [0, -1, 0, -1, 0], + [-1, 4, 5, 4, -1], + [0, -1, 0, -1, 0], + [0, 0, 0.5, 0, 0], + ], + # R/B at G in B/R rows and R/B columns + [ + [0, 0, 0.5, 0, 0], + [0, -1, 4, -1, 0], + [-1, 0, 5, 0, -1], + [0, -1, 4, -1, 0], + [0, 0, 0.5, 0, 0], + ], + # R/B at B/R in B/R rows and B/R columns + [ + [0, 0, -1.5, 0, 0], + [0, 2, 0, 2, 0], + [-1.5, 0, 6, 0, -1.5], + [0, 2, 0, 2, 0], + [0, 0, -1.5, 0, 0], + ], + ], + dtype=np.float32, + ) + .reshape(1, 4, 5, 5) + .transpose(2, 3, 0, 1) + / 8.0 + ) + self.index = tf.constant( + np.array( + # Describes the kernel indices that calculate the corresponding RGB values for + # the 2x2 layout (RGGB) sub-structure + [ + # Destination R + [ + [4, 1], # identity, R at G in R row B column + [2, 3], # R at G in B row R column, R at B in B row R column + ], + # Destination G + [ + [0, 4], + [4, 0], + ], + # Destination B + [ + [3, 2], + [1, 4], + ], + ] + ).reshape(1, 3, 2, 2) + ) + + def call(self, img): + img = tf.cast(img, tf.float32) + H, W = tf.shape(img)[1], tf.shape(img)[2] + + # Pad the image + tpad = img[:, 0:2, :, :] + bpad = img[:, H - 2 : H, :, :] + ipad = tf.concat([tpad, img, bpad], axis=1) + lpad = ipad[:, :, 0:2, :] + rpad = ipad[:, :, W - 2 : W, :] + ipad = tf.concat([lpad, ipad, rpad], axis=2) + + # Convolve with kernels + planes = tf.nn.conv2d(ipad, self.kernels, strides=[1, 1, 1, 1], padding="VALID") + + # Concatenate identity kernel + planes = tf.concat([planes, img], axis=-1) + + # Gather values + index_repeated = tf.tile(self.index, multiples=[1, 1, H // 2, W // 2]) + index_repeated = tf.transpose(index_repeated, perm=[0, 2, 3, 1]) + row_indices, col_indices = tf.meshgrid(tf.range(H), tf.range(W), indexing="ij") + index_tensor = tf.stack([row_indices, col_indices], axis=-1) + index_tensor = tf.expand_dims(index_tensor, axis=0) + index_tensor = tf.expand_dims(index_tensor, axis=-2) + index_tensor = tf.repeat(index_tensor, repeats=3, axis=-2) + index_repeated = tf.expand_dims(index_repeated, axis=-1) + indices = tf.concat([tf.cast(index_tensor, tf.int64), index_repeated], axis=-1) + rgb = tf.gather_nd(planes, indices, batch_dims=1) + + if self.max_val == 255.0: + # Make value range valid again + rgb = tf.round(rgb) + + return rgb + + +# ================================================================================================== + + +class Letterbox(tf.keras.layers.Layer): + def __init__(self, target_size, fill_value=128): + """Resize and pad image while keeping aspect ratio""" + super(Letterbox, self).__init__() + + self.target_size = target_size + self.fill_value = fill_value + + def calc_params(self, ishape): + img_h, img_w = ishape[1], ishape[2] + target_h, target_w = self.target_size + + scale = tf.minimum(target_w / img_w, target_h / img_h) + new_w = tf.round(tf.cast(img_w, scale.dtype) * scale) + new_h = tf.round(tf.cast(img_h, scale.dtype) * scale) + new_w = tf.cast(new_w, tf.int32) + new_h = tf.cast(new_h, tf.int32) + + pad_w = target_w - new_w + pad_h = target_h - new_h + pad_left = tf.cast(tf.floor(tf.cast(pad_w, tf.float32) / 2.0), tf.int32) + pad_top = tf.cast(tf.floor(tf.cast(pad_h, tf.float32) / 2.0), tf.int32) + pad_right = pad_w - pad_left + pad_bottom = pad_h - pad_top + paddings = [pad_top, pad_bottom, pad_left, pad_right] + + return paddings, scale, (new_w, new_h) + + def call(self, img): + paddings, _, (nw, nh) = self.calc_params(tf.shape(img)) + + # Resize the image + img = tf.cast(img, tf.float32) + img = tf.image.resize(img, size=(nh, nw), method="bilinear") + + # Pad the image + pad_top, pad_bottom, pad_left, pad_right = paddings + img = tf.pad( + img, + paddings=[[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]], + mode="CONSTANT", + constant_values=self.fill_value, + ) + + return img + + +# ================================================================================================== + + +class DetPreprocess(tf.keras.layers.Layer): + def __init__(self, target_size, fill_value=114): + super(DetPreprocess, self).__init__() + + self.b2rgb = BayerToRGB() + self.letterbox = Letterbox(target_size, fill_value) + + def call(self, img): + # img: tf.Tensor of shape [batch, H, W, C], dtype=tf.uint8 + img = self.b2rgb(img) + img = self.letterbox(img) + return img + + +# ================================================================================================== + + +def rgb2bayer(img): + bayer = np.zeros((img.shape[0], img.shape[1]), dtype=img.dtype) + bayer[0::2, 0::2] = img[0::2, 0::2, 0] + bayer[0::2, 1::2] = img[0::2, 1::2, 1] + bayer[1::2, 0::2] = img[1::2, 0::2, 1] + bayer[1::2, 1::2] = img[1::2, 1::2, 2] + return bayer + + +# ================================================================================================== + + +def main(): + + img_path = "/RapidPoseTriangulation/scripts/../data/h1/54138969-img_003201.jpg" + image = cv2.imread(img_path, 3) + image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + image = rgb2bayer(image) + image = np.expand_dims(image, axis=-1) + image = np.asarray(image, dtype=np.uint8) + + # Initialize the DetPreprocess module + preprocess_model = tf.keras.Sequential() + preprocess_model.add(DetPreprocess(target_size=det_target_size)) + det_dummy_input_a0 = tf.convert_to_tensor( + np.expand_dims(image, axis=0), dtype=tf.uint8 + ) + det_dummy_output_a0 = preprocess_model(det_dummy_input_a0) + print("\n", det_dummy_output_a0.shape, "\n") + + output_a0 = det_dummy_output_a0.numpy() + output_a0 = np.squeeze(output_a0, axis=0) + output_a0 = np.asarray(output_a0, dtype=np.uint8) + output_a0 = cv2.cvtColor(output_a0, cv2.COLOR_RGB2BGR) + cv2.imwrite(base_path + "det_preprocess.jpg", output_a0) + + # Export to ONNX + input_signature = [tf.TensorSpec([None, None, None, 1], tf.uint8, name="x")] + _, _ = tf2onnx.convert.from_keras( + preprocess_model, + input_signature, + opset=11, + output_path=base_path + "det_preprocess.onnx", + ) + + +# ================================================================================================== + +if __name__ == "__main__": + main() From 04118372797beeb1d48d7c5cf63c8d911085c6f6 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 15 Jan 2025 12:20:10 +0100 Subject: [PATCH 03/10] Implemented resize before debayering. --- extras/mmdeploy/make_extra_graphs_tf.py | 44 ++++++++++++++++++++----- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/extras/mmdeploy/make_extra_graphs_tf.py b/extras/mmdeploy/make_extra_graphs_tf.py index e5eb135..3cf1d27 100644 --- a/extras/mmdeploy/make_extra_graphs_tf.py +++ b/extras/mmdeploy/make_extra_graphs_tf.py @@ -90,7 +90,6 @@ class BayerToRGB(tf.keras.layers.Layer): ) def call(self, img): - img = tf.cast(img, tf.float32) H, W = tf.shape(img)[1], tf.shape(img)[2] # Pad the image @@ -129,11 +128,36 @@ class BayerToRGB(tf.keras.layers.Layer): # ================================================================================================== +def bayer_resize(img, size): + """Resize a Bayer image by splitting color channels""" + + # Split the image into 4 channels + r = img[:, 0::2, 0::2, 0] + g1 = img[:, 0::2, 1::2, 0] + g2 = img[:, 1::2, 0::2, 0] + b = img[:, 1::2, 1::2, 0] + bsplit = tf.stack([r, g1, g2, b], axis=-1) + + # Resize the image + # Make sure the target size is divisible by 2 + size = (size[0] // 2, size[1] // 2) + bsized = tf.image.resize(bsplit, size=size, method="bilinear") + + # Create a bayer image again + img = tf.nn.depth_to_space(bsized, block_size=2) + + return img + + +# ================================================================================================== + + class Letterbox(tf.keras.layers.Layer): def __init__(self, target_size, fill_value=128): """Resize and pad image while keeping aspect ratio""" super(Letterbox, self).__init__() + self.b2rgb = BayerToRGB() self.target_size = target_size self.fill_value = fill_value @@ -146,6 +170,8 @@ class Letterbox(tf.keras.layers.Layer): new_h = tf.round(tf.cast(img_h, scale.dtype) * scale) new_w = tf.cast(new_w, tf.int32) new_h = tf.cast(new_h, tf.int32) + new_w = new_w - (new_w % 2) + new_h = new_h - (new_h % 2) pad_w = target_w - new_w pad_h = target_h - new_h @@ -160,9 +186,9 @@ class Letterbox(tf.keras.layers.Layer): def call(self, img): paddings, _, (nw, nh) = self.calc_params(tf.shape(img)) - # Resize the image - img = tf.cast(img, tf.float32) - img = tf.image.resize(img, size=(nh, nw), method="bilinear") + # Resize the image and convert to RGB + img = bayer_resize(img, (nh, nw)) + img = self.b2rgb(img) # Pad the image pad_top, pad_bottom, pad_left, pad_right = paddings @@ -182,13 +208,14 @@ class Letterbox(tf.keras.layers.Layer): class DetPreprocess(tf.keras.layers.Layer): def __init__(self, target_size, fill_value=114): super(DetPreprocess, self).__init__() - - self.b2rgb = BayerToRGB() self.letterbox = Letterbox(target_size, fill_value) def call(self, img): - # img: tf.Tensor of shape [batch, H, W, C], dtype=tf.uint8 - img = self.b2rgb(img) + """img: tf.Tensor of shape [batch, H, W, C], dtype=tf.uint8""" + + # Cast to float32 since TensorRT does not support uint8 layers + img = tf.cast(img, tf.float32) + img = self.letterbox(img) return img @@ -239,6 +266,7 @@ def main(): input_signature, opset=11, output_path=base_path + "det_preprocess.onnx", + target=["tensorrt"], ) From aec70d04187f9042d0fdce0ed421755a3476c1ad Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 15 Jan 2025 13:47:01 +0100 Subject: [PATCH 04/10] Updated other results. --- media/RESULTS.md | 4024 +++++++++++++++++++++++----------------------- 1 file changed, 2012 insertions(+), 2012 deletions(-) diff --git a/media/RESULTS.md b/media/RESULTS.md index 9b16064..fa7b2ac 100644 --- a/media/RESULTS.md +++ b/media/RESULTS.md @@ -1298,270 +1298,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.0340202709523643, - "avg_time_2d": 0.011720242732908668, - "avg_time_3d": 0.00044612768219738473, - "avg_fps": 82.1937821947601 + "img_loading": 0.03691577039113859, + "avg_time_2d": 0.012780087750132492, + "avg_time_3d": 0.0005443567182959579, + "avg_fps": 75.05003322048029 } { "person_nums": { "total_frames": 420, "total_labels": 1466, - "total_preds": 1428, + "total_preds": 1419, "considered_empty": 0, - "valid_preds": 1416, + "valid_preds": 1407, "invalid_preds": 12, - "missing": 50, - "invalid_fraction": 0.0084, - "precision": 0.9916, - "recall": 0.96589, - "f1": 0.97858, - "non_empty": 1428 + "missing": 59, + "invalid_fraction": 0.00846, + "precision": 0.99154, + "recall": 0.95975, + "f1": 0.97539, + "non_empty": 1419 }, "mpjpe": { - "count": 1416, - "mean": 0.072828, - "median": 0.062115, - "std": 0.039914, - "sem": 0.001061, - "min": 0.020067, - "max": 0.446859, + "count": 1407, + "mean": 0.066054, + "median": 0.052313, + "std": 0.044565, + "sem": 0.001189, + "min": 0.018987, + "max": 0.321679, "recall-0.025": 0.006139, - "recall-0.05": 0.280355, - "recall-0.1": 0.821282, - "recall-0.15": 0.927694, - "recall-0.25": 0.957026, - "recall-0.5": 0.965894, + "recall-0.05": 0.439291, + "recall-0.1": 0.834243, + "recall-0.15": 0.919509, + "recall-0.25": 0.940655, + "recall-0.5": 0.959754, "num_labels": 1466, - "ap-0.025": 0.001371, - "ap-0.05": 0.168278, - "ap-0.1": 0.769056, - "ap-0.15": 0.914025, - "ap-0.25": 0.949644, - "ap-0.5": 0.958664 + "ap-0.025": 0.002173, + "ap-0.05": 0.340744, + "ap-0.1": 0.79061, + "ap-0.15": 0.904656, + "ap-0.25": 0.931759, + "ap-0.5": 0.951886 }, "nose": { - "count": 1415, - "mean": 0.023191, - "median": 0.018045, - "std": 0.01827, - "sem": 0.000486, - "min": 0.002427, - "max": 0.189961, - "recall-0.025": 0.656869, - "recall-0.05": 0.905673, - "recall-0.1": 0.958305, - "recall-0.15": 0.964457, - "recall-0.25": 0.967191, - "recall-0.5": 0.967191, + "count": 1406, + "mean": 0.024854, + "median": 0.019222, + "std": 0.017838, + "sem": 0.000476, + "min": 0.001373, + "max": 0.153966, + "recall-0.025": 0.61244, + "recall-0.05": 0.876282, + "recall-0.1": 0.956254, + "recall-0.15": 0.960355, + "recall-0.25": 0.961039, + "recall-0.5": 0.961039, "num_labels": 1463 }, "shoulder_left": { - "count": 1416, - "mean": 0.024902, - "median": 0.021994, - "std": 0.015712, - "sem": 0.000418, - "min": 0.001107, - "max": 0.178628, - "recall-0.025": 0.578445, - "recall-0.05": 0.888131, - "recall-0.1": 0.961801, - "recall-0.15": 0.965211, - "recall-0.25": 0.965894, - "recall-0.5": 0.965894, + "count": 1407, + "mean": 0.021168, + "median": 0.017989, + "std": 0.015547, + "sem": 0.000415, + "min": 0.000446, + "max": 0.20373, + "recall-0.025": 0.686903, + "recall-0.05": 0.922237, + "recall-0.1": 0.957708, + "recall-0.15": 0.959072, + "recall-0.25": 0.959754, + "recall-0.5": 0.959754, "num_labels": 1466 }, "shoulder_right": { - "count": 1415, - "mean": 0.030093, - "median": 0.024883, - "std": 0.020291, - "sem": 0.00054, - "min": 0.002304, - "max": 0.212319, - "recall-0.025": 0.486689, - "recall-0.05": 0.854608, - "recall-0.1": 0.950853, - "recall-0.15": 0.961775, - "recall-0.25": 0.96587, - "recall-0.5": 0.96587, + "count": 1406, + "mean": 0.024827, + "median": 0.01838, + "std": 0.019776, + "sem": 0.000528, + "min": 0.00218, + "max": 0.220146, + "recall-0.025": 0.624573, + "recall-0.05": 0.886007, + "recall-0.1": 0.948805, + "recall-0.15": 0.957679, + "recall-0.25": 0.959727, + "recall-0.5": 0.959727, "num_labels": 1465 }, "elbow_left": { - "count": 1415, - "mean": 0.037575, - "median": 0.024553, - "std": 0.034064, - "sem": 0.000906, - "min": 0.002256, - "max": 0.291404, - "recall-0.025": 0.490102, - "recall-0.05": 0.745392, - "recall-0.1": 0.897611, - "recall-0.15": 0.956997, - "recall-0.25": 0.964505, - "recall-0.5": 0.96587, + "count": 1406, + "mean": 0.034509, + "median": 0.023315, + "std": 0.030768, + "sem": 0.000821, + "min": 0.001517, + "max": 0.259935, + "recall-0.025": 0.513311, + "recall-0.05": 0.76587, + "recall-0.1": 0.902389, + "recall-0.15": 0.954949, + "recall-0.25": 0.959044, + "recall-0.5": 0.959727, "num_labels": 1465 }, "elbow_right": { - "count": 1415, - "mean": 0.03421, - "median": 0.022924, - "std": 0.03056, - "sem": 0.000813, - "min": 0.001651, - "max": 0.281316, - "recall-0.025": 0.525632, - "recall-0.05": 0.786056, - "recall-0.1": 0.922761, - "recall-0.15": 0.958305, - "recall-0.25": 0.966507, - "recall-0.5": 0.967191, + "count": 1406, + "mean": 0.031432, + "median": 0.021405, + "std": 0.027717, + "sem": 0.000739, + "min": 0.00127, + "max": 0.32231, + "recall-0.025": 0.568694, + "recall-0.05": 0.792208, + "recall-0.1": 0.934381, + "recall-0.15": 0.955571, + "recall-0.25": 0.959672, + "recall-0.5": 0.961039, "num_labels": 1463 }, "wrist_left": { - "count": 1385, - "mean": 0.051421, - "median": 0.025658, - "std": 0.058278, - "sem": 0.001567, - "min": 0.00153, - "max": 0.419293, - "recall-0.025": 0.474198, - "recall-0.05": 0.656206, - "recall-0.1": 0.810321, - "recall-0.15": 0.891213, - "recall-0.25": 0.956764, - "recall-0.5": 0.96583, + "count": 1376, + "mean": 0.05215, + "median": 0.024438, + "std": 0.06069, + "sem": 0.001637, + "min": 0.001822, + "max": 0.312247, + "recall-0.025": 0.487448, + "recall-0.05": 0.650628, + "recall-0.1": 0.807531, + "recall-0.15": 0.875174, + "recall-0.25": 0.941423, + "recall-0.5": 0.959554, "num_labels": 1434 }, "wrist_right": { - "count": 1408, - "mean": 0.046507, - "median": 0.028538, - "std": 0.048565, - "sem": 0.001295, - "min": 0.002941, - "max": 0.32793, - "recall-0.025": 0.4375, - "recall-0.05": 0.668956, - "recall-0.1": 0.85783, - "recall-0.15": 0.929945, - "recall-0.25": 0.953297, - "recall-0.5": 0.967033, + "count": 1399, + "mean": 0.049379, + "median": 0.026706, + "std": 0.057051, + "sem": 0.001526, + "min": 0.00228, + "max": 0.386571, + "recall-0.025": 0.456044, + "recall-0.05": 0.665522, + "recall-0.1": 0.845467, + "recall-0.15": 0.902473, + "recall-0.25": 0.9375, + "recall-0.5": 0.960852, "num_labels": 1456 }, "hip_left": { - "count": 1414, - "mean": 0.071736, - "median": 0.066876, - "std": 0.034156, - "sem": 0.000909, - "min": 0.004775, - "max": 0.282288, - "recall-0.025": 0.032765, - "recall-0.05": 0.225939, - "recall-0.1": 0.843003, - "recall-0.15": 0.921502, - "recall-0.25": 0.964505, - "recall-0.5": 0.965188, + "count": 1406, + "mean": 0.044203, + "median": 0.039964, + "std": 0.023927, + "sem": 0.000638, + "min": 0.001408, + "max": 0.291716, + "recall-0.025": 0.183618, + "recall-0.05": 0.664164, + "recall-0.1": 0.929693, + "recall-0.15": 0.958362, + "recall-0.25": 0.959044, + "recall-0.5": 0.959727, "num_labels": 1465 }, "hip_right": { - "count": 1415, - "mean": 0.079352, - "median": 0.07401, - "std": 0.034527, - "sem": 0.000918, - "min": 0.010612, - "max": 0.294422, - "recall-0.025": 0.012278, - "recall-0.05": 0.175307, - "recall-0.1": 0.768076, - "recall-0.15": 0.919509, - "recall-0.25": 0.964529, - "recall-0.5": 0.965211, + "count": 1407, + "mean": 0.055491, + "median": 0.048436, + "std": 0.035437, + "sem": 0.000945, + "min": 0.00587, + "max": 0.298275, + "recall-0.025": 0.122101, + "recall-0.05": 0.496589, + "recall-0.1": 0.884038, + "recall-0.15": 0.933151, + "recall-0.25": 0.95839, + "recall-0.5": 0.959754, "num_labels": 1466 }, "knee_left": { - "count": 1409, - "mean": 0.085074, - "median": 0.057963, - "std": 0.076281, - "sem": 0.002033, - "min": 0.005737, - "max": 0.483162, - "recall-0.025": 0.085324, - "recall-0.05": 0.361092, - "recall-0.1": 0.733106, - "recall-0.15": 0.79727, - "recall-0.25": 0.924232, - "recall-0.5": 0.961775, + "count": 1399, + "mean": 0.069315, + "median": 0.045773, + "std": 0.073218, + "sem": 0.001958, + "min": 0.002807, + "max": 0.490151, + "recall-0.025": 0.154266, + "recall-0.05": 0.537201, + "recall-0.1": 0.80273, + "recall-0.15": 0.853242, + "recall-0.25": 0.918771, + "recall-0.5": 0.954949, "num_labels": 1465 }, "knee_right": { - "count": 1402, - "mean": 0.08051, - "median": 0.057392, - "std": 0.073621, - "sem": 0.001967, - "min": 0.002627, - "max": 0.473451, - "recall-0.025": 0.095271, - "recall-0.05": 0.372173, - "recall-0.1": 0.764907, - "recall-0.15": 0.823852, - "recall-0.25": 0.919123, - "recall-0.5": 0.960932, + "count": 1397, + "mean": 0.067695, + "median": 0.048034, + "std": 0.071182, + "sem": 0.001905, + "min": 0.005118, + "max": 0.49167, + "recall-0.025": 0.136395, + "recall-0.05": 0.508568, + "recall-0.1": 0.831391, + "recall-0.15": 0.873201, + "recall-0.25": 0.914325, + "recall-0.5": 0.957505, "num_labels": 1459 }, "ankle_left": { - "count": 1326, - "mean": 0.158597, - "median": 0.116498, - "std": 0.137401, - "sem": 0.003775, - "min": 0.002252, - "max": 0.5, - "recall-0.025": 0.187286, - "recall-0.05": 0.29255, - "recall-0.1": 0.390977, - "recall-0.15": 0.515379, - "recall-0.25": 0.671907, - "recall-0.5": 0.906357, + "count": 1320, + "mean": 0.145009, + "median": 0.102606, + "std": 0.132862, + "sem": 0.003658, + "min": 0.003074, + "max": 0.49986, + "recall-0.025": 0.149692, + "recall-0.05": 0.314422, + "recall-0.1": 0.433356, + "recall-0.15": 0.559809, + "recall-0.25": 0.71907, + "recall-0.5": 0.902256, "num_labels": 1463 }, "ankle_right": { - "count": 1318, - "mean": 0.139753, - "median": 0.092292, - "std": 0.131594, - "sem": 0.003626, - "min": 0.000744, - "max": 0.498693, - "recall-0.025": 0.175342, - "recall-0.05": 0.336986, - "recall-0.1": 0.478767, - "recall-0.15": 0.577397, - "recall-0.25": 0.70137, - "recall-0.5": 0.90274, + "count": 1301, + "mean": 0.134805, + "median": 0.080384, + "std": 0.129602, + "sem": 0.003594, + "min": 0.003691, + "max": 0.498781, + "recall-0.025": 0.143836, + "recall-0.05": 0.336301, + "recall-0.1": 0.507534, + "recall-0.15": 0.6, + "recall-0.25": 0.706849, + "recall-0.5": 0.891096, "num_labels": 1460 }, "joint_recalls": { "num_labels": 18990, - "recall-0.025": 0.32528, - "recall-0.05": 0.55866, - "recall-0.1": 0.79494, - "recall-0.15": 0.85998, - "recall-0.25": 0.91385, - "recall-0.5": 0.95571 + "recall-0.025": 0.37183, + "recall-0.05": 0.64718, + "recall-0.1": 0.82575, + "recall-0.15": 0.8723, + "recall-0.25": 0.91153, + "recall-0.5": 0.94961 } } { "total_parts": 20444, - "correct_parts": 18543, - "pcp": 0.907014 + "correct_parts": 18662, + "pcp": 0.912835 } ``` @@ -1569,270 +1569,270 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.10676310062408448, - "avg_time_2d": 0.03742315594742938, - "avg_time_3d": 0.0021045940678294114, - "avg_fps": 25.29868256133913 + "img_loading": 0.114754035414719, + "avg_time_2d": 0.03988202955664658, + "avg_time_3d": 0.002105511107095858, + "avg_fps": 23.816589021217226 } { "person_nums": { "total_frames": 420, "total_labels": 1466, - "total_preds": 1494, + "total_preds": 1497, "considered_empty": 0, - "valid_preds": 1465, - "invalid_preds": 29, - "missing": 1, - "invalid_fraction": 0.01941, - "precision": 0.98059, - "recall": 0.99932, - "f1": 0.98986, - "non_empty": 1494 + "valid_preds": 1464, + "invalid_preds": 33, + "missing": 2, + "invalid_fraction": 0.02204, + "precision": 0.97796, + "recall": 0.99864, + "f1": 0.98819, + "non_empty": 1497 }, "mpjpe": { - "count": 1465, - "mean": 0.036536, - "median": 0.032798, - "std": 0.014622, - "sem": 0.000382, - "min": 0.014202, - "max": 0.116981, - "recall-0.025": 0.19236, - "recall-0.05": 0.848568, - "recall-0.1": 0.998636, - "recall-0.15": 0.999318, - "recall-0.25": 0.999318, - "recall-0.5": 0.999318, + "count": 1464, + "mean": 0.028561, + "median": 0.024838, + "std": 0.012446, + "sem": 0.000325, + "min": 0.010283, + "max": 0.103154, + "recall-0.025": 0.506139, + "recall-0.05": 0.91678, + "recall-0.1": 0.997954, + "recall-0.15": 0.998636, + "recall-0.25": 0.998636, + "recall-0.5": 0.998636, "num_labels": 1466, - "ap-0.025": 0.11129, - "ap-0.05": 0.819484, - "ap-0.1": 0.991584, - "ap-0.15": 0.992283, - "ap-0.25": 0.992283, - "ap-0.5": 0.992283 + "ap-0.025": 0.374324, + "ap-0.05": 0.882172, + "ap-0.1": 0.986659, + "ap-0.15": 0.987344, + "ap-0.25": 0.987344, + "ap-0.5": 0.987344 }, "nose": { - "count": 1462, - "mean": 0.011738, - "median": 0.010365, - "std": 0.007175, - "sem": 0.000188, - "min": 0.002603, - "max": 0.108779, - "recall-0.025": 0.972659, - "recall-0.05": 0.993165, + "count": 1461, + "mean": 0.011185, + "median": 0.009847, + "std": 0.007089, + "sem": 0.000186, + "min": 0.000251, + "max": 0.089509, + "recall-0.025": 0.969925, + "recall-0.05": 0.992481, "recall-0.1": 0.998633, - "recall-0.15": 0.999316, - "recall-0.25": 0.999316, - "recall-0.5": 0.999316, + "recall-0.15": 0.998633, + "recall-0.25": 0.998633, + "recall-0.5": 0.998633, "num_labels": 1463 }, "shoulder_left": { - "count": 1465, - "mean": 0.01916, - "median": 0.017849, - "std": 0.008556, - "sem": 0.000224, - "min": 0.00198, - "max": 0.075576, - "recall-0.025": 0.808322, - "recall-0.05": 0.989768, - "recall-0.1": 0.999318, - "recall-0.15": 0.999318, - "recall-0.25": 0.999318, - "recall-0.5": 0.999318, + "count": 1464, + "mean": 0.013165, + "median": 0.011485, + "std": 0.008028, + "sem": 0.00021, + "min": 0.001195, + "max": 0.0828, + "recall-0.025": 0.919509, + "recall-0.05": 0.995907, + "recall-0.1": 0.998636, + "recall-0.15": 0.998636, + "recall-0.25": 0.998636, + "recall-0.5": 0.998636, "num_labels": 1466 }, "shoulder_right": { - "count": 1464, - "mean": 0.020557, - "median": 0.019504, - "std": 0.008175, - "sem": 0.000214, - "min": 0.001943, - "max": 0.077634, - "recall-0.025": 0.79727, - "recall-0.05": 0.990444, - "recall-0.1": 0.999317, - "recall-0.15": 0.999317, - "recall-0.25": 0.999317, - "recall-0.5": 0.999317, + "count": 1463, + "mean": 0.014191, + "median": 0.012521, + "std": 0.008156, + "sem": 0.000213, + "min": 0.001295, + "max": 0.068136, + "recall-0.025": 0.91058, + "recall-0.05": 0.994539, + "recall-0.1": 0.998635, + "recall-0.15": 0.998635, + "recall-0.25": 0.998635, + "recall-0.5": 0.998635, "num_labels": 1465 }, "elbow_left": { - "count": 1464, - "mean": 0.021017, - "median": 0.018457, - "std": 0.011968, - "sem": 0.000313, - "min": 0.001075, - "max": 0.097311, - "recall-0.025": 0.746075, - "recall-0.05": 0.967918, - "recall-0.1": 0.999317, - "recall-0.15": 0.999317, - "recall-0.25": 0.999317, - "recall-0.5": 0.999317, + "count": 1463, + "mean": 0.018553, + "median": 0.015316, + "std": 0.012929, + "sem": 0.000338, + "min": 0.001115, + "max": 0.106143, + "recall-0.025": 0.809556, + "recall-0.05": 0.96314, + "recall-0.1": 0.99727, + "recall-0.15": 0.998635, + "recall-0.25": 0.998635, + "recall-0.5": 0.998635, "num_labels": 1465 }, "elbow_right": { - "count": 1462, - "mean": 0.019285, - "median": 0.017344, - "std": 0.01176, - "sem": 0.000308, - "min": 0.000915, - "max": 0.155323, - "recall-0.025": 0.814764, - "recall-0.05": 0.973342, - "recall-0.1": 0.997266, - "recall-0.15": 0.998633, - "recall-0.25": 0.999316, - "recall-0.5": 0.999316, + "count": 1461, + "mean": 0.016844, + "median": 0.014362, + "std": 0.012668, + "sem": 0.000332, + "min": 0.001586, + "max": 0.189976, + "recall-0.025": 0.883117, + "recall-0.05": 0.97676, + "recall-0.1": 0.995899, + "recall-0.15": 0.997949, + "recall-0.25": 0.998633, + "recall-0.5": 0.998633, "num_labels": 1463 }, "wrist_left": { - "count": 1433, - "mean": 0.018516, - "median": 0.013284, - "std": 0.019618, - "sem": 0.000518, - "min": 0.000709, - "max": 0.200562, - "recall-0.025": 0.820084, - "recall-0.05": 0.95537, - "recall-0.1": 0.983961, - "recall-0.15": 0.993724, - "recall-0.25": 0.999303, - "recall-0.5": 0.999303, + "count": 1432, + "mean": 0.018491, + "median": 0.012883, + "std": 0.020813, + "sem": 0.00055, + "min": 0.000703, + "max": 0.221447, + "recall-0.025": 0.830544, + "recall-0.05": 0.956764, + "recall-0.1": 0.981869, + "recall-0.15": 0.991632, + "recall-0.25": 0.998605, + "recall-0.5": 0.998605, "num_labels": 1434 }, "wrist_right": { - "count": 1456, - "mean": 0.018352, - "median": 0.012489, - "std": 0.019929, - "sem": 0.000522, - "min": 0.001092, - "max": 0.222131, - "recall-0.025": 0.824176, - "recall-0.05": 0.945742, - "recall-0.1": 0.986264, - "recall-0.15": 0.996566, - "recall-0.25": 1.0, - "recall-0.5": 1.0, + "count": 1455, + "mean": 0.017947, + "median": 0.0125, + "std": 0.022081, + "sem": 0.000579, + "min": 0.00073, + "max": 0.304661, + "recall-0.025": 0.835852, + "recall-0.05": 0.958791, + "recall-0.1": 0.98489, + "recall-0.15": 0.993132, + "recall-0.25": 0.998626, + "recall-0.5": 0.999313, "num_labels": 1456 }, "hip_left": { - "count": 1464, - "mean": 0.050556, - "median": 0.049193, - "std": 0.018793, - "sem": 0.000491, - "min": 0.006332, - "max": 0.157765, - "recall-0.025": 0.053925, - "recall-0.05": 0.526962, - "recall-0.1": 0.974061, + "count": 1463, + "mean": 0.028288, + "median": 0.025597, + "std": 0.016137, + "sem": 0.000422, + "min": 0.002014, + "max": 0.13749, + "recall-0.025": 0.479181, + "recall-0.05": 0.932423, + "recall-0.1": 0.991126, "recall-0.15": 0.998635, - "recall-0.25": 0.999317, - "recall-0.5": 0.999317, + "recall-0.25": 0.998635, + "recall-0.5": 0.998635, "num_labels": 1465 }, "hip_right": { - "count": 1465, - "mean": 0.050758, - "median": 0.049368, - "std": 0.016346, - "sem": 0.000427, - "min": 0.007507, - "max": 0.182727, - "recall-0.025": 0.040928, - "recall-0.05": 0.515007, - "recall-0.1": 0.993179, + "count": 1464, + "mean": 0.028487, + "median": 0.026261, + "std": 0.013664, + "sem": 0.000357, + "min": 0.003326, + "max": 0.142164, + "recall-0.025": 0.464529, + "recall-0.05": 0.937926, + "recall-0.1": 0.996589, "recall-0.15": 0.998636, - "recall-0.25": 0.999318, - "recall-0.5": 0.999318, + "recall-0.25": 0.998636, + "recall-0.5": 0.998636, "num_labels": 1466 }, "knee_left": { - "count": 1464, - "mean": 0.038772, - "median": 0.035361, - "std": 0.021339, - "sem": 0.000558, - "min": 0.003706, - "max": 0.156808, - "recall-0.025": 0.263481, - "recall-0.05": 0.766553, - "recall-0.1": 0.979522, - "recall-0.15": 0.996587, - "recall-0.25": 0.999317, - "recall-0.5": 0.999317, + "count": 1463, + "mean": 0.032246, + "median": 0.027725, + "std": 0.020932, + "sem": 0.000547, + "min": 0.001876, + "max": 0.188605, + "recall-0.025": 0.443003, + "recall-0.05": 0.860068, + "recall-0.1": 0.983618, + "recall-0.15": 0.995222, + "recall-0.25": 0.998635, + "recall-0.5": 0.998635, "num_labels": 1465 }, "knee_right": { - "count": 1458, - "mean": 0.039165, - "median": 0.034402, - "std": 0.024, - "sem": 0.000629, - "min": 0.002439, - "max": 0.234808, - "recall-0.025": 0.270048, - "recall-0.05": 0.764907, - "recall-0.1": 0.972584, - "recall-0.15": 0.994517, - "recall-0.25": 0.999315, - "recall-0.5": 0.999315, + "count": 1457, + "mean": 0.033717, + "median": 0.028204, + "std": 0.021593, + "sem": 0.000566, + "min": 0.00285, + "max": 0.201632, + "recall-0.025": 0.398218, + "recall-0.05": 0.830706, + "recall-0.1": 0.978753, + "recall-0.15": 0.995888, + "recall-0.25": 0.998629, + "recall-0.5": 0.998629, "num_labels": 1459 }, "ankle_left": { - "count": 1462, - "mean": 0.082983, - "median": 0.046868, - "std": 0.088842, - "sem": 0.002324, - "min": 0.002575, - "max": 0.476398, + "count": 1461, + "mean": 0.069764, + "median": 0.039284, + "std": 0.07582, + "sem": 0.001984, + "min": 0.001721, + "max": 0.460829, "recall-0.025": 0.308954, - "recall-0.05": 0.520164, - "recall-0.1": 0.715653, - "recall-0.15": 0.833219, - "recall-0.25": 0.919344, - "recall-0.5": 0.999316, + "recall-0.05": 0.591934, + "recall-0.1": 0.774436, + "recall-0.15": 0.874915, + "recall-0.25": 0.954887, + "recall-0.5": 0.998633, "num_labels": 1463 }, "ankle_right": { "count": 1457, - "mean": 0.082673, - "median": 0.044094, - "std": 0.092411, - "sem": 0.002422, - "min": 0.002215, - "max": 0.496552, - "recall-0.025": 0.293151, - "recall-0.05": 0.540411, - "recall-0.1": 0.745205, - "recall-0.15": 0.828082, - "recall-0.25": 0.912329, + "mean": 0.067659, + "median": 0.035688, + "std": 0.079949, + "sem": 0.002095, + "min": 0.002529, + "max": 0.499971, + "recall-0.025": 0.345205, + "recall-0.05": 0.621918, + "recall-0.1": 0.810959, + "recall-0.15": 0.871918, + "recall-0.25": 0.941781, "recall-0.5": 0.997945, "num_labels": 1460 }, "joint_recalls": { "num_labels": 18990, - "recall-0.025": 0.53881, - "recall-0.05": 0.80326, - "recall-0.1": 0.94929, - "recall-0.15": 0.97167, - "recall-0.25": 0.9862, - "recall-0.5": 0.99884 + "recall-0.025": 0.66087, + "recall-0.05": 0.89279, + "recall-0.1": 0.96066, + "recall-0.15": 0.97783, + "recall-0.25": 0.99068, + "recall-0.5": 0.99842 } } { "total_parts": 20444, - "correct_parts": 20251, - "pcp": 0.99056 + "correct_parts": 20312, + "pcp": 0.993543 } ``` @@ -2657,10 +2657,10 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.024304584452980442, - "avg_time_2d": 0.009053483762239155, - "avg_time_3d": 0.0004062652587890625, - "avg_fps": 105.7110498150728 + "img_loading": 0.026260575495268168, + "avg_time_2d": 0.009883342291179455, + "avg_time_3d": 0.00028819284941020764, + "avg_fps": 98.31357668022844 } { "person_nums": { @@ -2679,37 +2679,37 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 200, - "mean": 0.025924, - "median": 0.024225, - "std": 0.011134, - "sem": 0.000789, - "min": 0.011848, - "max": 0.122432, - "recall-0.025": 0.53, - "recall-0.05": 0.97, - "recall-0.1": 0.995, + "mean": 0.023966, + "median": 0.02193, + "std": 0.009952, + "sem": 0.000705, + "min": 0.011202, + "max": 0.098338, + "recall-0.025": 0.645, + "recall-0.05": 0.985, + "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200, - "ap-0.025": 0.435929, - "ap-0.05": 0.969256, - "ap-0.1": 0.995, + "ap-0.025": 0.554146, + "ap-0.05": 0.98429, + "ap-0.1": 1.0, "ap-0.15": 1.0, "ap-0.25": 1.0, "ap-0.5": 1.0 }, "nose": { "count": 200, - "mean": 0.038119, - "median": 0.030612, - "std": 0.029537, - "sem": 0.002094, - "min": 0.001677, - "max": 0.151805, - "recall-0.025": 0.44, - "recall-0.05": 0.745, - "recall-0.1": 0.945, + "mean": 0.039256, + "median": 0.033088, + "std": 0.030919, + "sem": 0.002192, + "min": 0.003211, + "max": 0.246189, + "recall-0.025": 0.4, + "recall-0.05": 0.75, + "recall-0.1": 0.955, "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -2717,14 +2717,14 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_left": { "count": 200, - "mean": 0.020113, - "median": 0.017378, - "std": 0.011886, - "sem": 0.000843, - "min": 0.002354, - "max": 0.087407, - "recall-0.025": 0.765, - "recall-0.05": 0.97, + "mean": 0.018566, + "median": 0.016235, + "std": 0.011761, + "sem": 0.000834, + "min": 0.001295, + "max": 0.08336, + "recall-0.025": 0.77, + "recall-0.05": 0.98, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -2733,14 +2733,14 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_right": { "count": 200, - "mean": 0.026639, - "median": 0.022953, - "std": 0.012449, - "sem": 0.000882, - "min": 0.005686, - "max": 0.093229, - "recall-0.025": 0.55, - "recall-0.05": 0.945, + "mean": 0.023279, + "median": 0.020439, + "std": 0.012755, + "sem": 0.000904, + "min": 0.002446, + "max": 0.090972, + "recall-0.025": 0.645, + "recall-0.05": 0.96, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -2749,14 +2749,14 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 200, - "mean": 0.016838, - "median": 0.011963, - "std": 0.020233, - "sem": 0.001434, - "min": 0.001208, - "max": 0.220658, - "recall-0.025": 0.86, - "recall-0.05": 0.97, + "mean": 0.016956, + "median": 0.012823, + "std": 0.020294, + "sem": 0.001439, + "min": 0.000399, + "max": 0.218561, + "recall-0.025": 0.85, + "recall-0.05": 0.965, "recall-0.1": 0.99, "recall-0.15": 0.995, "recall-0.25": 1.0, @@ -2765,14 +2765,14 @@ Results of the model in various experiments on different datasets. \ }, "elbow_right": { "count": 200, - "mean": 0.022104, - "median": 0.015243, - "std": 0.020615, - "sem": 0.001461, - "min": 0.002461, - "max": 0.133578, - "recall-0.025": 0.725, - "recall-0.05": 0.91, + "mean": 0.022355, + "median": 0.015265, + "std": 0.020354, + "sem": 0.001443, + "min": 0.001682, + "max": 0.124753, + "recall-0.025": 0.69, + "recall-0.05": 0.905, "recall-0.1": 0.99, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -2781,46 +2781,46 @@ Results of the model in various experiments on different datasets. \ }, "wrist_left": { "count": 200, - "mean": 0.025084, - "median": 0.018513, - "std": 0.025404, - "sem": 0.001801, - "min": 0.002309, - "max": 0.240599, - "recall-0.025": 0.655, - "recall-0.05": 0.885, + "mean": 0.025543, + "median": 0.018102, + "std": 0.027205, + "sem": 0.001929, + "min": 0.001546, + "max": 0.278829, + "recall-0.025": 0.65, + "recall-0.05": 0.9, "recall-0.1": 0.985, "recall-0.15": 0.995, - "recall-0.25": 1.0, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "wrist_right": { "count": 200, - "mean": 0.031179, - "median": 0.024449, - "std": 0.025291, - "sem": 0.001793, - "min": 0.001105, - "max": 0.155243, - "recall-0.025": 0.515, + "mean": 0.031676, + "median": 0.023419, + "std": 0.027318, + "sem": 0.001937, + "min": 0.001467, + "max": 0.171508, + "recall-0.025": 0.54, "recall-0.05": 0.83, "recall-0.1": 0.975, - "recall-0.15": 0.995, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "hip_left": { "count": 200, - "mean": 0.038439, - "median": 0.03664, - "std": 0.014591, - "sem": 0.001034, - "min": 0.010861, - "max": 0.093983, - "recall-0.025": 0.185, - "recall-0.05": 0.8, + "mean": 0.031527, + "median": 0.028829, + "std": 0.014772, + "sem": 0.001047, + "min": 0.008472, + "max": 0.093101, + "recall-0.025": 0.375, + "recall-0.05": 0.865, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -2829,14 +2829,14 @@ Results of the model in various experiments on different datasets. \ }, "hip_right": { "count": 200, - "mean": 0.037329, - "median": 0.036221, - "std": 0.014534, - "sem": 0.00103, - "min": 0.00383, - "max": 0.079862, - "recall-0.025": 0.21, - "recall-0.05": 0.825, + "mean": 0.030689, + "median": 0.028248, + "std": 0.014282, + "sem": 0.001012, + "min": 0.003098, + "max": 0.081098, + "recall-0.025": 0.405, + "recall-0.05": 0.91, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -2845,63 +2845,63 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 200, - "mean": 0.022215, - "median": 0.015636, - "std": 0.028181, - "sem": 0.001998, - "min": 0.002272, - "max": 0.332342, - "recall-0.025": 0.76, - "recall-0.05": 0.945, + "mean": 0.0209, + "median": 0.014398, + "std": 0.029374, + "sem": 0.002082, + "min": 0.000929, + "max": 0.331222, + "recall-0.025": 0.745, + "recall-0.05": 0.96, "recall-0.1": 0.985, - "recall-0.15": 0.995, + "recall-0.15": 0.99, "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "knee_right": { - "count": 199, - "mean": 0.019993, - "median": 0.014739, - "std": 0.020278, - "sem": 0.001441, - "min": 0.000963, - "max": 0.150804, - "recall-0.025": 0.82, - "recall-0.05": 0.935, - "recall-0.1": 0.97, - "recall-0.15": 0.99, - "recall-0.25": 0.995, - "recall-0.5": 0.995, - "num_labels": 200 - }, - "ankle_left": { "count": 200, - "mean": 0.017902, - "median": 0.013088, - "std": 0.027423, - "sem": 0.001944, - "min": 0.001876, - "max": 0.346319, - "recall-0.025": 0.87, - "recall-0.05": 0.955, + "mean": 0.019821, + "median": 0.014201, + "std": 0.034129, + "sem": 0.002419, + "min": 0.000649, + "max": 0.453869, + "recall-0.025": 0.81, + "recall-0.05": 0.96, "recall-0.1": 0.99, "recall-0.15": 0.995, "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, + "ankle_left": { + "count": 200, + "mean": 0.014099, + "median": 0.010581, + "std": 0.014073, + "sem": 0.000998, + "min": 0.001776, + "max": 0.137094, + "recall-0.025": 0.895, + "recall-0.05": 0.975, + "recall-0.1": 0.995, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 200 + }, "ankle_right": { "count": 200, - "mean": 0.01829, - "median": 0.013378, - "std": 0.02709, - "sem": 0.00192, - "min": 0.001962, - "max": 0.340179, - "recall-0.025": 0.875, - "recall-0.05": 0.96, - "recall-0.1": 0.99, + "mean": 0.01689, + "median": 0.01028, + "std": 0.03316, + "sem": 0.002351, + "min": 0.001613, + "max": 0.431529, + "recall-0.025": 0.865, + "recall-0.05": 0.965, + "recall-0.1": 0.985, "recall-0.15": 0.995, "recall-0.25": 0.995, "recall-0.5": 1.0, @@ -2909,18 +2909,18 @@ Results of the model in various experiments on different datasets. \ }, "joint_recalls": { "num_labels": 2600, - "recall-0.025": 0.63308, - "recall-0.05": 0.89808, - "recall-0.1": 0.98615, + "recall-0.025": 0.66462, + "recall-0.05": 0.91731, + "recall-0.1": 0.98846, "recall-0.15": 0.99654, "recall-0.25": 0.99846, - "recall-0.5": 0.99962 + "recall-0.5": 1.0 } } { "total_parts": 2800, - "correct_parts": 2792, - "pcp": 0.997143 + "correct_parts": 2794, + "pcp": 0.997857 } ``` @@ -2928,10 +2928,10 @@ Results of the model in various experiments on different datasets. \ ```json { - "img_loading": 0.024176982829445286, - "avg_time_2d": 0.021198785932440508, - "avg_time_3d": 0.00160645560214394, - "avg_fps": 43.84956846361337 + "img_loading": 0.025603970728422465, + "avg_time_2d": 0.021623519847267552, + "avg_time_3d": 0.0009541837792647512, + "avg_fps": 44.29148404733442 } { "person_nums": { @@ -2950,116 +2950,116 @@ Results of the model in various experiments on different datasets. \ }, "mpjpe": { "count": 200, - "mean": 0.045997, - "median": 0.040532, - "std": 0.019239, - "sem": 0.001364, - "min": 0.020375, - "max": 0.157634, - "recall-0.025": 0.045, - "recall-0.05": 0.68, + "mean": 0.046368, + "median": 0.041878, + "std": 0.018953, + "sem": 0.001344, + "min": 0.019366, + "max": 0.140719, + "recall-0.025": 0.03, + "recall-0.05": 0.69, "recall-0.1": 0.985, - "recall-0.15": 0.995, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200, - "ap-0.025": 0.019935, - "ap-0.05": 0.609342, - "ap-0.1": 0.983448, - "ap-0.15": 0.994825, + "ap-0.025": 0.004375, + "ap-0.05": 0.607881, + "ap-0.1": 0.981272, + "ap-0.15": 1.0, "ap-0.25": 1.0, "ap-0.5": 1.0 }, "nose": { "count": 200, - "mean": 0.051172, - "median": 0.041617, - "std": 0.041391, - "sem": 0.002934, - "min": 0.003328, - "max": 0.297026, - "recall-0.025": 0.3, - "recall-0.05": 0.585, + "mean": 0.051117, + "median": 0.042979, + "std": 0.037638, + "sem": 0.002668, + "min": 0.005223, + "max": 0.247102, + "recall-0.025": 0.28, + "recall-0.05": 0.57, "recall-0.1": 0.885, - "recall-0.15": 0.98, - "recall-0.25": 0.995, + "recall-0.15": 0.985, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "eye_left": { "count": 200, - "mean": 0.045067, - "median": 0.035043, - "std": 0.034497, - "sem": 0.002445, - "min": 0.004324, - "max": 0.176107, - "recall-0.025": 0.365, - "recall-0.05": 0.665, - "recall-0.1": 0.905, - "recall-0.15": 0.985, + "mean": 0.044076, + "median": 0.036192, + "std": 0.029084, + "sem": 0.002062, + "min": 0.007219, + "max": 0.156673, + "recall-0.025": 0.3, + "recall-0.05": 0.67, + "recall-0.1": 0.93, + "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "eye_right": { "count": 200, - "mean": 0.052741, - "median": 0.042719, - "std": 0.038078, - "sem": 0.002699, - "min": 0.003116, - "max": 0.230969, - "recall-0.025": 0.25, - "recall-0.05": 0.58, - "recall-0.1": 0.88, - "recall-0.15": 0.99, + "mean": 0.053085, + "median": 0.045201, + "std": 0.035718, + "sem": 0.002532, + "min": 0.002782, + "max": 0.186024, + "recall-0.025": 0.23, + "recall-0.05": 0.57, + "recall-0.1": 0.87, + "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "ear_left": { "count": 200, - "mean": 0.03234, - "median": 0.025413, - "std": 0.025278, - "sem": 0.001792, - "min": 0.003551, - "max": 0.159542, - "recall-0.025": 0.495, - "recall-0.05": 0.83, + "mean": 0.033899, + "median": 0.025775, + "std": 0.028371, + "sem": 0.002011, + "min": 0.002683, + "max": 0.169265, + "recall-0.025": 0.47, + "recall-0.05": 0.855, "recall-0.1": 0.975, - "recall-0.15": 0.995, + "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "ear_right": { "count": 200, - "mean": 0.043117, - "median": 0.036603, - "std": 0.030183, - "sem": 0.00214, - "min": 0.002951, - "max": 0.175395, - "recall-0.025": 0.325, - "recall-0.05": 0.665, - "recall-0.1": 0.945, - "recall-0.15": 0.995, + "mean": 0.044424, + "median": 0.039876, + "std": 0.028277, + "sem": 0.002004, + "min": 0.003801, + "max": 0.116696, + "recall-0.025": 0.315, + "recall-0.05": 0.635, + "recall-0.1": 0.955, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "shoulder_left": { "count": 200, - "mean": 0.020544, - "median": 0.018935, - "std": 0.011887, - "sem": 0.000843, - "min": 0.00081, - "max": 0.097607, - "recall-0.025": 0.735, - "recall-0.05": 0.975, + "mean": 0.020458, + "median": 0.018528, + "std": 0.012031, + "sem": 0.000853, + "min": 0.001054, + "max": 0.069013, + "recall-0.025": 0.725, + "recall-0.05": 0.97, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -3068,14 +3068,14 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_right": { "count": 200, - "mean": 0.025972, - "median": 0.023122, - "std": 0.0145, - "sem": 0.001028, - "min": 0.004376, - "max": 0.077073, - "recall-0.025": 0.55, - "recall-0.05": 0.935, + "mean": 0.024673, + "median": 0.022526, + "std": 0.013389, + "sem": 0.000949, + "min": 0.004145, + "max": 0.073515, + "recall-0.025": 0.575, + "recall-0.05": 0.95, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -3084,78 +3084,78 @@ Results of the model in various experiments on different datasets. \ }, "elbow_left": { "count": 200, - "mean": 0.019273, - "median": 0.015912, - "std": 0.014108, - "sem": 0.001, - "min": 0.002003, - "max": 0.122818, + "mean": 0.019244, + "median": 0.014335, + "std": 0.019038, + "sem": 0.00135, + "min": 0.001754, + "max": 0.198344, "recall-0.025": 0.755, - "recall-0.05": 0.965, - "recall-0.1": 0.995, - "recall-0.15": 1.0, + "recall-0.05": 0.97, + "recall-0.1": 0.99, + "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "elbow_right": { "count": 200, - "mean": 0.026548, - "median": 0.01773, - "std": 0.027828, - "sem": 0.001973, - "min": 0.001957, - "max": 0.220378, - "recall-0.025": 0.665, + "mean": 0.025346, + "median": 0.017392, + "std": 0.023928, + "sem": 0.001696, + "min": 0.000835, + "max": 0.14358, + "recall-0.025": 0.66, "recall-0.05": 0.89, - "recall-0.1": 0.975, - "recall-0.15": 0.99, + "recall-0.1": 0.97, + "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "wrist_left": { - "count": 200, - "mean": 0.027645, - "median": 0.019436, - "std": 0.027559, - "sem": 0.001954, - "min": 0.003882, - "max": 0.277998, - "recall-0.025": 0.625, - "recall-0.05": 0.88, - "recall-0.1": 0.98, + "count": 199, + "mean": 0.026488, + "median": 0.019964, + "std": 0.021772, + "sem": 0.001547, + "min": 0.002774, + "max": 0.120657, + "recall-0.025": 0.64, + "recall-0.05": 0.87, + "recall-0.1": 0.975, "recall-0.15": 0.995, "recall-0.25": 0.995, - "recall-0.5": 1.0, + "recall-0.5": 0.995, "num_labels": 200 }, "wrist_right": { "count": 199, - "mean": 0.039051, - "median": 0.024328, - "std": 0.042452, - "sem": 0.003017, - "min": 0.004468, - "max": 0.261992, - "recall-0.025": 0.525, - "recall-0.05": 0.77, - "recall-0.1": 0.905, + "mean": 0.038694, + "median": 0.024094, + "std": 0.04562, + "sem": 0.003242, + "min": 0.002353, + "max": 0.380524, + "recall-0.025": 0.505, + "recall-0.05": 0.8, + "recall-0.1": 0.92, "recall-0.15": 0.96, - "recall-0.25": 0.99, + "recall-0.25": 0.985, "recall-0.5": 0.995, "num_labels": 200 }, "hip_left": { "count": 200, - "mean": 0.032109, - "median": 0.028548, - "std": 0.015893, - "sem": 0.001127, - "min": 0.004823, - "max": 0.091245, - "recall-0.025": 0.395, - "recall-0.05": 0.865, + "mean": 0.03153, + "median": 0.029363, + "std": 0.014972, + "sem": 0.001061, + "min": 0.006625, + "max": 0.078356, + "recall-0.025": 0.375, + "recall-0.05": 0.885, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -3164,15 +3164,15 @@ Results of the model in various experiments on different datasets. \ }, "hip_right": { "count": 200, - "mean": 0.031697, - "median": 0.028877, - "std": 0.016414, - "sem": 0.001164, - "min": 0.005514, - "max": 0.103376, + "mean": 0.031112, + "median": 0.029146, + "std": 0.016238, + "sem": 0.001151, + "min": 0.004224, + "max": 0.098891, "recall-0.025": 0.415, - "recall-0.05": 0.86, - "recall-0.1": 0.995, + "recall-0.05": 0.88, + "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -3180,110 +3180,110 @@ Results of the model in various experiments on different datasets. \ }, "knee_left": { "count": 200, - "mean": 0.023133, - "median": 0.016675, - "std": 0.02991, - "sem": 0.00212, - "min": 0.001981, - "max": 0.229241, - "recall-0.025": 0.76, + "mean": 0.022689, + "median": 0.0174, + "std": 0.024627, + "sem": 0.001746, + "min": 0.002624, + "max": 0.22036, + "recall-0.025": 0.75, "recall-0.05": 0.955, "recall-0.1": 0.975, - "recall-0.15": 0.98, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "knee_right": { "count": 200, - "mean": 0.023344, - "median": 0.014733, - "std": 0.029494, - "sem": 0.002091, - "min": 0.002163, - "max": 0.202651, - "recall-0.025": 0.75, - "recall-0.05": 0.92, - "recall-0.1": 0.965, - "recall-0.15": 0.98, - "recall-0.25": 1.0, + "mean": 0.026388, + "median": 0.015743, + "std": 0.045107, + "sem": 0.003198, + "min": 0.002, + "max": 0.401682, + "recall-0.025": 0.715, + "recall-0.05": 0.915, + "recall-0.1": 0.96, + "recall-0.15": 0.97, + "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "ankle_left": { "count": 200, - "mean": 0.016376, - "median": 0.012119, - "std": 0.018487, - "sem": 0.001311, - "min": 0.000944, - "max": 0.166644, - "recall-0.025": 0.87, - "recall-0.05": 0.96, + "mean": 0.016597, + "median": 0.011209, + "std": 0.021108, + "sem": 0.001496, + "min": 0.001544, + "max": 0.175778, + "recall-0.025": 0.875, + "recall-0.05": 0.965, "recall-0.1": 0.985, - "recall-0.15": 0.995, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "ankle_right": { "count": 200, - "mean": 0.018422, - "median": 0.013257, - "std": 0.020062, - "sem": 0.001422, - "min": 0.000957, - "max": 0.165995, - "recall-0.025": 0.84, - "recall-0.05": 0.96, - "recall-0.1": 0.98, + "mean": 0.019394, + "median": 0.012907, + "std": 0.034849, + "sem": 0.00247, + "min": 0.001431, + "max": 0.439118, + "recall-0.025": 0.825, + "recall-0.05": 0.965, + "recall-0.1": 0.975, "recall-0.15": 0.995, - "recall-0.25": 1.0, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "foot_toe_big_left": { "count": 200, - "mean": 0.031344, - "median": 0.022776, - "std": 0.031863, - "sem": 0.002259, - "min": 0.000993, - "max": 0.226939, - "recall-0.025": 0.56, - "recall-0.05": 0.865, - "recall-0.1": 0.955, + "mean": 0.03051, + "median": 0.0225, + "std": 0.030603, + "sem": 0.002169, + "min": 0.003694, + "max": 0.215697, + "recall-0.025": 0.58, + "recall-0.05": 0.88, + "recall-0.1": 0.96, "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "foot_toe_small_left": { - "count": 200, - "mean": 0.029106, - "median": 0.021464, - "std": 0.02933, - "sem": 0.002079, - "min": 0.002291, - "max": 0.204794, - "recall-0.025": 0.595, - "recall-0.05": 0.905, - "recall-0.1": 0.965, - "recall-0.15": 0.975, - "recall-0.25": 1.0, - "recall-0.5": 1.0, + "count": 199, + "mean": 0.027304, + "median": 0.019305, + "std": 0.027491, + "sem": 0.001954, + "min": 0.002455, + "max": 0.20494, + "recall-0.025": 0.64, + "recall-0.05": 0.925, + "recall-0.1": 0.97, + "recall-0.15": 0.98, + "recall-0.25": 0.995, + "recall-0.5": 0.995, "num_labels": 200 }, "foot_heel_left": { "count": 200, - "mean": 0.025692, - "median": 0.020099, - "std": 0.025407, - "sem": 0.001801, - "min": 0.002672, - "max": 0.212482, - "recall-0.025": 0.65, - "recall-0.05": 0.905, + "mean": 0.024182, + "median": 0.016259, + "std": 0.02531, + "sem": 0.001794, + "min": 0.003472, + "max": 0.215076, + "recall-0.025": 0.69, + "recall-0.05": 0.935, "recall-0.1": 0.98, "recall-0.15": 0.99, "recall-0.25": 1.0, @@ -3292,47 +3292,47 @@ Results of the model in various experiments on different datasets. \ }, "foot_toe_big_right": { "count": 200, - "mean": 0.035661, - "median": 0.022381, - "std": 0.042684, - "sem": 0.003026, - "min": 0.002971, - "max": 0.316414, - "recall-0.025": 0.56, - "recall-0.05": 0.815, - "recall-0.1": 0.945, - "recall-0.15": 0.965, + "mean": 0.034115, + "median": 0.022933, + "std": 0.041163, + "sem": 0.002918, + "min": 0.001796, + "max": 0.362521, + "recall-0.025": 0.575, + "recall-0.05": 0.825, + "recall-0.1": 0.955, + "recall-0.15": 0.98, "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "foot_toe_small_right": { "count": 200, - "mean": 0.03365, - "median": 0.025017, - "std": 0.033396, - "sem": 0.002367, - "min": 0.00289, - "max": 0.236448, - "recall-0.025": 0.5, - "recall-0.05": 0.83, - "recall-0.1": 0.965, - "recall-0.15": 0.97, + "mean": 0.033263, + "median": 0.02459, + "std": 0.031896, + "sem": 0.002261, + "min": 0.002734, + "max": 0.24162, + "recall-0.025": 0.51, + "recall-0.05": 0.845, + "recall-0.1": 0.97, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "foot_heel_right": { "count": 200, - "mean": 0.023859, - "median": 0.016931, - "std": 0.025628, - "sem": 0.001817, - "min": 0.002575, - "max": 0.190759, - "recall-0.025": 0.715, - "recall-0.05": 0.92, - "recall-0.1": 0.97, + "mean": 0.024673, + "median": 0.019086, + "std": 0.023637, + "sem": 0.001676, + "min": 0.003155, + "max": 0.193993, + "recall-0.025": 0.69, + "recall-0.05": 0.925, + "recall-0.1": 0.975, "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -3340,14 +3340,14 @@ Results of the model in various experiments on different datasets. \ }, "face_jaw_right_1": { "count": 200, - "mean": 0.090687, - "median": 0.080591, - "std": 0.040311, - "sem": 0.002858, - "min": 0.025033, - "max": 0.261922, - "recall-0.025": 0.0, - "recall-0.05": 0.115, + "mean": 0.089825, + "median": 0.081305, + "std": 0.038721, + "sem": 0.002745, + "min": 0.012724, + "max": 0.285644, + "recall-0.025": 0.005, + "recall-0.05": 0.105, "recall-0.1": 0.67, "recall-0.15": 0.92, "recall-0.25": 0.995, @@ -3356,447 +3356,447 @@ Results of the model in various experiments on different datasets. \ }, "face_jaw_right_2": { "count": 200, - "mean": 0.090161, - "median": 0.083003, - "std": 0.042756, - "sem": 0.003031, - "min": 0.017114, - "max": 0.302807, - "recall-0.025": 0.01, - "recall-0.05": 0.135, - "recall-0.1": 0.685, - "recall-0.15": 0.905, + "mean": 0.088125, + "median": 0.08049, + "std": 0.039097, + "sem": 0.002772, + "min": 0.015834, + "max": 0.266229, + "recall-0.025": 0.005, + "recall-0.05": 0.125, + "recall-0.1": 0.68, + "recall-0.15": 0.91, "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_right_3": { "count": 200, - "mean": 0.091305, - "median": 0.08354, - "std": 0.045418, - "sem": 0.00322, - "min": 0.015679, - "max": 0.232156, + "mean": 0.08928, + "median": 0.081912, + "std": 0.043152, + "sem": 0.003059, + "min": 0.014057, + "max": 0.24359, "recall-0.025": 0.03, - "recall-0.05": 0.16, - "recall-0.1": 0.66, - "recall-0.15": 0.88, + "recall-0.05": 0.165, + "recall-0.1": 0.665, + "recall-0.15": 0.9, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_right_4": { "count": 200, - "mean": 0.093026, - "median": 0.084552, - "std": 0.048309, - "sem": 0.003425, - "min": 0.015293, - "max": 0.229741, - "recall-0.025": 0.025, - "recall-0.05": 0.205, - "recall-0.1": 0.615, - "recall-0.15": 0.87, + "mean": 0.088892, + "median": 0.079434, + "std": 0.046782, + "sem": 0.003316, + "min": 0.010777, + "max": 0.241215, + "recall-0.025": 0.035, + "recall-0.05": 0.215, + "recall-0.1": 0.66, + "recall-0.15": 0.885, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_right_5": { "count": 200, - "mean": 0.08817, - "median": 0.077285, - "std": 0.046454, - "sem": 0.003293, - "min": 0.006192, - "max": 0.226614, - "recall-0.025": 0.035, - "recall-0.05": 0.235, - "recall-0.1": 0.645, - "recall-0.15": 0.865, + "mean": 0.086873, + "median": 0.074592, + "std": 0.048704, + "sem": 0.003453, + "min": 0.009374, + "max": 0.23719, + "recall-0.025": 0.04, + "recall-0.05": 0.215, + "recall-0.1": 0.685, + "recall-0.15": 0.87, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_right_6": { "count": 200, - "mean": 0.081829, - "median": 0.071512, - "std": 0.045956, - "sem": 0.003258, - "min": 0.006834, - "max": 0.265789, - "recall-0.025": 0.06, + "mean": 0.082095, + "median": 0.07281, + "std": 0.046245, + "sem": 0.003278, + "min": 0.006329, + "max": 0.225753, + "recall-0.025": 0.045, "recall-0.05": 0.29, - "recall-0.1": 0.685, - "recall-0.15": 0.905, - "recall-0.25": 0.995, + "recall-0.1": 0.705, + "recall-0.15": 0.91, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_right_7": { "count": 200, - "mean": 0.069747, - "median": 0.060943, - "std": 0.04164, - "sem": 0.002952, - "min": 0.004372, - "max": 0.253015, - "recall-0.025": 0.08, - "recall-0.05": 0.385, - "recall-0.1": 0.82, - "recall-0.15": 0.955, - "recall-0.25": 0.995, + "mean": 0.071156, + "median": 0.061792, + "std": 0.040691, + "sem": 0.002885, + "min": 0.008628, + "max": 0.237795, + "recall-0.025": 0.065, + "recall-0.05": 0.41, + "recall-0.1": 0.78, + "recall-0.15": 0.95, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_right_8": { "count": 200, - "mean": 0.059604, - "median": 0.048869, - "std": 0.048185, - "sem": 0.003416, - "min": 0.004694, - "max": 0.494873, - "recall-0.025": 0.185, - "recall-0.05": 0.525, - "recall-0.1": 0.88, - "recall-0.15": 0.975, + "mean": 0.060623, + "median": 0.048963, + "std": 0.04818, + "sem": 0.003415, + "min": 0.006047, + "max": 0.480023, + "recall-0.025": 0.175, + "recall-0.05": 0.505, + "recall-0.1": 0.875, + "recall-0.15": 0.96, "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_middle": { "count": 200, - "mean": 0.044176, - "median": 0.037319, - "std": 0.02905, - "sem": 0.002059, - "min": 0.00477, - "max": 0.159233, - "recall-0.025": 0.315, - "recall-0.05": 0.665, + "mean": 0.04465, + "median": 0.036515, + "std": 0.031981, + "sem": 0.002267, + "min": 0.002296, + "max": 0.255876, + "recall-0.025": 0.31, + "recall-0.05": 0.65, "recall-0.1": 0.945, "recall-0.15": 0.995, - "recall-0.25": 1.0, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_left_1": { "count": 200, - "mean": 0.048643, - "median": 0.037302, - "std": 0.03587, - "sem": 0.002543, - "min": 0.004045, - "max": 0.271613, - "recall-0.025": 0.28, - "recall-0.05": 0.645, - "recall-0.1": 0.92, - "recall-0.15": 0.985, + "mean": 0.05133, + "median": 0.040209, + "std": 0.036993, + "sem": 0.002622, + "min": 0.009357, + "max": 0.312411, + "recall-0.025": 0.225, + "recall-0.05": 0.62, + "recall-0.1": 0.9, + "recall-0.15": 0.97, "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_left_2": { "count": 200, - "mean": 0.058541, - "median": 0.044936, - "std": 0.043415, - "sem": 0.003078, - "min": 0.006645, - "max": 0.298011, - "recall-0.025": 0.16, - "recall-0.05": 0.545, - "recall-0.1": 0.865, - "recall-0.15": 0.965, - "recall-0.25": 0.99, + "mean": 0.055357, + "median": 0.046228, + "std": 0.040068, + "sem": 0.00284, + "min": 0.009316, + "max": 0.422798, + "recall-0.025": 0.15, + "recall-0.05": 0.555, + "recall-0.1": 0.905, + "recall-0.15": 0.995, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_left_3": { "count": 200, - "mean": 0.062556, - "median": 0.051866, - "std": 0.03592, - "sem": 0.002546, - "min": 0.009111, - "max": 0.227489, + "mean": 0.06445, + "median": 0.056203, + "std": 0.03808, + "sem": 0.002699, + "min": 0.007656, + "max": 0.262198, "recall-0.025": 0.105, - "recall-0.05": 0.475, + "recall-0.05": 0.435, "recall-0.1": 0.835, - "recall-0.15": 0.98, - "recall-0.25": 1.0, + "recall-0.15": 0.965, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_left_4": { - "count": 199, - "mean": 0.069234, - "median": 0.060659, - "std": 0.039769, - "sem": 0.002826, - "min": 0.010457, - "max": 0.228311, - "recall-0.025": 0.055, - "recall-0.05": 0.35, - "recall-0.1": 0.805, - "recall-0.15": 0.945, - "recall-0.25": 0.995, - "recall-0.5": 0.995, + "count": 198, + "mean": 0.070721, + "median": 0.062448, + "std": 0.041641, + "sem": 0.002967, + "min": 0.009475, + "max": 0.207171, + "recall-0.025": 0.07, + "recall-0.05": 0.365, + "recall-0.1": 0.795, + "recall-0.15": 0.925, + "recall-0.25": 0.99, + "recall-0.5": 0.99, "num_labels": 200 }, "face_jaw_left_5": { "count": 199, - "mean": 0.072596, - "median": 0.064599, - "std": 0.041208, - "sem": 0.002929, - "min": 0.006405, - "max": 0.214087, - "recall-0.025": 0.025, - "recall-0.05": 0.355, - "recall-0.1": 0.795, - "recall-0.15": 0.92, + "mean": 0.07543, + "median": 0.065896, + "std": 0.043223, + "sem": 0.003072, + "min": 0.012709, + "max": 0.239952, + "recall-0.025": 0.035, + "recall-0.05": 0.335, + "recall-0.1": 0.775, + "recall-0.15": 0.915, "recall-0.25": 0.995, "recall-0.5": 0.995, "num_labels": 200 }, "face_jaw_left_6": { "count": 199, - "mean": 0.074848, - "median": 0.063019, - "std": 0.045267, - "sem": 0.003217, - "min": 0.004171, - "max": 0.267786, - "recall-0.025": 0.045, - "recall-0.05": 0.345, - "recall-0.1": 0.765, - "recall-0.15": 0.92, - "recall-0.25": 0.99, + "mean": 0.076597, + "median": 0.067289, + "std": 0.042836, + "sem": 0.003044, + "min": 0.00822, + "max": 0.240525, + "recall-0.025": 0.035, + "recall-0.05": 0.33, + "recall-0.1": 0.74, + "recall-0.15": 0.925, + "recall-0.25": 0.995, "recall-0.5": 0.995, "num_labels": 200 }, "face_jaw_left_7": { "count": 200, - "mean": 0.074334, - "median": 0.06436, - "std": 0.040978, - "sem": 0.002905, - "min": 0.007532, - "max": 0.23451, - "recall-0.025": 0.055, + "mean": 0.074152, + "median": 0.064484, + "std": 0.039954, + "sem": 0.002832, + "min": 0.008925, + "max": 0.232576, + "recall-0.025": 0.06, "recall-0.05": 0.345, - "recall-0.1": 0.755, - "recall-0.15": 0.94, + "recall-0.1": 0.77, + "recall-0.15": 0.95, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_jaw_left_8": { "count": 200, - "mean": 0.071372, - "median": 0.061299, - "std": 0.03997, - "sem": 0.002833, - "min": 0.006092, - "max": 0.198906, + "mean": 0.071978, + "median": 0.062531, + "std": 0.040475, + "sem": 0.002869, + "min": 0.008727, + "max": 0.244416, "recall-0.025": 0.05, "recall-0.05": 0.345, - "recall-0.1": 0.785, - "recall-0.15": 0.93, + "recall-0.1": 0.795, + "recall-0.15": 0.935, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_right_1": { "count": 200, - "mean": 0.062374, - "median": 0.054129, - "std": 0.038527, - "sem": 0.002731, - "min": 0.005033, - "max": 0.242793, - "recall-0.025": 0.13, - "recall-0.05": 0.46, - "recall-0.1": 0.835, + "mean": 0.063702, + "median": 0.052471, + "std": 0.044024, + "sem": 0.003121, + "min": 0.009899, + "max": 0.384268, + "recall-0.025": 0.1, + "recall-0.05": 0.465, + "recall-0.1": 0.84, "recall-0.15": 0.975, - "recall-0.25": 1.0, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_right_2": { "count": 200, - "mean": 0.0549, - "median": 0.044597, - "std": 0.039058, - "sem": 0.002769, - "min": 0.004274, - "max": 0.229584, - "recall-0.025": 0.215, - "recall-0.05": 0.58, - "recall-0.1": 0.885, - "recall-0.15": 0.975, - "recall-0.25": 1.0, + "mean": 0.056501, + "median": 0.044957, + "std": 0.042087, + "sem": 0.002983, + "min": 0.006012, + "max": 0.301022, + "recall-0.025": 0.185, + "recall-0.05": 0.565, + "recall-0.1": 0.89, + "recall-0.15": 0.97, + "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_right_3": { "count": 200, - "mean": 0.048351, - "median": 0.036666, - "std": 0.035523, - "sem": 0.002518, - "min": 0.006313, - "max": 0.209826, - "recall-0.025": 0.275, + "mean": 0.04911, + "median": 0.037221, + "std": 0.038259, + "sem": 0.002712, + "min": 0.004183, + "max": 0.227202, + "recall-0.025": 0.28, "recall-0.05": 0.655, "recall-0.1": 0.91, - "recall-0.15": 0.975, + "recall-0.15": 0.97, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_right_4": { "count": 200, - "mean": 0.042496, - "median": 0.031011, - "std": 0.03549, - "sem": 0.002516, - "min": 0.000254, - "max": 0.220105, - "recall-0.025": 0.34, - "recall-0.05": 0.74, + "mean": 0.040535, + "median": 0.033189, + "std": 0.031584, + "sem": 0.002239, + "min": 0.001992, + "max": 0.193575, + "recall-0.025": 0.345, + "recall-0.05": 0.755, "recall-0.1": 0.945, - "recall-0.15": 0.975, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_right_5": { "count": 200, - "mean": 0.037406, - "median": 0.026971, - "std": 0.0343, - "sem": 0.002431, - "min": 0.003729, - "max": 0.221809, - "recall-0.025": 0.45, - "recall-0.05": 0.755, - "recall-0.1": 0.95, - "recall-0.15": 0.975, + "mean": 0.035497, + "median": 0.028264, + "std": 0.027606, + "sem": 0.001957, + "min": 0.002679, + "max": 0.166988, + "recall-0.025": 0.445, + "recall-0.05": 0.78, + "recall-0.1": 0.965, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_left_1": { "count": 200, - "mean": 0.034193, - "median": 0.023222, - "std": 0.032894, - "sem": 0.002332, - "min": 0.004751, - "max": 0.215145, - "recall-0.025": 0.545, - "recall-0.05": 0.81, - "recall-0.1": 0.96, - "recall-0.15": 0.985, + "mean": 0.035361, + "median": 0.026411, + "std": 0.032138, + "sem": 0.002278, + "min": 0.004365, + "max": 0.238753, + "recall-0.025": 0.475, + "recall-0.05": 0.815, + "recall-0.1": 0.965, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_left_2": { "count": 200, - "mean": 0.03394, - "median": 0.025145, - "std": 0.027286, - "sem": 0.001934, - "min": 0.002346, - "max": 0.156932, - "recall-0.025": 0.495, - "recall-0.05": 0.78, - "recall-0.1": 0.97, - "recall-0.15": 0.99, + "mean": 0.037981, + "median": 0.024736, + "std": 0.036578, + "sem": 0.002593, + "min": 0.002363, + "max": 0.249505, + "recall-0.025": 0.505, + "recall-0.05": 0.765, + "recall-0.1": 0.945, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_left_3": { "count": 200, - "mean": 0.03601, - "median": 0.025584, - "std": 0.03104, - "sem": 0.0022, - "min": 0.001909, - "max": 0.205016, - "recall-0.025": 0.49, - "recall-0.05": 0.77, + "mean": 0.037572, + "median": 0.027686, + "std": 0.033405, + "sem": 0.002368, + "min": 0.004176, + "max": 0.198413, + "recall-0.025": 0.445, + "recall-0.05": 0.765, "recall-0.1": 0.955, - "recall-0.15": 0.985, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_left_4": { "count": 200, - "mean": 0.039204, - "median": 0.026685, - "std": 0.038203, - "sem": 0.002708, - "min": 0.002528, - "max": 0.295628, - "recall-0.025": 0.46, - "recall-0.05": 0.765, - "recall-0.1": 0.93, - "recall-0.15": 0.985, - "recall-0.25": 0.99, + "mean": 0.039877, + "median": 0.032839, + "std": 0.031904, + "sem": 0.002262, + "min": 0.002782, + "max": 0.216623, + "recall-0.025": 0.415, + "recall-0.05": 0.73, + "recall-0.1": 0.95, + "recall-0.15": 0.99, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eyebrow_left_5": { "count": 200, - "mean": 0.043533, - "median": 0.035562, - "std": 0.030644, - "sem": 0.002172, - "min": 0.004562, - "max": 0.158425, - "recall-0.025": 0.335, - "recall-0.05": 0.685, - "recall-0.1": 0.935, - "recall-0.15": 0.995, + "mean": 0.044335, + "median": 0.033301, + "std": 0.032095, + "sem": 0.002275, + "min": 0.003312, + "max": 0.160166, + "recall-0.025": 0.325, + "recall-0.05": 0.68, + "recall-0.1": 0.92, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_nose_1": { "count": 200, - "mean": 0.033159, - "median": 0.025158, - "std": 0.029634, - "sem": 0.002101, - "min": 0.002028, - "max": 0.212761, - "recall-0.025": 0.495, - "recall-0.05": 0.84, + "mean": 0.033881, + "median": 0.024751, + "std": 0.02827, + "sem": 0.002004, + "min": 0.002521, + "max": 0.195241, + "recall-0.025": 0.505, + "recall-0.05": 0.825, "recall-0.1": 0.97, - "recall-0.15": 0.985, + "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_nose_2": { "count": 200, - "mean": 0.037808, - "median": 0.027924, - "std": 0.033901, - "sem": 0.002403, - "min": 0.002818, - "max": 0.213827, - "recall-0.025": 0.435, - "recall-0.05": 0.785, - "recall-0.1": 0.935, + "mean": 0.038971, + "median": 0.02876, + "std": 0.033872, + "sem": 0.002401, + "min": 0.002769, + "max": 0.222349, + "recall-0.025": 0.395, + "recall-0.05": 0.765, + "recall-0.1": 0.965, "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -3804,15 +3804,15 @@ Results of the model in various experiments on different datasets. \ }, "face_nose_3": { "count": 200, - "mean": 0.040684, - "median": 0.02885, - "std": 0.036594, - "sem": 0.002594, - "min": 0.003367, - "max": 0.229747, - "recall-0.025": 0.39, - "recall-0.05": 0.735, - "recall-0.1": 0.94, + "mean": 0.040942, + "median": 0.02934, + "std": 0.036555, + "sem": 0.002591, + "min": 0.002746, + "max": 0.234913, + "recall-0.025": 0.4, + "recall-0.05": 0.73, + "recall-0.1": 0.95, "recall-0.15": 0.975, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -3820,62 +3820,62 @@ Results of the model in various experiments on different datasets. \ }, "face_nose_4": { "count": 200, - "mean": 0.043068, - "median": 0.029534, - "std": 0.039527, - "sem": 0.002802, - "min": 0.007437, - "max": 0.266672, - "recall-0.025": 0.43, - "recall-0.05": 0.71, - "recall-0.1": 0.93, - "recall-0.15": 0.975, + "mean": 0.041396, + "median": 0.029731, + "std": 0.036628, + "sem": 0.002596, + "min": 0.004261, + "max": 0.259898, + "recall-0.025": 0.41, + "recall-0.05": 0.715, + "recall-0.1": 0.935, + "recall-0.15": 0.98, "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_nose_5": { "count": 200, - "mean": 0.050604, - "median": 0.038369, - "std": 0.046806, - "sem": 0.003318, - "min": 0.003893, - "max": 0.495447, - "recall-0.025": 0.28, - "recall-0.05": 0.625, - "recall-0.1": 0.92, - "recall-0.15": 0.985, - "recall-0.25": 0.99, + "mean": 0.050559, + "median": 0.039629, + "std": 0.038802, + "sem": 0.002751, + "min": 0.002554, + "max": 0.224498, + "recall-0.025": 0.265, + "recall-0.05": 0.605, + "recall-0.1": 0.905, + "recall-0.15": 0.97, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_nose_6": { "count": 200, - "mean": 0.042506, - "median": 0.032726, - "std": 0.032739, - "sem": 0.002321, - "min": 0.002735, - "max": 0.246241, - "recall-0.025": 0.345, - "recall-0.05": 0.67, - "recall-0.1": 0.96, - "recall-0.15": 0.985, + "mean": 0.044217, + "median": 0.034096, + "std": 0.032252, + "sem": 0.002286, + "min": 0.006166, + "max": 0.215681, + "recall-0.025": 0.37, + "recall-0.05": 0.645, + "recall-0.1": 0.945, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_nose_7": { "count": 200, - "mean": 0.037219, - "median": 0.028829, - "std": 0.029844, - "sem": 0.002116, - "min": 0.005056, - "max": 0.232645, - "recall-0.025": 0.42, - "recall-0.05": 0.74, + "mean": 0.038805, + "median": 0.030152, + "std": 0.030407, + "sem": 0.002155, + "min": 0.004756, + "max": 0.212123, + "recall-0.025": 0.41, + "recall-0.05": 0.735, "recall-0.1": 0.97, "recall-0.15": 0.99, "recall-0.25": 1.0, @@ -3884,31 +3884,31 @@ Results of the model in various experiments on different datasets. \ }, "face_nose_8": { "count": 200, - "mean": 0.037841, - "median": 0.029049, - "std": 0.032022, - "sem": 0.00227, - "min": 0.002975, - "max": 0.218847, - "recall-0.025": 0.445, + "mean": 0.039208, + "median": 0.029192, + "std": 0.031799, + "sem": 0.002254, + "min": 0.004305, + "max": 0.247432, + "recall-0.025": 0.4, "recall-0.05": 0.74, - "recall-0.1": 0.965, - "recall-0.15": 0.985, + "recall-0.1": 0.955, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_nose_9": { "count": 200, - "mean": 0.040956, - "median": 0.030063, - "std": 0.035993, - "sem": 0.002551, - "min": 0.004877, - "max": 0.293955, - "recall-0.025": 0.38, - "recall-0.05": 0.745, - "recall-0.1": 0.93, + "mean": 0.042319, + "median": 0.032804, + "std": 0.036196, + "sem": 0.002566, + "min": 0.00521, + "max": 0.325443, + "recall-0.025": 0.36, + "recall-0.05": 0.72, + "recall-0.1": 0.935, "recall-0.15": 0.99, "recall-0.25": 0.995, "recall-0.5": 1.0, @@ -3916,47 +3916,47 @@ Results of the model in various experiments on different datasets. \ }, "face_eye_right_1": { "count": 200, - "mean": 0.056869, - "median": 0.046503, - "std": 0.039249, - "sem": 0.002782, - "min": 0.006554, - "max": 0.233716, - "recall-0.025": 0.21, - "recall-0.05": 0.54, - "recall-0.1": 0.86, - "recall-0.15": 0.975, - "recall-0.25": 1.0, + "mean": 0.059103, + "median": 0.046272, + "std": 0.042587, + "sem": 0.003019, + "min": 0.004579, + "max": 0.275434, + "recall-0.025": 0.17, + "recall-0.05": 0.55, + "recall-0.1": 0.855, + "recall-0.15": 0.965, + "recall-0.25": 0.995, "recall-0.5": 1.0, "num_labels": 200 }, "face_eye_right_2": { "count": 200, - "mean": 0.049995, - "median": 0.040838, - "std": 0.034554, - "sem": 0.002449, - "min": 0.005274, - "max": 0.240884, - "recall-0.025": 0.215, - "recall-0.05": 0.625, - "recall-0.1": 0.915, - "recall-0.15": 0.985, - "recall-0.25": 1.0, + "mean": 0.053364, + "median": 0.041535, + "std": 0.044118, + "sem": 0.003127, + "min": 0.004065, + "max": 0.293019, + "recall-0.025": 0.22, + "recall-0.05": 0.65, + "recall-0.1": 0.9, + "recall-0.15": 0.955, + "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "face_eye_right_3": { "count": 200, - "mean": 0.044869, - "median": 0.034266, - "std": 0.035937, - "sem": 0.002548, - "min": 0.004599, - "max": 0.248243, - "recall-0.025": 0.315, - "recall-0.05": 0.675, - "recall-0.1": 0.94, + "mean": 0.044198, + "median": 0.034108, + "std": 0.035136, + "sem": 0.002491, + "min": 0.002807, + "max": 0.217606, + "recall-0.025": 0.31, + "recall-0.05": 0.71, + "recall-0.1": 0.93, "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -3964,142 +3964,142 @@ Results of the model in various experiments on different datasets. \ }, "face_eye_right_4": { "count": 200, - "mean": 0.039925, - "median": 0.029772, - "std": 0.033423, - "sem": 0.002369, - "min": 0.002518, - "max": 0.233148, - "recall-0.025": 0.41, - "recall-0.05": 0.73, - "recall-0.1": 0.955, - "recall-0.15": 0.985, - "recall-0.25": 1.0, - "recall-0.5": 1.0, - "num_labels": 200 - }, - "face_eye_right_5": { - "count": 200, - "mean": 0.042813, - "median": 0.033918, - "std": 0.031165, - "sem": 0.002209, - "min": 0.004612, - "max": 0.234026, - "recall-0.025": 0.325, - "recall-0.05": 0.705, - "recall-0.1": 0.96, - "recall-0.15": 0.985, - "recall-0.25": 1.0, - "recall-0.5": 1.0, - "num_labels": 200 - }, - "face_eye_right_6": { - "count": 200, - "mean": 0.051869, - "median": 0.040294, - "std": 0.038351, - "sem": 0.002719, - "min": 0.005786, - "max": 0.234888, - "recall-0.025": 0.225, - "recall-0.05": 0.63, - "recall-0.1": 0.895, - "recall-0.15": 0.965, - "recall-0.25": 1.0, - "recall-0.5": 1.0, - "num_labels": 200 - }, - "face_eye_left_1": { - "count": 200, - "mean": 0.031596, - "median": 0.024022, - "std": 0.026413, - "sem": 0.001872, - "min": 0.003087, - "max": 0.182303, - "recall-0.025": 0.515, - "recall-0.05": 0.82, - "recall-0.1": 0.98, - "recall-0.15": 0.99, - "recall-0.25": 1.0, - "recall-0.5": 1.0, - "num_labels": 200 - }, - "face_eye_left_2": { - "count": 200, - "mean": 0.03346, - "median": 0.026404, - "std": 0.025438, - "sem": 0.001803, - "min": 0.004602, - "max": 0.13717, - "recall-0.025": 0.475, - "recall-0.05": 0.81, - "recall-0.1": 0.97, - "recall-0.15": 1.0, - "recall-0.25": 1.0, - "recall-0.5": 1.0, - "num_labels": 200 - }, - "face_eye_left_3": { - "count": 200, - "mean": 0.034918, - "median": 0.026161, - "std": 0.027446, - "sem": 0.001946, - "min": 0.004009, - "max": 0.172443, - "recall-0.025": 0.48, - "recall-0.05": 0.785, - "recall-0.1": 0.98, - "recall-0.15": 0.99, - "recall-0.25": 1.0, - "recall-0.5": 1.0, - "num_labels": 200 - }, - "face_eye_left_4": { - "count": 200, - "mean": 0.037483, - "median": 0.028162, - "std": 0.030114, - "sem": 0.002135, - "min": 0.001832, - "max": 0.181146, - "recall-0.025": 0.44, - "recall-0.05": 0.755, + "mean": 0.039895, + "median": 0.032054, + "std": 0.030065, + "sem": 0.002131, + "min": 0.002661, + "max": 0.206558, + "recall-0.025": 0.375, + "recall-0.05": 0.745, "recall-0.1": 0.95, "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, + "face_eye_right_5": { + "count": 200, + "mean": 0.04312, + "median": 0.035772, + "std": 0.031091, + "sem": 0.002204, + "min": 0.003342, + "max": 0.22435, + "recall-0.025": 0.27, + "recall-0.05": 0.745, + "recall-0.1": 0.955, + "recall-0.15": 0.99, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "face_eye_right_6": { + "count": 200, + "mean": 0.052039, + "median": 0.039847, + "std": 0.039627, + "sem": 0.002809, + "min": 0.007501, + "max": 0.25223, + "recall-0.025": 0.225, + "recall-0.05": 0.64, + "recall-0.1": 0.89, + "recall-0.15": 0.975, + "recall-0.25": 0.995, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "face_eye_left_1": { + "count": 200, + "mean": 0.032593, + "median": 0.026232, + "std": 0.024384, + "sem": 0.001729, + "min": 0.0029, + "max": 0.208175, + "recall-0.025": 0.465, + "recall-0.05": 0.82, + "recall-0.1": 0.975, + "recall-0.15": 0.995, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "face_eye_left_2": { + "count": 200, + "mean": 0.033766, + "median": 0.025145, + "std": 0.026084, + "sem": 0.001849, + "min": 0.001757, + "max": 0.161408, + "recall-0.025": 0.495, + "recall-0.05": 0.78, + "recall-0.1": 0.985, + "recall-0.15": 0.995, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "face_eye_left_3": { + "count": 200, + "mean": 0.036655, + "median": 0.027552, + "std": 0.030935, + "sem": 0.002193, + "min": 0.003278, + "max": 0.194454, + "recall-0.025": 0.45, + "recall-0.05": 0.79, + "recall-0.1": 0.945, + "recall-0.15": 0.995, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "face_eye_left_4": { + "count": 200, + "mean": 0.037543, + "median": 0.027845, + "std": 0.029381, + "sem": 0.002083, + "min": 0.002957, + "max": 0.142146, + "recall-0.025": 0.46, + "recall-0.05": 0.76, + "recall-0.1": 0.93, + "recall-0.15": 1.0, + "recall-0.25": 1.0, + "recall-0.5": 1.0, + "num_labels": 200 + }, "face_eye_left_5": { "count": 200, - "mean": 0.03666, - "median": 0.026045, - "std": 0.031044, - "sem": 0.002201, - "min": 0.002467, - "max": 0.235378, - "recall-0.025": 0.49, + "mean": 0.035304, + "median": 0.025806, + "std": 0.028108, + "sem": 0.001993, + "min": 0.003219, + "max": 0.152377, + "recall-0.025": 0.48, "recall-0.05": 0.755, "recall-0.1": 0.965, - "recall-0.15": 0.99, + "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_eye_left_6": { "count": 200, - "mean": 0.033234, - "median": 0.025435, - "std": 0.025729, - "sem": 0.001824, - "min": 0.002757, - "max": 0.15935, - "recall-0.025": 0.48, - "recall-0.05": 0.795, + "mean": 0.033784, + "median": 0.026373, + "std": 0.025695, + "sem": 0.001821, + "min": 0.002518, + "max": 0.192682, + "recall-0.025": 0.47, + "recall-0.05": 0.785, "recall-0.1": 0.98, "recall-0.15": 0.995, "recall-0.25": 1.0, @@ -4108,31 +4108,31 @@ Results of the model in various experiments on different datasets. \ }, "face_mouth_1": { "count": 200, - "mean": 0.051735, - "median": 0.039899, - "std": 0.039298, - "sem": 0.002786, - "min": 0.005669, - "max": 0.290154, + "mean": 0.052112, + "median": 0.040077, + "std": 0.039332, + "sem": 0.002788, + "min": 0.005142, + "max": 0.249373, "recall-0.025": 0.285, - "recall-0.05": 0.595, - "recall-0.1": 0.9, + "recall-0.05": 0.58, + "recall-0.1": 0.91, "recall-0.15": 0.98, - "recall-0.25": 0.995, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_2": { "count": 200, - "mean": 0.043506, - "median": 0.035751, - "std": 0.031903, - "sem": 0.002262, - "min": 0.004764, - "max": 0.236393, - "recall-0.025": 0.34, - "recall-0.05": 0.665, - "recall-0.1": 0.96, + "mean": 0.04539, + "median": 0.037456, + "std": 0.032756, + "sem": 0.002322, + "min": 0.004788, + "max": 0.212977, + "recall-0.025": 0.325, + "recall-0.05": 0.635, + "recall-0.1": 0.945, "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -4140,47 +4140,47 @@ Results of the model in various experiments on different datasets. \ }, "face_mouth_3": { "count": 200, - "mean": 0.039831, - "median": 0.030892, - "std": 0.031561, - "sem": 0.002237, - "min": 0.004281, - "max": 0.236562, - "recall-0.025": 0.385, - "recall-0.05": 0.735, - "recall-0.1": 0.95, - "recall-0.15": 0.99, + "mean": 0.04183, + "median": 0.033479, + "std": 0.034511, + "sem": 0.002446, + "min": 0.005479, + "max": 0.247644, + "recall-0.025": 0.395, + "recall-0.05": 0.715, + "recall-0.1": 0.96, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_4": { "count": 200, - "mean": 0.038613, - "median": 0.029996, - "std": 0.032049, - "sem": 0.002272, - "min": 0.001992, - "max": 0.230884, - "recall-0.025": 0.4, - "recall-0.05": 0.725, - "recall-0.1": 0.97, - "recall-0.15": 0.985, + "mean": 0.03975, + "median": 0.030003, + "std": 0.034162, + "sem": 0.002422, + "min": 0.004257, + "max": 0.226371, + "recall-0.025": 0.415, + "recall-0.05": 0.715, + "recall-0.1": 0.95, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_5": { "count": 200, - "mean": 0.038166, - "median": 0.029592, - "std": 0.031494, - "sem": 0.002233, - "min": 0.004287, - "max": 0.227495, - "recall-0.025": 0.4, + "mean": 0.038423, + "median": 0.028581, + "std": 0.03315, + "sem": 0.00235, + "min": 0.005424, + "max": 0.234223, + "recall-0.025": 0.41, "recall-0.05": 0.755, - "recall-0.1": 0.97, + "recall-0.1": 0.955, "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -4188,31 +4188,31 @@ Results of the model in various experiments on different datasets. \ }, "face_mouth_6": { "count": 200, - "mean": 0.035487, - "median": 0.025956, - "std": 0.032023, - "sem": 0.00227, - "min": 0.002067, - "max": 0.269783, - "recall-0.025": 0.475, - "recall-0.05": 0.795, - "recall-0.1": 0.965, - "recall-0.15": 0.99, - "recall-0.25": 0.995, + "mean": 0.034266, + "median": 0.026817, + "std": 0.026173, + "sem": 0.001855, + "min": 0.003001, + "max": 0.219756, + "recall-0.025": 0.455, + "recall-0.05": 0.81, + "recall-0.1": 0.98, + "recall-0.15": 0.995, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_7": { "count": 200, - "mean": 0.038348, - "median": 0.027332, - "std": 0.029441, - "sem": 0.002087, - "min": 0.002369, - "max": 0.157415, - "recall-0.025": 0.44, - "recall-0.05": 0.73, - "recall-0.1": 0.94, + "mean": 0.038031, + "median": 0.029012, + "std": 0.028867, + "sem": 0.002046, + "min": 0.002185, + "max": 0.204638, + "recall-0.025": 0.405, + "recall-0.05": 0.745, + "recall-0.1": 0.955, "recall-0.15": 0.995, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -4220,63 +4220,63 @@ Results of the model in various experiments on different datasets. \ }, "face_mouth_8": { "count": 200, - "mean": 0.037678, - "median": 0.026762, - "std": 0.031335, - "sem": 0.002221, - "min": 0.001179, - "max": 0.258612, - "recall-0.025": 0.43, - "recall-0.05": 0.735, + "mean": 0.035789, + "median": 0.028164, + "std": 0.028055, + "sem": 0.001989, + "min": 0.002584, + "max": 0.20268, + "recall-0.025": 0.425, + "recall-0.05": 0.78, "recall-0.1": 0.955, "recall-0.15": 0.995, - "recall-0.25": 0.995, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_9": { "count": 200, - "mean": 0.038313, - "median": 0.028166, - "std": 0.032001, - "sem": 0.002268, - "min": 0.001521, - "max": 0.202299, - "recall-0.025": 0.45, - "recall-0.05": 0.75, - "recall-0.1": 0.94, - "recall-0.15": 0.99, + "mean": 0.038791, + "median": 0.030387, + "std": 0.034401, + "sem": 0.002439, + "min": 0.000991, + "max": 0.219921, + "recall-0.025": 0.425, + "recall-0.05": 0.745, + "recall-0.1": 0.955, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_10": { "count": 200, - "mean": 0.040148, - "median": 0.030339, - "std": 0.03251, - "sem": 0.002305, - "min": 0.006038, - "max": 0.221091, - "recall-0.025": 0.4, - "recall-0.05": 0.72, - "recall-0.1": 0.945, - "recall-0.15": 0.99, + "mean": 0.042844, + "median": 0.032617, + "std": 0.035702, + "sem": 0.002531, + "min": 0.003737, + "max": 0.224447, + "recall-0.025": 0.39, + "recall-0.05": 0.695, + "recall-0.1": 0.93, + "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_11": { "count": 200, - "mean": 0.044475, - "median": 0.036832, - "std": 0.033414, - "sem": 0.002369, - "min": 0.004361, - "max": 0.233448, - "recall-0.025": 0.32, - "recall-0.05": 0.655, - "recall-0.1": 0.95, + "mean": 0.045981, + "median": 0.036039, + "std": 0.034127, + "sem": 0.002419, + "min": 0.004916, + "max": 0.232095, + "recall-0.025": 0.325, + "recall-0.05": 0.625, + "recall-0.1": 0.945, "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -4284,79 +4284,79 @@ Results of the model in various experiments on different datasets. \ }, "face_mouth_12": { "count": 200, - "mean": 0.047135, - "median": 0.03825, - "std": 0.033896, - "sem": 0.002403, - "min": 0.005577, - "max": 0.232724, - "recall-0.025": 0.3, - "recall-0.05": 0.625, - "recall-0.1": 0.955, - "recall-0.15": 0.99, + "mean": 0.049933, + "median": 0.040339, + "std": 0.036098, + "sem": 0.002559, + "min": 0.00398, + "max": 0.233587, + "recall-0.025": 0.335, + "recall-0.05": 0.57, + "recall-0.1": 0.91, + "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_13": { "count": 200, - "mean": 0.049548, - "median": 0.038374, - "std": 0.036389, - "sem": 0.00258, - "min": 0.005381, - "max": 0.256133, - "recall-0.025": 0.28, + "mean": 0.051359, + "median": 0.038709, + "std": 0.038963, + "sem": 0.002762, + "min": 0.002821, + "max": 0.245555, + "recall-0.025": 0.285, "recall-0.05": 0.59, - "recall-0.1": 0.92, - "recall-0.15": 0.985, - "recall-0.25": 0.995, + "recall-0.1": 0.91, + "recall-0.15": 0.975, + "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_14": { "count": 200, - "mean": 0.042462, - "median": 0.033265, - "std": 0.03064, - "sem": 0.002172, - "min": 0.004478, - "max": 0.22803, - "recall-0.025": 0.335, - "recall-0.05": 0.66, - "recall-0.1": 0.95, - "recall-0.15": 0.995, + "mean": 0.043777, + "median": 0.035281, + "std": 0.033526, + "sem": 0.002377, + "min": 0.002429, + "max": 0.232967, + "recall-0.025": 0.35, + "recall-0.05": 0.68, + "recall-0.1": 0.955, + "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_15": { "count": 200, - "mean": 0.040281, - "median": 0.031673, - "std": 0.031942, - "sem": 0.002264, - "min": 0.001826, - "max": 0.225971, - "recall-0.025": 0.375, - "recall-0.05": 0.72, - "recall-0.1": 0.945, - "recall-0.15": 0.99, + "mean": 0.041671, + "median": 0.03385, + "std": 0.033668, + "sem": 0.002387, + "min": 0.00439, + "max": 0.234965, + "recall-0.025": 0.365, + "recall-0.05": 0.71, + "recall-0.1": 0.95, + "recall-0.15": 0.98, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_16": { "count": 200, - "mean": 0.036562, - "median": 0.028461, - "std": 0.029933, - "sem": 0.002122, - "min": 0.001491, - "max": 0.202205, - "recall-0.025": 0.41, - "recall-0.05": 0.76, - "recall-0.1": 0.965, + "mean": 0.036197, + "median": 0.029747, + "std": 0.029946, + "sem": 0.002123, + "min": 0.001894, + "max": 0.23254, + "recall-0.025": 0.425, + "recall-0.05": 0.78, + "recall-0.1": 0.98, "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -4364,63 +4364,63 @@ Results of the model in various experiments on different datasets. \ }, "face_mouth_17": { "count": 200, - "mean": 0.037839, - "median": 0.028055, - "std": 0.027902, - "sem": 0.001978, - "min": 0.002988, - "max": 0.12683, - "recall-0.025": 0.46, - "recall-0.05": 0.725, - "recall-0.1": 0.965, - "recall-0.15": 1.0, + "mean": 0.037799, + "median": 0.027925, + "std": 0.030043, + "sem": 0.00213, + "min": 0.001642, + "max": 0.204357, + "recall-0.025": 0.42, + "recall-0.05": 0.745, + "recall-0.1": 0.945, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_18": { "count": 200, - "mean": 0.034681, - "median": 0.025213, - "std": 0.031163, - "sem": 0.002209, - "min": 0.001557, - "max": 0.200834, - "recall-0.025": 0.485, - "recall-0.05": 0.785, + "mean": 0.033237, + "median": 0.023593, + "std": 0.029273, + "sem": 0.002075, + "min": 0.003573, + "max": 0.226853, + "recall-0.025": 0.525, + "recall-0.05": 0.83, "recall-0.1": 0.965, - "recall-0.15": 0.985, + "recall-0.15": 0.99, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_19": { "count": 200, - "mean": 0.036051, - "median": 0.025861, - "std": 0.031009, - "sem": 0.002198, - "min": 0.004114, - "max": 0.219966, - "recall-0.025": 0.475, - "recall-0.05": 0.75, - "recall-0.1": 0.97, - "recall-0.15": 0.99, + "mean": 0.037513, + "median": 0.027534, + "std": 0.033367, + "sem": 0.002365, + "min": 0.001588, + "max": 0.233388, + "recall-0.025": 0.465, + "recall-0.05": 0.76, + "recall-0.1": 0.965, + "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, "num_labels": 200 }, "face_mouth_20": { "count": 200, - "mean": 0.041932, - "median": 0.033339, - "std": 0.033568, - "sem": 0.00238, - "min": 0.004928, - "max": 0.226148, - "recall-0.025": 0.37, - "recall-0.05": 0.705, - "recall-0.1": 0.955, + "mean": 0.042378, + "median": 0.033153, + "std": 0.032999, + "sem": 0.002339, + "min": 0.005659, + "max": 0.232536, + "recall-0.025": 0.375, + "recall-0.05": 0.685, + "recall-0.1": 0.96, "recall-0.15": 0.985, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -4428,686 +4428,686 @@ Results of the model in various experiments on different datasets. \ }, "hand_wrist_left": { "count": 200, - "mean": 0.034787, - "median": 0.020523, - "std": 0.040773, - "sem": 0.00289, - "min": 0.002183, - "max": 0.284747, - "recall-0.025": 0.6, - "recall-0.05": 0.83, - "recall-0.1": 0.93, - "recall-0.15": 0.975, + "mean": 0.033907, + "median": 0.021211, + "std": 0.041572, + "sem": 0.002947, + "min": 0.003081, + "max": 0.295968, + "recall-0.025": 0.625, + "recall-0.05": 0.845, + "recall-0.1": 0.935, + "recall-0.15": 0.965, "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_thumb_left_1": { "count": 200, - "mean": 0.039069, - "median": 0.021439, - "std": 0.052576, - "sem": 0.003727, - "min": 0.001621, - "max": 0.423798, - "recall-0.025": 0.575, - "recall-0.05": 0.81, - "recall-0.1": 0.915, - "recall-0.15": 0.955, + "mean": 0.035824, + "median": 0.021383, + "std": 0.044051, + "sem": 0.003123, + "min": 0.002357, + "max": 0.289266, + "recall-0.025": 0.555, + "recall-0.05": 0.84, + "recall-0.1": 0.91, + "recall-0.15": 0.97, "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_thumb_left_2": { "count": 200, - "mean": 0.043185, - "median": 0.024942, - "std": 0.052401, - "sem": 0.003715, - "min": 0.003383, - "max": 0.383716, - "recall-0.025": 0.5, - "recall-0.05": 0.765, - "recall-0.1": 0.915, + "mean": 0.038587, + "median": 0.025658, + "std": 0.041133, + "sem": 0.002916, + "min": 0.002656, + "max": 0.268483, + "recall-0.025": 0.49, + "recall-0.05": 0.8, + "recall-0.1": 0.93, + "recall-0.15": 0.97, + "recall-0.25": 0.995, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "hand_finger_thumb_left_3": { + "count": 200, + "mean": 0.042478, + "median": 0.027781, + "std": 0.052468, + "sem": 0.003719, + "min": 0.002357, + "max": 0.34366, + "recall-0.025": 0.45, + "recall-0.05": 0.795, + "recall-0.1": 0.93, + "recall-0.15": 0.96, + "recall-0.25": 0.975, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "hand_finger_thumb_left_4": { + "count": 200, + "mean": 0.047151, + "median": 0.028218, + "std": 0.057054, + "sem": 0.004044, + "min": 0.001491, + "max": 0.380311, + "recall-0.025": 0.45, + "recall-0.05": 0.75, + "recall-0.1": 0.91, + "recall-0.15": 0.935, + "recall-0.25": 0.975, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "hand_finger_index_left_1": { + "count": 200, + "mean": 0.043807, + "median": 0.025788, + "std": 0.053959, + "sem": 0.003825, + "min": 0.003653, + "max": 0.363125, + "recall-0.025": 0.485, + "recall-0.05": 0.76, + "recall-0.1": 0.9, "recall-0.15": 0.955, "recall-0.25": 0.985, "recall-0.5": 1.0, "num_labels": 200 }, - "hand_finger_thumb_left_3": { - "count": 199, - "mean": 0.045719, - "median": 0.028427, - "std": 0.057543, - "sem": 0.004089, - "min": 0.003531, - "max": 0.360091, - "recall-0.025": 0.425, - "recall-0.05": 0.765, - "recall-0.1": 0.915, - "recall-0.15": 0.94, - "recall-0.25": 0.97, - "recall-0.5": 0.995, - "num_labels": 200 - }, - "hand_finger_thumb_left_4": { - "count": 199, - "mean": 0.050939, - "median": 0.030921, - "std": 0.061485, - "sem": 0.00437, - "min": 0.006196, - "max": 0.363479, - "recall-0.025": 0.4, - "recall-0.05": 0.68, - "recall-0.1": 0.875, - "recall-0.15": 0.935, - "recall-0.25": 0.965, - "recall-0.5": 0.995, - "num_labels": 200 - }, - "hand_finger_index_left_1": { - "count": 200, - "mean": 0.045544, - "median": 0.022235, - "std": 0.060877, - "sem": 0.004315, - "min": 0.001757, - "max": 0.370038, - "recall-0.025": 0.55, - "recall-0.05": 0.765, - "recall-0.1": 0.91, - "recall-0.15": 0.935, - "recall-0.25": 0.97, - "recall-0.5": 1.0, - "num_labels": 200 - }, "hand_finger_index_left_2": { "count": 200, - "mean": 0.047076, - "median": 0.022899, - "std": 0.0666, - "sem": 0.004721, - "min": 0.002858, - "max": 0.402141, - "recall-0.025": 0.525, - "recall-0.05": 0.77, - "recall-0.1": 0.895, - "recall-0.15": 0.935, - "recall-0.25": 0.965, + "mean": 0.043866, + "median": 0.02431, + "std": 0.057409, + "sem": 0.00407, + "min": 0.003419, + "max": 0.376193, + "recall-0.025": 0.51, + "recall-0.05": 0.79, + "recall-0.1": 0.9, + "recall-0.15": 0.96, + "recall-0.25": 0.97, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_index_left_3": { "count": 200, - "mean": 0.047521, - "median": 0.027844, - "std": 0.060916, - "sem": 0.004318, - "min": 0.001368, - "max": 0.343874, + "mean": 0.047288, + "median": 0.027289, + "std": 0.061768, + "sem": 0.004379, + "min": 0.002414, + "max": 0.375863, "recall-0.025": 0.465, - "recall-0.05": 0.755, - "recall-0.1": 0.895, - "recall-0.15": 0.93, + "recall-0.05": 0.79, + "recall-0.1": 0.89, + "recall-0.15": 0.95, "recall-0.25": 0.97, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_index_left_4": { "count": 200, - "mean": 0.047865, - "median": 0.027929, - "std": 0.058671, - "sem": 0.004159, - "min": 0.001654, - "max": 0.354844, - "recall-0.025": 0.445, - "recall-0.05": 0.73, - "recall-0.1": 0.9, - "recall-0.15": 0.93, + "mean": 0.047421, + "median": 0.029007, + "std": 0.056438, + "sem": 0.004001, + "min": 0.002811, + "max": 0.373442, + "recall-0.025": 0.43, + "recall-0.05": 0.76, + "recall-0.1": 0.895, + "recall-0.15": 0.945, "recall-0.25": 0.98, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_middle_left_1": { "count": 200, - "mean": 0.044267, - "median": 0.020495, - "std": 0.065468, - "sem": 0.004641, - "min": 0.002442, - "max": 0.485995, - "recall-0.025": 0.58, - "recall-0.05": 0.78, - "recall-0.1": 0.905, - "recall-0.15": 0.94, - "recall-0.25": 0.975, + "mean": 0.039459, + "median": 0.021805, + "std": 0.050021, + "sem": 0.003546, + "min": 0.000505, + "max": 0.311175, + "recall-0.025": 0.555, + "recall-0.05": 0.79, + "recall-0.1": 0.925, + "recall-0.15": 0.97, + "recall-0.25": 0.985, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_middle_left_2": { "count": 200, - "mean": 0.043736, - "median": 0.020647, - "std": 0.064577, - "sem": 0.004578, - "min": 0.002746, - "max": 0.363195, + "mean": 0.041577, + "median": 0.022278, + "std": 0.056229, + "sem": 0.003986, + "min": 0.001024, + "max": 0.337001, "recall-0.025": 0.555, - "recall-0.05": 0.785, + "recall-0.05": 0.78, "recall-0.1": 0.91, - "recall-0.15": 0.935, - "recall-0.25": 0.96, + "recall-0.15": 0.955, + "recall-0.25": 0.975, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_middle_left_3": { "count": 200, - "mean": 0.043549, - "median": 0.022383, - "std": 0.056546, - "sem": 0.004008, - "min": 0.004705, - "max": 0.352464, - "recall-0.025": 0.54, - "recall-0.05": 0.785, - "recall-0.1": 0.905, - "recall-0.15": 0.935, - "recall-0.25": 0.985, + "mean": 0.044647, + "median": 0.024053, + "std": 0.059624, + "sem": 0.004227, + "min": 0.001904, + "max": 0.382381, + "recall-0.025": 0.525, + "recall-0.05": 0.775, + "recall-0.1": 0.9, + "recall-0.15": 0.945, + "recall-0.25": 0.975, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_middle_left_4": { - "count": 199, - "mean": 0.047835, - "median": 0.026377, - "std": 0.057893, - "sem": 0.004114, - "min": 0.002097, - "max": 0.378645, - "recall-0.025": 0.48, - "recall-0.05": 0.71, - "recall-0.1": 0.89, - "recall-0.15": 0.925, + "count": 200, + "mean": 0.048476, + "median": 0.028704, + "std": 0.063326, + "sem": 0.004489, + "min": 0.004598, + "max": 0.454481, + "recall-0.025": 0.46, + "recall-0.05": 0.74, + "recall-0.1": 0.895, + "recall-0.15": 0.94, "recall-0.25": 0.975, - "recall-0.5": 0.995, + "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_ring_left_1": { "count": 200, - "mean": 0.041905, - "median": 0.020252, - "std": 0.056736, - "sem": 0.004022, - "min": 0.002964, - "max": 0.334995, - "recall-0.025": 0.575, + "mean": 0.041338, + "median": 0.021624, + "std": 0.052726, + "sem": 0.003738, + "min": 0.00225, + "max": 0.316564, + "recall-0.025": 0.525, "recall-0.05": 0.765, + "recall-0.1": 0.915, + "recall-0.15": 0.955, + "recall-0.25": 0.98, + "recall-0.5": 1.0, + "num_labels": 200 + }, + "hand_finger_ring_left_2": { + "count": 200, + "mean": 0.041719, + "median": 0.023119, + "std": 0.056069, + "sem": 0.003975, + "min": 0.002078, + "max": 0.3279, + "recall-0.025": 0.535, + "recall-0.05": 0.785, "recall-0.1": 0.91, "recall-0.15": 0.95, "recall-0.25": 0.975, "recall-0.5": 1.0, "num_labels": 200 }, - "hand_finger_ring_left_2": { - "count": 200, - "mean": 0.042903, - "median": 0.020359, - "std": 0.061623, - "sem": 0.004368, - "min": 0.002669, - "max": 0.339056, - "recall-0.025": 0.555, - "recall-0.05": 0.79, - "recall-0.1": 0.905, - "recall-0.15": 0.935, - "recall-0.25": 0.97, - "recall-0.5": 1.0, - "num_labels": 200 - }, "hand_finger_ring_left_3": { "count": 200, - "mean": 0.046928, - "median": 0.022992, - "std": 0.062077, - "sem": 0.0044, - "min": 0.001175, - "max": 0.346047, - "recall-0.025": 0.52, - "recall-0.05": 0.755, + "mean": 0.044824, + "median": 0.022802, + "std": 0.062775, + "sem": 0.00445, + "min": 0.002696, + "max": 0.427774, + "recall-0.025": 0.55, + "recall-0.05": 0.78, "recall-0.1": 0.905, - "recall-0.15": 0.925, + "recall-0.15": 0.94, "recall-0.25": 0.97, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_ring_left_4": { "count": 199, - "mean": 0.048631, - "median": 0.026217, - "std": 0.058447, - "sem": 0.004154, - "min": 0.001947, - "max": 0.348813, - "recall-0.025": 0.46, - "recall-0.05": 0.725, - "recall-0.1": 0.885, - "recall-0.15": 0.92, - "recall-0.25": 0.975, + "mean": 0.046982, + "median": 0.025412, + "std": 0.058307, + "sem": 0.004144, + "min": 0.002916, + "max": 0.381913, + "recall-0.025": 0.49, + "recall-0.05": 0.735, + "recall-0.1": 0.895, + "recall-0.15": 0.945, + "recall-0.25": 0.97, "recall-0.5": 0.995, "num_labels": 200 }, "hand_finger_pinky_left_1": { - "count": 199, - "mean": 0.042057, - "median": 0.022503, - "std": 0.057059, - "sem": 0.004055, - "min": 0.00275, - "max": 0.484586, - "recall-0.025": 0.53, - "recall-0.05": 0.78, - "recall-0.1": 0.895, - "recall-0.15": 0.935, - "recall-0.25": 0.98, - "recall-0.5": 0.995, + "count": 200, + "mean": 0.040888, + "median": 0.024137, + "std": 0.049029, + "sem": 0.003476, + "min": 0.004813, + "max": 0.316341, + "recall-0.025": 0.525, + "recall-0.05": 0.79, + "recall-0.1": 0.91, + "recall-0.15": 0.96, + "recall-0.25": 0.985, + "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_pinky_left_2": { "count": 200, - "mean": 0.047929, - "median": 0.027522, - "std": 0.068132, - "sem": 0.00483, - "min": 0.003919, - "max": 0.452841, - "recall-0.025": 0.455, - "recall-0.05": 0.77, - "recall-0.1": 0.9, - "recall-0.15": 0.94, - "recall-0.25": 0.96, + "mean": 0.042034, + "median": 0.022927, + "std": 0.051627, + "sem": 0.00366, + "min": 0.00293, + "max": 0.330486, + "recall-0.025": 0.54, + "recall-0.05": 0.775, + "recall-0.1": 0.905, + "recall-0.15": 0.955, + "recall-0.25": 0.98, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_pinky_left_3": { "count": 200, - "mean": 0.048367, - "median": 0.027147, - "std": 0.064016, - "sem": 0.004538, - "min": 0.002176, - "max": 0.438132, - "recall-0.025": 0.46, - "recall-0.05": 0.745, - "recall-0.1": 0.905, - "recall-0.15": 0.925, - "recall-0.25": 0.965, + "mean": 0.04436, + "median": 0.023954, + "std": 0.055784, + "sem": 0.003954, + "min": 0.003849, + "max": 0.34509, + "recall-0.025": 0.52, + "recall-0.05": 0.735, + "recall-0.1": 0.91, + "recall-0.15": 0.955, + "recall-0.25": 0.975, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_pinky_left_4": { - "count": 200, - "mean": 0.051304, - "median": 0.028634, - "std": 0.065442, - "sem": 0.004639, - "min": 0.003723, - "max": 0.432846, - "recall-0.025": 0.425, - "recall-0.05": 0.735, - "recall-0.1": 0.89, - "recall-0.15": 0.93, + "count": 199, + "mean": 0.046707, + "median": 0.025436, + "std": 0.061723, + "sem": 0.004386, + "min": 0.002369, + "max": 0.418662, + "recall-0.025": 0.48, + "recall-0.05": 0.74, + "recall-0.1": 0.905, + "recall-0.15": 0.945, "recall-0.25": 0.965, - "recall-0.5": 1.0, + "recall-0.5": 0.995, "num_labels": 200 }, "hand_wrist_right": { "count": 200, - "mean": 0.04502, - "median": 0.025582, - "std": 0.055999, - "sem": 0.00397, - "min": 0.002455, - "max": 0.301056, - "recall-0.025": 0.49, + "mean": 0.045584, + "median": 0.025673, + "std": 0.055293, + "sem": 0.00392, + "min": 0.002483, + "max": 0.38768, + "recall-0.025": 0.47, "recall-0.05": 0.755, - "recall-0.1": 0.905, - "recall-0.15": 0.945, - "recall-0.25": 0.975, + "recall-0.1": 0.88, + "recall-0.15": 0.94, + "recall-0.25": 0.99, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_thumb_right_1": { "count": 200, - "mean": 0.045455, - "median": 0.023516, - "std": 0.061813, - "sem": 0.004382, - "min": 0.003371, - "max": 0.450011, - "recall-0.025": 0.535, + "mean": 0.048806, + "median": 0.024697, + "std": 0.064566, + "sem": 0.004577, + "min": 0.002179, + "max": 0.395083, + "recall-0.025": 0.51, "recall-0.05": 0.765, - "recall-0.1": 0.885, - "recall-0.15": 0.945, + "recall-0.1": 0.865, + "recall-0.15": 0.935, "recall-0.25": 0.975, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_thumb_right_2": { "count": 200, - "mean": 0.051526, - "median": 0.027347, - "std": 0.069367, - "sem": 0.004917, - "min": 0.006174, - "max": 0.465444, - "recall-0.025": 0.42, - "recall-0.05": 0.72, - "recall-0.1": 0.885, - "recall-0.15": 0.94, - "recall-0.25": 0.965, + "mean": 0.051075, + "median": 0.028873, + "std": 0.061223, + "sem": 0.00434, + "min": 0.004578, + "max": 0.339357, + "recall-0.025": 0.44, + "recall-0.05": 0.715, + "recall-0.1": 0.88, + "recall-0.15": 0.93, + "recall-0.25": 0.97, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_thumb_right_3": { "count": 200, - "mean": 0.054992, - "median": 0.03117, - "std": 0.075594, - "sem": 0.005359, - "min": 0.003995, - "max": 0.475418, - "recall-0.025": 0.39, - "recall-0.05": 0.72, - "recall-0.1": 0.895, + "mean": 0.054529, + "median": 0.031354, + "std": 0.072759, + "sem": 0.005158, + "min": 0.00302, + "max": 0.474692, + "recall-0.025": 0.41, + "recall-0.05": 0.715, + "recall-0.1": 0.88, "recall-0.15": 0.92, "recall-0.25": 0.96, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_thumb_right_4": { - "count": 198, - "mean": 0.054438, - "median": 0.034087, - "std": 0.069426, - "sem": 0.004946, - "min": 0.005446, - "max": 0.449498, - "recall-0.025": 0.385, - "recall-0.05": 0.71, - "recall-0.1": 0.875, - "recall-0.15": 0.92, - "recall-0.25": 0.955, - "recall-0.5": 0.99, + "count": 200, + "mean": 0.059476, + "median": 0.03327, + "std": 0.07263, + "sem": 0.005149, + "min": 0.005181, + "max": 0.421784, + "recall-0.025": 0.355, + "recall-0.05": 0.69, + "recall-0.1": 0.86, + "recall-0.15": 0.9, + "recall-0.25": 0.96, + "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_index_right_1": { - "count": 200, - "mean": 0.052242, - "median": 0.02916, - "std": 0.065693, - "sem": 0.004657, - "min": 0.002753, - "max": 0.388177, - "recall-0.025": 0.43, - "recall-0.05": 0.7, + "count": 198, + "mean": 0.051578, + "median": 0.029893, + "std": 0.061039, + "sem": 0.004349, + "min": 0.002205, + "max": 0.39099, + "recall-0.025": 0.41, + "recall-0.05": 0.69, "recall-0.1": 0.88, - "recall-0.15": 0.94, + "recall-0.15": 0.93, "recall-0.25": 0.96, - "recall-0.5": 1.0, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_index_right_2": { - "count": 200, - "mean": 0.056464, - "median": 0.030516, - "std": 0.076977, - "sem": 0.005457, - "min": 0.002487, - "max": 0.46515, - "recall-0.025": 0.425, - "recall-0.05": 0.69, - "recall-0.1": 0.88, - "recall-0.15": 0.915, - "recall-0.25": 0.96, - "recall-0.5": 1.0, + "count": 197, + "mean": 0.054005, + "median": 0.029996, + "std": 0.067057, + "sem": 0.00479, + "min": 0.00116, + "max": 0.429569, + "recall-0.025": 0.395, + "recall-0.05": 0.675, + "recall-0.1": 0.87, + "recall-0.15": 0.9, + "recall-0.25": 0.95, + "recall-0.5": 0.985, "num_labels": 200 }, "hand_finger_index_right_3": { - "count": 200, - "mean": 0.056105, - "median": 0.030536, - "std": 0.081101, - "sem": 0.005749, - "min": 0.002212, - "max": 0.479357, - "recall-0.025": 0.42, - "recall-0.05": 0.7, - "recall-0.1": 0.895, - "recall-0.15": 0.92, - "recall-0.25": 0.96, - "recall-0.5": 1.0, + "count": 198, + "mean": 0.05684, + "median": 0.032797, + "std": 0.075372, + "sem": 0.00537, + "min": 0.002306, + "max": 0.448366, + "recall-0.025": 0.405, + "recall-0.05": 0.66, + "recall-0.1": 0.875, + "recall-0.15": 0.905, + "recall-0.25": 0.945, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_index_right_4": { "count": 200, - "mean": 0.057645, - "median": 0.030808, - "std": 0.083198, - "sem": 0.005898, - "min": 0.002121, - "max": 0.491726, - "recall-0.025": 0.405, - "recall-0.05": 0.715, - "recall-0.1": 0.9, - "recall-0.15": 0.92, - "recall-0.25": 0.95, + "mean": 0.058312, + "median": 0.032544, + "std": 0.075923, + "sem": 0.005382, + "min": 0.003097, + "max": 0.458618, + "recall-0.025": 0.36, + "recall-0.05": 0.635, + "recall-0.1": 0.89, + "recall-0.15": 0.925, + "recall-0.25": 0.955, "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_middle_right_1": { "count": 199, - "mean": 0.052714, - "median": 0.026636, - "std": 0.072584, - "sem": 0.005158, - "min": 0.002072, - "max": 0.483808, - "recall-0.025": 0.47, - "recall-0.05": 0.735, - "recall-0.1": 0.875, - "recall-0.15": 0.925, - "recall-0.25": 0.955, + "mean": 0.053219, + "median": 0.028408, + "std": 0.064312, + "sem": 0.00457, + "min": 0.002735, + "max": 0.402758, + "recall-0.025": 0.44, + "recall-0.05": 0.71, + "recall-0.1": 0.865, + "recall-0.15": 0.91, + "recall-0.25": 0.965, "recall-0.5": 0.995, "num_labels": 200 }, "hand_finger_middle_right_2": { - "count": 199, - "mean": 0.054634, - "median": 0.026772, - "std": 0.078781, - "sem": 0.005599, - "min": 0.003118, - "max": 0.416389, - "recall-0.025": 0.465, + "count": 198, + "mean": 0.051273, + "median": 0.027464, + "std": 0.068502, + "sem": 0.004881, + "min": 0.001643, + "max": 0.435996, + "recall-0.025": 0.44, "recall-0.05": 0.72, - "recall-0.1": 0.875, - "recall-0.15": 0.9, - "recall-0.25": 0.95, - "recall-0.5": 0.995, + "recall-0.1": 0.87, + "recall-0.15": 0.91, + "recall-0.25": 0.96, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_middle_right_3": { - "count": 199, - "mean": 0.051032, - "median": 0.029454, - "std": 0.068389, - "sem": 0.00486, - "min": 0.002132, - "max": 0.402418, - "recall-0.025": 0.43, - "recall-0.05": 0.74, - "recall-0.1": 0.895, + "count": 200, + "mean": 0.056307, + "median": 0.026939, + "std": 0.079228, + "sem": 0.005616, + "min": 0.003564, + "max": 0.480028, + "recall-0.025": 0.44, + "recall-0.05": 0.7, + "recall-0.1": 0.87, "recall-0.15": 0.92, "recall-0.25": 0.95, - "recall-0.5": 0.995, + "recall-0.5": 1.0, "num_labels": 200 }, "hand_finger_middle_right_4": { "count": 199, - "mean": 0.053973, - "median": 0.032214, - "std": 0.066149, - "sem": 0.004701, - "min": 0.003156, - "max": 0.406675, - "recall-0.025": 0.4, - "recall-0.05": 0.69, - "recall-0.1": 0.865, - "recall-0.15": 0.915, - "recall-0.25": 0.96, + "mean": 0.05749, + "median": 0.034562, + "std": 0.069732, + "sem": 0.004956, + "min": 0.003834, + "max": 0.46402, + "recall-0.025": 0.375, + "recall-0.05": 0.68, + "recall-0.1": 0.86, + "recall-0.15": 0.905, + "recall-0.25": 0.955, "recall-0.5": 0.995, "num_labels": 200 }, "hand_finger_ring_right_1": { - "count": 200, - "mean": 0.051173, - "median": 0.027527, - "std": 0.06613, - "sem": 0.004688, - "min": 0.004328, - "max": 0.38663, - "recall-0.025": 0.45, - "recall-0.05": 0.745, + "count": 197, + "mean": 0.048601, + "median": 0.028714, + "std": 0.057167, + "sem": 0.004083, + "min": 0.003601, + "max": 0.398429, + "recall-0.025": 0.42, + "recall-0.05": 0.705, "recall-0.1": 0.88, - "recall-0.15": 0.925, - "recall-0.25": 0.965, - "recall-0.5": 1.0, + "recall-0.15": 0.92, + "recall-0.25": 0.96, + "recall-0.5": 0.985, "num_labels": 200 }, "hand_finger_ring_right_2": { - "count": 200, - "mean": 0.054338, - "median": 0.027862, - "std": 0.07641, - "sem": 0.005417, - "min": 0.003974, - "max": 0.439997, - "recall-0.025": 0.45, - "recall-0.05": 0.725, - "recall-0.1": 0.865, - "recall-0.15": 0.915, - "recall-0.25": 0.95, - "recall-0.5": 1.0, + "count": 197, + "mean": 0.050446, + "median": 0.029466, + "std": 0.061341, + "sem": 0.004381, + "min": 0.002991, + "max": 0.400431, + "recall-0.025": 0.425, + "recall-0.05": 0.69, + "recall-0.1": 0.86, + "recall-0.15": 0.92, + "recall-0.25": 0.965, + "recall-0.5": 0.985, "num_labels": 200 }, "hand_finger_ring_right_3": { - "count": 199, - "mean": 0.05258, - "median": 0.027969, - "std": 0.071904, - "sem": 0.00511, - "min": 0.001667, - "max": 0.465876, - "recall-0.025": 0.41, - "recall-0.05": 0.72, - "recall-0.1": 0.88, - "recall-0.15": 0.91, - "recall-0.25": 0.95, - "recall-0.5": 0.995, + "count": 198, + "mean": 0.051281, + "median": 0.028883, + "std": 0.060937, + "sem": 0.004342, + "min": 0.002712, + "max": 0.398541, + "recall-0.025": 0.42, + "recall-0.05": 0.69, + "recall-0.1": 0.87, + "recall-0.15": 0.92, + "recall-0.25": 0.97, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_ring_right_4": { - "count": 199, - "mean": 0.05463, - "median": 0.031082, - "std": 0.065044, - "sem": 0.004623, - "min": 0.00343, - "max": 0.411593, - "recall-0.025": 0.37, - "recall-0.05": 0.685, - "recall-0.1": 0.845, - "recall-0.15": 0.91, - "recall-0.25": 0.965, - "recall-0.5": 0.995, + "count": 198, + "mean": 0.057079, + "median": 0.035827, + "std": 0.066654, + "sem": 0.004749, + "min": 0.002333, + "max": 0.447481, + "recall-0.025": 0.355, + "recall-0.05": 0.675, + "recall-0.1": 0.86, + "recall-0.15": 0.905, + "recall-0.25": 0.96, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_pinky_right_1": { - "count": 200, - "mean": 0.053115, - "median": 0.030002, - "std": 0.065799, - "sem": 0.004664, - "min": 0.003105, - "max": 0.394467, - "recall-0.025": 0.44, - "recall-0.05": 0.685, + "count": 198, + "mean": 0.049469, + "median": 0.03077, + "std": 0.05356, + "sem": 0.003816, + "min": 0.002386, + "max": 0.305898, + "recall-0.025": 0.405, + "recall-0.05": 0.69, "recall-0.1": 0.865, "recall-0.15": 0.92, "recall-0.25": 0.965, - "recall-0.5": 1.0, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_pinky_right_2": { - "count": 200, - "mean": 0.05558, - "median": 0.030008, - "std": 0.072014, - "sem": 0.005105, - "min": 0.003331, - "max": 0.444918, - "recall-0.025": 0.415, - "recall-0.05": 0.67, - "recall-0.1": 0.87, + "count": 198, + "mean": 0.053948, + "median": 0.032032, + "std": 0.061021, + "sem": 0.004348, + "min": 0.002421, + "max": 0.371323, + "recall-0.025": 0.375, + "recall-0.05": 0.68, + "recall-0.1": 0.855, "recall-0.15": 0.915, - "recall-0.25": 0.965, - "recall-0.5": 1.0, + "recall-0.25": 0.97, + "recall-0.5": 0.99, "num_labels": 200 }, "hand_finger_pinky_right_3": { - "count": 200, - "mean": 0.054841, - "median": 0.030706, - "std": 0.070395, - "sem": 0.00499, - "min": 0.003334, - "max": 0.477715, - "recall-0.025": 0.405, - "recall-0.05": 0.69, - "recall-0.1": 0.86, - "recall-0.15": 0.91, - "recall-0.25": 0.965, - "recall-0.5": 1.0, + "count": 197, + "mean": 0.053201, + "median": 0.030238, + "std": 0.060887, + "sem": 0.004349, + "min": 0.003585, + "max": 0.45522, + "recall-0.025": 0.4, + "recall-0.05": 0.685, + "recall-0.1": 0.845, + "recall-0.15": 0.915, + "recall-0.25": 0.97, + "recall-0.5": 0.985, "num_labels": 200 }, "hand_finger_pinky_right_4": { - "count": 200, - "mean": 0.056826, - "median": 0.033707, - "std": 0.073534, - "sem": 0.005213, - "min": 0.004289, - "max": 0.480549, - "recall-0.025": 0.355, - "recall-0.05": 0.69, - "recall-0.1": 0.855, - "recall-0.15": 0.915, - "recall-0.25": 0.965, - "recall-0.5": 1.0, + "count": 197, + "mean": 0.057422, + "median": 0.033099, + "std": 0.068692, + "sem": 0.004907, + "min": 0.00637, + "max": 0.481916, + "recall-0.025": 0.35, + "recall-0.05": 0.67, + "recall-0.1": 0.845, + "recall-0.15": 0.9, + "recall-0.25": 0.96, + "recall-0.5": 0.985, "num_labels": 200 }, "hip_middle": { "count": 200, - "mean": 0.030479, - "median": 0.028245, - "std": 0.01456, - "sem": 0.001032, - "min": 0.002425, - "max": 0.08483, - "recall-0.025": 0.425, - "recall-0.05": 0.885, + "mean": 0.029453, + "median": 0.026452, + "std": 0.014213, + "sem": 0.001008, + "min": 0.00232, + "max": 0.070431, + "recall-0.025": 0.44, + "recall-0.05": 0.875, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5116,14 +5116,14 @@ Results of the model in various experiments on different datasets. \ }, "shoulder_middle": { "count": 200, - "mean": 0.019078, - "median": 0.0176, - "std": 0.010333, - "sem": 0.000732, - "min": 0.001397, - "max": 0.059409, - "recall-0.025": 0.775, - "recall-0.05": 0.99, + "mean": 0.018994, + "median": 0.01728, + "std": 0.010081, + "sem": 0.000715, + "min": 0.000812, + "max": 0.049805, + "recall-0.025": 0.74, + "recall-0.05": 1.0, "recall-0.1": 1.0, "recall-0.15": 1.0, "recall-0.25": 1.0, @@ -5132,15 +5132,15 @@ Results of the model in various experiments on different datasets. \ }, "head": { "count": 200, - "mean": 0.03347, - "median": 0.029643, - "std": 0.019637, - "sem": 0.001392, - "min": 0.003129, - "max": 0.116594, - "recall-0.025": 0.39, - "recall-0.05": 0.805, - "recall-0.1": 0.995, + "mean": 0.033163, + "median": 0.029328, + "std": 0.018893, + "sem": 0.001339, + "min": 0.004732, + "max": 0.105475, + "recall-0.025": 0.395, + "recall-0.05": 0.815, + "recall-0.1": 0.99, "recall-0.15": 1.0, "recall-0.25": 1.0, "recall-0.5": 1.0, @@ -5148,50 +5148,50 @@ Results of the model in various experiments on different datasets. \ }, "body_errors": { "body": { - "count": 5199, - "mean": 0.030417, - "median": 0.023816, - "std": 0.025799, - "sem": 0.001829, - "min": 0.002788, - "max": 0.180935, + "count": 5197, + "mean": 0.030187, + "median": 0.023862, + "std": 0.02596, + "sem": 0.001841, + "min": 0.00301, + "max": 0.189787, "num_labels": 5200 }, "face": { - "count": 13597, - "mean": 0.049165, - "median": 0.03943, - "std": 0.035187, - "sem": 0.002495, - "min": 0.005063, - "max": 0.23394, + "count": 13596, + "mean": 0.04971, + "median": 0.040198, + "std": 0.035404, + "sem": 0.00251, + "min": 0.005139, + "max": 0.237957, "num_labels": 13600 }, "hand": { - "count": 8387, - "mean": 0.049293, - "median": 0.026886, - "std": 0.065146, - "sem": 0.004622, - "min": 0.003019, - "max": 0.410018, + "count": 8367, + "mean": 0.048156, + "median": 0.027426, + "std": 0.06001, + "sem": 0.004263, + "min": 0.00287, + "max": 0.385693, "num_labels": 8400 } }, "joint_recalls": { "num_labels": 27200, - "recall-0.025": 0.40893, - "recall-0.05": 0.70327, - "recall-0.1": 0.9104, - "recall-0.15": 0.96232, - "recall-0.25": 0.98871, - "recall-0.5": 0.99938 + "recall-0.025": 0.40169, + "recall-0.05": 0.70272, + "recall-0.1": 0.90963, + "recall-0.15": 0.96401, + "recall-0.25": 0.98974, + "recall-0.5": 0.99853 } } { "total_parts": 2800, - "correct_parts": 2791, - "pcp": 0.996786 + "correct_parts": 2790, + "pcp": 0.996429 } ``` From 1bd58deede7e06f06c00b1a29d623978997fd1ef Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 15 Jan 2025 16:08:24 +0100 Subject: [PATCH 05/10] Created ros wrapper for 2D pose estimation. --- ros/README.md | 20 ++ ros/docker-compose.yml | 70 +++++++ ros/dockerfile | 61 ++++++ ros/pose2D_visualizer/package.xml | 18 ++ .../pose2D_visualizer/__init__.py | 0 .../pose2D_visualizer/pose2D_visualizer.py | 152 ++++++++++++++ .../resource/pose2D_visualizer | 0 ros/pose2D_visualizer/setup.cfg | 4 + ros/pose2D_visualizer/setup.py | 23 +++ ros/pose2D_visualizer/test/test_copyright.py | 27 +++ ros/pose2D_visualizer/test/test_flake8.py | 25 +++ ros/pose2D_visualizer/test/test_pep257.py | 23 +++ ros/rpt2D_wrapper/package.xml | 18 ++ ros/rpt2D_wrapper/resource/rpt2D_wrapper | 0 ros/rpt2D_wrapper/rpt2D_wrapper/__init__.py | 0 .../rpt2D_wrapper/rpt2D_wrapper.py | 191 ++++++++++++++++++ ros/rpt2D_wrapper/setup.cfg | 4 + ros/rpt2D_wrapper/setup.py | 23 +++ ros/rpt2D_wrapper/test/test_copyright.py | 27 +++ ros/rpt2D_wrapper/test/test_flake8.py | 25 +++ ros/rpt2D_wrapper/test/test_pep257.py | 23 +++ 21 files changed, 734 insertions(+) create mode 100644 ros/README.md create mode 100644 ros/docker-compose.yml create mode 100644 ros/dockerfile create mode 100644 ros/pose2D_visualizer/package.xml create mode 100644 ros/pose2D_visualizer/pose2D_visualizer/__init__.py create mode 100644 ros/pose2D_visualizer/pose2D_visualizer/pose2D_visualizer.py create mode 100644 ros/pose2D_visualizer/resource/pose2D_visualizer create mode 100644 ros/pose2D_visualizer/setup.cfg create mode 100644 ros/pose2D_visualizer/setup.py create mode 100644 ros/pose2D_visualizer/test/test_copyright.py create mode 100644 ros/pose2D_visualizer/test/test_flake8.py create mode 100644 ros/pose2D_visualizer/test/test_pep257.py create mode 100644 ros/rpt2D_wrapper/package.xml create mode 100644 ros/rpt2D_wrapper/resource/rpt2D_wrapper create mode 100644 ros/rpt2D_wrapper/rpt2D_wrapper/__init__.py create mode 100644 ros/rpt2D_wrapper/rpt2D_wrapper/rpt2D_wrapper.py create mode 100644 ros/rpt2D_wrapper/setup.cfg create mode 100644 ros/rpt2D_wrapper/setup.py create mode 100644 ros/rpt2D_wrapper/test/test_copyright.py create mode 100644 ros/rpt2D_wrapper/test/test_flake8.py create mode 100644 ros/rpt2D_wrapper/test/test_pep257.py diff --git a/ros/README.md b/ros/README.md new file mode 100644 index 0000000..e2a75b3 --- /dev/null +++ b/ros/README.md @@ -0,0 +1,20 @@ +# ROS-Wrapper + +Run pose estimator with ros topics as inputs and publish detected poses. + +
+ +- Build container: + ```bash + docker build --progress=plain -t rapidposetriangulation_ros -f ros/dockerfile . + ``` + +- Update or remove the `ROS_DOMAIN_ID` in `docker-compose.yml` to fit your environment + +- Run and test: + ```bash + xhost +; docker compose -f ros/docker-compose.yml up + + docker exec -it ros-test_node-1 bash + export ROS_DOMAIN_ID=18 + ``` diff --git a/ros/docker-compose.yml b/ros/docker-compose.yml new file mode 100644 index 0000000..19c2077 --- /dev/null +++ b/ros/docker-compose.yml @@ -0,0 +1,70 @@ +version: "2.3" +# runtime: nvidia needs version 2 else change standard runtime at host pc + +services: + + test_node: + image: rapidposetriangulation_ros + network_mode: "host" + ipc: "host" + runtime: nvidia + privileged: true + volumes: + - ../:/RapidPoseTriangulation/ + - ../skelda/:/skelda/ + - /tmp/.X11-unix:/tmp/.X11-unix + - /dev/shm:/dev/shm + environment: + - DISPLAY + - QT_X11_NO_MITSHM=1 + - "PYTHONUNBUFFERED=1" + command: /bin/bash -i -c 'sleep infinity' + + estimator: + image: rapidposetriangulation_ros + network_mode: "host" + ipc: "host" + runtime: nvidia + privileged: true + volumes: + - ../:/RapidPoseTriangulation/ + - ../skelda/:/skelda/ + - /tmp/.X11-unix:/tmp/.X11-unix + - /dev/shm:/dev/shm + environment: + - DISPLAY + - QT_X11_NO_MITSHM=1 + - "PYTHONUNBUFFERED=1" + command: /bin/bash -i -c 'export ROS_DOMAIN_ID=18 && ros2 run rpt2D_wrapper rpt2D_wrapper' + + pose_visualizer: + image: rapidposetriangulation_ros + network_mode: "host" + ipc: "host" + runtime: nvidia + privileged: true + volumes: + - ../:/RapidPoseTriangulation/ + - ../skelda/:/skelda/ + - /tmp/.X11-unix:/tmp/.X11-unix + - /dev/shm:/dev/shm + environment: + - DISPLAY + - QT_X11_NO_MITSHM=1 + - "PYTHONUNBUFFERED=1" + command: /bin/bash -i -c 'sleep 2 && export ROS_DOMAIN_ID=18 && ros2 run pose2D_visualizer pose2D_visualizer' + + pose_viewer: + image: rapidposetriangulation_ros + network_mode: "host" + ipc: "host" + runtime: nvidia + privileged: true + volumes: + - /tmp/.X11-unix:/tmp/.X11-unix + - /dev/shm:/dev/shm + environment: + - DISPLAY + - QT_X11_NO_MITSHM=1 + - "PYTHONUNBUFFERED=1" + command: /bin/bash -i -c 'sleep 2 && export ROS_DOMAIN_ID=18 && ros2 run image_view image_view --ros-args --remap image:=/camera01/img_with_pose -p autosize:=True -p window_name:=MyImage' diff --git a/ros/dockerfile b/ros/dockerfile new file mode 100644 index 0000000..cb4a5c0 --- /dev/null +++ b/ros/dockerfile @@ -0,0 +1,61 @@ +FROM rapidposetriangulation + +# Install ROS2 +# https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html +RUN apt-get update && apt-get install -y --no-install-recommends locales +RUN locale-gen en_US en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 +RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common +RUN add-apt-repository universe +RUN apt-get update && apt-get install -y --no-install-recommends curl +RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg +RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" > /etc/apt/sources.list.d/ros2.list +RUN apt-get update && apt-get install -y --no-install-recommends ros-humble-ros-base python3-argcomplete +RUN apt-get update && apt-get install -y --no-install-recommends ros-dev-tools +RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc + +# Create ROS2 workspace for basic packages +RUN mkdir -p /project/base/src/ +RUN cd /project/base/; colcon build +RUN echo "source /project/base/install/setup.bash" >> ~/.bashrc + +# Install opencv and cv_bridge +RUN apt-get update && apt-get install -y --no-install-recommends libboost-dev +RUN apt-get update && apt-get install -y --no-install-recommends libboost-python-dev +RUN apt-get update && apt-get install -y --no-install-recommends libopencv-dev +RUN cd /project/base/src/; git clone --branch humble --depth=1 https://github.com/ros-perception/vision_opencv.git +RUN /bin/bash -i -c 'cd /project/base/; colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release' + +# Install ROS2 image viewer +RUN cd /project/base/src/; git clone --branch=humble --depth=1 https://github.com/ros-perception/image_pipeline.git +RUN cd /project/base/src/; git clone --branch=humble --depth=1 https://github.com/ros-perception/image_common.git +RUN /bin/bash -i -c 'cd /project/base/; colcon build --symlink-install --packages-select camera_calibration_parsers image_transport image_view --cmake-args -DCMAKE_BUILD_TYPE=Release' + +# Fix module not found error when displaying images +RUN apt-get update && apt-get install -y --no-install-recommends libcanberra-gtk-module libcanberra-gtk3-module + +# Create ROS2 workspace for project packages +RUN mkdir -p /project/dev_ws/src/ +RUN cd /project/dev_ws/; colcon build +RUN echo "source /project/dev_ws/install/setup.bash" >> ~/.bashrc + +# Fix ros package building error +RUN pip3 install --no-cache-dir "setuptools<=58.2.0" + +# Copy modules +COPY ./ros/pose2D_visualizer /RapidPoseTriangulation/ros/pose2D_visualizer/ +COPY ./ros/rpt2D_wrapper /RapidPoseTriangulation/ros/rpt2D_wrapper/ + +# Link and build as ros package +RUN ln -s /RapidPoseTriangulation/ros/pose2D_visualizer/ /project/dev_ws/src/pose2D_visualizer +RUN ln -s /RapidPoseTriangulation/ros/rpt2D_wrapper/ /project/dev_ws/src/rpt2D_wrapper +RUN /bin/bash -i -c 'cd /project/dev_ws/; colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release' + +# Update ros packages -> autocompletion and check +RUN /bin/bash -i -c 'ros2 pkg list' + +# Clear cache to save space, only has an effect if image is squashed +RUN apt-get autoremove -y \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +CMD ["/bin/bash"] diff --git a/ros/pose2D_visualizer/package.xml b/ros/pose2D_visualizer/package.xml new file mode 100644 index 0000000..c4a0bb2 --- /dev/null +++ b/ros/pose2D_visualizer/package.xml @@ -0,0 +1,18 @@ + + + + pose2D_visualizer + 0.0.0 + TODO: Package description + root + TODO: License declaration + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/ros/pose2D_visualizer/pose2D_visualizer/__init__.py b/ros/pose2D_visualizer/pose2D_visualizer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ros/pose2D_visualizer/pose2D_visualizer/pose2D_visualizer.py b/ros/pose2D_visualizer/pose2D_visualizer/pose2D_visualizer.py new file mode 100644 index 0000000..1b865db --- /dev/null +++ b/ros/pose2D_visualizer/pose2D_visualizer/pose2D_visualizer.py @@ -0,0 +1,152 @@ +import json +import os +import sys +import threading +import time + +import cv2 +from matplotlib import pyplot as plt +import numpy as np +import rclpy +from cv_bridge import CvBridge +from rclpy.qos import QoSHistoryPolicy, QoSProfile, QoSReliabilityPolicy +from sensor_msgs.msg import Image +from std_msgs.msg import String + +filepath = os.path.dirname(os.path.realpath(__file__)) + "/" +sys.path.append(filepath + "../../../scripts/") +import test_triangulate + +from skelda import utils_view + +# ================================================================================================== + +bridge = CvBridge() +node = None +publisher_img = None + +cam_id = "camera01" +img_input_topic = "/" + cam_id + "/pylon_ros2_camera_node/image_raw" +pose_input_topic = "/poses/" + cam_id +img_output_topic = "/" + cam_id + "/img_with_pose" + +last_input_image = None +lock = threading.Lock() + +# ================================================================================================== + + +def callback_images(image_data): + global last_input_image, lock + + # Convert into cv images from image string + if image_data.encoding == "bayer_rggb8": + bayer_image = bridge.imgmsg_to_cv2(image_data, "bayer_rggb8") + color_image = test_triangulate.bayer2rgb(bayer_image) + elif image_data.encoding == "mono8": + gray_image = bridge.imgmsg_to_cv2(image_data, "mono8") + color_image = cv2.cvtColor(gray_image, cv2.COLOR_GRAY2RGB) + elif image_data.encoding == "rgb8": + color_image = bridge.imgmsg_to_cv2(image_data, "rgb8") + else: + raise ValueError("Unknown image encoding:", image_data.encoding) + + time_stamp = image_data.header.stamp.sec + image_data.header.stamp.nanosec / 1.0e9 + + with lock: + last_input_image = (color_image, time_stamp) + + +# ================================================================================================== + + +def callback_poses(pose_data): + global last_input_image, lock + + ptime = time.time() + if last_input_image is None: + return + + # Convert pose data from json string + poses = json.loads(pose_data.data) + + # Collect inputs + images_2d = [] + timestamps = [] + with lock: + img = np.copy(last_input_image[0]) + ts = last_input_image[1] + images_2d.append(img) + timestamps.append(ts) + + # Visualize 2D poses + bodies2D = poses["bodies2D"] + colors = plt.cm.hsv(np.linspace(0, 1, len(bodies2D), endpoint=False)).tolist() + colors = [[int(c[0] * 255), int(c[1] * 255), int(c[2] * 255)] for c in colors] + for i, body in enumerate(bodies2D): + color = list(reversed(colors[i])) + img = utils_view.draw_body_in_image(img, body, poses["joints"], color) + + # Publish image with poses + publish(img) + + msg = "Visualization time: {:.3f}s" + print(msg.format(time.time() - ptime)) + + +# ================================================================================================== + + +def publish(img): + # Publish image data + msg = bridge.cv2_to_imgmsg(img, "rgb8") + publisher_img.publish(msg) + + +# ================================================================================================== + + +def main(): + global node, publisher_img + + # Start node + rclpy.init(args=sys.argv) + node = rclpy.create_node("pose2D_visualizer") + + # Quality of service settings + qos_profile = QoSProfile( + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ) + + # Create subscribers + _ = node.create_subscription( + Image, + img_input_topic, + callback_images, + qos_profile, + ) + _ = node.create_subscription( + String, + pose_input_topic, + callback_poses, + qos_profile, + ) + + # Create publishers + publisher_img = node.create_publisher(Image, img_output_topic, qos_profile) + + node.get_logger().info("Finished initialization of pose visualizer") + + # Run ros update thread + rclpy.spin(node) + + node.destroy_node() + rclpy.shutdown() + + +# ================================================================================================== + +if __name__ == "__main__": + main() diff --git a/ros/pose2D_visualizer/resource/pose2D_visualizer b/ros/pose2D_visualizer/resource/pose2D_visualizer new file mode 100644 index 0000000..e69de29 diff --git a/ros/pose2D_visualizer/setup.cfg b/ros/pose2D_visualizer/setup.cfg new file mode 100644 index 0000000..924f0ef --- /dev/null +++ b/ros/pose2D_visualizer/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/pose2D_visualizer +[install] +install_scripts=$base/lib/pose2D_visualizer diff --git a/ros/pose2D_visualizer/setup.py b/ros/pose2D_visualizer/setup.py new file mode 100644 index 0000000..87ca089 --- /dev/null +++ b/ros/pose2D_visualizer/setup.py @@ -0,0 +1,23 @@ +from setuptools import setup + +package_name = "pose2D_visualizer" + +setup( + name=package_name, + version="0.0.0", + packages=[package_name], + data_files=[ + ("share/ament_index/resource_index/packages", ["resource/" + package_name]), + ("share/" + package_name, ["package.xml"]), + ], + install_requires=["setuptools"], + zip_safe=True, + maintainer="root", + maintainer_email="root@todo.todo", + description="TODO: Package description", + license="TODO: License declaration", + tests_require=["pytest"], + entry_points={ + "console_scripts": ["pose2D_visualizer = pose2D_visualizer.pose2D_visualizer:main"], + }, +) diff --git a/ros/pose2D_visualizer/test/test_copyright.py b/ros/pose2D_visualizer/test/test_copyright.py new file mode 100644 index 0000000..8f18fa4 --- /dev/null +++ b/ros/pose2D_visualizer/test/test_copyright.py @@ -0,0 +1,27 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from ament_copyright.main import main + + +# Remove the `skip` decorator once the source file(s) have a copyright header +@pytest.mark.skip( + reason="No copyright header has been placed in the generated source file." +) +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=[".", "test"]) + assert rc == 0, "Found errors" diff --git a/ros/pose2D_visualizer/test/test_flake8.py b/ros/pose2D_visualizer/test/test_flake8.py new file mode 100644 index 0000000..f494570 --- /dev/null +++ b/ros/pose2D_visualizer/test/test_flake8.py @@ -0,0 +1,25 @@ +# Copyright 2017 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from ament_flake8.main import main_with_errors + + +@pytest.mark.flake8 +@pytest.mark.linter +def test_flake8(): + rc, errors = main_with_errors(argv=[]) + assert rc == 0, "Found %d code style errors / warnings:\n" % len( + errors + ) + "\n".join(errors) diff --git a/ros/pose2D_visualizer/test/test_pep257.py b/ros/pose2D_visualizer/test/test_pep257.py new file mode 100644 index 0000000..4eddb46 --- /dev/null +++ b/ros/pose2D_visualizer/test/test_pep257.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from ament_pep257.main import main + + +@pytest.mark.linter +@pytest.mark.pep257 +def test_pep257(): + rc = main(argv=[".", "test"]) + assert rc == 0, "Found code style errors / warnings" diff --git a/ros/rpt2D_wrapper/package.xml b/ros/rpt2D_wrapper/package.xml new file mode 100644 index 0000000..aab91ce --- /dev/null +++ b/ros/rpt2D_wrapper/package.xml @@ -0,0 +1,18 @@ + + + + rpt2D_wrapper + 0.0.0 + TODO: Package description + root + TODO: License declaration + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/ros/rpt2D_wrapper/resource/rpt2D_wrapper b/ros/rpt2D_wrapper/resource/rpt2D_wrapper new file mode 100644 index 0000000..e69de29 diff --git a/ros/rpt2D_wrapper/rpt2D_wrapper/__init__.py b/ros/rpt2D_wrapper/rpt2D_wrapper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ros/rpt2D_wrapper/rpt2D_wrapper/rpt2D_wrapper.py b/ros/rpt2D_wrapper/rpt2D_wrapper/rpt2D_wrapper.py new file mode 100644 index 0000000..da84cc7 --- /dev/null +++ b/ros/rpt2D_wrapper/rpt2D_wrapper/rpt2D_wrapper.py @@ -0,0 +1,191 @@ +import json +import os +import sys +import threading +import time + +import numpy as np +import rclpy +from cv_bridge import CvBridge +from rclpy.qos import QoSHistoryPolicy, QoSProfile, QoSReliabilityPolicy +from sensor_msgs.msg import Image +from std_msgs.msg import String + +filepath = os.path.dirname(os.path.realpath(__file__)) + "/" +sys.path.append(filepath + "../../../scripts/") +import test_triangulate +import utils_2d_pose + +# ================================================================================================== + +bridge = CvBridge() +node = None +publisher_pose = None + +cam_id = "camera01" +img_input_topic = "/" + cam_id + "/pylon_ros2_camera_node/image_raw" +pose_out_topic = "/poses/" + cam_id + +last_input_image = None +kpt_model = None +joint_names_2d = test_triangulate.joint_names_2d + +lock = threading.Lock() +stop_flag = False + +# Model config +min_bbox_score = 0.4 +min_bbox_area = 0.1 * 0.1 +batch_poses = False + + +# ================================================================================================== + + +def callback_images(image_data): + global last_input_image, lock + + # Convert into cv images from image string + if image_data.encoding == "bayer_rggb8": + bayer_image = bridge.imgmsg_to_cv2(image_data, "bayer_rggb8") + elif image_data.encoding == "mono8": + bayer_image = bridge.imgmsg_to_cv2(image_data, "mono8") + elif image_data.encoding == "rgb8": + color_image = bridge.imgmsg_to_cv2(image_data, "rgb8") + bayer_image = test_triangulate.rgb2bayer(color_image) + else: + raise ValueError("Unknown image encoding:", image_data.encoding) + + time_stamp = image_data.header.stamp.sec + image_data.header.stamp.nanosec / 1.0e9 + + with lock: + last_input_image = (bayer_image, time_stamp) + + +# ================================================================================================== + + +def callback_model(): + global last_input_image, kpt_model, lock + + ptime = time.time() + if last_input_image is None: + time.sleep(0.001) + return + + # Collect inputs + images_2d = [] + timestamps = [] + with lock: + img = np.copy(last_input_image[0]) + ts = last_input_image[1] + images_2d.append(img) + timestamps.append(ts) + last_input_image = None + + # Predict 2D poses + images_2d = [test_triangulate.bayer2rgb(img) for img in images_2d] + poses_2d = utils_2d_pose.get_2d_pose(kpt_model, images_2d) + poses_2d = test_triangulate.update_keypoints(poses_2d, joint_names_2d) + poses_2d = poses_2d[0] + + # Drop persons with no joints + poses_2d = np.asarray(poses_2d) + mask = np.sum(poses_2d[..., 2], axis=1) > 0 + poses_2d = poses_2d[mask] + + # Round poses + poses2D = [np.array(p).round(3).tolist() for p in poses_2d] + + # Publish poses + ts_pose = time.time() + poses = { + "bodies2D": poses2D, + "joints": joint_names_2d, + "num_persons": len(poses2D), + "timestamps": { + "image": timestamps[0], + "pose": ts_pose, + "z-images-pose": ts_pose - timestamps[0], + }, + } + publish(poses) + + msg = "Detected persons: {} - Prediction time: {:.4f}s" + print(msg.format(poses["num_persons"], time.time() - ptime)) + + +# ================================================================================================== + + +def callback_wrapper(): + global stop_flag + while not stop_flag: + callback_model() + time.sleep(0.001) + + +# ================================================================================================== + + +def publish(data): + # Publish json data + msg = String() + msg.data = json.dumps(data) + publisher_pose.publish(msg) + + +# ================================================================================================== + + +def main(): + global node, publisher_pose, kpt_model, stop_flag + + # Start node + rclpy.init(args=sys.argv) + node = rclpy.create_node("rpt2D_wrapper") + + # Quality of service settings + qos_profile = QoSProfile( + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ) + + # Create subscribers + _ = node.create_subscription( + Image, + img_input_topic, + callback_images, + qos_profile, + ) + + # Create publishers + publisher_pose = node.create_publisher(String, pose_out_topic, qos_profile) + + # Load 2D pose model + whole_body = test_triangulate.whole_body + if any((whole_body[k] for k in whole_body)): + kpt_model = utils_2d_pose.load_wb_model() + else: + kpt_model = utils_2d_pose.load_model(min_bbox_score, min_bbox_area, batch_poses) + + node.get_logger().info("Finished initialization of pose estimator") + + # Start prediction thread + p1 = threading.Thread(target=callback_wrapper) + p1.start() + + # Run ros update thread + rclpy.spin(node) + + stop_flag = True + p1.join() + node.destroy_node() + rclpy.shutdown() + + +# ================================================================================================== + +if __name__ == "__main__": + main() diff --git a/ros/rpt2D_wrapper/setup.cfg b/ros/rpt2D_wrapper/setup.cfg new file mode 100644 index 0000000..674431c --- /dev/null +++ b/ros/rpt2D_wrapper/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/rpt2D_wrapper +[install] +install_scripts=$base/lib/rpt2D_wrapper diff --git a/ros/rpt2D_wrapper/setup.py b/ros/rpt2D_wrapper/setup.py new file mode 100644 index 0000000..0f9ef09 --- /dev/null +++ b/ros/rpt2D_wrapper/setup.py @@ -0,0 +1,23 @@ +from setuptools import setup + +package_name = "rpt2D_wrapper" + +setup( + name=package_name, + version="0.0.0", + packages=[package_name], + data_files=[ + ("share/ament_index/resource_index/packages", ["resource/" + package_name]), + ("share/" + package_name, ["package.xml"]), + ], + install_requires=["setuptools"], + zip_safe=True, + maintainer="root", + maintainer_email="root@todo.todo", + description="TODO: Package description", + license="TODO: License declaration", + tests_require=["pytest"], + entry_points={ + "console_scripts": ["rpt2D_wrapper = rpt2D_wrapper.rpt2D_wrapper:main"], + }, +) diff --git a/ros/rpt2D_wrapper/test/test_copyright.py b/ros/rpt2D_wrapper/test/test_copyright.py new file mode 100644 index 0000000..8f18fa4 --- /dev/null +++ b/ros/rpt2D_wrapper/test/test_copyright.py @@ -0,0 +1,27 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from ament_copyright.main import main + + +# Remove the `skip` decorator once the source file(s) have a copyright header +@pytest.mark.skip( + reason="No copyright header has been placed in the generated source file." +) +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=[".", "test"]) + assert rc == 0, "Found errors" diff --git a/ros/rpt2D_wrapper/test/test_flake8.py b/ros/rpt2D_wrapper/test/test_flake8.py new file mode 100644 index 0000000..f494570 --- /dev/null +++ b/ros/rpt2D_wrapper/test/test_flake8.py @@ -0,0 +1,25 @@ +# Copyright 2017 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from ament_flake8.main import main_with_errors + + +@pytest.mark.flake8 +@pytest.mark.linter +def test_flake8(): + rc, errors = main_with_errors(argv=[]) + assert rc == 0, "Found %d code style errors / warnings:\n" % len( + errors + ) + "\n".join(errors) diff --git a/ros/rpt2D_wrapper/test/test_pep257.py b/ros/rpt2D_wrapper/test/test_pep257.py new file mode 100644 index 0000000..4eddb46 --- /dev/null +++ b/ros/rpt2D_wrapper/test/test_pep257.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from ament_pep257.main import main + + +@pytest.mark.linter +@pytest.mark.pep257 +def test_pep257(): + rc = main(argv=[".", "test"]) + assert rc == 0, "Found code style errors / warnings" From 8a249a2f164ef94ee3c15818780beec6d9eae0d3 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 17 Jan 2025 16:24:37 +0100 Subject: [PATCH 06/10] Small improvements and fixes. --- extras/mmdeploy/add_extra_steps.py | 27 +++++++++++++++++++++++++++ scripts/test_triangulate.py | 6 +++--- scripts/utils_2d_pose.py | 18 ++++++++++-------- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/extras/mmdeploy/add_extra_steps.py b/extras/mmdeploy/add_extra_steps.py index 4eb822b..f80ea77 100644 --- a/extras/mmdeploy/add_extra_steps.py +++ b/extras/mmdeploy/add_extra_steps.py @@ -54,6 +54,7 @@ def add_steps_to_onnx(model_path): inputs=[input_name], outputs=[casted_output], to=cast_type, + name="Cast_Input", ) # Node to transpose @@ -118,6 +119,32 @@ def add_steps_to_onnx(model_path): # Set input image type to int8 model.graph.input[0].type.tensor_type.elem_type = TensorProto.UINT8 + # Cast all outputs to fp32 to avoid half precision issues in cpp code + for output in graph.output: + orig_output_name = output.name + internal_output_name = orig_output_name + "_internal" + + # Rename the output tensor + for node in model.graph.node: + for idx, name in enumerate(node.output): + if name == orig_output_name: + node.output[idx] = internal_output_name + + # Insert a Cast node that casts the internal output to fp32 + cast_fp32_name = orig_output_name + cast_node_output = helper.make_node( + "Cast", + inputs=[internal_output_name], + outputs=[cast_fp32_name], + to=1, + name="Cast_Output_" + orig_output_name, + ) + # Append the cast node to the graph + graph.node.append(cast_node_output) + + # Update the output's data type info + output.type.tensor_type.elem_type = TensorProto.FLOAT + path = re.sub(r"(x)(\d+)x(\d+)x(\d+)", r"\1\3x\4x\2", model_path) path = path.replace(".onnx", "_extra-steps.onnx") onnx.save(model, path) diff --git a/scripts/test_triangulate.py b/scripts/test_triangulate.py index 481e4b0..5c25d44 100644 --- a/scripts/test_triangulate.py +++ b/scripts/test_triangulate.py @@ -253,11 +253,11 @@ def update_keypoints(poses_2d: list, joint_names: List[str]) -> list: new_body = body[:17] if whole_body["foots"]: - new_body.extend(body[17:22]) + new_body.extend(body[17:23]) if whole_body["face"]: - new_body.extend(body[22:90]) + new_body.extend(body[23:91]) if whole_body["hands"]: - new_body.extend(body[90:]) + new_body.extend(body[91:]) body = new_body hlid = joint_names.index("hip_left") diff --git a/scripts/utils_2d_pose.py b/scripts/utils_2d_pose.py index 0117870..63eb89e 100644 --- a/scripts/utils_2d_pose.py +++ b/scripts/utils_2d_pose.py @@ -189,9 +189,15 @@ class BoxCrop: self.fill_value = fill_value def calc_params(self, ishape, bbox): - start_x, start_y, end_x, end_y = bbox[0], bbox[1], bbox[2], bbox[3] + img_h, img_w = ishape[:2] target_h, target_w = self.target_size + # Round the bounding box coordinates + start_x = math.floor(bbox[0]) + start_y = math.floor(bbox[1]) + end_x = math.ceil(bbox[2]) + end_y = math.ceil(bbox[3]) + # Calculate original bounding box center center_x = (start_x + end_x) / 2.0 center_y = (start_y + end_y) / 2.0 @@ -231,8 +237,8 @@ class BoxCrop: # Define the new box coordinates new_start_x = max(0, start_x) new_start_y = max(0, start_y) - new_end_x = min(ishape[1] - 1, end_x) - new_end_y = min(ishape[0] - 1, end_y) + new_end_x = min(img_w - 1, end_x) + new_end_y = min(img_h - 1, end_y) new_box = [new_start_x, new_start_y, new_end_x, new_end_y] # Calculate resized crop size @@ -344,7 +350,6 @@ class RTMDet(BaseModel): return np.array([]) # Drop boxes with too small area - boxes = boxes.astype(np.float32) areas = (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1]) keep = areas >= self.min_area boxes = boxes[keep] @@ -386,10 +391,7 @@ class RTMPose(BaseModel): def preprocess(self, image: np.ndarray, bboxes: np.ndarray): cutouts = [] for i in range(len(bboxes)): - bbox = np.asarray(bboxes[i])[0:4] - bbox += np.array([-0.5, -0.5, 0.5 - 1e-8, 0.5 - 1e-8]) - bbox = bbox.round().astype(np.int32) - region = self.boxcrop.crop_resize_box(image, bbox) + region = self.boxcrop.crop_resize_box(image, bboxes[i]) tensor = np.asarray(region).astype(self.input_types[0], copy=False) cutouts.append(tensor) From 99368e5216d67e4f65c32d57e3478d42b18d505f Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 17 Jan 2025 16:42:05 +0100 Subject: [PATCH 07/10] Reimplemented wrapper in cpp. --- ros/README.md | 25 + ros/docker-compose.yml | 3 +- ros/dockerfile | 25 +- ros/rpt2D_wrapper/setup.cfg | 4 - ros/rpt2D_wrapper_cpp/CMakeLists.txt | 65 + .../include/nlohmann/json.hpp | 24674 ++++++++++++++++ ros/rpt2D_wrapper_cpp/package.xml | 25 + ros/rpt2D_wrapper_cpp/src/rpt2D_wrapper.cpp | 263 + .../src/test_triangulate.hpp | 306 + ros/rpt2D_wrapper_cpp/src/utils_2d_pose.hpp | 984 + ros/rpt2D_wrapper_cpp/tests/.gitignore | 1 + ros/rpt2D_wrapper_cpp/tests/my_app.cpp | 73 + .../package.xml | 2 +- .../resource/rpt2D_wrapper_py} | 0 .../rpt2D_wrapper_py}/__init__.py | 0 .../rpt2D_wrapper_py}/rpt2D_wrapper.py | 0 ros/rpt2D_wrapper_py/setup.cfg | 4 + .../setup.py | 4 +- .../test/test_copyright.py | 0 .../test/test_flake8.py | 0 .../test/test_pep257.py | 0 21 files changed, 26448 insertions(+), 10 deletions(-) delete mode 100644 ros/rpt2D_wrapper/setup.cfg create mode 100644 ros/rpt2D_wrapper_cpp/CMakeLists.txt create mode 100644 ros/rpt2D_wrapper_cpp/include/nlohmann/json.hpp create mode 100644 ros/rpt2D_wrapper_cpp/package.xml create mode 100644 ros/rpt2D_wrapper_cpp/src/rpt2D_wrapper.cpp create mode 100644 ros/rpt2D_wrapper_cpp/src/test_triangulate.hpp create mode 100644 ros/rpt2D_wrapper_cpp/src/utils_2d_pose.hpp create mode 100644 ros/rpt2D_wrapper_cpp/tests/.gitignore create mode 100644 ros/rpt2D_wrapper_cpp/tests/my_app.cpp rename ros/{rpt2D_wrapper => rpt2D_wrapper_py}/package.xml (94%) rename ros/{rpt2D_wrapper/resource/rpt2D_wrapper => rpt2D_wrapper_py/resource/rpt2D_wrapper_py} (100%) rename ros/{rpt2D_wrapper/rpt2D_wrapper => rpt2D_wrapper_py/rpt2D_wrapper_py}/__init__.py (100%) rename ros/{rpt2D_wrapper/rpt2D_wrapper => rpt2D_wrapper_py/rpt2D_wrapper_py}/rpt2D_wrapper.py (100%) create mode 100644 ros/rpt2D_wrapper_py/setup.cfg rename ros/{rpt2D_wrapper => rpt2D_wrapper_py}/setup.py (81%) rename ros/{rpt2D_wrapper => rpt2D_wrapper_py}/test/test_copyright.py (100%) rename ros/{rpt2D_wrapper => rpt2D_wrapper_py}/test/test_flake8.py (100%) rename ros/{rpt2D_wrapper => rpt2D_wrapper_py}/test/test_pep257.py (100%) diff --git a/ros/README.md b/ros/README.md index e2a75b3..f27fa0f 100644 --- a/ros/README.md +++ b/ros/README.md @@ -18,3 +18,28 @@ Run pose estimator with ros topics as inputs and publish detected poses. docker exec -it ros-test_node-1 bash export ROS_DOMAIN_ID=18 ``` + +### Debugging + +```bash +cd /RapidPoseTriangulation/ros/rpt2D_wrapper_cpp/tests/ + +g++ -std=c++17 -O3 -march=native -DCOMPILE_EXAMPLE_MAIN \ + $(pkg-config --cflags opencv4) \ + -I /onnxruntime/include \ + -I /onnxruntime/include/onnxruntime/core/session \ + -I /onnxruntime/include/onnxruntime/core/providers/tensorrt \ + -L /onnxruntime/build/Linux/Release \ + my_app.cpp \ + -o my_app \ + -Wl,--start-group \ + -lonnxruntime_providers_tensorrt \ + -lonnxruntime_providers_shared \ + -lonnxruntime_providers_cuda \ + -lonnxruntime \ + -Wl,--end-group \ + $(pkg-config --libs opencv4) \ + -Wl,-rpath,/onnxruntime/build/Linux/Release + +./my_app +``` diff --git a/ros/docker-compose.yml b/ros/docker-compose.yml index 19c2077..1953e82 100644 --- a/ros/docker-compose.yml +++ b/ros/docker-compose.yml @@ -35,7 +35,8 @@ services: - DISPLAY - QT_X11_NO_MITSHM=1 - "PYTHONUNBUFFERED=1" - command: /bin/bash -i -c 'export ROS_DOMAIN_ID=18 && ros2 run rpt2D_wrapper rpt2D_wrapper' + # command: /bin/bash -i -c 'export ROS_DOMAIN_ID=18 && ros2 run rpt2D_wrapper_py rpt2D_wrapper' + command: /bin/bash -i -c 'export ROS_DOMAIN_ID=18 && ros2 run rpt2D_wrapper_cpp rpt2D_wrapper' pose_visualizer: image: rapidposetriangulation_ros diff --git a/ros/dockerfile b/ros/dockerfile index cb4a5c0..f5367b3 100644 --- a/ros/dockerfile +++ b/ros/dockerfile @@ -1,4 +1,22 @@ FROM rapidposetriangulation +WORKDIR / + +# Install ONNX runtime +# See: https://github.com/microsoft/onnxruntime/blob/main/dockerfiles/Dockerfile.tensorrt +RUN pip3 uninstall -y onnxruntime-gpu +RUN git clone --recursive --depth=1 --branch=v1.20.1 https://github.com/Microsoft/onnxruntime.git +ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/cmake-3.30.1-linux-x86_64/bin:${PATH} +ARG CMAKE_CUDA_ARCHITECTURES=75;80;90 +ENV TRT_VERSION=10.5.0.18 +RUN /bin/sh onnxruntime/dockerfiles/scripts/install_common_deps.sh +RUN /bin/sh onnxruntime/dockerfiles/scripts/checkout_submodules.sh ${trt_version} +RUN ls +RUN cd onnxruntime && \ + /bin/sh build.sh --allow_running_as_root --parallel --build_shared_lib \ + --cuda_home /usr/local/cuda --cudnn_home /usr/lib/x86_64-linux-gnu/ --use_tensorrt \ + --tensorrt_home /usr/lib/x86_64-linux-gnu/ --config Release --build_wheel --skip_tests \ + --skip_submodule_sync --cmake_extra_defines '"CMAKE_CUDA_ARCHITECTURES='${CMAKE_CUDA_ARCHITECTURES}'"' +RUN cd onnxruntime && pip install build/Linux/Release/dist/*.whl # Install ROS2 # https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html @@ -43,11 +61,13 @@ RUN pip3 install --no-cache-dir "setuptools<=58.2.0" # Copy modules COPY ./ros/pose2D_visualizer /RapidPoseTriangulation/ros/pose2D_visualizer/ -COPY ./ros/rpt2D_wrapper /RapidPoseTriangulation/ros/rpt2D_wrapper/ +COPY ./ros/rpt2D_wrapper_py /RapidPoseTriangulation/ros/rpt2D_wrapper_py/ +COPY ./ros/rpt2D_wrapper_cpp /RapidPoseTriangulation/ros/rpt2D_wrapper_cpp/ # Link and build as ros package RUN ln -s /RapidPoseTriangulation/ros/pose2D_visualizer/ /project/dev_ws/src/pose2D_visualizer -RUN ln -s /RapidPoseTriangulation/ros/rpt2D_wrapper/ /project/dev_ws/src/rpt2D_wrapper +RUN ln -s /RapidPoseTriangulation/ros/rpt2D_wrapper_py/ /project/dev_ws/src/rpt2D_wrapper_py +RUN ln -s /RapidPoseTriangulation/ros/rpt2D_wrapper_cpp/ /project/dev_ws/src/rpt2D_wrapper_cpp RUN /bin/bash -i -c 'cd /project/dev_ws/; colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release' # Update ros packages -> autocompletion and check @@ -58,4 +78,5 @@ RUN apt-get autoremove -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* +WORKDIR /RapidPoseTriangulation/ CMD ["/bin/bash"] diff --git a/ros/rpt2D_wrapper/setup.cfg b/ros/rpt2D_wrapper/setup.cfg deleted file mode 100644 index 674431c..0000000 --- a/ros/rpt2D_wrapper/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script_dir=$base/lib/rpt2D_wrapper -[install] -install_scripts=$base/lib/rpt2D_wrapper diff --git a/ros/rpt2D_wrapper_cpp/CMakeLists.txt b/ros/rpt2D_wrapper_cpp/CMakeLists.txt new file mode 100644 index 0000000..aa93999 --- /dev/null +++ b/ros/rpt2D_wrapper_cpp/CMakeLists.txt @@ -0,0 +1,65 @@ +cmake_minimum_required(VERSION 3.5) +project(rpt2D_wrapper_cpp) + +# Default to C99 +if(NOT CMAKE_C_STANDARD) + set(CMAKE_C_STANDARD 99) +endif() + +# Default to C++17 +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +# find dependencies +find_package(ament_cmake REQUIRED) +find_package(rclcpp REQUIRED) +find_package(std_msgs REQUIRED) +find_package(sensor_msgs REQUIRED) +find_package(cv_bridge REQUIRED) +find_package(OpenCV REQUIRED) + +### 3) ONNX Runtime +include_directories(/onnxruntime/include + /onnxruntime/include/onnxruntime/core/session + /onnxruntime/include/onnxruntime/core/providers/tensorrt) +link_directories(/onnxruntime/build/Linux/Release) + +add_executable(rpt2D_wrapper src/rpt2D_wrapper.cpp) +ament_target_dependencies(rpt2D_wrapper rclcpp std_msgs sensor_msgs cv_bridge) +target_include_directories(rpt2D_wrapper PUBLIC + $ + $) + +target_link_libraries(rpt2D_wrapper + ${OpenCV_LIBS} + onnxruntime_providers_tensorrt + onnxruntime_providers_shared + onnxruntime_providers_cuda + onnxruntime +) + +set_target_properties(rpt2D_wrapper PROPERTIES + BUILD_WITH_INSTALL_RPATH TRUE + INSTALL_RPATH "/onnxruntime/build/Linux/Release" +) + +install(TARGETS rpt2D_wrapper + DESTINATION lib/${PROJECT_NAME}) + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + # the following line skips the linter which checks for copyrights + # uncomment the line when a copyright and license is not present in all source files + #set(ament_cmake_copyright_FOUND TRUE) + # the following line skips cpplint (only works in a git repo) + # uncomment the line when this package is not in a git repo + #set(ament_cmake_cpplint_FOUND TRUE) + ament_lint_auto_find_test_dependencies() +endif() + +ament_package() diff --git a/ros/rpt2D_wrapper_cpp/include/nlohmann/json.hpp b/ros/rpt2D_wrapper_cpp/include/nlohmann/json.hpp new file mode 100644 index 0000000..ddd3131 --- /dev/null +++ b/ros/rpt2D_wrapper_cpp/include/nlohmann/json.hpp @@ -0,0 +1,24674 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 2 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 2 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#if JSON_DIAGNOSTICS + #include // accumulate +#endif +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-FileCopyrightText: 2016-2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType, \ + class CustomBaseClass> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + + +// inspired from https://stackoverflow.com/a/26745591 +// allows to call any std function as if (e.g. with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +inline constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.2 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector, // cppcheck-suppress syntaxError + class CustomBaseClass = void> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& + is_complete_type < + detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template