跳到主要内容

模型管理

Vision Studio 提供完整的模型管理功能,涵盖 ONNX 模型的导入、版本管理、验证测试和部署到运行时等环节。

模型管理界面​

模型管理器可通过 IDE 左侧 视觉系统 面板的 模型管理 标签页进入:

┌──────────────────────────────────────────────────────────┐
│ 模型管理 [+ 导入] │
│ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 本地模型 │ │ 项目模型 │ │ 部署模型 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐│
│ │ 模型名称 │ 版本 │ 大小 │ 状态 │ 上次验证 ││
│ ├──────────────────────────────────────────────────────┤│
│ │ surface_defect │ v3 │ 24MB │ ● 已部署 │ 2026-07-20││
│ │ position_detect │ v2 │ 12MB │ ● 已验证 │ 2026-07-19││
│ │ barcode_reader │ v1 │ 8MB │ ○ 未验证 │ 2026-07-15││
│ │ anomaly_detector │ v1 │ 32MB │ ○ 未验证 │ 2026-07-14││
│ └──────────────────────────────────────────────────────┘│
│ │
│ [详情] [验证] [部署] [删除] [导出] │
└──────────────────────────────────────────────────────────┘

导入 ONNX 模型​

支持的模型格式​

模型类型格式输入要求输出要求
目标检测ONNX opset 11-21N×C×H×H 或 NHWC边界框 + 类别 + 置信度
图像分类ONNX opset 11-21N×C×H×W类别概率向量
语义分割ONNX opset 11-21N×C×H×WN×C×H×W 掩码
异常检测ONNX opset 11-21N×C×H×W异常分数 + 热力图

导入步骤​

  1. 点击 导入 按钮,选择 ONNX 模型文件
  2. 系统自动解析模型元数据:
┌──────────────────────────────────────┐
│ 导入模型 │
│ │
│ 文件: surface_defect_v3.onnx │
│ 大小: 24.3 MB │
│ 算子集: opset 19 │
│ │
│ ┌─ 输入 ──────────────────────────┐│
│ │ images: float32[1,3,640,640] ││
│ └──────────────────────────────────┘│
│ ┌─ 输出 ──────────────────────────┐│
│ │ output0: float32[1,84,8400] ││
│ └──────────────────────────────────┘│
│ │
│ 模型名称: surface_defect │
│ 版本号: v3 │
│ │
│ [确定] [取消] │
└──────────────────────────────────────┘
  1. 确认模型名称和版本号后点击 确定
  2. 模型自动复制到项目目录的 Vision/Models/ 下

自动解析信息​

导入时系统自动解析 ONNX 模型:

信息说明用途
输入/输出张量名称、形状、数据类型自动配置算子参数
算子集版本opset 版本号兼容性检查
IR 版本ONNX IR 版本兼容性检查
模型元数据自定义 metadata模型来源追溯
输入尺寸自动检测算子输入尺寸自动填充

模型版本管理​

版本命名规则​

版本号格式:v + 正整数,如 v1、v2、v3。

版本号说明示例
v1初始版本首个训练版本
v2首次迭代增加数据集、调参
v3当前版本切换模型架构

版本操作​

操作说明
新建版本导入新的 ONNX 文件,版本号自动递增
回滚版本切换到历史版本,旧版本模型文件保留
对比版本对比两个版本的输入/输出、大小、性能
删除版本删除不再需要的版本(正在部署的版本不可删除)
设置默认指定默认使用的版本

版本对比​

选择两个版本进行对比:

┌────────────────────────────────────────────────┐
│ surface_defect v2 ↔ v3 对比 │
│ │
│ 属性 │ v2 │ v3 │
│────────────────┼──────────────┼─────────────────│
│ 文件大小 │ 18.2 MB │ 24.3 MB │
│ 输入尺寸 │ 640×640 │ 640×640 │
│ 算子集 │ opset 17 │ opset 19 │
│ [email protected] │ 0.892 │ 0.935 ▲ │
│ 推理延迟 (CPU) │ 45 ms │ 38 ms ▲ │
│ 推理延迟 (GPU) │ 12 ms │ 8 ms ▲ │
│ 模型架构 │ YOLOv8s │ YOLOv8m │
│ 训练数据集 │ 5000 张 │ 12000 张 │
│ 训练日期 │ 2026-06-01 │ 2026-07-10 │
└────────────────────────────────────────────────┘

模型验证与测试​

验证流程​

在部署前,必须对模型进行验证:

  1. 在模型列表中选择模型,点击 验证
  2. 选择验证数据集(图像文件或目录)
  3. 系统逐张运行推理并生成验证报告

验证报告​

