Support rectangle input for TensorRT C++ demo(#752)
Browse filesCo-authored-by: Songtao Liu <[email protected]>
demo/TensorRT/cpp/yolox.cpp
CHANGED
@@ -42,7 +42,7 @@ cv::Mat static_resize(cv::Mat& img) {
|
|
42 |
int unpad_h = r * img.rows;
|
43 |
cv::Mat re(unpad_h, unpad_w, CV_8UC3);
|
44 |
cv::resize(img, re, re.size());
|
45 |
-
cv::Mat out(
|
46 |
re.copyTo(out(cv::Rect(0, 0, re.cols, re.rows)));
|
47 |
return out;
|
48 |
}
|
@@ -61,14 +61,15 @@ struct GridAndStride
|
|
61 |
int stride;
|
62 |
};
|
63 |
|
64 |
-
static void generate_grids_and_stride(
|
65 |
{
|
66 |
for (auto stride : strides)
|
67 |
{
|
68 |
-
int
|
69 |
-
|
|
|
70 |
{
|
71 |
-
for (int g0 = 0; g0 <
|
72 |
{
|
73 |
grid_strides.push_back((GridAndStride){g0, g1, stride});
|
74 |
}
|
@@ -230,7 +231,7 @@ static void decode_outputs(float* prob, std::vector<Object>& objects, float scal
|
|
230 |
std::vector<Object> proposals;
|
231 |
std::vector<int> strides = {8, 16, 32};
|
232 |
std::vector<GridAndStride> grid_strides;
|
233 |
-
generate_grids_and_stride(
|
234 |
generate_yolox_proposals(grid_strides, prob, BBOX_CONF_THRESH, proposals);
|
235 |
std::cout << "num of boxes before nms: " << proposals.size() << std::endl;
|
236 |
|
|
|
42 |
int unpad_h = r * img.rows;
|
43 |
cv::Mat re(unpad_h, unpad_w, CV_8UC3);
|
44 |
cv::resize(img, re, re.size());
|
45 |
+
cv::Mat out(INPUT_H, INPUT_W, CV_8UC3, cv::Scalar(114, 114, 114));
|
46 |
re.copyTo(out(cv::Rect(0, 0, re.cols, re.rows)));
|
47 |
return out;
|
48 |
}
|
|
|
61 |
int stride;
|
62 |
};
|
63 |
|
64 |
+
static void generate_grids_and_stride(std::vector<int>& strides, std::vector<GridAndStride>& grid_strides)
|
65 |
{
|
66 |
for (auto stride : strides)
|
67 |
{
|
68 |
+
int num_grid_y = INPUT_H / stride;
|
69 |
+
int num_grid_x = INPUT_W / stride;
|
70 |
+
for (int g1 = 0; g1 < num_grid_y; g1++)
|
71 |
{
|
72 |
+
for (int g0 = 0; g0 < num_grid_x; g0++)
|
73 |
{
|
74 |
grid_strides.push_back((GridAndStride){g0, g1, stride});
|
75 |
}
|
|
|
231 |
std::vector<Object> proposals;
|
232 |
std::vector<int> strides = {8, 16, 32};
|
233 |
std::vector<GridAndStride> grid_strides;
|
234 |
+
generate_grids_and_stride(strides, grid_strides);
|
235 |
generate_yolox_proposals(grid_strides, prob, BBOX_CONF_THRESH, proposals);
|
236 |
std::cout << "num of boxes before nms: " << proposals.size() << std::endl;
|
237 |
|