跳到主要内容

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. 计划维护 - 安排定期模型更新和性能评审

🔗 参见​