diff --git a/deploy/cpp/demo/classifier.cpp b/deploy/cpp/demo/classifier.cpp index 6fd354d3f..db3687492 100644 --- a/deploy/cpp/demo/classifier.cpp +++ b/deploy/cpp/demo/classifier.cpp @@ -62,8 +62,6 @@ int main(int argc, char** argv) { FLAGS_use_ir_optim); // 进行预测 - double total_running_time_s = 0.0; - double total_imread_time_s = 0.0; int imgs = 1; if (FLAGS_image_list != "") { std::ifstream inf(FLAGS_image_list); @@ -79,7 +77,6 @@ int main(int argc, char** argv) { } imgs = image_paths.size(); for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) { - auto start = system_clock::now(); // 读图像 int im_vec_size = std::min(static_cast(image_paths.size()), i + FLAGS_batch_size); @@ -91,19 +88,7 @@ int main(int argc, char** argv) { for (int j = i; j < im_vec_size; ++j) { im_vec[j - i] = std::move(cv::imread(image_paths[j], 1)); } - auto imread_end = system_clock::now(); model.predict(im_vec, &results, thread_num); - - auto imread_duration = duration_cast(imread_end - start); - total_imread_time_s += static_cast(imread_duration.count()) * - microseconds::period::num / - microseconds::period::den; - - auto end = system_clock::now(); - auto duration = duration_cast(end - start); - total_running_time_s += static_cast(duration.count()) * - microseconds::period::num / - microseconds::period::den; for (int j = i; j < im_vec_size; ++j) { std::cout << "Path:" << image_paths[j] << ", predict label: " << results[j - i].category @@ -112,23 +97,12 @@ int main(int argc, char** argv) { } } } else { - auto start = system_clock::now(); PaddleX::ClsResult result; cv::Mat im = cv::imread(FLAGS_image, 1); model.predict(im, &result); - auto end = system_clock::now(); - auto duration = duration_cast(end - start); - total_running_time_s += static_cast(duration.count()) * - microseconds::period::num / - microseconds::period::den; std::cout << "Predict label: " << result.category << ", label_id:" << result.category_id << ", score: " << result.score << std::endl; } - std::cout << "Total running time: " << total_running_time_s - << " s, average running time: " << total_running_time_s / imgs - << " s/img, total read img time: " << total_imread_time_s - << " s, average read time: " << total_imread_time_s / imgs - << " s/img, batch_size = " << FLAGS_batch_size << std::endl; return 0; } diff --git a/deploy/cpp/demo/detector.cpp b/deploy/cpp/demo/detector.cpp index 54f93d299..32fbaafdd 100644 --- a/deploy/cpp/demo/detector.cpp +++ b/deploy/cpp/demo/detector.cpp @@ -65,11 +65,7 @@ int main(int argc, char** argv) { FLAGS_gpu_id, FLAGS_key, FLAGS_use_ir_optim); - - double total_running_time_s = 0.0; - double total_imread_time_s = 0.0; int imgs = 1; - auto colormap = PaddleX::GenerateColorMap(model.labels.size()); std::string save_dir = "output"; // 进行预测 if (FLAGS_image_list != "") { @@ -85,7 +81,6 @@ int main(int argc, char** argv) { } imgs = image_paths.size(); for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) { - auto start = system_clock::now(); int im_vec_size = std::min(static_cast(image_paths.size()), i + FLAGS_batch_size); std::vector im_vec(im_vec_size - i); @@ -96,17 +91,7 @@ int main(int argc, char** argv) { for (int j = i; j < im_vec_size; ++j) { im_vec[j - i] = std::move(cv::imread(image_paths[j], 1)); } - auto imread_end = system_clock::now(); model.predict(im_vec, &results, thread_num); - auto imread_duration = duration_cast(imread_end - start); - total_imread_time_s += static_cast(imread_duration.count()) * - microseconds::period::num / - microseconds::period::den; - auto end = system_clock::now(); - auto duration = duration_cast(end - start); - total_running_time_s += static_cast(duration.count()) * - microseconds::period::num / - microseconds::period::den; // 输出结果目标框 for (int j = 0; j < im_vec_size - i; ++j) { for (int k = 0; k < results[j].boxes.size(); ++k) { @@ -124,7 +109,7 @@ int main(int argc, char** argv) { // 可视化 for (int j = 0; j < im_vec_size - i; ++j) { cv::Mat vis_img = PaddleX::Visualize( - im_vec[j], results[j], model.labels, colormap, FLAGS_threshold); + im_vec[j], results[j], model.labels, FLAGS_threshold); std::string save_path = PaddleX::generate_save_path(FLAGS_save_dir, image_paths[i + j]); cv::imwrite(save_path, vis_img); @@ -132,15 +117,9 @@ int main(int argc, char** argv) { } } } else { - auto start = system_clock::now(); PaddleX::DetResult result; cv::Mat im = cv::imread(FLAGS_image, 1); model.predict(im, &result); - auto end = system_clock::now(); - auto duration = duration_cast(end - start); - total_running_time_s += static_cast(duration.count()) * - microseconds::period::num / - microseconds::period::den; // 输出结果目标框 for (int i = 0; i < result.boxes.size(); ++i) { std::cout << "image file: " << FLAGS_image << std::endl; @@ -155,7 +134,7 @@ int main(int argc, char** argv) { // 可视化 cv::Mat vis_img = - PaddleX::Visualize(im, result, model.labels, colormap, FLAGS_threshold); + PaddleX::Visualize(im, result, model.labels, FLAGS_threshold); std::string save_path = PaddleX::generate_save_path(FLAGS_save_dir, FLAGS_image); cv::imwrite(save_path, vis_img); @@ -163,11 +142,5 @@ int main(int argc, char** argv) { std::cout << "Visualized output saved as " << save_path << std::endl; } - std::cout << "Total running time: " << total_running_time_s - << " s, average running time: " << total_running_time_s / imgs - << " s/img, total read img time: " << total_imread_time_s - << " s, average read img time: " << total_imread_time_s / imgs - << " s, batch_size = " << FLAGS_batch_size << std::endl; - return 0; } diff --git a/deploy/cpp/demo/segmenter.cpp b/deploy/cpp/demo/segmenter.cpp index 90adb5aea..b3b8fad9a 100644 --- a/deploy/cpp/demo/segmenter.cpp +++ b/deploy/cpp/demo/segmenter.cpp @@ -62,11 +62,7 @@ int main(int argc, char** argv) { FLAGS_gpu_id, FLAGS_key, FLAGS_use_ir_optim); - - double total_running_time_s = 0.0; - double total_imread_time_s = 0.0; int imgs = 1; - auto colormap = PaddleX::GenerateColorMap(model.labels.size()); // 进行预测 if (FLAGS_image_list != "") { std::ifstream inf(FLAGS_image_list); @@ -81,7 +77,6 @@ int main(int argc, char** argv) { } imgs = image_paths.size(); for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) { - auto start = system_clock::now(); int im_vec_size = std::min(static_cast(image_paths.size()), i + FLAGS_batch_size); std::vector im_vec(im_vec_size - i); @@ -92,21 +87,11 @@ int main(int argc, char** argv) { for (int j = i; j < im_vec_size; ++j) { im_vec[j - i] = std::move(cv::imread(image_paths[j], 1)); } - auto imread_end = system_clock::now(); model.predict(im_vec, &results, thread_num); - auto imread_duration = duration_cast(imread_end - start); - total_imread_time_s += static_cast(imread_duration.count()) * - microseconds::period::num / - microseconds::period::den; - auto end = system_clock::now(); - auto duration = duration_cast(end - start); - total_running_time_s += static_cast(duration.count()) * - microseconds::period::num / - microseconds::period::den; // 可视化 for (int j = 0; j < im_vec_size - i; ++j) { cv::Mat vis_img = - PaddleX::Visualize(im_vec[j], results[j], model.labels, colormap); + PaddleX::Visualize(im_vec[j], results[j], model.labels); std::string save_path = PaddleX::generate_save_path(FLAGS_save_dir, image_paths[i + j]); cv::imwrite(save_path, vis_img); @@ -114,28 +99,16 @@ int main(int argc, char** argv) { } } } else { - auto start = system_clock::now(); PaddleX::SegResult result; cv::Mat im = cv::imread(FLAGS_image, 1); model.predict(im, &result); - auto end = system_clock::now(); - auto duration = duration_cast(end - start); - total_running_time_s += static_cast(duration.count()) * - microseconds::period::num / - microseconds::period::den; // 可视化 - cv::Mat vis_img = PaddleX::Visualize(im, result, model.labels, colormap); + cv::Mat vis_img = PaddleX::Visualize(im, result, model.labels); std::string save_path = PaddleX::generate_save_path(FLAGS_save_dir, FLAGS_image); cv::imwrite(save_path, vis_img); result.clear(); std::cout << "Visualized output saved as " << save_path << std::endl; } - std::cout << "Total running time: " << total_running_time_s - << " s, average running time: " << total_running_time_s / imgs - << " s/img, total read img time: " << total_imread_time_s - << " s, average read img time: " << total_imread_time_s / imgs - << " s, batch_size = " << FLAGS_batch_size << std::endl; - return 0; } diff --git a/deploy/cpp/include/paddlex/visualize.h b/deploy/cpp/include/paddlex/visualize.h index 9ddba5387..9b80ca367 100644 --- a/deploy/cpp/include/paddlex/visualize.h +++ b/deploy/cpp/include/paddlex/visualize.h @@ -65,13 +65,12 @@ std::vector GenerateColorMap(int num_class); * @param img: initial image matrix * @param results: the detection result * @param labels: label map - * @param colormap: visualization color map + * @param threshold: minimum confidence to display * @return visualized image matrix * */ cv::Mat Visualize(const cv::Mat& img, const DetResult& results, const std::map& labels, - const std::vector& colormap, float threshold = 0.5); /* @@ -81,13 +80,11 @@ cv::Mat Visualize(const cv::Mat& img, * @param img: initial image matrix * @param results: the detection result * @param labels: label map - * @param colormap: visualization color map * @return visualized image matrix * */ cv::Mat Visualize(const cv::Mat& img, const SegResult& result, - const std::map& labels, - const std::vector& colormap); + const std::map& labels); /* * @brief diff --git a/deploy/cpp/src/visualize.cpp b/deploy/cpp/src/visualize.cpp index 1511887f0..afc1733b4 100644 --- a/deploy/cpp/src/visualize.cpp +++ b/deploy/cpp/src/visualize.cpp @@ -34,8 +34,8 @@ std::vector GenerateColorMap(int num_class) { cv::Mat Visualize(const cv::Mat& img, const DetResult& result, const std::map& labels, - const std::vector& colormap, float threshold) { + auto colormap = GenerateColorMap(labels.size()); cv::Mat vis_img = img.clone(); auto boxes = result.boxes; for (int i = 0; i < boxes.size(); ++i) { @@ -107,8 +107,8 @@ cv::Mat Visualize(const cv::Mat& img, cv::Mat Visualize(const cv::Mat& img, const SegResult& result, - const std::map& labels, - const std::vector& colormap) { + const std::map& labels) { + auto colormap = GenerateColorMap(labels.size()); std::vector label_map(result.label_map.data.begin(), result.label_map.data.end()); cv::Mat mask(result.label_map.shape[0],