pcod-common v1.0.0
Shared preprocessing and postprocessing for point-cloud object detection
Loading...
Searching...
No Matches
test_manifest_validation.cpp
Go to the documentation of this file.
1// Copyright Institute for Automotive Engineering (ika), RWTH Aachen University
2// SPDX-License-Identifier: Apache-2.0
3
6
7#include <cassert>
8#include <cmath>
9#include <functional>
10#include <stdexcept>
11#include <string>
12
13namespace {
14
16pcod_common::ModelManifest MakeValidManifest() {
19
20 manifest.artifact.bundle_name = "pbod_fp32_gpu_triton_test";
21 manifest.artifact.export_format = "triton_fp32_gpu";
22 manifest.artifact.backend = "triton_onnx";
23 manifest.artifact.precision = "fp32";
24 manifest.artifact.device = "cuda";
25 manifest.artifact.files.checkpoint = "checkpoints/best.pt";
26 manifest.artifact.files.resolved_training_config = "config/resolved_training_config.yml";
27 manifest.artifact.files.triton_repository = ".";
28 manifest.artifact.files.triton_config = "config.pbtxt";
29 manifest.artifact.files.triton_model = "1/model.onnx";
30 manifest.artifact.triton.enabled = true;
31 manifest.artifact.triton.model_name = "pbod_repo";
32 manifest.artifact.triton.model_version = "1";
33 manifest.artifact.inputs.push_back({"point_features", "float32", {"batch", "100", "1"}});
34 manifest.artifact.outputs.push_back({"reg_logits", "float32", {"batch", "200", "14"}});
35
38 manifest.frozen_contract.preprocessing.x_range = {-1.0f, 1.0f};
39 manifest.frozen_contract.preprocessing.y_range = {-1.0f, 1.0f};
40 manifest.frozen_contract.preprocessing.z_range = {-1.0f, 1.0f};
46
50 manifest.frozen_contract.postprocessing.class_names = {"car", "pedestrian"};
51
52 manifest.frozen_contract.model.stride = {2, 1, 2};
53 manifest.frozen_contract.model.up_stride = {1, 1, 2};
55 manifest.frozen_contract.model.pillar_map_size = {10, 10};
56 manifest.frozen_contract.model.pillar_map_range = {{{-1.0f, 1.0f}, {-1.0f, 1.0f}, {-1.0f, 1.0f}}};
57
63
64 return manifest;
65}
66
71bool ExpectRuntimeError(const std::function<void()>& fn) {
72 try {
73 fn();
74 } catch (const std::runtime_error&) {
75 return true;
76 }
77 return false;
78}
79
80} // namespace
81
83int main() {
84 {
85 auto manifest = MakeValidManifest();
87 }
88
89 {
90 auto bad = MakeValidManifest();
91 bad.schema_version = "1.0";
92 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
93 }
94
95 {
96 auto bad = MakeValidManifest();
97 bad.artifact.files.checkpoint.clear();
98 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
99 }
100
101 {
102 auto bad = MakeValidManifest();
103 bad.artifact.files.checkpoint = "../best.pt";
104 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
105 }
106
107 {
108 auto bad = MakeValidManifest();
109 bad.frozen_contract.preprocessing.max_num_points = 0;
110 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
111 }
112
113 {
114 auto bad = MakeValidManifest();
115 bad.frozen_contract.postprocessing.class_names = {"car"};
116 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
117 }
118
119 {
120 auto bad = MakeValidManifest();
121 bad.runtime_defaults.postprocessing.nms_score_thresholds = {};
122 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
123 }
124
125 {
126 auto bad = MakeValidManifest();
127 bad.artifact.outputs.clear();
128 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
129 }
130
131 {
132 auto bad = MakeValidManifest();
133 bad.runtime_defaults.preprocessing.point_feature.value_threshold = 0.0f;
134 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
135 }
136
137 {
138 auto bad = MakeValidManifest();
139 bad.frozen_contract.preprocessing.point_feature_normalization.type = "min_max";
140 bad.frozen_contract.preprocessing.point_feature_normalization.min_value = 5.0f;
141 bad.frozen_contract.preprocessing.point_feature_normalization.max_value = 5.0f;
142 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
143 }
144
145 {
146 auto bad = MakeValidManifest();
147 bad.frozen_contract.preprocessing.point_feature_normalization.type = "unsupported";
148 assert(ExpectRuntimeError([&]() { pcod_common::ValidateModelManifest(bad); }));
149 }
150
151 return 0;
152}
constexpr const char * kManifestSchemaVersion
Definition version.hpp:10
void ValidateModelManifest(const ModelManifest &manifest)
std::string triton_config
Triton model configuration path.
std::string triton_model
Triton model artifact path.
std::string checkpoint
Source checkpoint path.
std::string resolved_training_config
Resolved training configuration path.
std::string triton_repository
Triton repository path.
std::string model_version
Triton model version.
bool enabled
Whether Triton artifacts were exported.
std::vector< Tensor > outputs
Ordered output tensor contracts.
std::string precision
Numeric precision.
std::string bundle_name
Human-readable bundle name.
std::string device
Export target device.
TritonDeployment triton
Triton deployment metadata.
std::string export_format
Model serialization format.
std::string backend
Runtime backend.
Files files
Bundle-relative files.
std::vector< Tensor > inputs
Ordered input tensor contracts.
FrozenModelConfig model
Model architecture contract.
FrozenPreprocessConfig preprocessing
Preprocessing contract.
FrozenPostprocessConfig postprocessing
Postprocessing contract.
std::array< std::array< float, 2 >, 3 > pillar_map_range
XYZ pillar-map ranges.
std::array< int, 2 > pillar_map_size
Base pillar-map dimensions.
int first_up_stride
First decoder upsampling factor.
std::vector< int > stride
Backbone strides.
std::vector< int > up_stride
Decoder upsampling strides.
std::vector< std::string > class_names
Class names in output order.
int grid_y
Output grid size along Y.
int grid_x
Output grid size along X.
int num_classes
Number of semantic classes.
float voxel_y
Voxel width along Y.
PointFeatureNormalizationContract point_feature_normalization
Scalar feature contract.
std::array< float, 2 > x_range
Accepted X range.
std::array< float, 2 > z_range
Accepted Z range.
int num_point_features
Features expected per point.
std::array< float, 2 > y_range
Accepted Y range.
float voxel_z
Voxel width along Z.
float voxel_x
Voxel width along X.
int max_num_points
Maximum input point count.
RuntimeDefaults runtime_defaults
Overridable runtime defaults.
std::string schema_version
Manifest schema version.
FrozenContract frozen_contract
Non-overridable inference contract.
ArtifactConfig artifact
Artifact metadata.
int max_detections
Maximum final detection count.
float nms_iou_threshold
Rotated NMS IoU threshold.
std::vector< float > nms_score_thresholds
NMS class score thresholds.
float class_score_threshold
Decoder confidence threshold.
float value_threshold
Value-threshold normalization divisor.
PointFeature point_feature
Additional point-feature defaults.
Postprocessing postprocessing
Postprocessing defaults.
Preprocessing preprocessing
Preprocessing defaults.