跳到主要内容

后处理

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

结果合并

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裁图】。

  • 结果:最小外接矩形坐标,如x1,y1,x2,y2。

BBOX 去重

功能

当1个目标检出2个框时,保留BBOX最大的结果。

参数设置与功能说明

参数介绍

  • 度量方式
度量方式计算方式示意图
IOS两个框的交集面积 ÷ 面积较小的框img_1.png
IOU两个框的交集面积 ÷ 并集面积img.png
  • 去重方式
参数默认值说明
按类别去重不勾选勾选后,只有相同类别的框才参与去重
跨模型去重☑️ 勾选勾选后,不同模型输出的结果也一起参与去重

案例

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

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

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

    • 目标检测:模型对图像进行推理,输出所有检测到的目标框。

    • BBOX去重:对重叠的检测框进行合并去重,保留面积最大的框,删除其余重叠框。

    • 输出结果:输出去重后的最终检测结果,每个目标仅保留一个最完整的框。

      image106.png

    BBOX去重参数:

    image107.png

    不使用BBOX去重,保留所有检测框,可能存在重叠框。如下图所示:

    image108.png

    使用BBOX去重,保留面积最大的检测框,其余过滤。如下图所示:

    image109.png

输入输出说明

image110.png

输入

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

  • 结果:模型所有检测到的目标框。

输出

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

  • 结果:输出去重后的最终检测结果,每个目标仅保留一个最完整的框。

边缘提取

image111.png

功能

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

参数设置与功能说明

参数介绍

参数默认值说明
DIRECTIONupup:提取上边缘。 仅支持提取上边缘和下边缘,参数为 up 和 down
MASK_THRESHOLD0.5掩膜阈值,低于此值的被过滤
LEFT_CLIP0左侧裁剪像素,忽略左边缘一定宽度
RIGHT_CLIP0右侧裁剪像素,忽略右边缘一定宽度

案例

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

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

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

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

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

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

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

    image112.png

    边缘提取参数:

    image113.png

输入输出说明

输入

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

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

输出

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

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

滑窗裁图合并

功能

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

参数设置与功能说明

image114.png

IOU阈值

控制重叠检测框的参数。

  • IOU=0.2

image115.png

  • IOU=0.1

image116.png

案例

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

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

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

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

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

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

image117.png

输入输出说明

image118.png

输入

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

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

输出

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

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

统计结果个数

image119.png

功能

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

参数设置与功能说明

image120.png

参数介绍

参数默认值说明
☑ 仅统计局部结果勾选只统计局部图的目标数量,
最小个数0允许的最少目标数量, 计数类型为greater
最大个数0允许的最多目标数量,less (0=不限制上限)
目标个数1正常的目标数量,equal
计数类型equal检测数 = 目标个数 → 通过 如:必须恰好50齿
计数类型greater检测数 ≥ 目标个数 → 通过 如:至少50齿
计数类型less检测数 ≤ 目标个数 → 通过 如:最多50齿

案例(齿轮计数)

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

正常齿轮:50个完整齿形

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

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

    image121.png

    统计结果个数参数设置:

    判定齿轮数量是否 = 50,将≠ 50的图像筛选出来,判定不合格。

    image122.png

输入输出说明

image123.png

输入

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

  • 结果:模型检测结果。

输出

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

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

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

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

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

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

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

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

标签种类统计

image124.png

功能

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

参数设置与功能说明

image125.png

参数介绍

参数当前值说明
阈值0标签种类数(0=不限制,2=标签种类数量为2)

案例

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

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

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

    image126.png

    标签种类统计参数设置:

    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

功能

对指定类别进行数量校验,若检测数量不满足条件,取像界面显示显示NG;

若检测数量不满足条件,取像界面显示OK;

参数设置与功能说明

image143.png

参数介绍

参数当前值说明
类别名称空=全部校验的类别,空表示所有类别;
判定方式=比较运算符:= / > / < / ≥ / ≤
期望数量1该类别的期望目标数

案例

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

方案:训练目标检测模型,不同的颜色的球标记不同的标签。使用【类型数量校验】模块,校验塑料盘上白球数量是否为12、红球数量是否为3。

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

    image144.png

    类型数量校验参数:

    image145.png

    检测结果:

    image146.png

    image147.png

输入输出说明

image148.png

输入

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

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

输出

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

  • 结果:校验后的结果,返回布尔值给智能相机,判定OK还是NG.

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

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

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

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