56 {
57 std::string conf_file =
60
61 LoadParams(cpdet_config_);
62
64 AERROR <<
"Init CPDetection Model Failed";
65 return false;
66 }
67
68
69 cudaStreamCreate(&stream_);
70 pfn_inference_->SetStream(stream_);
71 backbone_inference_->SetStream(stream_);
72
73
74 point2grid_blob_.reset(new base::Blob<int>(std::vector<int>{max_voxel_num_}));
75 grid2pointnum_blob_.reset(new base::Blob<int>(std::vector<int>{map_size_}));
76
77 if (use_gpu_generate_feature_) {
78 voxels_blob_->mutable_gpu_data();
79 canvas_feature_blob_->mutable_gpu_data();
80 point2grid_blob_->mutable_gpu_data();
81 grid2pointnum_blob_->mutable_gpu_data();
82 } else {
83 voxels_blob_->mutable_cpu_data();
84 canvas_feature_blob_->mutable_cpu_data();
85 point2grid_blob_->mutable_cpu_data();
86 grid2pointnum_blob_->mutable_cpu_data();
87 }
88
89 int channel_index = pillar_feature_dim_;
90 feature_offset_["canvas_feature"] = canvas_feature_blob_->offset(0, 0);
91 if (use_cnnseg_features_) {
92 feature_offset_["max_height"] = canvas_feature_blob_->offset(0, channel_index++);
93 feature_offset_["mean_height"] = canvas_feature_blob_->offset(0, channel_index++);
94 feature_offset_["top_intensity"] = canvas_feature_blob_->offset(0, channel_index++);
95 feature_offset_["mean_intensity"] = canvas_feature_blob_->offset(0, channel_index++);
96 feature_offset_["count"] = canvas_feature_blob_->offset(0, channel_index++);
97 feature_offset_["nonempty"] = canvas_feature_blob_->offset(0, channel_index++);
98 feature_offset_["height_bin"] = canvas_feature_blob_->offset(0, channel_index);
99 }
100
101 max_candidate_num_ = num_tasks_ * nms_pre_max_size_;
102 all_res_box_blob_.reset(new base::Blob<float>(std::vector<int>{max_candidate_num_, kBoxBlockSize}));
103 all_res_conf_blob_.reset(new base::Blob<float>(std::vector<int>{max_candidate_num_}));
104 all_res_cls_blob_.reset(new base::Blob<int>(std::vector<int>{max_candidate_num_}));
105
106 res_box_num_blob_.reset(new base::Blob<int>(std::vector<int>{1}));
107 res_box_blob_.reset(new base::Blob<float>(std::vector<int>{nms_pre_max_size_, kBoxBlockSize}));
108 res_conf_blob_.reset(new base::Blob<float>(std::vector<int>{nms_pre_max_size_}));
109 res_cls_blob_.reset(new base::Blob<int>(std::vector<int>{nms_pre_max_size_}));
110
111 score_class_map_blob_.reset(new base::Blob<float>(std::vector<int>{num_classes_}));
112
113 res_sorted_indices_blob_.reset(new base::Blob<int>(std::vector<int>{nms_pre_max_size_}));
114 box_for_nms_blob_.reset(new base::Blob<float>(std::vector<int>{max_candidate_num_, 4}));
115 box_corner_blob_.reset(new base::Blob<float>(std::vector<int>{max_candidate_num_, 8}));
116 remain_conf_blob_.reset(new base::Blob<float>(std::vector<int>{nms_pre_max_size_}));
117 rotate_overlapped_blob_.reset(new base::Blob<bool>(std::vector<int>{nms_pre_max_size_, nms_pre_max_size_}));
118 kept_indices_blob_.reset(new base::Blob<int>(std::vector<int>{num_tasks_ * nms_post_max_size_}));
119
120 box_corners_blob_.reset(new base::Blob<float>(std::vector<int>{max_candidate_num_, 8}));
121 box_rects_blob_.reset(new base::Blob<float>(std::vector<int>{max_candidate_num_, 4}));
122 valid_point_num_blob_.reset(new base::Blob<int>(std::vector<int>{1}));
123 valid_point_indices_blob_.reset(new base::Blob<int>(std::vector<int>{max_valid_point_size_}));
124 valid_point2boxid_blob_.reset(new base::Blob<int>(std::vector<int>{max_valid_point_size_}));
125
126 res_box_num_blob_->mutable_gpu_data();
127 res_box_blob_->mutable_gpu_data();
128 res_conf_blob_->mutable_gpu_data();
129 res_cls_blob_->mutable_gpu_data();
130 all_res_box_blob_->mutable_gpu_data();
131 all_res_conf_blob_->mutable_gpu_data();
132 all_res_cls_blob_->mutable_gpu_data();
133 score_class_map_blob_->mutable_gpu_data();
134 remain_conf_blob_->mutable_gpu_data();
135 rotate_overlapped_blob_->mutable_gpu_data();
136 kept_indices_blob_->mutable_gpu_data();
137 box_corners_blob_->mutable_gpu_data();
138 box_rects_blob_->mutable_gpu_data();
139 valid_point_num_blob_->mutable_gpu_data();
140 valid_point_indices_blob_->mutable_gpu_data();
141 valid_point2boxid_blob_->mutable_gpu_data();
142
143 res_box_num_blob_->mutable_cpu_data();
144 all_res_box_blob_->mutable_cpu_data();
145 all_res_conf_blob_->mutable_cpu_data();
146 all_res_cls_blob_->mutable_cpu_data();
147 rotate_overlapped_blob_->mutable_cpu_data();
148 box_corners_blob_->mutable_cpu_data();
149 box_rects_blob_->mutable_cpu_data();
150 valid_point_num_blob_->mutable_cpu_data();
151 valid_point_indices_blob_->mutable_cpu_data();
152 valid_point2boxid_blob_->mutable_cpu_data();
153
154 if (cpdet_config_.has_plugins()) {
155 const auto &plugin = cpdet_config_.
plugins();
156 const auto &name = plugin.
name();
159 if (!down_sample_) {
160 AINFO <<
"Failed to find down_sample plugin: " << name <<
", skipped";
161 return false;
162 }
163 DownSampleInitOptions option;
164 option.config_path = plugin.config_path();
165 option.config_file = plugin.config_file();
166 if (!down_sample_->Init(option)) {
167 AINFO <<
"Failed to init down_sample plugin: " << name <<
", skipped";
168 return false;
169 }
170 }
171
172 return true;
173}
static PluginManager * Instance()
get singleton instance of PluginManager
std::shared_ptr< Base > CreateInstance(const std::string &derived_class)
create plugin instance of derived class based on Base
static std::string GetFullClassName(const std::string &class_name)
Given the class name of perception module, combine the namespace "apollo::perception::lidar::" with i...
bool GetProtoFromFile(const std::string &file_name, google::protobuf::Message *message)
Parses the content of the file specified by the file_name as a representation of protobufs,...
std::string GetConfigFile(const std::string &config_path, const std::string &config_file)
optional PluginParam plugins