推理
模型工作区第 2 个 Tab。选项目内模型与输入图像(或视频),执行推理,看结构化结果。打包期阈值是默认值,推理期可由用户覆盖;输入边长与类别名是模型事实,打包期定下,推理期不覆盖。本页是工程师试跑,现场调阈值走 SDK 的 SessionOptions。

推理页:顶栏工具条(模型下拉、选择图片、选择视频、导出为数据集、中部进度条、右侧状态徽标与取消、开始推理),加密模型时顶栏下多一行密码;左预览右结果,结果区自上而下为状态行、关键事实、检测结果、品类结果、张量摘要。
从 模型工作区 进来。双击模型叶子打开时顶栏锁定该模型,不再出现模型下拉。
布局
自上而下三段:
- 顶栏工具条(固定高 32):左起模型区、选择图片、选择视频、导出为数据集,中部流光进度,右起状态徽标、取消、开始推理
- 密码行(仅加密模型出现,独占一行)
- 左预览 / 右结果两栏(左约 1.5 份宽、右约 2 份宽,中间 10 像素缝)
进度只在顶栏中部一处,底部不重复。
顶栏
| 控件 | 文案 | 启用条件 |
|---|---|---|
| 模型下拉 | 标签「模型:」,NullText 为「选择推理模型」 | 选择模式可见;锁定模式整组收起 |
| 锁定信息 | 「模型名:」「任务类型:」「输入尺寸:」三段只读 | 仅锁定模式可见 |
| 选择图片 | 「选择图片」 | 未在推理/导出中 |
| 选择视频 | 「选择视频」 | 未在推理/导出中 |
| 导出为数据集 | 「导出为数据集」 | 已选模型、后端就绪、无在飞任务 |
| 进度 | 流光条 + 阶段文字 | 运行期显示,结束收起 |
| 状态徽标 | 圆点 + 状态文字 + 结果摘要 | 常显(无模型且未探测时可收起) |
| 取消 | 「取消」 | 仅推理/导出运行中出现 |
| 开始推理 | 「开始推理」 | 已选模型、后端就绪、无在飞任务 |
「开始推理」与「导出为数据集」共用同一状态门:无模型、后端未就绪、已有任务在跑,两者一并禁用。运行中「选择图片」「选择视频」也被禁用。已有任务在跑时再点主按钮,状态字写「推理正在运行」,不排队再跑一次。
模型选择与锁定
- 选择模式:下拉列出当前项目模型(显示名),切换后按任务类型自动换品类面板,并通知右侧属性面板
- 锁定模式(双击模型叶子进来):收起「模型:」标签与下拉,改为只读三段——模型名、任务类型(中文名加英文名)、输入尺寸
- 输入尺寸未解析时写「自动 (后端按模型解析)」,不写 0 × 0;检测默认按 640、分类默认按 224 由后端按模型声明解析。读到真实尺寸后补进只读三段,项目元数据已有尺寸时不覆盖
- 锁定模型不在当前项目中时,状态字写「锁定模型不在当前项目中」,主按钮禁用
- 模型切换会取消在跑推理,密码行即用即弃
选择图片
- 对话框标题「选择推理图片」,可选 jpg / jpeg / png / bmp
- 选中后等比预览,状态字「图片已加载」,结果区回到「尚未执行推理」
- 加载失败状态字「图片加载失败,详情见日志」
选择视频
- 对话框标题「选择推理视频」,可选 mp4 / avi / mkv / wmv
- 选中后进播放预览,状态字「视频已加载, 可播放预览或点击 开始推理 逐帧检测」
- 预览解码失败(缺解码器等)状态字「视频无法播放预览 (编码不受支持), 仍可点击 开始推理 逐帧检测」;逐帧推理解码另走 OpenCV,不受预览解码影响
- 点「开始推理」开始逐帧推理(视频逐帧推理)
导出入口
- 悬停提示原文「多选图片 → 逐张推理 → 图片与推理标注落成新数据集并注册到项目 (供二次训练)」
- 对话框标题「选择要批量推理并导出的图片 (可多选)」,可选 jpg / jpeg / png / bmp / webp / tif / tiff / gif
- 与「开始推理」共用状态门,并共用模型准备等待、.pth 自动转换、加密密码采集
进度
顶栏中部流光条 + 阶段文字,宽度受限时阶段文字截断。阶段文字与状态徽标同一套口径,常见原文:
- 「模型加载中…」「准备中…」「推理中…」
- 「等待模型加载完成…」「正在自动转换权重…」
- 「批量推理导出中: 第 i/N 张 (文件名)」
- 「逐帧推理中: 第 i/N 帧」或「逐帧推理中: 第 i 帧 (总帧数未知)」
- 「SAM2 分割中 i/N 点…」
状态徽标
圆点 + 状态文字(超长截断)+ 结果摘要(超长截断)。状态文字原文按阶段出现:
- 「就绪」— 初始
- 「模型加载中…」「模型已加载」「模型加载失败」「按需加载」— 模型准备阶段
- 「推理运行时就绪」「模型已就绪」— 后端与模型均就绪
- 「推理运行时未就绪」— 缺对应运行库,主按钮禁用
- 「权重存档 (自动转换)」— 当前是 .pth 权重存档
- 「图片已加载」「视频已加载, 可播放预览或点击 开始推理 逐帧检测」— 输入就绪
- 「等待模型加载完成…」「准备中…」「推理中…」— 运行期
- 「正在自动转换权重…」「权重已转换 — 继续推理…」「权重已转换 (缓存命中) — 继续推理…」
- 「推理完成 (…ms)」— 成功,括号内是本轮推理耗时(一位小数)
- 「批量推理导出中…」「已注册数据集 inference-export-…」
- 「逐帧推理中…」「视频逐帧推理完成 (N 帧有检测)」
- 「SAM2 分割中…」「分割完成: N 个区域 (…ms)」「已停止分割」
- 「密码不能为空」「模型解锁失败:密码错误或解锁文件 (.darmkey) 无效,请重试」
- 「推理失败,详情见日志」「推理失败 (阶段: Xxx),详情见日志」
- 「推理已取消」「导出已取消」「视频推理已取消」「转换已取消」
- 「模型文件不可用,详情见日志」「选择项目模型」「选择有效图片」「项目路径不可用」
后端就绪与否会改圆点与徽标底色;缺 PT 运行库时提示尾巴为「PT 权重需要本地 Python+PyTorch 环境, 推荐改用 ONNX 格式模型 (免 Python, 开箱即用)」。
取消与开始推理
- 「取消」只在运行中出现;点击后状态字先「正在取消...」,收尾后进「推理已取消」或「导出已取消」
- 切换模型 / 切换图片会顺带取消在跑推理,状态字「推理已取消(切换操作)」
- 「开始推理」按输入类型分流:单图走完整推理链,视频走逐帧链;SAM2 模型对走自动掩码分割
密码行
加密模型(.darmodel)且解锁文件要求口令、当前尚未解锁时,顶栏下出现密码行:标签「密码」+ 密码框 + 行内错误位。
- 打错当场拒,不进推理。空提交行内错误与状态字均为「密码不能为空」;密码错误时行内错误「密码错误」,状态字「模型解锁失败:密码错误或解锁文件 (.darmkey) 无效,请重试」
- 钥匙位置:新包打在 .darmodel 内;旧双文件才看同名 .darmkey。首次解开后本机免密,不再弹激活码;本机绑定不是安全边界
- 解锁只在本页有效,用毕即清框;切模型、页卸载同样清框。不解回明文文件
- 采集走页内输入,不弹独立对话框,不走商业服务器
左:预览
| 状态 | 画面与提示原文 |
|---|---|
| 空 | 「选择模型和图片后运行推理」 |
| 无可用模型 | 「未找到可用模型,导入 ONNX 模型后即可推理」+ 按钮「导入模型」 |
| 图片 | 等比预览;准备/运行中叠呼吸扫描遮罩,不挡点击 |
| 视频 | 播放器 + 底部控制条;推理时切到标注帧 |
| SAM2 结果 | 彩色掩码半透明叠在原图上 |
图片预览
- 运行成功后预览强制刷新:有框/有富结果叠标注,0 检测显示干净原图,不残留上一轮旧框
- 叠框口径:类别色 3 像素描边 + 框上方「类别 置信度」标签;OCR文本检测只画框与置信度,不画残留识别文本
- 富结果任务(分割 / 姿态 / 旋转框 / OCR)走品类叠加渲染,掩码、骨架、旋转框、多边形一并画上
OCR 文本检测(ocr-text-detection)为轻量检测,输出文本框与置信度。
视频播放
控制条四件:播放/暂停(图标随播放态切换)、进度滑条、时间文本(形如 00:13 / 01:20,初始 00:00 / 00:00)、停止。停止后回到空态提示。
右:结果
状态行
六态互斥,图标与文字成对出现:
- 空心圆 + 尚未执行推理
- 时钟 + 推理准备中
- 时钟 + 推理运行中
- 对勾 + 推理成功
- 感叹号 + 推理失败
- 实心方块 + 推理已取消
「准备中」只在首次推理或需转换权重时出现;已就绪直接进「推理运行中」,不闪准备中。
关键事实
两枚事实卡,推理完成后填值,未跑时为短横。
| 字段 | 含义 | |---|---|---| | 推理后端 | 实际跑起来的运行库。ONNX 按本轮真实执行提供程序写 ONNX Runtime (CUDA) / ONNX Runtime (DirectML) / ONNX Runtime (CPU);尚未完成一轮时只写 ONNX Runtime,不硬编码 CPU | | 最高置信度 | 本帧最高分,百分数两位小数;检测框、分类、姿态置信取最大值 |
检测结果
表头右侧计数「共 N 框」。只读,不可编辑。
| 列 | 含义 | |---|---|---| | 排名 | 按置信度降序 | | 标签 | 类名;过长悬停看全称 | | 置信度 | 百分数,两位小数 | | X1,Y1 | 框左上角,像素 | | X2,Y2 | 框右下角,像素 | | 宽 | 框宽 | | 高 | 框高 | | 坐标 | 明细串,悬停可读全 |
行的来源随任务变化:
- 检测族:一框一行
- 分类:无框,Top-K 类别填同一表,坐标列空,坐标列写「(分类结果, 无坐标)」
- OCR文本检测:标签列固定写「文本框」
- 语义分割 / 深度 / 异常的逐像素图无实例行时:补一行「语义分割掩码」,坐标列写宽高与「(掩码渲染未启用)」
- 无框姿态:补行「姿态 N」,坐标列写「K 个关键点 (坐标见日志/张量摘要)」
品类结果
按任务类型自动切换区段,不是同一张表硬套。面板标题为「任务名 + 结果」;刚选中模型未推理时标题为「任务名结果 — 模型已就绪」,事实写「任务类型」与「等待输入 / 选择图片或视频后开始推理」。
| 任务 | 区段标题 | 映射内容 |
|---|---|---|
| 目标检测 | 目标检测 | 「N 个目标 · 最高置信 P%」 |
| 图像分类 | 目标检测(共用区段) | 前 5 类「类名 P%」 |
| 语义分割 | 语义分割 | 「语义掩码 宽×高」·「实例 N 个」 |
| 实例分割 | 语义分割(共用区段) | 「实例 N 个」,可与语义掩码同屏 |
| 姿态估计 | 姿态估计 | 「N 个姿态 · 共 M 关键点」 |
| 旋转检测 | 旋转检测 | 前 8 条「类名 P% 角度°」 |
| 文字识别 | 文字识别 | 摘要串 + 逐条明细 |
| OCR文本检测 | 文本检测 | 「N 个文本框 · 最高置信 P%」+ 明细 |
OCR 明细每行四段:识别文本(空则「(无文本)」)、灰字后缀「(识别失败/纯检测)」、置信度(如 95.37%)、框坐标起止。区段内「复制全部文本」只导出有文本的行。识别成功的结果摘要上还能右键「复制全部识别文本 (N 段)」或逐段复制;文本检测任务不提供识别文本复制。
品类面板另带事实卡:最高置信度、实例数、旋转检测数、文本段或文本框数。
深度 / 异常 / 嵌入
这三类不出框,结果是图和向量,按输出形态如实落进结构化结果:
| 任务 | 结果形态 |
|---|---|
| 深度估计 (depth) | 逐像素深度图:宽 × 高,每像素一个深度值。数值原样取模型输出,不是置信度、不是类别;摘要写「深度图 宽×高」,模型没给深度图时写「深度估计完成 (无深度图输出)」 |
| 异常检测 (anomaly) | 逐像素异常分数图:每像素一个异常分,量纲由模型定、不归一化。只出图像级分数的模型按 1×1 分数图落;图像级分数 = 整图最大值,由消费方从分数图取 |
| 嵌入 (embedding) | 一条特征向量:数值原样透传,不做归一化、不转成概率。多个向量输出时取元素最多的那条,其余不进结果 |
- 深度图 / 异常分数图不是类别图:预览不叠色块;检测表无框时补的仍是「语义分割掩码」那一行,只写图幅
- 异常检测不替你判「正常 / 异常」——判异阈值是模型侧标定值,推理后处理不代填、不输出裁决
- 任务认法三步走:先看模型声明的任务,声明没给再看后处理器名,还没有就按输出形状认。深度 / 异常 / 嵌入的形状与分割、分类分不开,要有名字证据(张量名或模型名带对应字样)才认,认不出就报「无法无歧义路由」,不猜默认任务
张量摘要
表头右侧计数「共 N 项」。只读,不可排序筛选。无检测时整表为空,不造占位行。
| 列 | 含义 | |---|---|---| | 张量 | 观测名 | | 元素类型 | float32 或 float64 | | 形状 | 一维长度 | | 最小值 | 本观测最小值 | | 最大值 | 本观测最大值 | | 均值 | 本观测均值 | | 样本值 | 前 8 个元素抽样,超出以省略号加总项数收尾 |
张量摘要只列实际观测到的量(检测置信度、框面积),不是模型原始输出的逐维数值。
推理后端
按模型格式分流探测,缺运行库时徽标如实写不可用,不装假引擎。
| 格式 | 后端标签 | 就绪条件 | 打开时 |
|---|---|---|---|
| ONNX | ONNX Runtime,跑完一轮后带 (CUDA) / (DirectML) / (CPU) | 应用目录 runtimes/win-x64/native 下有 onnxruntime.dll | 自动准备,徽标「模型已加载」 |
| .pt / .pth | PyTorch;.pth 转换完成后按 ONNX Runtime 如实显示 | 本地 Python + PyTorch | 「按需加载」 |
| Paddle | Paddle Inference (CPU) | 应用目录或 PATH 找得到 paddle_inference_c.dll | 「按需加载」 |
| .darmodel 加密包 | 解锁后按包内载荷走对应后端 | 密码正确 | 「按需加载」,每次都要解锁 |
「按需加载」在这些情形标注:.pt、.pth、非 onnx 格式、加密包。打开模型不解 PT/PTH、不跑导出;点「开始推理」再转换,同一模型第二次跑直接复用。徽标「模型加载失败」时原因进悬浮提示,仍可点「开始推理」再试。
.pth 权重存档(只有权重张量、没有模型结构)不因此禁用推理按钮,点击时自动转 ONNX 再推理;转换期状态字「正在自动转换权重…」。
推荐日常试跑用 ONNX:免 Python、开箱即用,打开模型即可直接推理。
视频逐帧推理
- 逐帧推理,标注帧实时刷进左预览;品类面板同步显示当前帧富结果
- 进度「逐帧推理中: 第 i/N 帧」;容器报不出总帧数时改「第 i 帧 (总帧数未知)」并走不确定流光
- 单帧解码失败或推理失败:记日志后跳过该帧,不中断整段
- 完成后状态字「视频逐帧推理完成 (N 帧有检测)」,结果摘要「标注 N 帧」;末帧富结果兜底进品类面板
- 只保留最近 300 帧明细供回看,全片「有检测帧」计数独立累计,不随裁剪变小
- 加密模型显式拒绝视频逐帧:状态字「加密模型暂不支持视频逐帧推理,请改用单图推理」(单图路径不受影响)
- 中间文件用完即清,完成、取消、出错都会清
导出为数据集
加密模型不能直接训练,但可以:多选图 → 逐张推理 → 标注落入项目数据集 → 再拿这份数据训明文 .pt。这是 加密 里「不能训练」的唯一二次训练通道。
触发与流程:
- 点「导出为数据集」,多选图片
- 与开始推理同样的检查:模型已选、路径可用、后端就绪、无在飞任务;同模型正在准备时先等收尾
- .pth 先自动转 ONNX;加密包走同一密码行
- 逐张推理(与单图推理同一套),进度「批量推理导出中: 第 i/N 张」
- 结果落当前项目 datasets/ 下的新目录,命名 inference-export-模型名-时间戳(重名加序号),并注册进项目树
- 成功状态字「已注册数据集 <DatasetId>」,结果摘要按实计数
产出布局随任务切换:
- 分类任务:images/train/类别名/ 目录归图
- 检测族任务:images/train 放图,labels/train 放同名 YOLO 标注(行格式 classId cx cy w h,归一化中心坐标,6 位小数,限幅 0 到 1);0 检测图按背景图惯例写空标注,计数如实上报
- 两种布局都写 data.yaml(task / path / train / names)与 labels.txt
摘要原文形如「导出 12 张, 其中 2 张无检测 (背景图), 1 张失败」,失败明细记在日志;分类任务另有「N 张无分类结果」。全部失败或 0 张可导出时整体失败并清掉半成品目录。SAM2 掩码模型无框可写,直接拒:「SAM2 分割模型输出为掩码,不能导出检测/分类数据集」。
导出期间切换项目会如实失败(「导出期间当前项目已切换, 数据集未注册」),不把旧项目目录注册进新项目。单张失败记日志后继续,不中断整批。
诚实边界
本页是 Studio 试跑。现场第三方只走 C:打开会话 → 推理 → 关闭;阈值在开会话时用 SessionOptions 覆盖(打包期阈值是默认值,推理期可由用户改)。SDK 是可选运行时,只做推理(阻塞调用)。
.darmodel 加密出包可选、单向;激活码对应这一份包的离线推理,官方不解回明文。口令解锁只在本页有效。权重指纹只用于标识这一份包(当前版本不提供泄露溯源能力)。拿到包和激活码的买家可离线解出模型;要真正防转发需在线激活或 TPM 封装,当前版本不提供。
导出产物是标准目录布局(YOLO / 分类目录 + data.yaml),可接入任意训练或推理框架。Windows 版 Studio 不提供 RKNN 转换;ONNX Runtime / TensorRT / OpenVINO / DirectML 等由导出页与环境管理承接(导出)。
- 失败写阶段 + 原因进日志,不空吞;界面只留短摘要。
- 没有模型时引导导入,不假装已就绪;缺运行库就禁用主按钮,不装假引擎。
- 训练仍是 YOLO 单轨(训练)。
- 阈值默认值来自模型元数据,推理期可由 SDK
SessionOptions覆盖;输入边长与类别名是模型事实,推理期不覆盖。本页不带调参面板。