Skip to content

Commit df9645e

Browse files
authored
Merge pull request #218 from joey12300/develop
encapsulate GenerateColormap in Visualize
2 parents c1c91a7 + 398b7e4 commit df9645e

File tree

5 files changed

+9
-92
lines changed

5 files changed

+9
-92
lines changed

deploy/cpp/demo/classifier.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ int main(int argc, char** argv) {
6262
FLAGS_use_ir_optim);
6363

6464
// 进行预测
65-
double total_running_time_s = 0.0;
66-
double total_imread_time_s = 0.0;
6765
int imgs = 1;
6866
if (FLAGS_image_list != "") {
6967
std::ifstream inf(FLAGS_image_list);
@@ -79,7 +77,6 @@ int main(int argc, char** argv) {
7977
}
8078
imgs = image_paths.size();
8179
for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) {
82-
auto start = system_clock::now();
8380
// 读图像
8481
int im_vec_size =
8582
std::min(static_cast<int>(image_paths.size()), i + FLAGS_batch_size);
@@ -91,19 +88,7 @@ int main(int argc, char** argv) {
9188
for (int j = i; j < im_vec_size; ++j) {
9289
im_vec[j - i] = std::move(cv::imread(image_paths[j], 1));
9390
}
94-
auto imread_end = system_clock::now();
9591
model.predict(im_vec, &results, thread_num);
96-
97-
auto imread_duration = duration_cast<microseconds>(imread_end - start);
98-
total_imread_time_s += static_cast<double>(imread_duration.count()) *
99-
microseconds::period::num /
100-
microseconds::period::den;
101-
102-
auto end = system_clock::now();
103-
auto duration = duration_cast<microseconds>(end - start);
104-
total_running_time_s += static_cast<double>(duration.count()) *
105-
microseconds::period::num /
106-
microseconds::period::den;
10792
for (int j = i; j < im_vec_size; ++j) {
10893
std::cout << "Path:" << image_paths[j]
10994
<< ", predict label: " << results[j - i].category
@@ -112,23 +97,12 @@ int main(int argc, char** argv) {
11297
}
11398
}
11499
} else {
115-
auto start = system_clock::now();
116100
PaddleX::ClsResult result;
117101
cv::Mat im = cv::imread(FLAGS_image, 1);
118102
model.predict(im, &result);
119-
auto end = system_clock::now();
120-
auto duration = duration_cast<microseconds>(end - start);
121-
total_running_time_s += static_cast<double>(duration.count()) *
122-
microseconds::period::num /
123-
microseconds::period::den;
124103
std::cout << "Predict label: " << result.category
125104
<< ", label_id:" << result.category_id
126105
<< ", score: " << result.score << std::endl;
127106
}
128-
std::cout << "Total running time: " << total_running_time_s
129-
<< " s, average running time: " << total_running_time_s / imgs
130-
<< " s/img, total read img time: " << total_imread_time_s
131-
<< " s, average read time: " << total_imread_time_s / imgs
132-
<< " s/img, batch_size = " << FLAGS_batch_size << std::endl;
133107
return 0;
134108
}

