131 {
132 if (frame == nullptr) {
133 return false;
134 }
135
136
137 auto model_inputs = model_param_.
info().inputs();
138 auto input_image_blob =
net_->get_blob(model_inputs[0].name());
139 auto input_cam2img_blob =
net_->get_blob(model_inputs[1].name());
140 auto input_lidar2cam_blob =
net_->get_blob(model_inputs[2].name());
141
142 const auto &camera_k_matrix = options_.
intrinsic;
143 float *input_cam_intrinsic = input_cam2img_blob->mutable_cpu_data();
144 for (size_t i = 0; i < 3; ++i) {
145 for (size_t j = 0; j < 4; ++j) {
146 if (3 == j) {
147 input_cam_intrinsic[i * 4 + j] = 0.0;
148 } else {
149 input_cam_intrinsic[i * 4 + j] = camera_k_matrix(i, j);
150 }
151 }
152 }
153
154 float *input_lidar2cam_data = input_lidar2cam_blob->mutable_cpu_data();
155 for (int i = 0; i < 16; ++i) {
156 input_lidar2cam_data[i] = lidar_to_cam_[i];
157 }
158
159 DataProvider::ImageOptions image_options;
161 std::shared_ptr<base::Image8U> image = std::make_shared<base::Image8U>();
162 frame->data_provider->GetImage(image_options, image.get());
163
164 Preprocess(image.get(), input_image_blob);
165
166
168
169
170 auto model_outputs = model_param_.
info().outputs();
171 auto out_detections =
net_->get_blob(model_outputs[0].name());
172 auto out_labels =
net_->get_blob(model_outputs[1].name());
173 auto out_scores =
net_->get_blob(model_outputs[2].name());
174
175
176
177
178
180 out_detections, out_labels, out_scores);
181
182 return true;
183}
std::shared_ptr< inference::Inference > net_
void GetCaddnObjects(std::vector< base::ObjectPtr > *objects, const caddn::ModelParam &model_param, const std::vector< base::ObjectSubType > &types, const base::BlobPtr< float > &boxes, const base::BlobPtr< float > &labels, const base::BlobPtr< float > &scores)
Get the Caddn Objects objects from Blob
Eigen::Matrix3f intrinsic
optional common::ModelInfo info