使用分割器
  • 27 Feb 2025
  • PDF

使用分割器

  • PDF

文章摘要

注意

此处 下载示例程序。

  1. 所有程序页面,点击右上角的 + New Recipe

    New Recipe button

  2. 添加新程序弹窗将出现。输入程序的名称(必填),确保名称能反映具体应用,并从程序类型下拉菜单中选择分割。点击 OK 以创建新程序。

    Add A New Recipe modal

  3. 新程序将列在所有程序页面(非激活状态)。在程序右侧选择 Actions > Activate。然后点击 Activate 以确认。

    All Recipes - Actions Activate

  4. 点击 Edit 以开始创建您的第一个分割器模型。然后点击 Open Editor 以确认。

    Edit button

  5. 点击页面左下角的 Configure Imaging 开始为此应用设置您的OV20i相机。

    creating-a-segmenter-image-e3i245a3

  6. 在设置相机时,务必花时间正确配置所有相机设置。这包括将相机对焦于感兴趣区域,该区域包含您要分析的物体或特征。您可以使用滑动条调整焦距,也可以手动输入数值。

    另一个关键的相机设置是曝光,它控制进入相机的光线量。您可以使用滑动条调整曝光,也可以手动输入数值。

    优化光照条件对于获得准确可靠的结果也至关重要。您需要确保光照条件适合您要执行的分析类型。例如,如果您正在分析反射表面,可能需要调整光照以避免眩光或反射。这可以在LED光照模式下选择。除了这些相机设置外,您还可以为相机配置内部设计的灯光,并获得不同的光照模式,以识别在不同反射条件下可能显现的缺陷。

    正确设置伽马值也非常重要。伽马是衡量图像中明暗区域对比度的指标。正确调整伽马可以帮助您看到更多图像细节,并更容易识别缺陷或感兴趣的特征。

    配置好所有这些设置后,只需点击 Save Imaging Settings 以应用这些设置,并开始使用相机进行分析。

    creating-a-segmenter-image-7xfwmdny

  7. 接下来,导航到 Template Image and Alignment

    导航提示

    点击面包屑菜单中的程序名称以返回程序编辑器,或使用下拉菜单选择 Template Image and Alignment

    Segmeneter Recipe Editor Breadcrumb Menu

  8. 进入模板图像和对齐页面后,您可以捕捉模板图像并将页面对齐到所需状态。然而,由于当前任务不需要此步骤,请选择 Skip Aligner。完成必要的调整后,点击 Save 以应用更改并进入下一步。

    creating-a-segmenter-image-vurg9pet

  9. 接下来,导航到 Inspection Setup

  10. 对于这个特定情况,检测将集中在金属板上。然而,您可以根据具体应用选择不同的检测类型,并相应地调整检测区域。

    选择合适的检测类型后,您可以调整感兴趣区域(ROI),确保相机对准正确的区域。可以通过拖动ROI框的角落来调整其大小和位置。确保ROI与您要分析的物体对齐至关重要,这样才能获得最准确的结果。

    调整好ROI后,只需点击 Save 以应用更改并继续检测过程。

    creating-a-segmenter-image-369jbtyk

  11. 接下来,导航到 Label And Train

  12. 检测类型下,点击 Edit 将类别重命名为“铅笔痕迹”。您还可以更改与该类别关联的颜色。

  13. 拍摄至少10张具有不同铅笔标记的金属板图像。使用 Brush 工具在每张图像中的铅笔痕迹上进行描绘。确保仅在铅笔痕迹上涂抹,不要涉及其他区域。点击 Save Annotations 并重复此过程。

    creating-a-segmenter-image-9t58musu

  14. 一旦标注了至少10张图像,务必仔细检查,确保所有标注都正确。验证无误后,点击 Return to Live 然后点击 Train Segmentation Model。输入您希望展示给模型的迭代次数。请记住,选择展示给模型的迭代次数越多,模型的准确性就越高。然而,更多的迭代次数将需要更长时间来训练模型。

    在训练模型时,重要的是平衡准确性需求与可用的训练时间。一旦选择了合适的设置,点击 Start Training 按钮以启动训练过程。系统将开始训练模型,您可以监控其进度,并根据需要进行调整。

    creating-a-segmenter-image-d3t5mlho

  15. 点击 Start Training 按钮后,将显示模型训练进度弹窗。在此,您可以查看当前的迭代次数和准确率值。如果需要因任何原因停止训练,请点击 Abort Training 按钮。如果训练准确率已经足够,您可以通过点击 Finish Training Early 按钮来提前完成训练。

    注意

    如果训练准确率达到预定标准,训练将自动完成。

    训练完成后,您可以检查训练准确率并评估模型在验证数据上的表现。如果您对结果满意,可以保存模型并用于分析。如果不满意,您可以返回调整设置并重新训练模型,直到对模型性能感到满意为止。

    creating-a-segmenter-training

  16. 训练完成后,点击 Live Preview 查看训练模型的实时预览,突出显示铅笔痕迹。恭喜!您已成功训练了第一个分割模型。

    creating-a-segmenter-image-q86qlteg

配置合格/不合格逻辑

在以下步骤中,我们将指导您如何使用Node-RED逻辑为分割程序配置合格/不合格逻辑。

注意

在编辑IO块之前,请确保所有AI块已训练完成(绿色)。

Recipe Editor - Segmenter AI Blocks trained

  1. 通过面包屑菜单导航到IO块,或在程序编辑器页面选择 Configure I/O

    Segmeneter Recipe Editor Breadcrumb Menu

  2. 删除分类块逻辑,然后通过从左侧拖动节点并将它们连接起来,构建以下Node-RED流程。

    basic-segmenter-logic-using-node-red-image-djwdg0q6

  3. 双击 function 1 然后将以下部分中的示例代码复制并粘贴到 On Message 标签页中。

    image(100)

  4. 点击 Done

  5. 点击 Deploy

  6. 导航到HMI并测试您的逻辑。

代码示例

如果未检测到像素,则通过

复制并粘贴以下逻辑:

const allBlobs = msg.payload.segmentation.blobs; // 从有效负载的分割数据中提取斑点信息

const results = allBlobs.length < 1; // 检查是否没有斑点,并存储结果(true 或 false)

msg.payload = results; // 将有效负载设置为检查结果

return msg; // 返回修改后的消息对象

如果检测到的所有斑点均小于设定阈值,则通过

复制并粘贴以下逻辑:

const threshold = 500; // 定义像素计数的阈值

const allBlobs = msg.payload.segmentation.blobs; // 从有效负载的分割数据中提取斑点信息

const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold); // 检查所有斑点的像素数是否小于阈值

msg.payload = allUnderThreshold; // 将有效载荷设置为检查结果

return msg; // 返回修改后的消息对象

如果检测到的像素总数小于设定阈值,则通过

复制并粘贴以下逻辑:

const threshold = 5000; // 定义像素计数的阈值

const allBlobs = msg.payload.segmentation.blobs; // 从有效负载的分割数据中提取斑点信息

const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0); // 计算所有斑点的总像素数

msg.payload = totalArea < threshold; // 如果总面积小于阈值,则将有效载荷设置为 true,否则设置为 false

return msg; // 返回修改后的消息对象


本文对您有帮助吗?