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,不可Clone。Drop是唯一释放点。- Paddle 是运行时载荷(
PayloadKind = paddle)。明文路径可接.pdmodel。 - Windows 无 RKNN:rknn 载荷在 Windows 上打不开。
功能概览
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| 打开 | open | Result<Session, Error> | 关联函数 | 打开 .darmodel(DARM1)。key_path 与 password 至少给一个;都给则 key 文件优先验票 |
open_plain | Result<Session, Error> | 关联函数 | 打开明文模型。.onnx / .pdmodel(伴生 .pdiparams)/ 含二者的目录。Paddle 是运行时载荷 | |
open_ex | Result<Session, Error> | 关联函数 | 打开 .darmodel 并传入 SessionOptions。当前翻译到 open 四参 | |
| 元信息 | meta | Result<String, Error> | 方法 | 会话元信息 UTF-8 JSON。微秒级 |
meta_json | Result<Value, Error> | 方法 | 同 meta,feature json 下解析为 serde_json::Value | |
task | Result<Option<String>, Error> | 只读 | 任务短名。缺席为 None | |
labels | Result<Vec<String>, Error> | 只读 | 类别标签。缺席为空 Vec | |
input_width | Result<u32, Error> | 只读 | 模型输入宽。未知为 0 | |
input_height | Result<u32, Error> | 只读 | 模型输入高。未知为 0 | |
channels | Result<u32, Error> | 只读 | 模型输入通道。未知为 0 | |
layout | Result<Option<String>, Error> | 只读 | 张量布局。先读 input.layout,再读顶层 layout | |
payload_kind | Result<Option<String>, Error> | 只读 | 载荷类型。含 paddle。Windows 上 rknn 打不开 | |
provider_id | Result<Option<String>, Error> | 只读 | 实际选中的 Provider,不是 prefer 入参 | |
encrypted | Result<bool, Error> | 只读 | 是否加密容器会话。明文模型为 false | |
| 推理与释放 | infer_image | Result<String, Error> | 方法 | 对一张图(一帧)跑推理。连续采集循环调用 |
infer_image_json | Result<Value, Error> | 方法 | 同 infer_image,feature json 下解析为 serde_json::Value | |
Drop | () | 释放 | 离开作用域关闭会话。Session 不可 Clone |