跳到主要内容

后处理

后处理是从原始模型输出中,筛选出真正需要的结果。

结果合并​

image73.png

功能​

将多任务检测流程的结果进行合并。

案例(OCR和缺陷检测)​

项目需求:检测电解电容上的OCR和缺陷,这两个需求需要训练多个模型实现,把所有的模型结果合并输出,实现在一张图上看到所有的检测结果。

  • 流程图:

    image74.png

输入输出说明​

image75.png

输入​

  • 图像:任务1最后一个节点的图像,通常上一个节点接【AI模型 / 后处理】

  • 结果:任务1结果,如(坐标、类别、文字、分数).

  • 图像2:任务2最后一个节点的图像,通常上一个节点接【AI模型 / 后处理】

  • 结果2:任务2结果,如(坐标、类别、文字、分数).

输出​

  • 图像:原图,通常下一个节点接【输出 ➡️ 结果输出 】

  • 结果:多任务结果合并之后的最终结果。

类别筛选​

image76.png

功能​

参数设置与功能说明​

image77.png

选中类别​

从模型输出结果中提取指定类别。

案例​

案例1(过滤无关类别)​

项目需求一开始需要检测【划痕、破损、脏污】三个缺陷,现在脏污不需要检测了 ,但已经训练好的模型里有【脏污】这个类别,可以通过类别筛选,把脏污过滤掉。

  • 流程图: 输入图像+实例分割+类别筛选+输出结果

    • 输入图像:加载原始图像。

    • 实例分割:检测产品表面所有缺陷。

    • 类别筛选:从多类别缺陷中筛选出目标类别

    • 输出结果:输出筛选后的最终结果

    image78.png

    流程介绍:

    image79.png

案例2(特定类别单独后处理)​

项目需求:脏污也面积 > 100px检出,划痕和破损存在则NG,把脏污筛选出来,做结果过滤;划痕和破损结果直接输出。

  • 流程图:

    image80.png

    流程介绍:

    image81.png

输入输出说明​

image82.png

输入​

  • 图像:模型识别的结果图,通常上一个节点接【AI模型】。

  • 结果:模型结果,如类别、掩膜坐标、置信度。

输出​

  • 图像(选择):符合选中类别的图像,比如模型有三个类别划伤、破损、脏污,选择的是划伤和破损,就输出存在划伤和破损的图像。

  • 结果(选择):符合选中类别的检测结果

  • 图像(其他):未选中的类别的图像,比如模型有三个类别划伤、破损、脏污,选择的是划伤和破损,就输出脏污的图像。

  • 结果(其他):未选中的类别的检测结果

  • 存在选择类别:是否检测到目标类别(后面接保存图像 或 原图可视化,不常用可忽略)

多类别筛选​

image83.png

功能​

不同类别需采用不同后处理策略时使用。

参数设置与功能说明​

image84.png

案例(不同类别不同标准)​

现在有破损、脏污、划痕三个类别,检出条件为破损面积达到100px,划伤面积达到200px,脏污面积达到500px。

  • 流程图:

    image85.png

    多类别筛选节点参数设置:

    image86.png

    多类别筛选输出设置:

    image87.png

输入输出说明​

image88.png

输入​

  • 图像:有检测结果的图像

  • 结果:模型检测结果,如类别标签、坐标、置信度等。

输出​

  • 图像(脏污):只含脏污类别的图像

  • 结果(脏污):只含脏污类别的检测结果

  • 图像(划伤):只含划伤类别的图像

  • 结果(划伤):只含划伤类别的检测结果

  • 图像(破损):只含破损类别的图像

  • 结果(破损):只含破损类别的检测结果

  • 图像(其他):未选中的类别的图像

  • 结果(其他):未选中的类别的检测结果

  • 存在匹配:是否检测到所选类别(后面接保存图像或原图可视化,不常用可忽略)

类别映射​

image89.png

功能​

将模型输出的类别修改成指定的类别名称。

