跳到主要内容

元信息

只读字段全部来自容器头或明文探测,用户零配置。头里缺的字段派生 JSON 里为 null / 缺席,不编默认 640/80/17。

字符串缺席为 null、标签为空列表、宽高通道为 0。Java 侧拷贝,无需 darra_string_free

属性

属性类型说明
taskString任务短名(detect / classify / segment / pose / ocr / anomaly)。缺席为 null
labelsList of String类别标签。缺席为空列表,永不 null
inputWidthint模型输入宽。0 = 容器头未写 / 未知。不编默认 640
inputHeightint模型输入高。0 = 容器头未写 / 未知
channelsint模型输入通道。0 = 容器头未写 / 未知。不编默认 3
layoutString张量布局(NCHW / NHWC)。先读 input.layout,再读顶层 layout。缺席为 null,不编 NCHW
payloadKindString载荷类型(onnx / trt-engine / openvino / rknn / paddle)。缺席为 null
providerIdString实际选中的 Provider(不是 prefer 入参)。缺席为 null
encryptedboolean是否加密容器会话。明文会话为 false

payloadKind=rknn 只在 linux-arm64 可跑。Windows 收到 rknn 载荷在打开阶段即失败,见 初始化。Paddle 是运行时载荷。

方法

metaJson()

public String metaJson()

读会话元信息 JSON。首次向 native 取一次并缓存。调用代价:读会话缓存的头信息,微秒级。

返回值:

  • String — UTF-8 JSON。Java 侧拷贝,无需释放

示例:

String meta = session.metaJson();
String task = session.task();
java.util.List<String> labels = session.labels();
int w = session.inputWidth();
String provider = session.providerId();
boolean enc = session.encrypted();

相关结构:

{
"schema": 1,
"task": "detect",
"labels": ["scratch", "dent"],
"input": { "width": 640, "height": 640, "channels": 3 },
"payloadKind": "onnx",
"provider": "onnx-cuda",
"encrypted": true,
"containerFormat": "DARM1",
"license": { "mode": "trial", "trialRemaining": 12, "machineBound": true }
}
  • task 派生短名随容器头;推理结果 results 元素结构以此为准。缺席不编 detect。头文件对结果形态的承诺:detect→box,classify→top-k,segment→掩码。
  • payloadKindonnx / trt-engine / openvino / rknn / paddlerknn 只在 linux-arm64 可跑。
  • input.width / height / channels 来自容器头。缺则 null,不编 640/80/17。
  • provider实际选中的 Provider(不是 prefer 入参)。
  • encrypted=false 时无 containerFormat / license(明文会话)。
  • 标准字段表见 元数据

SessionMeta 是包内实现,不对外。

task()

public String task()

任务短名。缺席为 null

返回值:

  • Stringdetect / classify / segment / pose / ocr / anomaly;缺席为 null

labels()

public List<String> labels()

类别标签。缺席为空列表,永不 null

返回值:

  • List<String> — 不可变列表

inputWidth()

public int inputWidth()

模型输入宽。未知为 0,不编默认 640。

返回值:

  • int — 像素宽;0 = 容器头未写 / 未知

inputHeight()

public int inputHeight()

模型输入高。未知为 0。

返回值:

  • int — 像素高;0 = 容器头未写 / 未知

channels()

public int channels()

模型输入通道。未知为 0,不编默认 3。

返回值:

  • int — 通道数;0 = 容器头未写 / 未知

layout()

public String layout()

张量布局。先读 input.layout,再读顶层 layout。缺席为 null,不编 NCHW

返回值:

  • StringNCHW / NHWC;缺席为 null

payloadKind()

public String payloadKind()

载荷类型。缺席为 null

返回值:

  • Stringonnx / trt-engine / openvino / rknn / paddle;缺席为 null

Paddle 是运行时载荷。rknn 只在 linux-arm64 可跑。

providerId()

public String providerId()

实际选中的 Provider ID(不是 prefer 入参)。缺席为 null

返回值:

  • String — 如 onnx-cpu / onnx-cuda;缺席为 null

encrypted()

public boolean encrypted()

是否加密容器会话。明文会话为 false

返回值:

  • boolean — 加密则为 true

close()

@Override
public void close()

关闭会话并释放全部资源(含解密明文窗口清零)。NULL / 重复关闭安全。close 后句柄失效,再用 = InternalException(「会话已关闭」)。禁止与任何在飞调用并发。

推荐 try-with-resources,不要手写 close 漏路径。

示例:

try (AiSession s = AiSession.open("model.darmodel", "model.darmkey", null, null)) {
// …
} // 自动 close