一、一句话概括
视觉模型不是"单独运行"的程序,而是嵌入在一整套视觉系统中,作为"判定引擎"被调用。
二、视觉模型的标准使用流程(生产级)
text
触发信号
→ 图像采集
→ 图像预处理
→ 模型推理
→ 判定策略
→ 控制与记录
三、每一步是怎么"用模型"的(关键)
1. 触发与采图(模型之前)
模型不能主动取图,只能被动接收图像。
常见触发方式:
- PLC 硬触发(光电 / 编码器)
- 软件触发
- 连续流
要求:
- 触发与曝光严格同步
- 图像编号可追溯
2. 图像预处理(为模型服务)
目的不是"好看",而是稳定模型输入分布。
典型操作(OpenCV):
- ROI 裁剪
- 尺寸 resize
- 灰度 / 归一化
- 畸变校正
⚠️ 线上预处理必须与训练时完全一致
3. 模型推理(真正使用模型的地方)
模型的实际调用方式
text
输入:标准化图像(固定尺寸)
输出:概率 / 置信度 / 坐标 / mask
常见推理引擎:
- OpenCV DNN
- TensorRT
- OpenVINO
- ONNX Runtime
示例(逻辑层面):
text
result = model.forward(image)
4. 判定策略(模型≠最终结论)
这是工业系统的关键点
模型只给"判断依据",不直接决定 OK / NG。
示例
text
模型输出:缺陷概率 = 0.87
策略:>0.80 → NG
可叠加规则:
- 面积阈值
- 连续 NG 次数
- 多模型投票
5. 控制输出(模型变成"动作")
模型结果会被转化为:
- PLC 信号(OK / NG)
- 分拣动作
- 报警
- MES 数据
模型不直接控制设备,只输出判定结果
6. 数据记录与回溯(非常重要)
每一次模型调用,都要留下痕迹
保存内容:
- 原始图像
- 推理结果
- 判定结论
- 时间 / 工位 / 产品号
- 模型版本
用途:
- 客诉分析
- 模型优化
- 审计
四、不同类型模型在生产中的"用法差异"
1. 分类模型(最简单)
text
图像 → 模型 → OK / NG
应用:
- 表面是否有缺陷
- 是否装配到位
2. 检测模型(YOLO)
text
图像 → 边框 + 置信度
→ 判断是否落在 ROI
→ NG
应用:
- 划痕
- 漏件
3. 分割模型
text
图像 → 缺陷 mask
→ 面积 / 长度计算
→ 等级判定
应用:
- 微小裂纹
- 涂层不均
4. 异常检测模型
text
图像 → 异常热力图
→ 最大值 / 平均值
→ NG
应用:
- 只有 OK 样本的场景
五、模型在系统中的"真实形态"
模型在磁盘上
.onnx.engine.xml + .bin
模型在内存中
- 加载一次
- 常驻内存
- 多线程共享(需线程安全)
六、生产部署中的关键约束(必须满足)
- 模型加载失败 = 系统不可 OK
- 推理超时 = 报警
- 置信度异常 = 人工复核
- 模型不可在线自动替换
- 必须支持快速回滚
七、常见错误理解(纠正)
❌ 模型 = 程序
✔ 模型 = 被调用的算法模块
❌ 模型直接给结论
✔ 模型输出 + 判定策略 = 结论
❌ 训练完就能用
✔ 必须工程化封装
八、一个真实工业调用示意
text
while (running):
wait_trigger()
img = grab_image()
img_p = preprocess(img)
infer = model(img_p)
result = judge(infer)
send_plc(result)
save_log(img, infer, result)
九、给非算法人员的标准解释话术
"视觉模型就像一个经验丰富的质检员,只负责'看和判断可能性',
是否放行由系统规则和生产策略共同决定。"