参数设置与功能说明​

image90.png

替换类别​

把模型输出的"类别名",替换成用户想要的"显示名称"。

image91.png

案例​

  • 不添加类别映射

    • 流程图:输入图像+实例分割+输出结果

      image92.png

    直接输出模型检测结果:

    image93.png

  • 添加类别映射模块

    • 流程图:输入图像+实例分割+类别映射+输出结果

      划痕 替换成 NG

      破损 替换成 NG

      脏污 替换成 NG

      image94.png

    类别映射后模型检测结果:

    image95.png

输入输出说明​

image96.png

输入​

  • 图像:有检测结果的图像,通常上一个节点接【AI模型】。

  • 结果:模型检测原始结果。

输出​

  • 图像:与输入图像一致,通常下一个节点接【输出 ➡️ 结果输出 】。

  • 结果:映射后的类别结果。

掩码转最小外接矩​

image97.png

功能​

实例分割和语义分割输出的掩码形状通常不规则,常规矩形裁图可能包含较多空白背景。转换后使用贴近目标方向的旋转框裁图,减少空白区域。

参数设置与功能说明​

image98.png

案例​

  • 不添加掩码转最小外接矩

    • 流程图:实例分割+AI裁图

    image99.png

  • 添加掩码转最小外接矩

    • 流程图:实例分割+掩码转最小外接矩+AI裁图

    image100.png

    示意图:

    image101.png

输入输出说明​

image102.png

输入​

  • 图像:有检测结果的图像,通常上一个节点接【AI模型➡️实例分割 \ 语义分割】。

  • 结果:模型检测结果,如mask面积、Bbox长宽、类别名称、置信值等信息。

输出​

  • 图像:与输入图像一致,通常下一个节点接【预处理➡️AI裁图】。

  • 结果:将有效结果的原 bbox 替换为 le90 旋转框 [cx, cy, w, h, angle],角度范围为 [-π/2, π/2);缺少有效掩码或原矩形框的结果会被移除。

角度单位、长边规则及 −90° 的含义见 计算机视觉基础 · 矩形角度,可在文档内直接操作互动演示。

BBOX 去重​

功能​

对重叠的矩形检测框进行去重。每组结果按矩形框面积从大到小处理;重叠度大于阈值时保留面积较大的框,移除较小的框。

参数设置与功能说明​

参数介绍​

参数默认值说明
度量方式IOU可选择 IOU 或 IOS
阈值0.5范围 0–1;重叠度大于该值时判定为重复框
按类别去重不勾选勾选后,只有相同类别的框参与去重
跨模型去重勾选勾选后,同一图像的不同模型结果也参与去重
度量方式计算方式示意图
IOS两个框的交集面积 ÷ 面积较小的框img_1.png
IOU两个框的交集面积 ÷ 并集面积img.png

阈值调整方向​

  • 调低阈值:较小的重叠也会被判定为重复,移除的重叠框更多。
  • 调高阈值:只有较大的重叠才会被判定为重复,保留的重叠框更多。

案例​

检测 PCB 板元器件时,一个元器件会检测出多个 BBOX 框,需要保留面积最大的结果。

  • 流程图:输入图像+目标检测+BBOX去重+输出结果

    • 输入图像:加载原始图像。
    • 目标检测:模型对图像进行推理,输出所有检测到的目标框。
    • BBOX去重:根据度量方式和阈值筛选重叠框,保留面积最大的框。
    • 输出结果:输出去重后的最终检测结果。

    image106.png

    BBOX去重参数:

    image107.png

    不使用 BBOX 去重时会保留所有检测框,可能出现多个重叠框:

    image108.png

    使用 BBOX 去重后保留面积最大的检测框,其余重叠框被移除:

    image109.png

输入输出说明​

image110.png

输入​

  • 图像:上一个流程传入的图像,通常上一个节点接【AI模型 ➡️ 目标检测】。
  • 结果:模型检测到的全部目标框。

