跳到主要内容

AI 驱动文档

您想了解什么?

训练分割器

本指南将向您展示如何设置和配置 OV80i 分割功能,以自动检测、测量和分析您零件中的特定特征或缺陷。当您需要识别不规则形状、测量面积或检测简单分类无法处理的特定模式时,请使用分割功能。

视频指南

查看此主题的实际操作:如何在几分钟内创建分割配方

何时使用分割: 表面缺陷、液体溢出、不规则形状、面积测量、模式检测或任何需要像素级精度的特征。

开始之前

您需要准备的事项

  • 已设置并连接的 OV80i 相机系统
  • 具有您想要分割特征的测试零件(例如,带有铅笔痕迹的板材)
  • 针对您特定应用的良好照明条件
  • 15-20 张用于训练的样本图像

第一步:创建分割配方

1.1 开始新配方

  1. 导航到所有配方 页面
  2. 点击 + 新配方(右上角)

新配方按钮

  1. 输入配方名称: 使用描述性名称,如 "Pencil_Mark_Detection" 或 "Surface_Defect_Segmentation"
  2. 选择配方类型: 从下拉菜单中选择 "Segmentation"
  3. 点击 确定 创建

1.2 激活配方

  1. 在列表中找到您的配方(显示为 "Inactive")
  2. 点击 激活
  3. 点击 激活并进入编辑器 确认并启动配方编辑器

激活配方按钮

结果: 配方现在为 "Active",并显示配方编辑器。

第二步:配置相机设置

2.1 打开成像配置

  1. 点击 配置成像(左下角)

配置图像

2.2 为分割优化焦距

焦距对于准确的边缘检测至关重要:

  1. 将测试零件放置在相机视野中
  2. 调整焦距,直到边缘清晰锐利
  3. 使用不同的零件进行测试,以确保在您的范围内保持一致的焦距
提示
  • 专注于缺陷/特征将出现的表面
  • 确保整个感兴趣区域都处于清晰的焦距
  • 轻微的过度锐化比模糊焦距更适合分割

2.3 设置最佳曝光

适当的曝光确保一致的特征检测:

  1. 调整曝光 以实现均衡的照明
  2. 避免过曝区域(纯白区域)
  3. 确保特征可见,并具有良好的对比度

分割曝光指南:

  • 特征应与背景有明显对比
  • 避免可能被误认为缺陷的阴影
  • 在各种零件条件下进行测试(干净、脏污、磨损)

2.4 配置 LED 照明模式

根据您要分割的内容选择照明:

特征类型推荐照明原因
表面缺陷明场均匀照明显示表面不规则性
划痕/裂缝侧光产生阴影,突出线性缺陷
凸起特征暗场使凸起区域从背景中突出
液体溢出侧光显示表面纹理差异

2.5 调整伽玛以增强特征

  1. 增加伽玛以增强特征与背景之间的对比
  2. 测试不同值同时查看目标特征
  3. 找到设置使特征最易区分

2.6 保存配置

  1. 在实时预览中查看设置
  2. 点击 保存成像设置

保存设置

检查点: 特征应清晰可见,且对比度良好。

第 3 步:设置模板和对齐

3.1 导航到模板部分

在面包屑菜单中点击 "模板图像和对齐"

3.2 配置对齐(可选)

模板和对齐

在此示例中,我们将跳过对齐:

  1. 如果零件位置一致,选择 跳过对齐器
  2. 点击 保存

模板图像

何时使用对齐器: 当零件以不同位置或方向到达时启用,以避免影响分割精度。

第 4 步:定义检测区域

4.1 导航到检测设置

在面包屑菜单中点击 "检测设置"

4.2 设置兴趣区域(ROI)

ROI 定义了分割将发生的位置:

  1. 在相机视图中放置测试零件
  2. 拖动 ROI 角落以框定检测区域
  3. 适当调整 ROI 大小:
    • 包含可能出现特征的所有区域
    • 排除不必要的背景区域
    • 在预期特征位置周围留出小缓冲区

ROI 设置

4.3 分割的 ROI 最佳实践

不做
覆盖整个检测表面包含无关的背景物体
在边缘留出缓冲空间使 ROI 对特征变化过小
考虑零件位置变化与夹具或工具重叠
测试最大预期特征包含有永久标记的区域

4.4 保存 ROI 设置

  1. 验证 ROI 覆盖所有目标区域
  2. 点击 保存

第 5 步:标记训练数据

5.1 导航到标记和训练

在面包屑菜单中点击 "标记和训练"

5.2 配置检测类别

  1. 在检测类型下点击 编辑
  2. 重命名类别以匹配您的特征(例如,“铅笔痕迹”、“表面缺陷”、“溢出区域”)
  3. 选择类别颜色以便于视觉识别
  4. 保存更改

5.3 捕捉和标记训练图像

您需要至少 10 张标记图像,但推荐 15-20 张:

图像捕捉过程

  1. 在检测区域放置第一个测试零件
  2. 使用相机界面拍摄图像
  3. 使用画笔工具在目标特征上涂抹
  4. 准确涂抹:
    • 覆盖整个特征区域
    • 保持在特征边界内
    • 不要涂抹背景区域
    • 使用一致的标记方法
  5. 点击 保存注释
  6. 对下一个零件重复

标记和训练

标注最佳实践

