跳到主要内容

AI 驱动文档

您想了解什么?

使用分割器

本教程将指导您使用OV20i的AI驱动分割功能创建完整的分割检测。您将学习如何通过逐像素教会相机识别和测量铅笔痕迹、划痕或其他缺陷等特定特征。

视频指南

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

备注

OV10i不具备分割功能。

您将学习:

  • 如何从头到尾设置分割配方
  • 如何训练AI模型以识别特定特征
  • 如何根据分割结果配置合格/不合格逻辑
  • 如何优化分割性能以便于生产使用

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

先决条件

  • 已设置并连接的OV20i相机系统
  • 具有您想要检测特征的样本部件(例如,带有铅笔痕迹的纸张)
  • 对AI训练概念的基本理解
  • 访问配方编辑器和Node-RED功能

教程概述

我们将构建的内容: 一个能够检测纸张上铅笔痕迹并根据检测到的标记数量确定合格/不合格的分割模型。

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

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

第一步:创建新的分割配方

1.1 开始新的配方

  1. 所有配方页面,点击右上角的**"+ 新建"**
  2. 将出现添加新配方的模态框
  3. 输入您配方的描述性名称(例如,“Pencil_Mark_Detection”)
  4. 从配方类型下拉菜单中选择**“分割”**
  5. 点击**“确定”**以创建新配方

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

image.png

1.2 激活并打开配方编辑器

  1. 您的新配方将在所有配方页面上标记为**“未激活”**
  2. 选择配方右侧的**“激活”**

Activate button.png

  1. 点击**“激活并转到编辑器”**以确认并启动配方编辑器

检查点: 您应该在面包屑菜单中看到配方编辑器界面及您的分割配方名称。

第二步:配置相机成像

2.1 访问成像设置

  1. 在配方编辑器中,点击左下角的**“配置成像”**
  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 调整伽玛和对比度

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

2.6 保存成像设置

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

检查点: 您的相机应能生成清晰的图像,其中铅笔标记与纸张背景易于区分。

Step 3: 配置模板和对齐

3.1 导航到模板图像和对齐

  1. 点击面包屑菜单中的 配方名称 返回配方编辑器
  2. 从菜单中选择 "模板图像和对齐"

3.2 跳过对齐器以进行本教程

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

何时使用对齐器: 当您需要检测可能移动或旋转的部件上特定位置的特征时,请启用对齐器。对于像铅笔标记这样的全纸检查,跳过对齐器通常是合适的。

image.png

Step 4: 设置检测区域

4.1 导航到检测设置

  1. 返回配方编辑器并选择 "检测设置"
  2. 这是您将定义要分析的图像区域的地方

4.2 配置兴趣区域(ROI)

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

ROI 最佳实践:

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

4.3 保存 ROI 配置

  1. 一旦您的 ROI 正确定位,请点击 "保存"
  2. 检查区域现在已为您的分割模型定义

第 5 步:标记并训练您的模型

5.1 导航到标记和训练

  1. 返回配方编辑器并选择 "标记和训练"
  2. 在这里,您将教 AI 识别铅笔标记的样子

image.png

5.2 配置检查类别

  1. 检查类型 下,点击 "编辑"
  2. 将类别重命名为 "铅笔标记"(或您特定的缺陷类型)
  3. 选择一种独特的 颜色 来可视化检测到的标记
  4. 点击 "保存" 以应用更改

5.3 捕获训练图像

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

训练图像提示:

  • 包括细微和明显的标记
  • 捕获您将遇到的各种光照条件
  • 每张图像中包括没有标记的干净区域
  • 确保图像代表生产条件

5.4 注释训练图像

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

注释最佳实践:

  • 在标记“铅笔标记”时保持一致
  • 包括完整的标记,而不仅仅是部分
  • 不要标记预期的标记,如文本或徽标
  • 使用稳定、细致的画笔笔触以确保准确的边界

5.5 审查您的注释

  1. 仔细检查所有标记的图像 以确保准确性
  2. 查找遗漏的标记或标记错误的区域
  3. 重新注释任何需要更正的图像
  4. 高质量的注释会导致更好的模型性能

第 6 步:训练分割模型

6.1 开始训练过程

  1. 一旦您标记了至少 10 张图像,请点击 "返回实时"
  2. 点击 "训练分割模型"
  3. 输入训练的 迭代次数

