跳到主要内容

Session

一份已验票 / 已解密的模型 + 一个已选定的运行时 Provider。全部推理唯一入口。GUI / PLC / 客户应用同一路径,无第二套。

Session                                              // RAII,不可 Clone

├── open / open_plain / open_ex // 打开(关联函数)
├── meta / meta_json // 元信息 JSON
├── task / labels / input_width / input_height
│ channels / layout / payload_kind
│ provider_id / encrypted // 只读,从 meta 派生
├── infer_image / infer_image_json // 每次一张图(一帧)
└── Drop → darra_session_close // 离开作用域自动关
  • 一模型一实例:一个 Session = 一份已加载模型 + 一个 Provider。多模型或多份同模型 = 再开一个会话,API 完全相同。
  • 导出格式即加载格式:容器头在导出时写全,加载方零配置。缺字段不编默认 640/80/17。
  • 打开时自动准备环境:按 PayloadKind × 硬件 × prefer_provider 选 Provider;对应包未装则内部调一次 runtime::ensure(无进度)。指名但不可用 = fail-closed,绝不静默降级。想看进度请先自己调 runtime::ensure(幂等)。
  • Session: Send + Sync,不可 CloneDrop 是唯一释放点。
  • Paddle 是运行时载荷PayloadKind = paddle)。明文路径可接 .pdmodel
  • Windows 无 RKNN:rknn 载荷在 Windows 上打不开。
提示
  • 打开见 构造
  • 元信息与释放见 API
  • 每帧推理见 推理
  • ImageDesc / SessionOptions类型
  • 失败变体见 错误

功能概览

类别属性类型访问说明
打开openResult<Session, Error>关联函数打开 .darmodel(DARM1)。key_path 与 password 至少给一个;都给则 key 文件优先验票
open_plainResult<Session, Error>关联函数打开明文模型。.onnx / .pdmodel(伴生 .pdiparams)/ 含二者的目录。Paddle 是运行时载荷
open_exResult<Session, Error>关联函数打开 .darmodel 并传入 SessionOptions。当前翻译到 open 四参
元信息metaResult<String, Error>方法会话元信息 UTF-8 JSON。微秒级
meta_jsonResult<Value, Error>方法同 meta,feature json 下解析为 serde_json::Value
taskResult<Option<String>, Error>只读任务短名。缺席为 None
labelsResult<Vec<String>, Error>只读类别标签。缺席为空 Vec
input_widthResult<u32, Error>只读模型输入宽。未知为 0
input_heightResult<u32, Error>只读模型输入高。未知为 0
channelsResult<u32, Error>只读模型输入通道。未知为 0
layoutResult<Option<String>, Error>只读张量布局。先读 input.layout,再读顶层 layout
payload_kindResult<Option<String>, Error>只读载荷类型。含 paddle。Windows 上 rknn 打不开
provider_idResult<Option<String>, Error>只读实际选中的 Provider,不是 prefer 入参
encryptedResult<bool, Error>只读是否加密容器会话。明文模型为 false
推理与释放infer_imageResult<String, Error>方法对一张图(一帧)跑推理。连续采集循环调用
infer_image_jsonResult<Value, Error>方法同 infer_image,feature json 下解析为 serde_json::Value
Drop()释放离开作用域关闭会话。Session 不可 Clone