模型管理
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-21 | N×C×H×H 或 NHWC | 边界框 + 类别 + 置信度 |
| 图像分类 | ONNX opset 11-21 | N×C×H×W | 类别概率向量 |
| 语义分割 | ONNX opset 11-21 | N×C×H×W | N×C×H×W 掩码 |
| 异常检测 | ONNX opset 11-21 | N×C×H×W | 异常分数 + 热力图 |
导入步骤
- 点击 导入 按钮,选择 ONNX 模型文件
- 系统自动解析模型元数据:
┌──────────────────────────────────────┐
│ 导入模型 │
│ │
│ 文件: surface_defect_v3.onnx │
│ 大小: 24.3 MB │
│ 算子集: opset 19 │
│ │
│ ┌─ 输入 ──────────────────────────┐│
│ │ images: float32[1,3,640,640] ││
│ └──────────────────────────────────┘│
│ ┌─ 输出 ──────────────────────────┐│
│ │ output0: float32[1,84,8400] ││
│ └──────────────────────────────────┘│
│ │
│ 模型名称: surface_defect │
│ 版本号: v3 │
│ │
│ [确定] [取消] │
└──────────────────────────────────────┘
- 确认模型名称和版本号后点击 确定
- 模型自动复制到项目目录的
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 │
└────────────────────────────────────────────────┘
模型验证与测试
验证流程
在部署前,必须对模型进行验证:
- 在模型列表中选择模型,点击 验证
- 选择验证数据集(图像文件或目录)
- 系统逐张运行推理并生成验证报告
验证报告
┌──────────────────────────────────────────────────────┐
│ 模型验证报告 │
│ 模型: 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 中直接加载测试图像,即时查看推理结果:
- 在模型管理中选择模型 → 点击 测试
- 拖入或选择测试图像
- 实时显示推理结果(检测框、分类标签、置信度)
- 可调整置信度阈值,实时预览效果
部署模型到运行时
部署流程
模型验证通过后,可部署到运行时:
- 在模型列表中选择已验证的模型版本
- 点击 部署 按钮
- 确认部署目标:
┌──────────────────────────────────────┐
│ 部署模型 │
│ │
│ 模型: surface_defect v3 │
│ │
│ 部署目标: │
│ ● 当前项目 (本地) │
│ ○ 远程运行时 (192.168.3.197) │
│ │
│ 部署配置: │
│ 推理后端: GPU (CUDA) │
│ 超时时间: 5000 ms │
│ 最大并发: 2 │
│ │
│ [部署] [取消] │
└──────────────────────────────────────┘
- 点击 部署,系统自动执行:
| 步骤 | 说明 | 状态 |
|---|---|---|
| 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) |
|---|---|---|---|---|
| YOLOv8n | 640×640 | 25 ms | 4 ms | 2 ms |
| YOLOv8s | 640×640 | 38 ms | 6 ms | 3 ms |
| YOLOv8m | 640×640 | 55 ms | 8 ms | 4 ms |
| YOLOv8l | 640×640 | 85 ms | 12 ms | 6 ms |
| ResNet50 | 224×224 | 18 ms | 3 ms | 1.5 ms |
| EfficientNet-B0 | 224×224 | 12 ms | 2 ms | 1 ms |
内存占用参考
| 模型类型 | 模型大小 | 推理内存 (CPU) | 推理内存 (GPU) |
|---|---|---|---|
| YOLOv8n | 6 MB | 120 MB | 200 MB (显存) |
| YOLOv8s | 12 MB | 180 MB | 300 MB (显存) |
| YOLOv8m | 24 MB | 280 MB | 500 MB (显存) |
| YOLOv8l | 44 MB | 450 MB | 800 MB (显存) |
注意事项
- 模型输入尺寸必须与算子配置一致:导入模型时系统自动检测输入尺寸,但在算子中仍需确认
- GPU 显存不足时自动回退到 CPU:如果显存不足,运行时自动回退到 CPU 推理
- 部署前必须验证:验证通过的模型才能部署,防止生产环境加载错误模型
- 版本不可删除:正在部署或正在使用的版本无法删除,需先切换到其他版本
- 模型文件加密:部署到远程运行时,模型文件通过加密通道传输