NVIDIA DeepStream SDK API Reference

8.0 Release
lidar_preprocess_config.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
13 
14 #ifndef DS3D_DATAFILTER_LIDAR_PREPROCESS_CONFIG_H
15 #define DS3D_DATAFILTER_LIDAR_PREPROCESS_CONFIG_H
16 
17 #include <ds3d/common/common.h>
18 #include <ds3d/common/func_utils.h>
19 
21 
22 #include "infer_utils.h"
23 
24 using namespace nvdsinferserver;
25 
26 
27 namespace ds3d { namespace impl { namespace filter {
28 
30  std::string fromKey;
31  bool is2DFrame = false;
32 };
33 
34 struct Config {
36  std::string filterInputDatamapKey;
37  uint32_t memPoolSize = 8;
38  std::map<size_t, std::string> modelInputs;
39  uint gpuid;
40  InferMemType inputTensorMemType = InferMemType::kGpuCuda;
41  std::map<std::string, ModelInputDesc> inputLayersDes;
42  //app's cfg path
43  std::string configPath;
44  std::vector<std::string> lidarDataFrom;
45 
46  bool check()
47  {
48  if (!memPoolSize) {
49  LOG_ERROR("lidarpreprocess configed wrong mem_pool_size");
50  return false;
51  }
52  return true;
53  }
54 };
55 
56 inline ErrCode
57 parseConfig(const std::string& content, const std::string& path, Config& config)
58 {
60  config::parseComponentConfig(content, path, config.compConfig),
61  "parse dataloader component content failed");
62  YAML::Node node = YAML::Load(config.compConfig.configBody);
63  auto filterInputDatamapKey = node["filter_input_datamap_key"];
64  auto yMemPoolSize = node["mem_pool_size"];
65  auto modelInputs = node["model_inputs"];
66  auto gpuid = node["gpu_id"];
67  auto inputTensorMemType = node["input_tensor_mem_type"];
68  auto configPath = node["config_path"];
69  auto lidarDataFrom = node["lidar_data_from"];
70 
71  if (filterInputDatamapKey) {
72  config.filterInputDatamapKey = filterInputDatamapKey.as<std::string>();
73  }
74  if (yMemPoolSize) {
75  config.memPoolSize = yMemPoolSize.as<uint32_t>();
76  }
77  if (modelInputs) {
78  for (const auto& item :modelInputs) {
79  ModelInputDesc des;
80  if (item["name"])
81  des.name = item["name"].as<std::string>(); // name
82  std::string dataType;
83  if (item["datatype"]){
84  dataType = item["datatype"].as<std::string>();
85  des.dataType = grpcStr2DataType(dataType); //datatype
86  }
87  std::vector<std::string> strStreams = item["shape"].as<std::vector<std::string>>();
88  des.dims.numDims = strStreams.size();
89  for (size_t i = 0; i < des.dims.numDims; i++){
90  des.dims.d[i] = std::stoi(strStreams[i]);
91  }
92  des.dims.numElements = std::accumulate(des.dims.d, des.dims.d + des.dims.numDims, 1,
93  [](int s, int i) { return s * i; });
94  if (item["from"]) {
95  des.fromKey = item["from"].as<std::string>();
96  }
97  if (item["is_2d_frame"]) {
98  des.is2DFrame = item["is_2d_frame"].as<bool>();
99  }
100  LOG_INFO(
101  "modelInputs name:%s, dataType:%s, ndataType:%d, numDims:%d, numElements:%d, from: "
102  "%s",
103  des.name.c_str(), dataType.c_str(), (int)des.dataType, des.dims.numDims,
104  des.dims.numElements, des.fromKey.c_str());
105  config.inputLayersDes.emplace(des.name, des);
106  }
107  }
108  if (gpuid) {
109  config.gpuid = gpuid.as<uint>();
110  }
111  if (inputTensorMemType) {
112  std::string value = inputTensorMemType.as<std::string>();
113  if(!value.compare("GpuCuda")){
115  } else if (!value.compare("CpuCuda") || !value.compare("Cpu")) {
117  } else {
118  LOG_WARNING("%s not supported, use defualt value GpuCuda", value.c_str());
119  }
120  }
121  if (configPath) {
122  config.configPath = configPath.as<std::string>();
123  }
124  if (lidarDataFrom) {
125  config.lidarDataFrom = lidarDataFrom.as<std::vector<std::string>>();
126  }
127 
128  LOG_INFO("memPoolSize: %d", config.memPoolSize);
129  LOG_INFO("gpuid: %d", config.gpuid);
130  LOG_INFO("filterInputDatamapKey: %s", config.filterInputDatamapKey.c_str());
131  LOG_INFO("inputTensorMemType: %d", (int)config.inputTensorMemType);
132  LOG_INFO("configPath: %s", config.configPath.c_str());
133 
134  //config data checking
135  if (config.inputLayersDes.size() == 0) {
136  LOG_ERROR("model_inputs parse failed, abort");
137  abort();
138  }
139  if (config.lidarDataFrom.size() == 0) {
140  LOG_ERROR("no lidar data, abort");
141  abort();
142  }
143 
144  return ErrCode::kGood;
145 }
146 
147 }}} // namespace ds3d::impl::filter
148 
149 #endif // DS3D_DATAFILTER_LIDAR_PREPROCESS_CONFIG_H
ds3d::impl::filter::Config
Definition: lidar_preprocess_config.h:34
yaml_config.hpp
nvdsinferserver
This is a header file for pre-processing cuda kernels with normalization and mean subtraction require...
Definition: gstnvinferserver_impl.h:64
INFER_EXPORT_API::grpcStr2DataType
InferDataType grpcStr2DataType(const std::string &type)
ds3d::impl::filter::Config::filterInputDatamapKey
std::string filterInputDatamapKey
Definition: lidar_preprocess_config.h:36
ds3d::impl::filter::ModelInputDesc
Definition: lidar_preprocess_config.h:29
ds3d::impl::filter::ModelInputDesc::is2DFrame
bool is2DFrame
Definition: lidar_preprocess_config.h:31
LOG_WARNING
#define LOG_WARNING
Definition: logging.h:19
nvdsinferserver::InferDims::numDims
unsigned int numDims
Number of dimensions of the layer.
Definition: infer_datatypes.h:149
ds3d::impl::filter::Config::inputTensorMemType
InferMemType inputTensorMemType
Definition: lidar_preprocess_config.h:40
ds3d::impl::filter::ModelInputDesc::fromKey
std::string fromKey
Definition: lidar_preprocess_config.h:30
ds3d::impl::filter::Config::lidarDataFrom
std::vector< std::string > lidarDataFrom
Definition: lidar_preprocess_config.h:44
infer_utils.h
Header file containing utility functions and classes used by the nvinferserver low level library.
ds3d::impl::filter::Config::memPoolSize
uint32_t memPoolSize
Definition: lidar_preprocess_config.h:37
ds3d::config::parseComponentConfig
ErrCode parseComponentConfig(const std::string &yamlComp, const std::string &path, ComponentConfig &config)
Definition: yaml_config.hpp:53
ds3d::ErrCode
ErrCode
Definition: common.h:43
nvdsinferserver::InferMemType::kGpuCuda
@ kGpuCuda
GPU CUDA memory.
LOG_INFO
#define LOG_INFO(fmt,...)
Definition: seq_process_common.h:63
LOG_ERROR
#define LOG_ERROR(fmt,...)
Definition: deepstream_action.h:55
ds3d::impl::filter::Config::compConfig
config::ComponentConfig compConfig
Definition: lidar_preprocess_config.h:35
ds3d::impl::filter::Config::modelInputs
std::map< size_t, std::string > modelInputs
Definition: lidar_preprocess_config.h:38
DS3D_ERROR_RETURN
#define DS3D_ERROR_RETURN(code, fmt,...)
Definition: defines.h:72
nvdsinferserver::InferDims::d
int d[NVDSINFER_MAX_DIMS]
Size of the layer in each dimension.
Definition: infer_datatypes.h:151
nvdsinferserver::InferBufferDescription::dataType
InferDataType dataType
Datatype associated with the buffer.
Definition: infer_datatypes.h:180
ds3d::config::ComponentConfig::configBody
std::string configBody
Definition: includes/ds3d/common/config.h:44
ds3d::impl::filter::Config::configPath
std::string configPath
Definition: lidar_preprocess_config.h:43
common.h
ds3d::impl::filter::Config::gpuid
uint gpuid
Definition: lidar_preprocess_config.h:39
nvdsinferserver::InferMemType
InferMemType
The memory types of inference buffers.
Definition: infer_datatypes.h:56
ds3d::config::ComponentConfig
Definition: includes/ds3d/common/config.h:34
func_utils.h
nvdsinferserver::InferDims::numElements
unsigned int numElements
Number of elements in the layer including all dimensions.
Definition: infer_datatypes.h:153
nvdsinferserver::InferBufferDescription::dims
InferDims dims
Dimensions of the tensor.
Definition: infer_datatypes.h:184
ds3d::impl::filter::Config::check
bool check()
Definition: lidar_preprocess_config.h:46
ds3d
Definition: abi_dataprocess.h:21
ds3d::impl::filter::Config::inputLayersDes
std::map< std::string, ModelInputDesc > inputLayersDes
Definition: lidar_preprocess_config.h:41
nvdsinferserver::InferMemType::kCpuCuda
@ kCpuCuda
CUDA pinned memory.
ds3d::impl::filter::parseConfig
ErrCode parseConfig(const std::string &content, const std::string &path, Config &config)
Definition: lidar_preprocess_config.h:57
nvdsinferserver::InferBufferDescription::name
std::string name
Name of the buffer.
Definition: infer_datatypes.h:192
nvdsinferserver::InferBufferDescription
Holds the information about a inference buffer.
Definition: infer_datatypes.h:168