跳到主要内容

使用 Segmenter

本教程将通过 OV20i 的 AI 驱动分割能力,带您创建一个完整的分割检测。您将学习如何通过让摄像头逐像素地识别并测量铅笔痕迹、划痕或其他缺陷等特征来检测和分析这些特征。

备注

OV10i 不具备分割功能。

你将学到:

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

实际应用: 本教程以铅笔痕迹检测为例,但相同的原理同样适用于检测划痕、裂缝、污染或任何可视上区分的特征。

先决条件

  • OV20i 摄像机系统已设置并连接
  • 含有要检测特征的样本部件(例如,带铅笔痕迹的纸张)
  • 对 AI 训练概念的基本理解
  • 访问 Recipe Editor 和 Node-RED 功能

教程概览

我们将构建: 一种可检测纸张上的铅笔痕迹并基于检测到的痕迹数量判定通过/不通过的 segmentation 模型。

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

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

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

1.1 启动一个新配方

  1. All Recipes 页面,点击右上角的 "+ New Recipe"
  2. 将显示 Add A New Recipe 模态框
  3. 为您的配方输入一个描述性 名称(例如,"Pencil_Mark_Detection")
  4. 从下拉菜单中选择 "Segmentation" 作为配方类型
  5. 点击 "OK" 以创建新配方

为什么选择 Segmentation? 与识别整个对象的分类不同,Segmentation 能在图像中定位并测量特征,使其非常适合缺陷检测、污染分析或测量覆盖区域。

image.png

1.2 激活您的配方

  1. 新配方将出现在 All Recipes 页面,状态标记为 "Inactive"
  2. 选择配方右侧的 "Actions > Activate"
  3. 点击 "Activate" 以确认
  4. 配方状态将变为 "Active"

image.png

1.3 进入配方编辑器

  1. 点击活跃配方旁的 "Edit"
  2. 点击 "Open Editor" 以确认
  3. 现在您将进入带有分割配方名称的配方编辑器

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

步骤 2:配置相机成像

2.1 访问成像设置

  1. 在配方编辑器中,点击左下角的 "Configure Imaging"
  2. 这将打开成像配置页面,您将在其中优化相机设置

image.png

2.2 优化对焦设置

  1. 在相机的视野中放置带有铅笔标记的样本纸
  2. 使用 对焦滑块 以实现铅笔标记的清晰对焦
  3. 也可以手动输入对焦值以获得更高的精度
  4. 使用 对焦视图(若可用)来查看边缘高亮和对焦分数

对焦提示:

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

2.3 配置曝光设置

  1. 调整 曝光 滑块以获得合适的亮度
  2. 铅笔标记应清晰可见,而纸张不过曝
  3. 先使用自动设置,必要时进行微调
  4. 监控实时预览以实时查看变化

曝光准则:

  • 铅笔标记应与纸张形成良好对比
  • 避免过度曝光而淹没细微标记
  • 确保整个检测区域照明一致

2.4 设置 LED 照明

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

2.5 调整 Gamma 与对比度

  1. 微调 伽玛 以增强标记与背景之间的对比度
  2. 较高的伽玛可使细微的铅笔标记更明显
  3. 较低的伽玛可在干净区域减少噪声
  4. 平衡伽玛以同时优化缺陷可见性和背景清晰度

2.6 保存成像设置

  1. 完成所有设置的优化后,点击 “保存成像设置”
  2. 现在该配方的相机配置已保存
  3. 实时预览应显示清晰、对比鲜明的图像

检查点: 相机应产生清晰的图像,铅笔标记应能与纸张背景清晰区分

第 3 步:配置模板和对齐

3.1 转到 模板图像与对齐

  1. 在面包屑导航中点击“配方名称”返回到配方编辑器
  2. 从菜单中选择 “模板图像与对齐”

3.2 在本教程中跳过对齐器

  1. 由于我们要在整张纸上检测特征,请单击 “跳过对齐器”
  2. 这将禁用基于位置的对齐并使用整张图像
  3. 点击 “保存” 以应用更改

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

image.png

第 4 步:设置检测区域

4.1 转到 检查设置

  1. 返回到配方编辑器并选择 “检测设置”
  2. 这里将定义要分析的图像区域

4.2 配置感兴趣区域(ROI)

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

ROI 最佳实践:

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

4.3 保存 ROI 配置

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

第 5 步:对模型进行标注与训练

5.1 导航至 Label and Train

  1. 返回到 Recipe Editor 并选择 "Label and Train"
  2. 这是你将教 AI 如何识别铅笔标记的地方

image.png

5.2 配置检测类别

  1. Inspection Types 下,点击 "Edit"
  2. 将类别重命名为 "Pencil Mark"(或你特定的缺陷类型)
  3. 选择一个醒目的 颜色 来可视化检测到的标记
  4. 点击 "Save" 以应用更改

5.3 捕获训练图像

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

训练图像提示:

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

5.4 标注训练图像

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

标注最佳实践:

  • 在把标签标注为 "pencil marks" 时保持一致
  • 包含完整的标记,而不仅仅是它们的一部分
  • 不要标注像文本或徽标这样的预期标记
  • 使用稳定、仔细的笔触以获得准确边界

5.5 审核标注

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

第 6 步:训练分割模型

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. 点击 "实时预览" 以查看实时分割结果
  3. 使用新样本进行测试以验证模型性能

成功指标:

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

第 7 步:配置 Pass/Fail 逻辑

7.1 导航至 IO Block

  1. 返回到 Recipe Editor 并选择 "IO Block"
  2. 确保在继续之前所有 AI Blocks 显示为 "trained (green)"
  3. 点击 "Configure I/O" 进入 Node-RED 编辑器

image.png

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. Connect the nodes: All Block Outputs → Function → Final Pass/Fail

image.png

7.3 配置 Pass/Fail 逻辑

双击 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 Production Validation

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

Step 9: Understanding Segmentation Results

9.1 Segmentation Data Structure

Your segmentation results include:

  • Blobs: 单个检测到的特征(铅笔痕迹)
  • Pixel Count: 每个检测到的特征的大小
  • Location Data: 特征所在的位置
  • Confidence Scores: 模型对每个检测的置信分数

9.2 Using Segmentation Data

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

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

Success! Your Segmentation Model is Complete

Your OV20i segmentation inspection can now:

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

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

根据您特定的标准做出通过/不通过的决策

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

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

Key Takeaways

Segmentation vs. Classification:

  • Segmentation 在图像中定位并测量特征
  • Classification 确定整个对象或总体条件
  • 使用分割进行缺陷检测、污染分析或覆盖度测量

Training Best Practices:

  • 高质量标注比数量更重要
  • 在训练集中包含多样化的示例
  • 用生产样本进行充分测试
  • 按需监控并重新训练

Pass/Fail Logic:

  • 从简单的标准开始,必要时增加复杂性
  • 用边缘情况和边界样本测试逻辑
  • 记录您的标准以确保一致性
  • 考虑多因素以实现稳健的决策

Next Steps

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

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

🔗 See Also