┌──────────────────────────────────────────────────────┐
│ 模型验证报告 │
│ 模型: surface_defect v3 │
│ 验证集: 100 张图像 │
│ 日期: 2026-07-20 14:30:00 │
│ │
│ ┌─ 性能指标 ─────────────────────────────────────┐ │
│ │ 平均推理延迟: 38 ms (CPU) / 8 ms (GPU) │ │
│ │ 平均帧率: 26 FPS (CPU) / 125 FPS (GPU) │ │
│ │ 最大内存占用: 156 MB │ │
│ │ 峰值 CPU 使用率: 45% │ │
│ └────────────────────────────────────────────────┘ │
│ ┌─ 检测指标 ─────────────────────────────────────┐ │
│ │ 准确率: 97.2% │ 误检率: 1.8% │ │
│ │ 召回率: 96.5% │ 漏检率: 3.5% │ │
│ │ [email protected]: 0.935 │ [email protected]:0.95: 0.712 │ │
│ └────────────────────────────────────────────────┘ │
│ ┌─ 失败案例 ─────────────────────────────────────┐ │
│ │ #1 缺陷类型: 划痕 │ │
│ │ 图像: test_023.jpg │ │
│ │ 实际: 有划痕 预测: 无缺陷 │ │
│ │ 置信度: 0.32 (低于阈值 0.5) │ │
│ │ #2 缺陷类型: 凹陷 │ │
│ │ 图像: test_047.jpg │ │
│ │ 实际: 有凹陷 预测: 无缺陷 │ │
│ │ 置信度: 0.41 (低于阈值 0.5) │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ 验证结论: ● 通过 │
│ 建议: 失败案例均为低置信度漏检,可考虑降低 │
│ 置信度阈值至 0.3 或补充训练数据 │
└──────────────────────────────────────────────────────┘

单图测试​

在 IDE 中直接加载测试图像,即时查看推理结果:

  1. 在模型管理中选择模型 → 点击 测试
  2. 拖入或选择测试图像
  3. 实时显示推理结果(检测框、分类标签、置信度)
  4. 可调整置信度阈值,实时预览效果

部署模型到运行时​

部署流程​

模型验证通过后,可部署到运行时:

  1. 在模型列表中选择已验证的模型版本
  2. 点击 部署 按钮
  3. 确认部署目标:
┌──────────────────────────────────────┐
│ 部署模型 │
│ │
│ 模型: surface_defect v3 │
│ │
│ 部署目标: │
│ ● 当前项目 (本地) │
│ ○ 远程运行时 (192.168.3.197) │
│ │
│ 部署配置: │
│ 推理后端: GPU (CUDA) │
│ 超时时间: 5000 ms │
│ 最大并发: 2 │
│ │
│ [部署] [取消] │
└──────────────────────────────────────┘
  1. 点击 部署,系统自动执行:
步骤说明状态
1. 模型压缩ONNX 优化 (图优化、常量折叠)完成
2. 格式转换转换为运行时格式完成
3. 资源分配分配 GPU 显存 / CPU 内存完成
4. 部署验证加载模型并运行 3 次验证推理完成
5. 注册完成创建模型 Session,准备就绪完成

部署状态​

状态说明图标
未部署模型已验证但未部署到运行时○
已部署模型已加载到运行时,可用于推理●
部署中正在部署◐
部署失败部署出错● (红色)
已卸载模型已从运行时卸载○

远程部署​

部署到远程运行时支持:

  • DarraLink 通道:通过 18821 端口传输模型文件
  • RemoteAccess 通道:通过 HTTPS 18443 传输
  • 部署验证:部署完成后自动运行 3 次推理验证
  • 回滚:部署失败自动回滚到上一个可用版本

模型文件结构​

项目目录结构​

<项目根目录>/
└── Vision/
└── Models/
├── surface_defect/
│ ├── v1/
│ │ ├── model.onnx # ONNX 模型文件
│ │ ├── labels.txt # 类别标签
│ │ ├── metadata.json # 元数据
│ │ └── validation.json # 最后一次验证报告
│ ├── v2/
│ │ └── ...
│ └── v3/
│ ├── model.onnx
│ ├── labels.txt
│ ├── metadata.json
│ └── validation.json
├── position_detect/
│ └── ...
└── models.index.json # 项目模型索引

metadata.json 示例​

{
"name": "surface_defect",
"version": "v3",
"description": "产品表面缺陷检测模型",
"created": "2026-07-10T08:00:00Z",
"framework": "ONNX",
"opset": 19,
"architecture": "YOLOv8m",
"input": {
"shape": [1, 3, 640, 640],
"dtype": "float32",
"format": "NCHW"
},
"output": {
"shape": [1, 84, 8400],
"dtype": "float32",
"format": "NCHW"
},
"training": {
"dataset_size": 12000,
"epochs": 300,
"framework": "Ultralytics YOLO"
},
"deployment": {
"status": "deployed",
"target": "local",
"provider": "CUDA",
"deployed_at": "2026-07-20T14:35:00Z"
}
}

模型性能基准​

推理延迟参考​

模型类型输入尺寸CPU (i7-12700)GPU (RTX 3060)GPU (RTX 4090)
YOLOv8n640×64025 ms4 ms2 ms
YOLOv8s640×64038 ms6 ms3 ms
YOLOv8m640×64055 ms8 ms4 ms
YOLOv8l640×64085 ms12 ms6 ms
ResNet50224×22418 ms3 ms1.5 ms
EfficientNet-B0224×22412 ms2 ms1 ms

内存占用参考​

模型类型模型大小推理内存 (CPU)推理内存 (GPU)
YOLOv8n6 MB120 MB200 MB (显存)
YOLOv8s12 MB180 MB300 MB (显存)
YOLOv8m24 MB280 MB500 MB (显存)
YOLOv8l44 MB450 MB800 MB (显存)

注意事项​

  1. 模型输入尺寸必须与算子配置一致:导入模型时系统自动检测输入尺寸,但在算子中仍需确认
  2. GPU 显存不足时自动回退到 CPU:如果显存不足,运行时自动回退到 CPU 推理
  3. 部署前必须验证:验证通过的模型才能部署,防止生产环境加载错误模型
  4. 版本不可删除:正在部署或正在使用的版本无法删除,需先切换到其他版本
  5. 模型文件加密:部署到远程运行时,模型文件通过加密通道传输