use super::scale_aware_detector::{
ScaleAwareDetectorInferenceMode, ScaleAwareDetectorModel, ScaleAwareDetectorModelBuilder,
ScaleAwareDetectorModelOutput, ScaleAwareDetectorPostprocessConfig,
ScaleAwareDetectorPreprocessConfig,
};
use crate::core::OCRError;
use crate::core::inference::OrtInfer;
pub type PicoDetPreprocessConfig = ScaleAwareDetectorPreprocessConfig;
pub type PicoDetPostprocessConfig = ScaleAwareDetectorPostprocessConfig;
pub type PicoDetModelOutput = ScaleAwareDetectorModelOutput;
pub type PicoDetModel = ScaleAwareDetectorModel;
#[derive(Debug, Default)]
pub struct PicoDetModelBuilder {
inner: ScaleAwareDetectorModelBuilder,
}
impl PicoDetModelBuilder {
pub fn new() -> Self {
Self {
inner: ScaleAwareDetectorModelBuilder::picodet(),
}
}
pub fn preprocess_config(mut self, config: PicoDetPreprocessConfig) -> Self {
self.inner = self.inner.preprocess_config(config);
self
}
pub fn image_shape(mut self, height: u32, width: u32) -> Self {
self.inner = self.inner.image_shape(height, width);
self
}
pub fn build(self, inference: OrtInfer) -> Result<PicoDetModel, OCRError> {
self.inner
.inference_mode(ScaleAwareDetectorInferenceMode::ScaleFactorOnly)
.build(inference)
}
}