输出​

  • 图像:与输入图像一致,通常下一个节点接【输出 ➡️ 输出结果】。
  • 结果:去重后的检测结果。

边缘提取​

image111.png

功能​

从模型检测结果中精确提取特定方向的边缘轮廓。

参数设置与功能说明​

参数介绍​

参数默认值说明
DIRECTIONupup:提取上边缘。 仅支持提取上边缘和下边缘,参数为 up 和 down
MASK_THRESHOLD127掩码灰度阈值,按 0–255 灰度值设置,仅保留灰度值大于阈值的像素
LEFT_CLIP0左侧裁剪像素,忽略左边缘一定宽度
RIGHT_CLIP0右侧裁剪像素,忽略右边缘一定宽度

案例​

项目需求:需要提取布匹裁剪的上边缘线

方案:精确标注需要保留的布匹主体,训练语义分割模型,提取布匹主体,通过【边缘提取】流程提取裁剪的边缘线。

  • 流程图: 输入图像+语义分割+边缘提取+输出结果

    • 输 入图像:加载原始图像

    • 语义分割:提取布匹主体

    • 边缘提取:只提取指定方向的边缘

    • 输出结果:输出提取的边缘结果。

    image112.png

    边缘提取参数:

    image113.png

    本例提取上边缘,DIRECTION 设为 up;MASK_THRESHOLD 设为 127。

输入输出说明​

输入​

  • 图像:上游节点传入的图像,通常上一个节点接【AI模型 ➡️ 语义分割】。

  • 结果:检测结果数据,如mask。

输出​

  • 图像:与输入图像一致,通常下一个节点接【输出➡️输出结果】。

  • 结果:边缘数据,如坐标、长度等。

滑窗裁图合并​

功能​

将滑窗裁图裁剪后的小图,合并成大图。

参数设置与功能说明​

image114.png

IOU阈值​

控制重叠检测框的参数。

  • IOU=0.2

image115.png

  • IOU=0.1

image116.png

案例​

  • 流程图: 输入图像+滑窗裁图+实例分割+滑窗结果合并+输出结果。

    • 输入图像:加载原始大图。

    • 滑窗裁图:把大图切成重叠的小图。

    • 实例分割:对每个小图做缺陷检测。

    • 滑窗结果合并:把各块结果拼回大图,去重。

    • 输出结果:输出最终大图上检测结果。

image117.png

输入输出说明​

image118.png

输入​

  • 图像:经过滑窗裁图的所有小图,通常上一个节点接【AI模型 ➡️ 实例分割\目标检测\图像分类\语义分割】。

  • 结果:各个滑窗小图的推理结果。

输出​

  • 图像:滑窗小图的合并成的大图,通常下一个节点接【输出➡️输出结果】。

  • 结果:各个小图去重合并后的最终结果。

统计结果个数​

image119.png

功能​

统计模型输出的结果个数,判断是否符合要求。

参数设置与功能说明​

image120.png

参数介绍​

参数默认值说明
☑ 仅统计局部结果勾选仅统计局部检测结果中的目标数量;取消勾选后也统计非局部结果
最小个数1允许的最少目标数量,包含该值
最大个数1允许的最多目标数量,包含该值

实际数量在最小个数与最大个数之间(包含两端)时通过;0 是有效数量,最小个数不能大于最大个数。

案例(齿轮计数)​

现在有一个齿轮检测,检测标准如下所示:

正常齿轮:50个完整齿形

判定规则:检测齿数 = 50 → 合格;检测齿数 ≠ 50 → 缺齿/多齿,判定不合格。

  • 流程图: 输入图像+目标检测+统计结果个数+输出图像

    image121.png

    统计结果个数参数设置:

    最小个数和最大个数均设为 50。实际计数为 50 时通过,少于或多于 50 时进入排除输出。

    image122.png

输入输出说明​

image123.png

