ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
Sam3.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2026 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
#include "reusex/vision/IModel.hpp"
7
#include "reusex/vision/common/object.hpp"
8
#include "reusex/vision/onnx/Sam3Data.hpp"
9
10
#include <onnxruntime_cxx_api.h>
11
#include <tokenizers_cpp.h>
12
13
#include <filesystem>
14
#include <memory>
15
#include <span>
16
#include <string>
17
#include <unordered_map>
18
#include <vector>
19
20
namespace
reusex::vision::onnx
{
21
30
class
ONNXSam3
:
public
IModel
{
31
public
:
37
explicit
ONNXSam3
(
const
std::filesystem::path &model_dir,
38
bool
use_cuda =
false
);
39
44
static
std::unique_ptr<ONNXSam3>
45
create
(
const
std::filesystem::path &model_dir,
bool
use_cuda =
false
);
46
55
std::vector<IDataset::Pair>
56
forward
(
const
std::span<IDataset::Pair> &input)
override
;
57
58
private
:
59
using
InferResult =
common::object::DetectionBoxArray
;
60
69
std::pair<std::vector<float>, cv::Mat> preprocess(
const
cv::Mat &image)
const
;
70
74
std::pair<std::array<int64_t, 32>, std::array<int64_t, 32>>
75
tokenize(
const
std::string &text);
76
80
cv::Mat infer_single(
const
ONNXSam3Data
&sam3_data);
81
82
// ONNX Runtime state
83
Ort::Env env_;
84
Ort::SessionOptions session_options_;
85
std::unique_ptr<Ort::Session> vision_encoder_;
86
std::unique_ptr<Ort::Session> text_encoder_;
87
std::unique_ptr<Ort::Session> decoder_;
88
89
// Tokenizer
90
std::unique_ptr<tokenizers::Tokenizer> tokenizer_;
91
92
// Model parameters
93
int
input_size_ = 1008;
94
int
num_queries_ = 200;
95
int
mask_height_ = 288;
96
int
mask_width_ = 288;
97
98
// Tokenizer cache: text -> (input_ids, attention_mask)
99
std::unordered_map<
100
std::string, std::pair<std::array<int64_t, 32>, std::array<int64_t, 32>>>
101
text_cache_;
102
103
// Memory allocator
104
Ort::MemoryInfo memory_info_;
105
};
106
107
}
// namespace reusex::vision::onnx
reusex::vision::IModel
Definition
IModel.hpp:10
reusex::vision::onnx::ONNXSam3::create
static std::unique_ptr< ONNXSam3 > create(const std::filesystem::path &model_dir, bool use_cuda=false)
Factory method for creating an ONNXSam3 instance.
reusex::vision::onnx::ONNXSam3::forward
std::vector< IDataset::Pair > forward(const std::span< IDataset::Pair > &input) override
Run SAM3 inference on a batch of images.
reusex::vision::onnx::ONNXSam3::ONNXSam3
ONNXSam3(const std::filesystem::path &model_dir, bool use_cuda=false)
Construct and load a SAM3 model from a directory.
reusex::vision::common::object::DetectionBoxArray
std::vector< DetectionBox > DetectionBoxArray
Convenience alias for a collection of DetectionBox results.
Definition
object.hpp:212
reusex::vision::onnx
Definition
Backend.hpp:8
reusex::vision::onnx::ONNXSam3Data
Data carrier for ONNX Runtime SAM3 inference pipeline.
Definition
Sam3Data.hpp:19
libs
reusex
include
vision
onnx
Sam3.hpp
Generated by
1.17.0