deploy/cpp/demo/detector.cpp

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,7 @@ int main(int argc, char** argv) {
6565
FLAGS_gpu_id,
6666
FLAGS_key,
6767
FLAGS_use_ir_optim);
68-
69-
double total_running_time_s = 0.0;
70-
double total_imread_time_s = 0.0;
7168
int imgs = 1;
72-
auto colormap = PaddleX::GenerateColorMap(model.labels.size());
7369
std::string save_dir = "output";
7470
// 进行预测
7571
if (FLAGS_image_list != "") {
@@ -85,7 +81,6 @@ int main(int argc, char** argv) {
8581
}
8682
imgs = image_paths.size();
8783
for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) {
88-
auto start = system_clock::now();
8984
int im_vec_size =
9085
std::min(static_cast<int>(image_paths.size()), i + FLAGS_batch_size);
9186
std::vector<cv::Mat> im_vec(im_vec_size - i);
@@ -96,17 +91,7 @@ int main(int argc, char** argv) {
9691
for (int j = i; j < im_vec_size; ++j) {
9792
im_vec[j - i] = std::move(cv::imread(image_paths[j], 1));
9893
}
99-
auto imread_end = system_clock::now();
10094
model.predict(im_vec, &results, thread_num);
101-
auto imread_duration = duration_cast<microseconds>(imread_end - start);
102-
total_imread_time_s += static_cast<double>(imread_duration.count()) *
103-
microseconds::period::num /
104-
microseconds::period::den;
105-
auto end = system_clock::now();
106-
auto duration = duration_cast<microseconds>(end - start);
107-
total_running_time_s += static_cast<double>(duration.count()) *
108-
microseconds::period::num /
109-
microseconds::period::den;
11095
// 输出结果目标框
11196
for (int j = 0; j < im_vec_size - i; ++j) {
11297
for (int k = 0; k < results[j].boxes.size(); ++k) {
@@ -124,23 +109,17 @@ int main(int argc, char** argv) {
124109
// 可视化
125110
for (int j = 0; j < im_vec_size - i; ++j) {
126111
cv::Mat vis_img = PaddleX::Visualize(
127-
im_vec[j], results[j], model.labels, colormap, FLAGS_threshold);
112+
im_vec[j], results[j], model.labels, FLAGS_threshold);
128113
std::string save_path =
129114
PaddleX::generate_save_path(FLAGS_save_dir, image_paths[i + j]);
130115
cv::imwrite(save_path, vis_img);
131116
std::cout << "Visualized output saved as " << save_path << std::endl;
132117
}
133118
}
134119
} else {
135-
auto start = system_clock::now();
136120
PaddleX::DetResult result;
137121
cv::Mat im = cv::imread(FLAGS_image, 1);
138122
model.predict(im, &result);
139-
auto end = system_clock::now();
140-
auto duration = duration_cast<microseconds>(end - start);
141-
total_running_time_s += static_cast<double>(duration.count()) *
142-
microseconds::period::num /
143-
microseconds::period::den;
144123
// 输出结果目标框
145124
for (int i = 0; i < result.boxes.size(); ++i) {
146125
std::cout << "image file: " << FLAGS_image << std::endl;
@@ -155,19 +134,13 @@ int main(int argc, char** argv) {
155134

156135
// 可视化
157136
cv::Mat vis_img =
158-
PaddleX::Visualize(im, result, model.labels, colormap, FLAGS_threshold);
137+
PaddleX::Visualize(im, result, model.labels, FLAGS_threshold);
159138
std::string save_path =
160139
PaddleX::generate_save_path(FLAGS_save_dir, FLAGS_image);
161140
cv::imwrite(save_path, vis_img);
162141
result.clear();
163142
std::cout << "Visualized output saved as " << save_path << std::endl;
164143
}
165144

166-
std::cout << "Total running time: " << total_running_time_s
167-
<< " s, average running time: " << total_running_time_s / imgs
168-
<< " s/img, total read img time: " << total_imread_time_s
169-
<< " s, average read img time: " << total_imread_time_s / imgs
170-
<< " s, batch_size = " << FLAGS_batch_size << std::endl;
171-
172145
return 0;
173146
}

deploy/cpp/demo/segmenter.cpp

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,7 @@ int main(int argc, char** argv) {
6262
FLAGS_gpu_id,
6363
FLAGS_key,
6464
FLAGS_use_ir_optim);
65-
66-
double total_running_time_s = 0.0;
67-
double total_imread_time_s = 0.0;
6865
int imgs = 1;
69-
auto colormap = PaddleX::GenerateColorMap(model.labels.size());
7066
// 进行预测
7167
if (FLAGS_image_list != "") {
7268
std::ifstream inf(FLAGS_image_list);
@@ -81,7 +77,6 @@ int main(int argc, char** argv) {
8177
}
8278
imgs = image_paths.size();
8379
for (int i = 0; i < image_paths.size(); i += FLAGS_batch_size) {
84-
auto start = system_clock::now();
8580
int im_vec_size =
8681
std::min(static_cast<int>(image_paths.size()), i + FLAGS_batch_size);
8782
std::vector<cv::Mat> im_vec(im_vec_size - i);
@@ -92,50 +87,28 @@ int main(int argc, char** argv) {
9287
for (int j = i; j < im_vec_size; ++j) {
9388
im_vec[j - i] = std::move(cv::imread(image_paths[j], 1));
9489
}
95-
auto imread_end = system_clock::now();
9690
model.predict(im_vec, &results, thread_num);
97-
auto imread_duration = duration_cast<microseconds>(imread_end - start);
98-
total_imread_time_s += static_cast<double>(imread_duration.count()) *
99-
microseconds::period::num /
100-
microseconds::period::den;
101-
auto end = system_clock::now();
102-
auto duration = duration_cast<microseconds>(end - start);
103-
total_running_time_s += static_cast<double>(duration.count()) *
104-
microseconds::period::num /
105-
microseconds::period::den;
10691
// 可视化
10792
for (int j = 0; j < im_vec_size - i; ++j) {
10893
cv::Mat vis_img =
109-
PaddleX::Visualize(im_vec[j], results[j], model.labels, colormap);
94+
PaddleX::Visualize(im_vec[j], results[j], model.labels);
11095
std::string save_path =
11196
PaddleX::generate_save_path(FLAGS_save_dir, image_paths[i + j]);
11297
cv::imwrite(save_path, vis_img);
11398
std::cout << "Visualized output saved as " << save_path << std::endl;
11499
}
115100
}
116101
} else {
117-
auto start = system_clock::now();
118102
PaddleX::SegResult result;
119103
cv::Mat im = cv::imread(FLAGS_image, 1);
120104
model.predict(im, &result);
121-
auto end = system_clock::now();
122-
auto duration = duration_cast<microseconds>(end - start);
123-
total_running_time_s += static_cast<double>(duration.count()) *
124-
microseconds::period::num /
125-
microseconds::period::den;
126105
// 可视化
127-
cv::Mat vis_img = PaddleX::Visualize(im, result, model.labels, colormap);
106+
cv::Mat vis_img = PaddleX::Visualize(im, result, model.labels);
128107
std::string save_path =
129108
PaddleX::generate_save_path(FLAGS_save_dir, FLAGS_image);
130109
cv::imwrite(save_path, vis_img);
131110
result.clear();
132111
std::cout << "Visualized output saved as " << save_path << std::endl;
133112
}
134-
std::cout << "Total running time: " << total_running_time_s
135-
<< " s, average running time: " << total_running_time_s / imgs
136-
<< " s/img, total read img time: " << total_imread_time_s
137-
<< " s, average read img time: " << total_imread_time_s / imgs
138-
<< " s, batch_size = " << FLAGS_batch_size << std::endl;
139-
140113
return 0;
141114
}

deploy/cpp/include/paddlex/visualize.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,12 @@ std::vector<int> GenerateColorMap(int num_class);
6565
* @param img: initial image matrix
6666
* @param results: the detection result
6767
* @param labels: label map
68-
* @param colormap: visualization color map
68+
* @param threshold: minimum confidence to display
6969
* @return visualized image matrix
7070
* */
7171
cv::Mat Visualize(const cv::Mat& img,
7272
const DetResult& results,
7373
const std::map<int, std::string>& labels,
74-
const std::vector<int>& colormap,
7574
float threshold = 0.5);
7675

7776
/*
@@ -81,13 +80,11 @@ cv::Mat Visualize(const cv::Mat& img,
8180
* @param img: initial image matrix
8281
* @param results: the detection result
8382
* @param labels: label map
84-
* @param colormap: visualization color map
8583
* @return visualized image matrix
8684
* */
8785
cv::Mat Visualize(const cv::Mat& img,
8886
const SegResult& result,
89-
const std::map<int, std::string>& labels,
90-
const std::vector<int>& colormap);
87+
const std::map<int, std::string>& labels);
9188

9289
/*
9390
* @brief

deploy/cpp/src/visualize.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ std::vector<int> GenerateColorMap(int num_class) {
3434
cv::Mat Visualize(const cv::Mat& img,
3535
const DetResult& result,
3636
const std::map<int, std::string>& labels,
37-
const std::vector<int>& colormap,
3837
float threshold) {
38+
auto colormap = GenerateColorMap(labels.size());
3939
cv::Mat vis_img = img.clone();
4040
auto boxes = result.boxes;
4141
for (int i = 0; i < boxes.size(); ++i) {
@@ -107,8 +107,8 @@ cv::Mat Visualize(const cv::Mat& img,
107107

108108
cv::Mat Visualize(const cv::Mat& img,
109109
const SegResult& result,
110-
const std::map<int, std::string>& labels,
111-
const std::vector<int>& colormap) {
110+
const std::map<int, std::string>& labels) {
111+
auto colormap = GenerateColorMap(labels.size());
112112
std::vector<uint8_t> label_map(result.label_map.data.begin(),
113113
result.label_map.data.end());
114114
cv::Mat mask(result.label_map.shape[0],

0 commit comments

Comments
 (0)