|
@@ -65,11 +65,7 @@ int main(int argc, char** argv) {
|
|
|
FLAGS_gpu_id,
|
|
FLAGS_gpu_id,
|
|
|
FLAGS_key,
|
|
FLAGS_key,
|
|
|
FLAGS_use_ir_optim);
|
|
FLAGS_use_ir_optim);
|
|
|
-
|
|
|
|
|
- double total_running_time_s = 0.0;
|
|
|
|
|
- double total_imread_time_s = 0.0;
|
|
|
|
|
int imgs = 1;
|
|
int imgs = 1;
|
|
|
- auto colormap = PaddleX::GenerateColorMap(model.labels.size());
|
|
|
|
|
std::string save_dir = "output";
|
|
std::string save_dir = "output";
|
|
|
// 进行预测
|
|
// 进行预测
|
|
|
if (FLAGS_image_list != "") {
|
|
if (FLAGS_image_list != "") {
|
|
@@ -85,7 +81,6 @@ int main(int argc, char** argv) {
|
|
|
}
|
|
}
|
|
|
imgs = image_paths.size();
|
|
imgs = image_paths.size();
|
|
|
for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) {
|
|
for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) {
|
|
|
- auto start = system_clock::now();
|
|
|
|
|
int im_vec_size =
|
|
int im_vec_size =
|
|
|
std::min(static_cast<int>(image_paths.size()), i + FLAGS_batch_size);
|
|
std::min(static_cast<int>(image_paths.size()), i + FLAGS_batch_size);
|
|
|
std::vector<cv::Mat> im_vec(im_vec_size - i);
|
|
std::vector<cv::Mat> 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) {
|
|
for (int j = i; j < im_vec_size; ++j) {
|
|
|
im_vec[j - i] = std::move(cv::imread(image_paths[j], 1));
|
|
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);
|
|
model.predict(im_vec, &results, thread_num);
|
|
|
- auto imread_duration = duration_cast<microseconds>(imread_end - start);
|
|
|
|
|
- total_imread_time_s += static_cast<double>(imread_duration.count()) *
|
|
|
|
|
- microseconds::period::num /
|
|
|
|
|
- microseconds::period::den;
|
|
|
|
|
- auto end = system_clock::now();
|
|
|
|
|
- auto duration = duration_cast<microseconds>(end - start);
|
|
|
|
|
- total_running_time_s += static_cast<double>(duration.count()) *
|
|
|
|
|
- microseconds::period::num /
|
|
|
|
|
- microseconds::period::den;
|
|
|
|
|
// 输出结果目标框
|
|
// 输出结果目标框
|
|
|
for (int j = 0; j < im_vec_size - i; ++j) {
|
|
for (int j = 0; j < im_vec_size - i; ++j) {
|
|
|
for (int k = 0; k < results[j].boxes.size(); ++k) {
|
|
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) {
|
|
for (int j = 0; j < im_vec_size - i; ++j) {
|
|
|
cv::Mat vis_img = PaddleX::Visualize(
|
|
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 =
|
|
std::string save_path =
|
|
|
PaddleX::generate_save_path(FLAGS_save_dir, image_paths[i + j]);
|
|
PaddleX::generate_save_path(FLAGS_save_dir, image_paths[i + j]);
|
|
|
cv::imwrite(save_path, vis_img);
|
|
cv::imwrite(save_path, vis_img);
|
|
@@ -132,15 +117,9 @@ int main(int argc, char** argv) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- auto start = system_clock::now();
|
|
|
|
|
PaddleX::DetResult result;
|
|
PaddleX::DetResult result;
|
|
|
cv::Mat im = cv::imread(FLAGS_image, 1);
|
|
cv::Mat im = cv::imread(FLAGS_image, 1);
|
|
|
model.predict(im, &result);
|
|
model.predict(im, &result);
|
|
|
- auto end = system_clock::now();
|
|
|
|
|
- auto duration = duration_cast<microseconds>(end - start);
|
|
|
|
|
- total_running_time_s += static_cast<double>(duration.count()) *
|
|
|
|
|
- microseconds::period::num /
|
|
|
|
|
- microseconds::period::den;
|
|
|
|
|
// 输出结果目标框
|
|
// 输出结果目标框
|
|
|
for (int i = 0; i < result.boxes.size(); ++i) {
|
|
for (int i = 0; i < result.boxes.size(); ++i) {
|
|
|
std::cout << "image file: " << FLAGS_image << std::endl;
|
|
std::cout << "image file: " << FLAGS_image << std::endl;
|
|
@@ -155,7 +134,7 @@ int main(int argc, char** argv) {
|
|
|
|
|
|
|
|
// 可视化
|
|
// 可视化
|
|
|
cv::Mat vis_img =
|
|
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 =
|
|
std::string save_path =
|
|
|
PaddleX::generate_save_path(FLAGS_save_dir, FLAGS_image);
|
|
PaddleX::generate_save_path(FLAGS_save_dir, FLAGS_image);
|
|
|
cv::imwrite(save_path, vis_img);
|
|
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 << "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;
|
|
return 0;
|
|
|
}
|
|
}
|