良好标注差标注
精确的特征边界粗糙的边缘涂抹
一致的特征定义不一致的标准
完整的特征覆盖缺失的特征区域
干净的背景(未涂抹)意外的背景涂抹

5.4 训练数据多样性

确保您的训练集包括:

  • 不同的特征大小
  • 各种特征强度
  • ROI 内的多个位置
  • 不同的光照条件(如适用)
  • 边缘案例和临界示例

5.5 质量检查训练数据

  1. 审查所有标注的图像
  2. 验证一致的标注方法
  3. 删除任何标注错误的示例
  4. 如有需要,添加更多示例

第 6 步:训练分割模型

6.1 开始训练过程

  1. 标注完成后,点击 返回实时
  2. 点击 训练分割模型

开始训练

6.2 配置训练参数

  1. 设置迭代次数:
    • 快速训练: 50-100 次迭代(5-10 分钟)
    • 生产质量: 200-500 次迭代(15-30 分钟)
    • 高精度: 500 次以上迭代(30 分钟以上)
  2. 点击 开始训练

6.3 监控训练进度

训练进度显示:

  • 当前迭代次数
  • 训练准确率百分比
  • 预计完成时间

训练

训练控制:

  • 中止训练: 如出现问题则停止
  • 提前完成训练: 当准确率足够时停止

训练 2

提示
  • 85% 的准确率通常适合生产
  • 训练会在达到目标准确率时自动停止
  • 更多的训练数据通常比更多的迭代更好

第 7 步:测试分割性能

7.1 访问实时预览

  1. 训练完成后,点击 实时预览
  2. 使用各种零件进行测试:
    • 已知良好的零件(应显示无/最少分割)
    • 已知缺陷的零件(应突出缺陷)
    • 边缘案例和临界示例

实时预览

7.2 评估结果

检查分割质量:

指标良好性能需要改进
准确率一致地找到真实特征漏掉明显特征
精确度假阳性较少许多背景区域被突出
边缘质量干净、准确的边界粗糙或不准确的边缘
一致性重复测试结果相似结果高度可变

7.3 排除不良结果

问题可能原因解决方案
缺失特征训练数据不足添加更多标注示例
假阳性光照/对比度差改善成像设置
粗糙边缘图像质量差改善焦距/光照
结果不一致训练多样性不足添加更多多样化示例

第 8 步:配置合格/不合格逻辑

8.1 访问 I/O 块

  1. 确保 AI 模型显示为绿色(已训练状态)
  2. 通过面包屑菜单导航到 I/O 块

8.2 移除默认逻辑

  1. 删除分类块逻辑节点
  2. 准备构建自定义分割逻辑

8.3 构建分割流程

创建 Node-RED 流程,包含以下组件:

  1. 从左侧面板拖动节点:
    • 功能节点(用于逻辑)
    • 调试节点(用于测试)
    • 最终合格/不合格节点
  2. 用电线连接节点

NodeRed

8.4 根据需求配置逻辑

选项 A:未检测到缺陷则合格

用例: 质量检查中,任何检测到的特征均为不合格

功能节点代码:

const allBlobs = msg.payload.segmentation.blobs;
const results = allBlobs.length <1; // Pass if no features found
msg.payload = results;
return msg;

选项 B:仅小缺陷合格

用例: 接受小于尺寸阈值的轻微缺陷

功能节点代码:

const threshold = 500; // Adjust pixel count threshold
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;

选项 C:总缺陷面积小则合格

用例: 接受总缺陷面积有限的部件

功能节点代码:

const threshold = 5000; // Adjust total pixel threshold
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;

8.5 配置功能节点

  1. 双击功能节点
  2. 从上述示例中复制适当的代码
  3. 粘贴到“消息处理”选项卡中
  4. 根据您的应用调整阈值
  5. 点击 完成

8.6 部署并测试逻辑

  1. 点击 部署 激活逻辑
  2. 导航到 HMI 进行测试
  3. 使用已知的合格和不合格部件进行测试
  4. 验证合格/不合格结果是否符合预期

第 9 步:生产验证

9.1 综合测试

测试分割系统:

测试案例预期结果失败时的操作
干净部件合格(无分割)调整阈值或重新训练
轻微缺陷根据您的标准合格/不合格精细化逻辑参数
重大缺陷不合格(清晰分割)检查模型准确性
边缘案例一致的行为添加训练数据

9.2 性能验证

监控以下指标:

  • 每次检查的处理时间
  • 多次测试的一致性
  • 在生产照明下的准确性
  • 长时间运行的可靠性

9.3 最终调整

如果性能不令人满意:

  1. 为边缘案例添加更多训练数据
  2. 调整逻辑中的阈值
  3. 改善成像条件
  4. 使用额外的迭代重新训练模型

成功!您的分割系统已准备就绪

您现在拥有一个可工作的分割系统,可以:

  • 自动检测 特定特征或缺陷
  • 以像素级精度测量面积
  • 根据您的要求应用自定义合格/不合格逻辑
  • 通过 I/O 控制与生产系统集成

高级配置选项

自定义阈值逻辑

对于复杂的验收标准,结合多个条件:

const smallThreshold = 200;
const largeThreshold = 1000;
const maxTotalArea = 3000;

const allBlobs = msg.payload.segmentation.blobs;
const smallBlobs = allBlobs.filter(blob => blob.pixel_count < smallThreshold);
const largeBlobs = allBlobs.filter(blob => blob.pixel_count > largeThreshold);
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_c