跳到主要内容

使用 Segmenter

本教程将带你完成利用 OV20i 的 AI 驱动分割能力来进行完整的分割检测。你将学习如何通过教摄像头识别并逐像素测量铅笔痕迹、划痕或其他缺陷等特征来进行检测与分析。

备注

OV10i 不具备分割能力。

您将学习到的内容:

  • 如何从头到尾设置一个分割配方
  • 如何训练 AI 模型以识别特定特征
  • 如何基于分割结果配置通过/不通过逻辑
  • 如何为生产使用优化分割性能

实际应用: 本教程以铅笔标记检测为例,但相同原理同样适用于检测划痕、裂纹、污染或任何其他可通过视觉区分的特征。

前提条件

  • OV20i 摄像系统已设置并连接
  • 具备要检测的特征的样本部件(如带铅笔标记的纸张)
  • 对 AI 训练概念的基本理解
  • 具备访问配方编辑器和 Node-RED 功能的权限

教程概览

我们将构建的内容: 一个能够检测纸张上铅笔标记的分割模型,并基于检测到的标记数量来判定通过/不通过。

所需时间: 45-60 分钟(含训练时间)

学习技能: AI 模型训练、分割标注、通过/不通过逻辑配置

步骤 1:创建一个新的分割配方

1.1 新建配方

  1. 在“全部配方”页面,点击右上角的“+ 新建”
  2. 将出现“添加新配方”对话框
  3. 为你的配方输入一个描述性名称(例如 “Pencil_Mark_Detection”)
  4. 从“配方类型”下拉菜单中选择“Segmentation”(分割)
  5. 点击“OK”创建新配方

为何选择分割? 与识别整个对象的分类不同,分割在图像中查找并测量特定特征,因此非常适合缺陷检测、污染分析或测量覆盖区域。

image.png

1.2 启用并打开配方编辑器

  1. 新建的配方将在“全部配方”页面显示,状态为“未激活”
  2. 在配方右侧选择“激活” Activate button.png
  3. 点击“激活并进入编辑器”以确认并启动配方编辑器

检查点: 您应在面包屑导航中看到带有分割配方名称的 Recipe Editor 界面。

步骤 2:配置相机成像

2.1 进入成像设置

  1. 在配方编辑器中,单击左下角的“配置成像”
  2. 这将打开成像配置页面,您将在此优化相机设置

image.png

2.2 优化聚焦设置

  1. 将带有铅笔标记的样本纸放入相机视野中
  2. 使用“焦点”滑块实现铅笔标记的清晰聚焦
  3. 也可以手动输入焦点数值以提高精度
  4. 如有可用,请使用 Focus View 查看边缘高亮和焦点分数

聚焦要点:

  • 聚焦在将出现缺陷的表面
  • 确保铅笔标记清晰且轮廓分明
  • 更高的焦点分数表示更好的聚焦质量

2.3 配置曝光设置

  1. 调整 Exposure 滑块以实现合适的亮度
  2. 铅笔痕迹应在纸张上清晰可见,避免对纸张过曝
  3. 以自动设置开始,必要时进行微调
  4. 观察实时预览以实现实时变化

Exposure Guidelines:

  • 铅笔痕迹应与纸张形成良好对比
  • 避免过曝导致细微痕迹被冲淡
  • 确保整个检测区域的照明保持一致

2.4 Set Up LED Lighting

  1. 选择适用于您的应用的 LED Light Pattern
  2. 对于铅笔痕迹,通常均匀照明效果最佳
  3. 调整 LED Light Intensity 以最小化阴影和眩光
  4. 如有反射问题,请测试不同的照明模式

2.5 Adjust Gamma and Contrast

  1. 细调 Gamma 以增强痕迹与背景之间的对比度
  2. 较高的 gamma 可以使细微的铅笔痕迹更清晰
  3. 较低的 gamma 可以降低干净区域的噪声
  4. 平衡 gamma 以在缺陷可见性和背景清晰度之间实现优化

2.6 Save Imaging Settings

  1. 一旦所有设置优化完成,点击 "Save Imaging Settings"
  2. 您的相机配置现已保存到此配方
  3. 实时预览应显示清晰、对比度良好的图像

检查点: 相机应输出清晰的图像,使铅笔痕迹与纸张背景易于区分。

第 3 步:配置模板和对齐

3.1 导航到 Template Image and Alignment

  1. 点击面包屑菜单中的 Recipe Name 以返回 Recipe Editor
  2. 从菜单中选择 "Template Image and Alignment"

