元信息
只读字段全部来自容器头或明文探测,用户零配置。头里缺的字段派生 JSON 里为 null / 缺席,不编默认 640/80/17。
字符串缺席为 null、标签为空列表、宽高通道为 0。Java 侧拷贝,无需 darra_string_free。
属性
| 属性 | 类型 | 说明 |
|---|---|---|
| task | String | 任务短名(detect / classify / segment / pose / ocr / anomaly)。缺席为 null |
| labels | List of String | 类别标签。缺席为空列表,永不 null |
| inputWidth | int | 模型输入宽。0 = 容器头未写 / 未知。不编默认 640 |
| inputHeight | int | 模型输入高。0 = 容器头未写 / 未知 |
| channels | int | 模型输入通道。0 = 容器头未写 / 未知。不编默认 3 |
| layout | String | 张量布局(NCHW / NHWC)。先读 input.layout,再读顶层 layout。缺席为 null,不编 NCHW |
| payloadKind | String | 载荷类型(onnx / trt-engine / openvino / rknn / paddle)。缺席为 null |
| providerId | String | 实际选中的 Provider(不是 prefer 入参)。缺席为 null |
| encrypted | boolean | 是否加密容器会话。明文会话为 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→掩码。payloadKind:onnx/trt-engine/openvino/rknn/paddle。rknn只在 linux-arm64 可跑。input.width/height/channels来自容器头。缺则null,不编 640/80/17。provider是实际选中的 Provider(不是 prefer 入参)。encrypted=false时无containerFormat/license(明文会话)。- 标准字段表见 元数据。
SessionMeta 是包内实现,不对外。
task()
public String task()
任务短名。缺席为 null。
返回值:
String—detect/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。
返回值:
String—NCHW/NHWC;缺席为 null
payloadKind()
public String payloadKind()
载荷类型。缺席为 null。
返回值:
String—onnx/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