Fixed time calculation.
This commit is contained in:
@ -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<double> times_image;
|
||||
std::vector<double> times_debayer;
|
||||
std::vector<double> times_pose2d;
|
||||
std::vector<double> 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<cv::Mat> 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<std::string>());
|
||||
@ -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"
|
||||
|
||||
Reference in New Issue
Block a user