| /* |
| * Copyright 2023 Google LLC |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef SSD_POSTPROCESS_BOX_H_ |
| #define SSD_POSTPROCESS_BOX_H_ |
| |
| #include <stdint.h> |
| |
| #include "ssd_postprocess/common.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif // __cplusplus |
| |
| #ifndef SSD_BOX_DIMS |
| #define SSD_BOX_DIMS 4 |
| #endif |
| #ifndef SSD_MAX_LAYERS |
| #define SSD_MAX_LAYERS 8 |
| #endif |
| #ifndef SSD_MAX_ANCHORS_PER_CELL |
| #define SSD_MAX_ANCHORS_PER_CELL 6 |
| #endif |
| |
| typedef struct { |
| int num_layers; |
| int num_boxes; |
| int input_height; |
| int input_width; |
| int global_scales[SSD_BOX_DIMS]; |
| int box_zero_points[SSD_BOX_DIMS]; |
| float box_scales[SSD_BOX_DIMS]; |
| int score_zero_points[SSD_BOX_DIMS]; |
| float score_scales[SSD_BOX_DIMS]; |
| float score_threshold; |
| int anchors_per_cell; |
| float anchor_base_size[SSD_MAX_LAYERS * SSD_MAX_ANCHORS_PER_CELL]; |
| int anchor_stride[SSD_MAX_LAYERS]; |
| } SsdParams; |
| |
| // Set SSD parameters |
| void set_params(SsdParams* params); |
| |
| // Decode and extract detected boxes from model outputs |
| void get_detected_boxes(uint8_t** model_out, Boxes* boxes); |
| |
| #ifdef __cplusplusS |
| } // extern "C" |
| #endif // __cplusplus |
| |
| #endif // SSD_POSTPROCESS_BOX_H_ |