3.2 本教程跳过对齐器

  1. 由于我们在整张纸上检测特征,请点击 "Skip Aligner"
  2. 这将禁用基于位置的对齐,使用整张图像
  3. 点击 "Save" 以应用更改

何时使用对齐器: 启用对齐器,当您需要在可能移动或旋转的工件的特定位置检测特征时。对于像铅笔痕迹这样的整张纸检测,跳过对齐器通常是合适的。

image.png

第 4 步:设置检测区域

4.1 导航到 Inspection Setup

  1. 返回 Recipe Editor 并选择 "Inspection Setup"
  2. 这里将定义要分析的图像区域

4.2 配置 ROI(Region of Interest,ROI)

  1. 您将看到相机视野的预览
  2. 拖动 ROI 框的角点 以调整其大小和位置
  3. 对于铅笔痕迹检测,通常覆盖整张纸区域
  4. 确保 ROI 覆盖铅笔痕迹可能出现的所有区域

ROI 最佳实践:

  • 包括可能出现缺陷的所有区域
  • 排除边缘、背景等不应分析的区域
  • 使 ROI 足够大以捕捉部件定位的变化
  • 避免包含文本、标志或其他预期标记

4.3 保存 ROI 配置

  1. 一旦 ROI 定位正确,点击 "Save"
  2. 该检测区域现已为您的分割模型定义

第 5 步:标注并训练你的模型

5.1 前往 标注与训练

  1. 返回到 配方编辑器,并选择 "Label and Train"
  2. 这里你将教 AI 如何识别铅笔标记的外观

image.png

5.2 配置 Inspection Class

  1. Under Inspection Types, click "Edit"
  2. 将该类别重命名为 "Pencil Mark"(或您特定的缺陷类型)
  3. 为可视化检测到的标记选择一种显著的 color
  4. 点击 "Save" 以应用更改

5.3 捕获训练图像

  1. 至少拍摄 10 张包含不同铅笔标记的纸张图像
  2. 变换训练示例:
    • 不同尺寸和形状的铅笔标记
    • 浅色与深色标记
    • 纸张上的不同位置
    • 不同密度的标记

训练图像提示:

  • 包含微小与明显的标记
  • 捕捉你将遇到的各种照明条件
  • 每张图像中包含无标记的干净区域
  • 确保图像能代表生产条件

5.4 标注训练图像

  1. 对每张训练图像,使用 Brush 工具 在铅笔标记上描画
  2. 仅绘制铅笔标记 - 避免标记纸张或其他特征
  3. 标注时要精准但全面
  4. 完成每张图像后,点击 "Save Annotations"

标注最佳实践:

  • 在将何物标注为 "pencil marks" 时保持一致
  • 包括完整标记,而不仅是部分
  • 不要标注诸如文本或商标之类的预期标记
  • 使用稳定、细致的笔触以获得准确边界

5.5 审查标注

  1. 再次核对所有标注的图像 以确保准确性
  2. 查找遗漏的标记或错误标注的区域
  3. 对需要更正的图像重新标注
  4. 高质量的标注可提升模型性能

第 6 步:训练 Segmentation Model

6.1 开始训练过程

  1. 一旦你对至少 10 张图像完成标注,请点击 "Return to Live"
  2. 点击 "Train Segmentation Model"
  3. 输入训练的 迭代次数

迭代指南:

  • 初始训练从 100-200 次迭代开始
  • 更多迭代通常会提升准确性,但需要更长时间
  • 监控训练进度并按需进行调整
  • 在准确性需求与训练时间之间取得平衡

image.png

6.2 监控训练进度

  1. 点击 "Start Training" 以开始该过程
  2. 将显示一个训练进度对话框,显示:
    • 当前迭代次数
    • 训练准确率百分比
    • 预计剩余时间

6.3 训练控制选项

在训练期间,您可以:

  • Abort Training - 如需进行更改,请中止训练
  • Finish Training Early - 当准确性达到足够时停止
  • Monitor Progress - 观察迭代中的准确性提升

训练提示:

  • 目标准确性达到时,训练将自动结束
  • 更高的准确性百分比表示更好的模型性能
  • 如果准确性趋于稳定,您可能需要更多训练数据

6.4 评估训练结果

  1. 训练完成后,查看最终准确性
  2. 点击 "Live Preview" 以查看实时分割结果
  3. 使用新的样本进行测试以验证模型性能

