Fixed time calculation.
This commit is contained in:
@ -134,9 +134,14 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
// Timers
|
// Timers
|
||||||
size_t time_count = dataset.size();
|
size_t time_count = dataset.size();
|
||||||
double time_image = 0.0;
|
std::vector<double> times_image;
|
||||||
double time_pose2d = 0.0;
|
std::vector<double> times_debayer;
|
||||||
double time_pose3d = 0.0;
|
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);
|
size_t print_steps = (size_t)std::floor((float)time_count / 100.0f);
|
||||||
print_steps = std::max((size_t)1, print_steps);
|
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();
|
auto stime = std::chrono::high_resolution_clock::now();
|
||||||
std::vector<cv::Mat> images = load_images(item);
|
std::vector<cv::Mat> images = load_images(item);
|
||||||
elapsed = std::chrono::high_resolution_clock::now() - stime;
|
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();
|
stime = std::chrono::high_resolution_clock::now();
|
||||||
for (size_t i = 0; i < images.size(); i++)
|
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);
|
cv::Mat rgb = utils_pipeline::bayer2rgb(img);
|
||||||
images[i] = std::move(rgb);
|
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_all = kpt_model->predict(images);
|
||||||
auto poses_2d_upd = utils_pipeline::update_keypoints(
|
auto poses_2d_upd = utils_pipeline::update_keypoints(
|
||||||
poses_2d_all, joint_names_2d, whole_body);
|
poses_2d_all, joint_names_2d, whole_body);
|
||||||
elapsed = std::chrono::high_resolution_clock::now() - stime;
|
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));
|
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);
|
auto poses_3d = tri_model->triangulate_poses(poses_2d, cameras, roomparams, joint_names_2d);
|
||||||
elapsed = std::chrono::high_resolution_clock::now() - stime;
|
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_poses_3d.push_back(std::move(poses_3d));
|
||||||
all_ids.push_back(item["id"].get<std::string>());
|
all_ids.push_back(item["id"].get<std::string>());
|
||||||
@ -240,12 +250,25 @@ int main(int argc, char **argv)
|
|||||||
// Print timing stats
|
// Print timing stats
|
||||||
std::cout << "\nMetrics:" << std::endl;
|
std::cout << "\nMetrics:" << std::endl;
|
||||||
size_t warmup = 10;
|
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_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_pose2d = time_pose2d / (time_count - warmup);
|
||||||
double avg_time_pose3d = time_pose3d / (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"
|
std::cout << "{\n"
|
||||||
<< " \"img_loading\": " << avg_time_image << ",\n"
|
<< " \"img_loading\": " << avg_time_image << ",\n"
|
||||||
|
<< " \"demosaicing\": " << avg_time_debayer << ",\n"
|
||||||
<< " \"avg_time_2d\": " << avg_time_pose2d << ",\n"
|
<< " \"avg_time_2d\": " << avg_time_pose2d << ",\n"
|
||||||
<< " \"avg_time_3d\": " << avg_time_pose3d << ",\n"
|
<< " \"avg_time_3d\": " << avg_time_pose3d << ",\n"
|
||||||
<< " \"fps\": " << fps << "\n"
|
<< " \"fps\": " << fps << "\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user