创建您的第一个分割程序
  • 07 Mar 2025
  • PDF

创建您的第一个分割程序

  • PDF

文章摘要

按照 创建您的第一个程序 中的步骤配置成像设置模板图像和对齐以及检测设置后,按照以下步骤训练分割模型。

标注与训练

在本节中,您将捕获物体的多个图像,并使用刷子工具标注缺陷。您需要捕获并标注至少10张图像。

  1. 选择  Label and Train 选项卡。 或者,在 程序编辑器 中选择 Label and Train

    注意

    预览窗格(左侧)显示实时预览,直到捕获图像或通过导航菜单选择图像。

  2. 检测类型下,点击Edit以重命名默认类别(fail_[检测类型名称])或添加其他类别。完成所有需要相机识别的类别后,继续下一步。

  3. 确保物体位于相机视野内,然后选择 Capture

  4. 使用 Brush 工具突出显示您希望相机识别的物体上的缺陷。


    提示

    使用 Eraser 工具删除任何不需要的高亮部分。

  5. 如果您添加了其他类别,从下拉菜单中选择适用的刷子类别

  6. 点击 Save Annotations

  7. 将同一物体的另一个示例放入相机视野内,并重复步骤 3-6,直到您添加了至少10个标注示例(如果添加了其他类别,则每个类别至少添加五个示例)。

    提示

    如果每张图像有所不同(避免重复相同的图像),模型的准确性会更高。

    仔细检查每张捕获的图像是否正确标注,因为这些标签将用于训练模型。

  8. 继续到 IO模块

注意

有关标注和训练页面更多信息,请参见 标注和训练(分割模块)

IO模块

在本节中,您将使用 Node-RED 逻辑为程序定义通过/失败逻辑。

  1. 选择 IO Block 选项卡。或者,在 程序编辑器 中选择 IO Block

  2. 定义模型通过或失败的标准。例如,指定如果所有检测到的斑点的‘Center X’坐标不完全为1000像素,则模型应失败。

    提示

    如果需要更高级的设置,请单击右上角的 Advanced mode ,然后转到 高级模式.

高级模式

  1. 右键单击 Classification Block Logic 节点,选择 Delete Selection

    Segmentation IO Block - keychain(1)

  2. 右键单击,选择 Insert > Node > Function

  3. 重新连接节点。

    Segmentation IO Block - keychain

  4. 双击 function 1 节点。

  5. 复制并粘贴下方代码示例中的所需代码到 On Message 选项卡。

    代码示例:如果未检测到像素,则通过

    复制并粘贴以下逻辑代码:

    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; // 返回修改后的消息对象

  6. 点击 Done

  7. 点击 Deploy

  8. 继续到 训练分割模型

注意

有关 IO 模块 页面更多信息,请参见 IO块和Node-RED逻辑

训练分割模型

在本节中,您将使用先前标记的图像训练模型。

  1. 选择  Label and Train 选项卡。或者,在 程序编辑器 中选择 Label and Train


  2. 点击 Train Segmentation Model

  3. 可选步骤:调整 迭代次数 (Epochs),设置标记图像显示的次数,路径为 Advanced Settings > Parameters

    注意

    增加迭代次数会提高模型的准确性,但也会延长训练时间。



  4. 点击 Start Training。一个弹窗将显示训练进度。

  5. 模型训练完成后,使用 Live Preview ModeHMI 标签验证程序的功能。将不同示例的物体放置在摄像头视野内,验证模型是否正确分类每个示例。

    下一步

    返回设置页面并选择下一步。


本文对您有帮助吗?