迭代指南:

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

image.png

6.2 监控训练进度

  1. 点击 "开始训练" 以开始过程
  2. 将出现一个训练进度模态,显示:
    • 当前迭代次数
    • 训练准确性百分比
    • 剩余估计时间

6.3 训练控制选项

在训练期间,您可以:

  • 中止训练 - 如果需要进行更改,请停止
  • 提前结束训练 - 当准确性足够时停止
  • 监控进度 - 观察准确性随迭代提高

训练提示:

  • 当达到目标准确性时,训练将自动完成
  • 更高的准确性百分比表示更好的模型性能
  • 如果准确性停滞,您可能需要更多的训练数据

6.4 评估训练结果

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

成功指标:

  • 笔迹以您选择的颜色高亮显示
  • 干净区域保持未标记
  • 不同标记类型的检测一致
  • 模型对新未见样本反应良好

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

7.1 导航到 I/O 块

  1. 返回配方编辑器,点击 "配置 I/O" 或从面包屑菜单中选择 "IO 块"

7.2 设置 Node-RED 流程

  1. 删除现有的分类块逻辑 节点
  2. 从左侧调色板中拖入:
    • 所有块输出 节点(如果尚未存在)
    • 函数 节点
    • 最终合格/不合格 节点
  3. 连接节点:所有块输出 → 函数 → 最终合格/不合格

image.png

7.3 配置合格/不合格逻辑

双击 函数 节点并选择以下逻辑示例之一:

选项 1:如果未检测到缺陷则合格

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

选项 2:如果所有标记都很小则合格

// 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;

选项 3:如果总覆盖率低则合格

// 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. 点击 "完成" 保存函数
  2. 点击 "部署" 激活逻辑
  3. 导航到 HMI 测试您的合格/不合格逻辑

测试您的逻辑:

  • 使用干净的纸张测试(应合格)
  • 使用轻微标记的纸张测试(应根据您的标准合格/不合格)
  • 使用重度标记的纸张测试(应不合格)
  • 验证结果是否符合您的预期

第 8 步:优化和验证

8.1 使用生产样本测试

  1. 通过您的检测运行多个测试样本
  2. 验证检测准确率是否满足您的要求
  3. 检查合格/不合格逻辑是否正常工作
  4. 记录任何问题或边缘情况

8.2 微调模型性能

如果检测不一致:

  • 添加更多具有不同示例的训练图像
  • 改善注释质量和一致性
  • 调整成像设置以获得更好的对比度
  • 进行额外迭代重新训练

如果合格/不合格逻辑需要调整:

  • 修改您 Node-RED 函数中的阈值
  • 测试不同的逻辑方法
  • 考虑多种标准以进行复杂决策
  • 根据生产要求进行验证

8.3 生产验证

  1. 在实际条件下使用真实生产零件测试
  2. 与质量团队验证 以确保标准符合要求
  3. 记录性能指标 如检测准确率和假阳性率
  4. 设置监控 以跟踪性能随时间的变化

第 9 步:理解分割结果

9.1 分割数据结构

您的分割结果包括:

  • Blobs:单个检测到的特征(铅笔标记)
  • 像素计数:每个检测到的特征的大小
  • 位置信息:特征被发现的位置
  • 置信度分数:模型对每个检测的确定程度

9.2 使用分割数据

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

  • 检测到的缺陷数量
  • 单个缺陷的大小(像素计数)
  • 总缺陷面积(所有像素计数的总和)
  • 缺陷位置(缺陷出现的位置)
  • 缺陷形状特征(如果需要用于高级应用)

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

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

自动检测图像中的铅笔标记(或您特定的特征)

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

根据您的特定标准做出合格/不合格决策

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

适应标记大小、形状和位置的变化

关键要点

分割与分类:

  • 分割 在图像中查找和测量特定特征
  • 分类 识别整个物体或整体条件
  • 使用分割进行缺陷检测、污染分析或覆盖测量

培训最佳实践:

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

合格/不合格逻辑:

  • 从简单标准开始,根据需要增加复杂性
  • 使用边缘案例和临界样本测试逻辑
  • 记录您的标准以保持一致性
  • 考虑多个因素以做出稳健的决策

下一步

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

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

🔗 参见