refactor(core): 提炼公共类型
- 将 AxisDim、TensorInfo 等公共类型下沉至 ddddocr_core::types - 项目结构优化
This commit is contained in:
@@ -1,27 +1,27 @@
|
||||
use crate::loader::Error;
|
||||
use crate::loader::error::{BuildError, ParseError, Result};
|
||||
use crate::types::Session;
|
||||
use ddddocr_core::ModelBuilder;
|
||||
use ddddocr_core::traits::Loader;
|
||||
use ort::session::Session as OrtSession;
|
||||
use ort::session::builder::SessionBuilder;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
pub struct OrtModelLoader;
|
||||
|
||||
impl OrtModelLoader {
|
||||
/// 获取针对 ORT 后端的链式构建器
|
||||
pub fn builder() -> OrtModelBuilder {
|
||||
OrtModelBuilder::default()
|
||||
}
|
||||
}
|
||||
// pub struct OrtModelLoader;
|
||||
//
|
||||
// impl OrtModelLoader {
|
||||
// /// 获取针对 ORT 后端的链式构建器
|
||||
// pub fn builder() -> OrtModelBuilder {
|
||||
// OrtModelBuilder::default()
|
||||
// }
|
||||
// }
|
||||
/// ORT 专用的链式构建器
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct OrtModelBuilder {
|
||||
pub struct ModelLoader {
|
||||
use_gpu: bool,
|
||||
device_id: i32,
|
||||
intra_threads: Option<usize>,
|
||||
}
|
||||
impl Default for OrtModelBuilder {
|
||||
impl Default for ModelLoader {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
use_gpu: false,
|
||||
@@ -30,7 +30,7 @@ impl Default for OrtModelBuilder {
|
||||
}
|
||||
}
|
||||
}
|
||||
impl OrtModelBuilder {
|
||||
impl ModelLoader {
|
||||
/// 开启或关闭 GPU 加速
|
||||
pub fn use_gpu(mut self, enable: bool) -> Self {
|
||||
self.use_gpu = enable;
|
||||
@@ -83,11 +83,11 @@ impl OrtModelBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
impl ModelBuilder for OrtModelBuilder {
|
||||
impl Loader for ModelLoader {
|
||||
type Session = Session;
|
||||
type Error = Error;
|
||||
|
||||
fn model_for_path<P>(&self, model_path: P) -> Result<Session>
|
||||
fn build_for_path<P>(&self, model_path: P) -> Result<Session>
|
||||
where
|
||||
P: AsRef<std::path::Path>,
|
||||
{
|
||||
@@ -102,7 +102,7 @@ impl ModelBuilder for OrtModelBuilder {
|
||||
Ok(Arc::new(Mutex::new(session))) // 这里的session需要包装下
|
||||
}
|
||||
/// 策略 B:从内存字节流加载模型(配合 include_bytes! 使用)
|
||||
fn model_from_bytes(&self, model_bytes: &[u8]) -> Result<Session> {
|
||||
fn build_from_bytes(&self, model_bytes: &[u8]) -> Result<Session> {
|
||||
let mut builder = self.create_session_builder()?;
|
||||
|
||||
let session = builder
|
||||
|
||||
Reference in New Issue
Block a user