ed_sensor_integration
sam_seg_module.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <opencv2/core.hpp>
4 
5 #include <geolib/datatypes.h>
6 #include <ros/publisher.h>
8 
10 
11 #include <atomic>
12 #include <memory>
13 #include <string>
14 #include <utility>
15 #include <vector>
16 
22 {
23  double yolo_init_ms = 0.0; // YOLO model initialization time
24  double yolo_infer_ms = 0.0; // YOLO inference time
25  double sam_init_ms = 0.0; // SAM model initialization time
26  double sam_infer_ms = 0.0; // SAM inference time
27  double total_pipeline_ms = 0.0; // Total pipeline time
28 };
29 
35 {
38  std::vector<std::string> labels; // YOLO class name per detection
39  std::vector<float> confidences; // YOLO confidence per detection
40  SegmentationLatency latency; // Timing measurements (populated when verbose=true)
41 };
42 
48 {
49 public:
52 
58 
67  SegmentationResult process(const cv::Mat& img, const cv::Mat& depth_image = cv::Mat(), const std::string& ignore_label = "", bool verbose = false);
68 
69 private:
70  struct Impl;
73 };
74 
81 void overlayMasksOnImage_(cv::Mat& rgb, const std::vector<cv::Mat>& masks);
SegmentationResult
Result of the segmentation pipeline containing masks, bounding boxes, and YOLO classification info fo...
Definition: sam_seg_module.h:34
datatypes.h
SegmentationLatency
Latency measurements for the segmentation pipeline subsystems. All times are in milliseconds.
Definition: sam_seg_module.h:21
SegmentationResult::labels
std::vector< std::string > labels
Definition: sam_seg_module.h:38
std::string
utility
SegmentationLatency::sam_infer_ms
double sam_infer_ms
Definition: sam_seg_module.h:26
SegmentationLatency::total_pipeline_ms
double total_pipeline_ms
Definition: sam_seg_module.h:27
vector
SamSegPipeline::pimpl_
std::unique_ptr< Impl > pimpl_
Definition: sam_seg_module.h:70
SamSegPipeline::initialize
void initialize(tue::Configuration &config)
Initialize the YOLO and SAM models from configuration.
Definition: sam_seg_module.cpp:31
tue::config::ReaderWriter
SegmentationResult::masks
std::vector< cv::Mat > masks
Definition: sam_seg_module.h:36
SegmentationResult::confidences
std::vector< float > confidences
Definition: sam_seg_module.h:39
SegmentationResult::boxes
std::vector< cv::Rect > boxes
Definition: sam_seg_module.h:37
SegmentationResult::latency
SegmentationLatency latency
Definition: sam_seg_module.h:40
SamSegPipeline::SamSegPipeline
SamSegPipeline()
Definition: sam_seg_module.cpp:27
atomic
SamSegPipeline
Segmentation pipeline class that maintains YOLO and SAM models state. This prevents initializing heav...
Definition: sam_seg_module.h:47
SamSegPipeline::Impl
Definition: sam_seg_module.cpp:15
memory
configuration.h
entity_update.h
SamSegPipeline::is_initialized_
std::atomic< bool > is_initialized_
Definition: sam_seg_module.h:72
SegmentationLatency::yolo_infer_ms
double yolo_infer_ms
Definition: sam_seg_module.h:24
overlayMasksOnImage_
void overlayMasksOnImage_(cv::Mat &rgb, const std::vector< cv::Mat > &masks)
Overlay segmentation masks on the RGB image for visualization purposes.
Definition: sam_seg_module.cpp:191
SegmentationLatency::sam_init_ms
double sam_init_ms
Definition: sam_seg_module.h:25
SamSegPipeline::process
SegmentationResult process(const cv::Mat &img, const cv::Mat &depth_image=cv::Mat(), const std::string &ignore_label="", bool verbose=false)
Process the input image and generate segmentation masks.
Definition: sam_seg_module.cpp:71
SegmentationLatency::yolo_init_ms
double yolo_init_ms
Definition: sam_seg_module.h:23
SamSegPipeline::~SamSegPipeline
~SamSegPipeline()
std::unique_ptr
depth_image
cv::Mat depth_image
config
tue::config::ReaderWriter config
string