EyeAI
Loading...
Searching...
No Matches
YoloModel.hpp
Go to the documentation of this file.
1#pragma once
2
5
6class YoloModel {
7 public:
8 struct BoundingBox {
9 std::string cls_name;
10 float cx = 0; // 0
11 float cy = 0; // 1
12 float w = 0;
13 float h = 0;
14 float x1 = 0;
15 float y1 = 0;
16 float x2 = 0;
17 float y2 = 0;
18 int cls = 0;
19 float cnf = 0;
20
21 bool operator==(const BoundingBox&) const = default;
22 };
23
24 YoloModel() = default;
25
26 // Erstellt das Modell
27 tl::expected<bool, std::string> create(
28 std::vector<int8_t>&& model_data,
29 std::vector<std::string> labels,
30 std::string_view gpu_delegate_serialization_dir,
31 std::string_view model_token,
32 TfLiteLogWarningCallback log_warning_callback,
33 TfLiteLogErrorCallback log_error_callback,
34 bool enable_npu,
35 std::string skel_directory_dir
36 );
37
38 tl::expected<std::vector<BoundingBox>, std::string>
40
41 [[nodiscard]] std::vector<BoundingBox>
42 best_box(std::span<const float> array) const;
43
44 std::span<const int> get_input_shape();
45
46 std::span<const int> get_output_shape();
47
48 size_t num_channel = 0;
49 size_t num_elements = 0;
50
51 private:
52 [[nodiscard]] std::optional<BoundingBox>
53 parse_box(std::span<const float> array, size_t box_index) const;
54 [[nodiscard]] std::vector<BoundingBox>
55 apply_nms(const std::vector<BoundingBox>& boxes) const;
56 static float
57 calculate_iou(const BoundingBox& box1, const BoundingBox& box2);
58
59 std::unique_ptr<TfLiteRuntime> runtime;
60
61 std::vector<std::string> labels;
62
63 const float CONFIDENCE_THRESHOLD = 0.5F;
64 const float IOU_THRESHOLD = 0.5F;
65};
TensorBuffer< float, FloatTensorFormat, FORMAT > FloatTensorBuffer
Definition TensorBuffer.hpp:106
void(*)(std::string) TfLiteLogWarningCallback
Definition TfLiteRuntime.hpp:17
void(*)(std::string) TfLiteLogErrorCallback
Definition TfLiteRuntime.hpp:18
tl::expected< bool, std::string > create(std::vector< int8_t > &&model_data, std::vector< std::string > labels, std::string_view gpu_delegate_serialization_dir, std::string_view model_token, TfLiteLogWarningCallback log_warning_callback, TfLiteLogErrorCallback log_error_callback, bool enable_npu, std::string skel_directory_dir)
Definition YoloModel.cpp:11
size_t num_channel
Definition YoloModel.hpp:48
tl::expected< std::vector< BoundingBox >, std::string > run(FloatTensorBuffer< FloatTensorFormat::ImageRGB255 > &input)
Definition YoloModel.cpp:56
std::span< const int > get_input_shape()
Definition YoloModel.cpp:47
std::span< const int > get_output_shape()
Definition YoloModel.cpp:51
std::vector< BoundingBox > best_box(std::span< const float > array) const
Definition YoloModel.cpp:74
size_t num_elements
Definition YoloModel.hpp:49
YoloModel()=default
Definition YoloModel.hpp:8
float x2
Definition YoloModel.hpp:16
float cy
Definition YoloModel.hpp:11
float y1
Definition YoloModel.hpp:15
float h
Definition YoloModel.hpp:13
float w
Definition YoloModel.hpp:12
float x1
Definition YoloModel.hpp:14
bool operator==(const BoundingBox &) const =default
float cx
Definition YoloModel.hpp:10
int cls
Definition YoloModel.hpp:18
float y2
Definition YoloModel.hpp:17
std::string cls_name
Definition YoloModel.hpp:9
float cnf
Definition YoloModel.hpp:19