1pub mod onnx;
6pub mod tflite;
7
8#[cfg(feature = "coreml")]
9pub mod coreml;
10
11pub use onnx::{ExecutionProvider, ModelMetadata, OnnxModel, SessionConfig};
12
13#[cfg(not(feature = "tflite"))]
14pub use tflite::{Delegate, QuantizationParams, TensorDataType, TensorInfo, TfLiteConfig};
15
16#[cfg(feature = "tflite")]
17pub use tflite::{
18 Delegate, QuantizationParams, TensorDataType, TensorInfo, TfLiteConfig, TfLiteModel,
19};
20
21use crate::error::Result;
22use oxigdal_core::buffer::RasterBuffer;
23
24pub trait Model: Send + Sync {
26 fn metadata(&self) -> &ModelMetadata;
28
29 fn predict(&mut self, input: &RasterBuffer) -> Result<RasterBuffer>;
34
35 fn predict_batch(&mut self, inputs: &[RasterBuffer]) -> Result<Vec<RasterBuffer>>;
40
41 fn input_shape(&self) -> (usize, usize, usize);
43
44 fn output_shape(&self) -> (usize, usize, usize);
46}