成功指标:

  • 铅笔标记以您选择的颜色高亮显示
  • 干净区域保持未标记
  • 检测在不同标记类型之间保持一致
  • 模型对新的、未见过的样本有良好响应

第 7 步:配置通过/失败逻辑

7.1 导航至 IO Block

  1. 返回到配方编辑器并点击 "Configure I/O" 或从面包屑菜单中选择 "IO Block"

7.2 设置 Node-RED 流

  1. Delete the existing Classification Block Logic 节点
  2. From the left palette, drag in:
    • All Block Outputs 节点(若尚未存在)
    • Function 节点
    • Final Pass/Fail 节点
  3. 连接节点:All Block Outputs → Function → Final Pass/Fail

image.png

7.3 配置通过/失败逻辑

双击 Function 节点并从以下逻辑示例中选择一个:

Option 1: Pass if No Defects Detected

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

Option 2: Pass if All Marks Are Small

// Pass if all marks are smaller than threshold
const threshold = 500; // pixels
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;

Option 3: Pass if Total Coverage Is Low

// Pass if total marked area is below threshold
const threshold = 5000; // total pixels
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;

7.4 部署并测试逻辑

  1. 点击 "Done" 保存函数
  2. 点击 "Deploy" 启用逻辑
  3. 导航到 HMI 以测试您的通过/失败逻辑

测试您的逻辑:

  • 使用干净样本进行测试(应通过)
  • 使用轻微标记的样本进行测试(应按您的标准通过/不通过)
  • 使用严重标记的样本进行测试(应失败)
  • 验证结果是否符合预期

第 8 步:优化与验证

8.1 使用生产样本进行测试

  1. 将多组测试样本投入到检测中
  2. 验证检测准确性是否符合您的要求
  3. 验证通过/失败逻辑是否正确工作
  4. 记录任何问题或边界情况

8.2 细调模型性能

如果检测不一致:

  • 添加包含多样示例的训练图像
  • 提高标注质量与一致性
  • 调整成像设置以获得更好对比度
  • 使用更多迭代进行重新训练

如果通过/失败逻辑需要调整:

  • 在 Node-RED 函数中修改阈值
  • 测试不同的逻辑方法
  • 考虑用于复杂决策的多重标准
  • 使用生产要求进行验证

8.3 生产验证

  1. 在实际条件下使用真实生产零件进行测试
  2. 与质检团队共同验证,确保标准符合要求
  3. 记录性能指标,如检测准确性和误报率
  4. 建立监控,以随时间跟踪性能

步骤 9:了解分割结果

9.1 分割数据结构

您的分割结果包括:

  • Blobs:单个检测到的特征(铅笔痕迹)
  • Pixel Count:每个检测到的特征的像素计数
  • Location Data:特征出现的位置
  • Confidence Scores:对每次检测的置信度

9.2 使用分割数据

您可以基于以下内容创建复杂的通过/不通过逻辑:

  • Number of defects:检测到的缺陷数量
  • Size of individual defects(像素计数)
  • Total defect area(所有像素计数之和)
  • Defect location(缺陷出现的位置)
  • Defect shape characteristics(如需要用于高级应用)

成功!您的分割模型已完成

您的 OV20i 分割检测现在可以:

自动检测图像中的铅笔痕迹(或您指定的特征)

测量检测到的特征的大小和数量

根据您的特定标准进行通过/不通过的决策

提供关于每个检测特征的详细信息

适应铅笔痕迹大小、形状和位置的变化

关键要点

Segmentation vs. Classification:

  • Segmentation 在图像中发现并测量特征
  • Classification 识别整个对象或总体条件
  • 将分割用于缺陷检测、污染分析或覆盖度测量

培训最佳实践:

  • 高质量的标注比数量更重要
  • 在训练集中包含多样化的示例
  • 使用生产样本进行彻底测试
  • 根据需要进行监控和重新训练

通过/不通过逻辑:

  • 从简单标准开始,按需要增加复杂性
  • 用边缘情况和临界样本测试逻辑
  • 为保持一致性,将标准进行文档化
  • 考虑多因素以实现稳健的决策

下一步

现在您已完成第一个分割模型:

  1. 应用到其他用例 - 尝试检测不同类型的缺陷或特征
  2. 与生产系统集成 - 连接到 PLCs 或质量管理系统
  3. 设置数据收集 - 跟踪性能指标和检测统计
  4. 培训操作员 - 确保团队了解如何监控和维护系统
  5. 计划维护 - 安排定期模型更新和性能评审

🔗 相关链接