AlanNewImage ruinmessi commited on
Commit
49fa100
·
1 Parent(s): ea6c947

Support rectangle input for TensorRT C++ demo(#752)

Browse files

Co-authored-by: Songtao Liu <[email protected]>

Files changed (1) hide show
  1. demo/TensorRT/cpp/yolox.cpp +7 -6
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(INPUT_W, INPUT_H, CV_8UC3, cv::Scalar(114, 114, 114));
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(const int target_size, std::vector<int>& strides, std::vector<GridAndStride>& grid_strides)
65
  {
66
  for (auto stride : strides)
67
  {
68
- int num_grid = target_size / stride;
69
- for (int g1 = 0; g1 < num_grid; g1++)
 
70
  {
71
- for (int g0 = 0; g0 < num_grid; 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(INPUT_W, strides, grid_strides);
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