72 valid_point_index_.clear();
73 valid_point_index_.reserve(cloud->size());
75 grid_index_vec_.clear();
76 grid_index_vec_.reserve(cloud->size() * 2);
77 for (
size_t i = 0; i < cloud->size(); i++) {
78 auto pt = cloud->at(i);
80 if (pt.x < min_x_ || pt.x > max_x_ || pt.y < min_y_ || pt.y > max_y_ || pt.z < min_height_
81 || pt.z > max_height_) {
85 int grid_x = (pt.x - min_x_) / resolution_;
86 int grid_y = (pt.y - min_y_) / resolution_;
87 if (grid_x >= 0 && grid_x < unet_width_ && grid_y >= 0 && grid_y < unet_length_) {
89 valid_point_index_.push_back(i);
91 grid_index_vec_.push_back(grid_y);
92 grid_index_vec_.push_back(grid_x);
95 if (
static_cast<int>(valid_point_index_.size()) >= max_point_number_) {
105 GeneratePfnFeatureGPU(cloud);
107 GeneratePfnFeatureCPU(cloud);
114 void GenerateBackboneFeature(std::shared_ptr<base::Blob<float>> feature) {
116 GenerateBackboneFeatureGPU(feature);
118 GenerateBackboneFeatureCPU(feature);
121 void GenerateBackboneFeatureCPU(std::shared_ptr<base::Blob<float>> feature);
122 void GenerateBackboneFeatureGPU(std::shared_ptr<base::Blob<float>> feature);
124 void LabelToPointCloud(LidarFrame* frame);
131 LidarFrame* lidar_frame_ref_ =
nullptr;
136 motion_unet::MotionUnetModelParam model_param_;
137 std::shared_ptr<inference::Inference> pfn_inference_;
138 std::shared_ptr<inference::Inference> inference_;
149 int max_point_number_;
150 float z_offset_ = 0.0;
153 std::shared_ptr<base::Blob<float>> voxels_;
154 std::shared_ptr<base::Blob<float>> pfn_point_feats_;
157 std::shared_ptr<base::Blob<float>> coors_;
158 std::shared_ptr<base::Blob<float>> point_feats_;
159 std::shared_ptr<base::Blob<float>> bev_feature_;
160 std::shared_ptr<base::Blob<float>> prev_bev_feature_;
161 std::shared_ptr<base::Blob<float>> seg_pred_blob_;
164 std::vector<int> valid_point_index_;
165 std::vector<int> grid_index_vec_;
166 std::vector<int> valid_node_index_;
168 std::vector<Unode> unet_nodes_;
171 std::vector<uint8_t> motion_class_mapping_;
175 cudaStream_t stream_ = 0;
176 int kGPUThreadSize = 512;
179 std::deque<std::pair<double, base::PointDCloudPtr>> prev_world_clouds_;