输入​

  • 图像:模型检测结果图,通常上一个节点接【AI模型➡️目标检测\实例分割\语义分割】。

  • 结果:模型检测结果。

输出​

  • 全部图像:输出所有图像

  • 全部结果:输出所有检测结果

  • 图像:符合条件的目标图像

  • 结果:符合条件的检测结果

  • 图像(排除):不符合条件的目标图像

  • 结果(排除):不符合条件的检测结果

  • 计数:实际检测到的目标数量

  • 是否通过:数量是否满足条件,(后面接保存图像 或 原图可视化,不常用可忽略)

标签种类统计​

image124.png

功能​

统计检测结果中的种类数量,判断种类数是否达标。

参数设置与功能说明​

image125.png

参数介绍​

参数当前值说明
阈值1实际标签种类数大于该值时通过;等于或小于该值时排除

案例​

需求:判断塑料盘上是否存在两种颜色以上的球,对球类的数量无要求,如白球、黑球、红球等。

方案:训练目标检测模型,不同的颜色的球标记不同的标签。使用【标签种类统计】模块,判断塑料盘上是否存在两种颜色以上的球。

  • 流程图: 输入图像+目标检测+标签种类统计+输出结果

    image126.png

    标签种类统计参数设置:阈值设为 1,检测到 2 种或更多标签时通过。

    image127.png

输入输出说明​

image128.png

输入​

  • 图像:上一个节点传入的图像,通常上一个节点接【AI模型 ➡️ 实例分割\目标检测\语义分割】。

  • 结果:上一个节点传入检测结果(含类别标签、置信度、坐标)。

输出​

  • 图像(通过):标签种类数大于阈值时的图像,通常下一个节点接【输出➡️输出结果】。

  • 结果(通过):标签种类数大于阈值时的完整结果

  • 图像(排除):标签种类数等于或小于阈值时的图像

  • 结果(排除):标签种类数等于或小于阈值时的结果

  • 存在正样本:标签种类数是否大于阈值(后面接保存图像或原图可视化,不常用可忽略)

结果过滤(高级)​

功能​

对模型输出的所有类别预测,通过宽、高、面积上下限进行筛选,保留满足全部条件的检测框。

参数设置与功能说明​

image129.png

参数介绍​

启用开关(勾选后才生效)​
参数说明
☐ enable_bbox_wh启用矩形框宽高过滤
☐ enable_rbox_wh启用旋转框宽高过滤
☐ enable_bbox_area启用矩形框面积过滤
☐ enable_mask_area启用掩膜面积过滤
矩形框尺寸过滤(BBOX)​
参数说明
BBOX_W_MIN矩形框最小宽度
BBOX_W_MAX矩形框最大宽度
BBOX_H_MIN矩形框最小高度
BBOX_H_MAX矩形框最大高度
旋转框尺寸过滤(RBOX)​
参数说明
RBOX_W_MIN旋转框最小宽度
RBOX_W_MAX旋转框最大宽度
RBOX_H_MIN旋转框最小高度
RBOX_H_MAX旋转框最大高度
面积过滤​
参数说明
BBOX_AREA_MIN矩形框最小面积
BBOX_AREA_MAX矩形框最大面积
MASK_AREA_MIN掩膜最小面积
MASK_AREA_MAX掩膜最大面积

案例​

项目需求:缺陷面积小于10000,不检出。

  • 流程图:输入图像+实例分割+结果过滤(高级)+输出结果

    • 输入图像:加载检测图像。

    • 实例分割:检测图片上的缺陷,输出缺陷标签、置信度、BBOX宽高、MASK面积。

    • 结果过滤(高级):对检测结果进行筛选,过滤不符合条件的检测结果。

    • 输出结果:输出最终过滤后的检测结果。

    image130.png

    在标准模块,没做条件筛选过滤时,存在缺陷则检出。

    image131.png

    在流程图模块,做条件筛选过滤后,面积小于10000的结果被过滤。

    image132.png

输入输出说明​

