跳到主要内容

会话 AiSession

推理会话。对应 darra_session_*,实现 AutoCloseable,支持 try-with-resources。

全部推理唯一入口:open / openPlaininferImageclose。GUI、PLC、客户应用同一路径,无第二套。

AiSession                                          // 推理会话(AutoCloseable)

├── open / openPlain / openEx // 静态工厂 → 初始化
├── metaJson / task / labels / inputWidth / … // 只读元信息
├── inferImage // 每次一张图;循环帧
└── close // 释放;NULL/重复关闭安全
一模型一实例

一个 AiSession = 一份已加载模型 + 一个 Provider。多模型 = 多会话;同模型要第二份实例也 = 再开一个会话。API 完全相同,没有「多模型特供」入口。

打开时按 PayloadKind × 硬件 × preferProvider 选 Provider;对应包未装则内部调一次 darra_runtime_ensure(无进度回调,可能阻塞下载)。指名但不可用(无硬件 / 驱动过旧 / 平台不支持)= fail-closed,绝不静默降级。

Windows 收到 rknn 载荷抛 AiException.UnsupportedPayloadException。Windows 上指名 edge-rknnAiException.UnsupportedPlatformException。禁止改 Windows ReservedCpuSets,禁止动 PLC 隔离核。

Paddle 是运行时载荷(PayloadKind=paddle):明文 openPlain 可接 .pdmodel(同目录须有对应 .pdiparams)或含二者的目录。.pt / .pth 仍拒。

本绑定没有 openPlainExopenEx 当前翻译到 open,只走 SessionOptions 已公开的三个通道。

功能概览

类别属性类型访问说明
打开openAiSession静态打开加密容器(.darmodel,DARM1)。key 与 password 至少给一个
openPlainAiSession静态打开明文模型。Paddle 是运行时载荷;.pt / .pth 仍拒
openExAiSession静态打开加密容器并传入 SessionOptions。options 为 null = empty()
元信息metaJsonString方法会话元信息 JSON。首次向 native 取一次并缓存;Java 侧拷贝
taskString只读任务短名。缺席为 null
labelsList<String>只读类别标签。缺席为空列表,永不 null
inputWidth / inputHeight / channelsint只读模型输入尺寸。0 = 容器头未写 / 未知。不编默认 640
layoutString只读张量布局。缺席为 null,不编 NCHW
payloadKindString只读onnx / trt-engine / openvino / rknn / paddle。缺席为 null
providerIdString只读实际选中的 Provider。缺席为 null
encryptedboolean只读是否加密容器会话。明文会话为 false
推理 / 生命周期inferImageString方法每次调用处理一张图,结果 JSON。相机/视频按帧循环调用
closevoid释放关闭会话并释放全部资源。NULL/重复关闭安全。禁止与在飞调用并发

快速开始

try (AiSession s = AiSession.open("model.darmodel", "model.darmkey", null, null)) {
System.out.println(s.metaJson());
byte[] jpg = java.nio.file.Files.readAllBytes(java.nio.file.Path.of("photo.jpg"));
String json = s.inferImage(jpg, ImageDesc.auto());
}

签名与参数见 初始化,只读字段见 元信息,推理见 推理