pub struct OrtInfer { /* private fields */ }Expand description
Core ONNX Runtime inference engine with support for pooling and configurable sessions.
Implementations§
Source§impl OrtInfer
impl OrtInfer
Sourcepub fn new(
model_path: impl AsRef<Path>,
input_name: Option<&str>,
) -> Result<OrtInfer, OCRError>
pub fn new( model_path: impl AsRef<Path>, input_name: Option<&str>, ) -> Result<OrtInfer, OCRError>
Creates a new OrtInfer instance with default ONNX Runtime settings and a single session.
Sourcepub fn from_config(
common: &ModelInferenceConfig,
model_path: impl AsRef<Path>,
input_name: Option<&str>,
) -> Result<OrtInfer, OCRError>
pub fn from_config( common: &ModelInferenceConfig, model_path: impl AsRef<Path>, input_name: Option<&str>, ) -> Result<OrtInfer, OCRError>
Creates a new OrtInfer instance from ModelInferenceConfig, applying ORT session configuration.
Source§impl OrtInfer
impl OrtInfer
Sourcepub fn model_path(&self) -> &Path
pub fn model_path(&self) -> &Path
Returns the model path associated with this inference engine.
Sourcepub fn model_name(&self) -> &str
pub fn model_name(&self) -> &str
Returns the model name associated with this inference engine.
Sourcepub fn infer(
&self,
inputs: &[(&str, TensorInput<'_>)],
) -> Result<Vec<(String, TensorOutput)>, OCRError>
pub fn infer( &self, inputs: &[(&str, TensorInput<'_>)], ) -> Result<Vec<(String, TensorOutput)>, OCRError>
Unified inference method: multi-input -> multi-output.
This is the only public inference method. It accepts arbitrary named inputs and returns all model outputs without making assumptions about their semantic meaning, shape, or type.
§Responsibilities
This method is responsible for:
- Managing the session pool (round-robin selection)
- Converting inputs to ONNX Runtime format
- Executing inference
- Extracting raw outputs
This method is NOT responsible for:
- Validating output shapes
- Converting outputs to specific dimensions
- Interpreting the semantic meaning of outputs
§Arguments
inputs- A slice of (name, tensor) pairs specifying the model inputs
§Returns
A vector of (name, TensorOutput) pairs representing all model outputs. The caller (model layer) is responsible for interpreting and validating these outputs according to the model’s requirements.
§Example
// Single input
let inputs = vec![("image", TensorInput::Array4(&batch))];
let outputs = inference.infer(&inputs)?;
let result = outputs[0].1.try_into_array2_f32()?;
// Multiple inputs
let inputs = vec![
("image", TensorInput::Array4(&batch)),
("scale_factor", TensorInput::Array2(&scale)),
("im_shape", TensorInput::Array2(&shape)),
];
let outputs = inference.infer(&inputs)?;Source§impl OrtInfer
impl OrtInfer
Sourcepub fn input_name(&self) -> &str
pub fn input_name(&self) -> &str
Returns the input tensor name.
Sourcepub fn get_session(
&self,
idx: usize,
) -> Result<MutexGuard<'_, Session>, OCRError>
pub fn get_session( &self, idx: usize, ) -> Result<MutexGuard<'_, Session>, OCRError>
Gets a session from the pool.
Sourcepub fn input_names_from_model(&self) -> Vec<String>
pub fn input_names_from_model(&self) -> Vec<String>
Returns the declared input names from the model.
Sourcepub fn primary_input_shape(&self) -> Option<Vec<i64>>
pub fn primary_input_shape(&self) -> Option<Vec<i64>>
Attempts to retrieve the primary input tensor shape from the first session.
Returns a vector of dimensions if available. Dynamic dimensions (e.g., -1) are returned as-is.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for OrtInfer
impl RefUnwindSafe for OrtInfer
impl Send for OrtInfer
impl Sync for OrtInfer
impl Unpin for OrtInfer
impl UnsafeUnpin for OrtInfer
impl UnwindSafe for OrtInfer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.