image133.png

输入​

  • 图像:上一个节点传入的图像,通常上一个节点接【AI模型➡️目标检测\实例分割\语义分割】。

  • 结果:上一个节点传入检测结果(含类别标签、置信度、坐标)

输出​

  • 图像(选择):通过过滤条件的目标图像。

  • 结果(选择):通过过滤的目标数据。

  • 图像(其他):被过滤掉的目标图像。

  • 结果(其他):被过滤掉的目标数据。

  • 存在选择类别:是否有目标通过过滤,(后面接保存图像 或 原图可视化,不常用可忽略).

结果过滤(区域)​

功能​

保留框里 或 框外检测结果。

参数设置与功能说明​

image134.png

  • ROI输入区域模式

image135.png

参数默认值说明
文件路径输入框空显示参考图像,支持拖拽画框
x0ROI框左上角X坐标
y0ROI框左上角Y坐标
w100ROI框宽度
h100ROI框高度
  • 模型输入区域模式

image136.png

模式保留规则
any_bbox所有的检测框
top1_bbox只保留置信度最高的1个检测框

案例​

  • 无结果过滤模块流程图

    • 流程图:输入图像+实例分割+输出结果

    image137.png

案例1:手动画框​

  • 添加结果过滤模块(手动画框)

    • 流程图:输入图像+实例分割+结果过滤(区域)+输出结果

    image138.png

    示意图:

    image139.png

案例2:模型区域输入​

image140.png

输入输出说明​

image141.png

输入​

  • 图像:上一个节点传入的图像。

  • 结果:所有检测到的目标结果

  • 模型区域输入(可选):动态传入的ROI区域坐标,通常上一个节点接【AI模型 ➡️ 实例分割\语义分割\目标检测】

输出​

  • 图像(区域内):目标在ROI区域内的图像

  • 结果(区域内):区域内的检测结果

  • 图像(区域外):目标在ROI区域外的图像

  • 结果(区域外):区域外的检测结果

  • 存在区域内结果:是否有目标在区域内,(后面接保存图像 或 原图可视化,不常用可忽略)

类型数量校验(智能相机用)​

image142.png

功能​

按规则列表校验指定类别的目标数量。所有规则均满足时判定为 OK,任意规则不满足时判定为 NG。

参数设置与功能说明​

image143.png

参数介绍​

参数默认值说明
规则1 项可添加多项数量规则,所有规则均满足时才通过
类别名称空=全部当前规则校验的类别;留空时统计全部类别
判定方式=当前规则支持 =、>、<
期望数量1与实际数量比较的非负整数

案例​

需求:塑料盘上白球=12,红球=3则OK,否则NG.

方案:训练目标检测模型,不同颜色的球标记不同标签。使用【类型数量校验】模块添加两项规则:白球 = 12、红球 = 3。两项规则均满足时判定为 OK,否则判定为 NG。

  • 流程图: 输入图像+目标检测+类型数量校验+输出结果

    image144.png

    类型数量校验参数:

    image145.png

    检测结果:

    image146.png

    image147.png

输入输出说明​

image148.png

输入​

  • 图像:上游节点传入的图像,通常上一个节点接【AI模型 ➡️ 实例分割\目标检测\语义分割】。

  • 结果:上游节点传入的检测结果

输出​

  • 图像:与输入图像一致,通常下一个节点接【输出➡️输出结果】。

  • 结果:保留输入结果并写入全部规则的校验状态,供后续节点判断 OK 或 NG。

[类型数量校验]与「统计结果个数」的区别​

节点统计方式示例
统计结果个数不区分类别,总数校验检测到50个目标(不管什么类别)
类型数量校验按类别分别校验划痕必须2个、气泡必须1个、破损必须0个

[标签种类统计]与「统计结果个数」的区别​

节点统计对象示例
统计结果个数目标总数量检测到50个齿
标签种类统计类别种类数检测到3种缺陷:划痕、气泡、破损