From 2e040f34aa6d010fe5c1fd2219eb2dc2a37d4d67 Mon Sep 17 00:00:00 2001 From: jw098 Date: Tue, 9 Dec 2025 17:27:18 -0800 Subject: [PATCH 1/2] ML: check if ORT API is null before initializing ORT Env. --- .../Source/ML/DataLabeling/ML_SegmentAnythingModel.cpp | 6 ++++-- .../Source/ML/Models/ML_ONNXRuntimeHelpers.cpp | 9 +++++++++ SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.h | 2 ++ SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp | 3 ++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/SerialPrograms/Source/ML/DataLabeling/ML_SegmentAnythingModel.cpp b/SerialPrograms/Source/ML/DataLabeling/ML_SegmentAnythingModel.cpp index 13cf30ba9..702182667 100644 --- a/SerialPrograms/Source/ML/DataLabeling/ML_SegmentAnythingModel.cpp +++ b/SerialPrograms/Source/ML/DataLabeling/ML_SegmentAnythingModel.cpp @@ -25,7 +25,8 @@ namespace ML{ SAMEmbedderSession::SAMEmbedderSession(const std::string& model_path, bool use_gpu) - : m_session_options{create_session_options(ML_MODEL_CACHE_PATH() + "SAMEmbedder/", use_gpu)} + : m_env{create_ORT_env()} + , m_session_options{create_session_options(ML_MODEL_CACHE_PATH() + "SAMEmbedder/", use_gpu)} , session{create_session(m_env, m_session_options, model_path, ML_MODEL_CACHE_PATH() + "SAMEmbedder/")} , memory_info{Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU)} , input_names{session.GetInputNames()} @@ -65,7 +66,8 @@ void SAMEmbedderSession::run(cv::Mat& input_image, std::vector& model_out SAMSession::SAMSession(const std::string& model_path, bool use_gpu) - : m_session_options{create_session_options(ML_MODEL_CACHE_PATH() + "SAM/", use_gpu)} + : m_env{create_ORT_env()} + , m_session_options{create_session_options(ML_MODEL_CACHE_PATH() + "SAM/", use_gpu)} , session{create_session(m_env, m_session_options, model_path, ML_MODEL_CACHE_PATH() + "SAM/")} , memory_info{Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU)} , input_names{session.GetInputNames()} diff --git a/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp b/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp index 32ab505e6..8cdffd4a5 100644 --- a/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp +++ b/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp @@ -16,6 +16,7 @@ #include #include #include "3rdParty/ONNX/OnnxToolsPA.h" +#include "Common/Cpp/Exceptions.h" #include "Common/Compiler.h" #include "ML_ONNXRuntimeHelpers.h" @@ -194,5 +195,13 @@ void print_model_input_output_info(const Ort::Session& session){ } } +Ort::Env create_ORT_env(){ + if (Ort::Global::api_ == nullptr){ + throw InternalProgramError(nullptr, PA_CURRENT_FUNCTION, "Onnx API returned a null pointer."); + } + + return Ort::Env(); +} + } } diff --git a/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.h b/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.h index 22181257d..952f942db 100644 --- a/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.h +++ b/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.h @@ -54,6 +54,8 @@ std::string to_string(std::vector& vec){ // Print model input and output types and shapes to cout. Useful for debugging. void print_model_input_output_info(const Ort::Session& session); +Ort::Env create_ORT_env(); + } } diff --git a/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp b/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp index 392970442..692688623 100644 --- a/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp +++ b/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp @@ -59,7 +59,8 @@ std::tuple resize_image_with_border( YOLOv5Session::YOLOv5Session(const std::string& model_path, std::vector label_names, bool use_gpu) -: m_label_names(std::move(label_names)) +: m_env{create_ORT_env()} +, m_label_names(std::move(label_names)) , m_session_options(create_session_options(ML_MODEL_CACHE_PATH() + "YOLOv5", use_gpu)) , m_session{create_session(m_env, m_session_options, model_path, ML_MODEL_CACHE_PATH() + "YOLOv5")} , m_memory_info{Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU)} From af82b6da77115a72c3375e34c739314275ebfa21 Mon Sep 17 00:00:00 2001 From: jw098 Date: Tue, 9 Dec 2025 18:02:38 -0800 Subject: [PATCH 2/2] fix build --- SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp b/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp index 692688623..7f4164ce4 100644 --- a/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp +++ b/SerialPrograms/Source/ML/Models/ML_YOLOv5Model.cpp @@ -59,8 +59,8 @@ std::tuple resize_image_with_border( YOLOv5Session::YOLOv5Session(const std::string& model_path, std::vector label_names, bool use_gpu) -: m_env{create_ORT_env()} -, m_label_names(std::move(label_names)) +: m_label_names(std::move(label_names)) +, m_env{create_ORT_env()} , m_session_options(create_session_options(ML_MODEL_CACHE_PATH() + "YOLOv5", use_gpu)) , m_session{create_session(m_env, m_session_options, model_path, ML_MODEL_CACHE_PATH() + "YOLOv5")} , m_memory_info{Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU)}