From d886d1db7c8c82b804f0c4f503c232d6afa7dbec Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 27 Jan 2025 14:18:08 +0100 Subject: [PATCH] Fixed time calculation. --- scripts/test_skelda_dataset.cpp | 39 ++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/scripts/test_skelda_dataset.cpp b/scripts/test_skelda_dataset.cpp index e6acf50..b15246d 100644 --- a/scripts/test_skelda_dataset.cpp +++ b/scripts/test_skelda_dataset.cpp @@ -134,9 +134,14 @@ int main(int argc, char **argv) // Timers size_t time_count = dataset.size(); - double time_image = 0.0; - double time_pose2d = 0.0; - double time_pose3d = 0.0; + std::vector times_image; + std::vector times_debayer; + std::vector times_pose2d; + std::vector times_pose3d; + times_image.reserve(time_count); + times_debayer.reserve(time_count); + times_pose2d.reserve(time_count); + times_pose3d.reserve(time_count); size_t print_steps = (size_t)std::floor((float)time_count / 100.0f); print_steps = std::max((size_t)1, print_steps); @@ -164,9 +169,9 @@ int main(int argc, char **argv) auto stime = std::chrono::high_resolution_clock::now(); std::vector images = load_images(item); elapsed = std::chrono::high_resolution_clock::now() - stime; - time_image += elapsed.count(); + times_image.push_back(elapsed.count()); - // Predict 2D poses + // Demosaic images stime = std::chrono::high_resolution_clock::now(); for (size_t i = 0; i < images.size(); i++) { @@ -174,11 +179,16 @@ int main(int argc, char **argv) cv::Mat rgb = utils_pipeline::bayer2rgb(img); images[i] = std::move(rgb); } + elapsed = std::chrono::high_resolution_clock::now() - stime; + times_debayer.push_back(elapsed.count()); + + // Predict 2D poses + stime = std::chrono::high_resolution_clock::now(); auto poses_2d_all = kpt_model->predict(images); auto poses_2d_upd = utils_pipeline::update_keypoints( poses_2d_all, joint_names_2d, whole_body); elapsed = std::chrono::high_resolution_clock::now() - stime; - time_pose2d += elapsed.count(); + times_pose2d.push_back(elapsed.count()); all_poses_2d.push_back(std::move(poses_2d_upd)); } @@ -229,7 +239,7 @@ int main(int argc, char **argv) auto poses_3d = tri_model->triangulate_poses(poses_2d, cameras, roomparams, joint_names_2d); elapsed = std::chrono::high_resolution_clock::now() - stime; - time_pose3d += elapsed.count(); + times_pose3d.push_back(elapsed.count()); all_poses_3d.push_back(std::move(poses_3d)); all_ids.push_back(item["id"].get()); @@ -240,12 +250,25 @@ int main(int argc, char **argv) // Print timing stats std::cout << "\nMetrics:" << std::endl; size_t warmup = 10; + double time_image = 0.0; + double time_debayer = 0.0; + double time_pose2d = 0.0; + double time_pose3d = 0.0; + for (size_t i = warmup; i < time_count; i++) + { + time_image += times_image[i]; + time_debayer += times_debayer[i]; + time_pose2d += times_pose2d[i]; + time_pose3d += times_pose3d[i]; + } double avg_time_image = time_image / (time_count - warmup); + double avg_time_debayer = time_debayer / (time_count - warmup); double avg_time_pose2d = time_pose2d / (time_count - warmup); double avg_time_pose3d = time_pose3d / (time_count - warmup); - double fps = 1.0 / (avg_time_pose2d + avg_time_pose3d); + double fps = 1.0 / (avg_time_debayer + avg_time_pose2d + avg_time_pose3d); std::cout << "{\n" << " \"img_loading\": " << avg_time_image << ",\n" + << " \"demosaicing\": " << avg_time_debayer << ",\n" << " \"avg_time_2d\": " << avg_time_pose2d << ",\n" << " \"avg_time_3d\": " << avg_time_pose3d << ",\n" << " \"fps\": " << fps << "\n"