Apollo  6.0
Open source self driving car software
postprocess_cuda.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2020 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 /*
18  * Copyright 2018-2019 Autoware Foundation. All rights reserved.
19  *
20  * Licensed under the Apache License, Version 2.0 (the "License");
21  * you may not use this file except in compliance with the License.
22  * You may obtain a copy of the License at
23  *
24  * http://www.apache.org/licenses/LICENSE-2.0
25  *
26  * Unless required by applicable law or agreed to in writing, software
27  * distributed under the License is distributed on an "AS IS" BASIS,
28  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29  * See the License for the specific language governing permissions and
30  * limitations under the License.
31  */
32 
40 #pragma once
41 
42 // headers in STL
43 #include <iostream>
44 #include <memory>
45 #include <vector>
46 
47 // headers in local files
49 
50 namespace apollo {
51 namespace perception {
52 namespace lidar {
53 
55  private:
56  const float float_min_;
57  const float float_max_;
58  const int num_anchor_;
59  const int num_class_;
60  const float score_threshold_;
61  const int num_threads_;
62  const float nms_overlap_threshold_;
63  const int num_box_corners_;
64  const int num_output_box_feature_;
65 
66  std::unique_ptr<NmsCuda> nms_cuda_ptr_;
67 
68  public:
83  PostprocessCuda(const float float_min, const float float_max,
84  const int num_anchor, const int num_class,
85  const float score_threshold, const int num_threads,
86  const float nms_overlap_threshold, const int num_box_corners,
87  const int num_output_box_feature);
88 
113  void DoPostprocessCuda(
114  const float* rpn_box_output, const float* rpn_cls_output,
115  const float* rpn_dir_output, int* dev_anchor_mask,
116  const float* dev_anchors_px, const float* dev_anchors_py,
117  const float* dev_anchors_pz, const float* dev_anchors_dx,
118  const float* dev_anchors_dy, const float* dev_anchors_dz,
119  const float* dev_anchors_ro, float* dev_filtered_box,
120  float* dev_filtered_score, int* dev_filtered_label, int* dev_filtered_dir,
121  float* dev_box_for_nms, int* dev_filter_count,
122  std::vector<float>* out_detection, std::vector<int>* out_label);
123 };
124 
125 } // namespace lidar
126 } // namespace perception
127 } // namespace apollo
Definition: postprocess_cuda.h:54
Non-maximum suppresion for network output.
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
PostprocessCuda(const float float_min, const float float_max, const int num_anchor, const int num_class, const float score_threshold, const int num_threads, const float nms_overlap_threshold, const int num_box_corners, const int num_output_box_feature)
Constructor.
void DoPostprocessCuda(const float *rpn_box_output, const float *rpn_cls_output, const float *rpn_dir_output, int *dev_anchor_mask, const float *dev_anchors_px, const float *dev_anchors_py, const float *dev_anchors_pz, const float *dev_anchors_dx, const float *dev_anchors_dy, const float *dev_anchors_dz, const float *dev_anchors_ro, float *dev_filtered_box, float *dev_filtered_score, int *dev_filtered_label, int *dev_filtered_dir, float *dev_box_for_nms, int *dev_filter_count, std::vector< float > *out_detection, std::vector< int > *out_label)
Postprocessing for the network output.