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

功能
将多任务检测流程的结果进行合并。
案例(OCR和缺陷检测)
项目需求:检测电解电容上的OCR和缺陷,这两个需求需要训练多个模型实现,把所有的模型结果合并输出,实现在一张图上看到所有的检测结果。
-
流程图:

输入输出说明

输入
-
图像:任务1最后一个节点的图像,通常上一个节点接【AI模型 / 后处理】
-
结果:任务1结果,如(坐标、类别、文字、分数).
-
图像2:任务2最后一个节点的图像,通常上一个节点接【AI模型 / 后处理】
-
结果2:任务2结果,如(坐标、类别、文字、分数).
输出
-
图像:原图,通常下一个节点接【输出 ➡️ 结果输出 】
-
结果:多任务结果合并之后的最终结果。
类别筛选

功能
参数设置与功能说明

选中类别
从模型输出结果中提取指定类别。
案例
案例1(过滤无关类别)
项目需求一开始需要检测【划痕、破损、脏污】三个缺陷,现在脏污不需要检测了 ,但已经训练好的模型里有【脏污】这个类别,可以通过类别筛选,把脏污过滤掉。
-
流程图: 输入图像+实例分割+类别筛选+输出结果
-
输入图像:加载原始图像。
-
实例分割:检测产品表面所有缺陷。
-
类别筛选:从多类别缺陷中筛选出目标类别
-
输出结果:输出筛选后的最终结果

流程介绍:

-
案例2(特定类别单独后处理)
项目需求:脏污也面积 > 100px检出,划痕和破损存在则NG,把脏污筛选出来,做结果过滤;划痕和破损结果直接输出。
-
流程图:

流程介绍:

输入输出说明

输入
-
图像:模型识别的结果图,通常上一个节点接【AI模型】。
-
结果:模型结果,如类别、掩膜坐标、置信度。
输出
-
图像(选择):符合选中类别的图像,比如模型有三个类别划伤、破损、脏污,选择的是划伤和破损,就输出存在划伤和破损的图像。
-
结果(选择):符合选中类别的检测结果
-
图像(其他):未选中的类别的图像,比如模型有三个类别划伤、破损、脏污,选择的是划伤和破损,就输出脏污的图像。
-
结果(其他):未选中的类别的检测结果
-
存在选择类别:是否检测到目标类别(后面接保存图像 或 原图可视化,不常用可忽略)
多类别筛选

功能
不同类别需采用不同后处理策略时使用。
参数设置与功能说明

案例(不同类别不同标准)
现在有破损、脏污、划痕三个类别,检出条件为破损面积达到100px,划伤面积达到200px,脏污面积达到500px。
-
流程图:

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

多类别筛选输出设置:

输入输出说明

输入
-
图像:有检测结果的图像
-
结果:模型检测结果,如类别标签、坐标、置信度等。
输出
-
图像(脏污):只含脏污类别的图像
-
结果(脏污):只含脏污类别的检测结果
-
图像(划伤):只含划伤类别的图像
-
结果(划伤):只含划伤类别的检测结果
-
图像(破损):只含破损类别的图像
-
结果(破损):只含破损类别的检测结果
-
图像(其他):未选中的类别的图像
-
结果(其他):未选中的类别的检测结果
-
存在选择类别:是否检测到目标类别(后面接保存图像 或 原图可视化,不常用可忽略)
类别映射

功能
将模型输出的类别修改成指定的类别名称。
参数设置与功能说明

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

案例
-
不添加类别映射
-
流程图:输入图像+实例分割+输出结果

直接输出模型检测结果:

-
-
添加类别映射模块
-
流程图:输入图像+实例分割+类别映射+输出结果
划痕 替换成 NG
破损 替换成 NG
脏污 替换成 NG

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

-
输入输出说明

输入
-
图像:有检测结果的图像,通常上一个节点接【AI模型】。
-
结果:模型检测原始结果。
输出
-
图像:与输入图像一致,通常下一个节点接【输出 ➡️ 结果输出 】。
-
结果:映射后的类别结果。
掩码转最小外接矩

功能
实例分割和语义分割输出的“掩膜”形状是不规则的,常规矩形裁图会裁进大量空白背景;最小外接矩形会贴着目标斜着裁,只留下最干净的目标;通常长边为正方向。
参数设置与功能说明

案例
-
不添加掩码转最小外接矩
- 流程图:实例分割+AI裁图

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

示意图:

输入输出说明

输入
-
图像:有检测结果的图像,通常上一个节点接【AI模型➡️实例分割 \ 语义分割】。
-
结果:模型检测结果,如mask面积、Bbox长宽、类别名称、置信值等信息。
输出
-
图像:与输入图像一致,通常下一个节点接【预处理➡️AI裁图】。
-
结果:最小外接矩形坐标,如x1,y1,x2,y2。
BBOX 去重
功能
当1个目标检出2个框时,保留BBOX最大的结果。
参数设置与功能说明
参数介绍
- 度量方式
| 度量方式 | 计算方式 | 示意图 |
|---|---|---|
| IOS | 两个框的交集面积 ÷ 面积较小的框 | |
| IOU | 两个框的交集面积 ÷ 并集面积 | ![]() |
- 去重方式
| 参数 | 默认值 | 说明 |
|---|---|---|
| 按类别去重 | 不勾选 | 勾选后,只有相同类别的框才参与去重 |
| 跨模型去重 | ☑️ 勾选 | 勾选后,不同模型输出的结果也一起参与去重 |
案例
检测PCB板元器件时,一个元器件会检测出多个BBOX框,需要保留BBOX最大的结果。
-
流程图:输入图像+目标检测+BBOX去重+输出结果
-
输入图像:加载原始图像。
-
目标检测:模型对图像进行推理,输出所有检测到的目标框。
-
BBOX去重:对重叠的检测框进行合并去重,保留面积最大的框,删除其余重叠框。
-
输出结果:输出去重后的最终检测结果,每个目标仅保留一个最完整的框。

BBOX去重参数:

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

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

-
输入输出说明

输入
-
图像:上一个流程传入的图像,通常上一个节点接【AI模型 ➡️ 目标检测】。
-
结果:模型所有检测到的目标框。
输出
-
图像:与输入图像一致,通常上一个节点接【输出 ➡️ 输出结果】。
-
结果:输出去重后的最终检测结果,每个目标仅保留一个最完整的框。
边缘提取

功能
从模型检测结果中精确提取特定方向的边缘轮廓。
参数设置与功能说明
参数介绍
| 参数 | 默认值 | 说明 |
|---|---|---|
| DIRECTION | up | up:提取上边缘。 仅支持提取上边缘和下边缘,参数为 up 和 down |
| MASK_THRESHOLD | 0.5 | 掩膜阈值,低于此值的被过滤 |
| LEFT_CLIP | 0 | 左侧裁剪像素,忽略左边缘一定宽度 |
| RIGHT_CLIP | 0 | 右侧裁剪像素,忽略右边缘一定宽度 |
案例
项目需求:需要提取布匹裁剪的上边缘线
方案:精确标注需要保留的布匹主体,训练语义分割模型,提取布匹主体,通过【边缘提取】流程提取裁剪的边缘线。
-
流程图: 输入图像+语义分割+边缘提取+输出结果
-
输 入图像:加载原始图像
-
语义分割:提取布匹主体
-
边缘提取:只提取指定方向的边缘
-
输出结果:输出提取的边缘结果。

边缘提取参数:

-
输入输出说明
输入
-
图像:上游节点传入的图像,通常上一个节点接【AI模型 ➡️ 语义分割】。
-
结果:检测结果数据,如mask。
输出
-
图像:与输入图像一致,通常下一个节点接【输出➡️输出结果】。
-
结果:边缘数据,如坐标、长度等。
滑窗裁图合并
功能
将滑窗裁图裁剪后的小图,合并成大图。
参数设置与功能说明

IOU阈值
控制重叠检测框的参数。
- IOU=0.2

- IOU=0.1

案例
-
流程图: 输入图像+滑窗裁图+实例分割+滑窗结果合并+输出结果。
-
输入图像:加载原始大图。
-
滑窗裁图:把大图切成重叠的小图。
-
实例分割:对每个小图做缺陷检测。
-
滑窗结果合并:把各块结果拼回大图,去重。
-
输出结果:输出最终大图上检测结果。
-

输入输出说明

输入
-
图像:经过滑窗裁图的所有小图,通常上一个节点接【AI模型 ➡️ 实例分割\目标检测\图像分类\语义分割】。
-
结果:各个滑窗小图的推理结果。
输出
-
图像:滑窗小图的合并成的大图,通常下一个节点接【输出➡️输出结果】。
-
结果:各个小图去重合并后的最终结果。
统计结果个数

功能
统计模型输出的结果个数,判断是否符合要求。
参数设置与功能说明

参数介绍
| 参数 | 默认值 | 说明 |
|---|---|---|
| ☑ 仅统计局部结果 | 勾选 | 只统计局部图的目标数量, |
| 最小个数 | 0 | 允许的最少目标数量, 计数类型为greater |
| 最大个数 | 0 | 允许的最多目标数量,less (0=不限制上限) |
| 目标个数 | 1 | 正常的目标数量,equal |
| 计数类型 | equal | 检测数 = 目标个数 → 通过 如:必须恰好50齿 |
| 计数类型 | greater | 检测数 ≥ 目标个数 → 通过 如:至少50齿 |
| 计数类型 | less | 检测数 ≤ 目标个数 → 通过 如:最多50齿 |
案例(齿轮计数)
现在有一个齿轮检测,检测标准如下所示:
正常齿轮:50个完整齿形
判定规则:检测齿数 = 50 → 合格;检测齿数 ≠ 50 → 缺齿/多齿,判定不合格。
-
流程图: 输入图像+目标检测+统计结果个数+输出图像

统计结果个数参数设置:
判定齿轮数量是否 = 50,将≠ 50的图像筛选出来,判定不合格。

输入输出说明

输入
-
图像:模型检测结果图,通常上一个节点接【AI模型➡️目标检测\实例分割\语义分割】。
-
结果:模型检测结果。
输出
-
全部图像:输出所有图像
-
全部结果:输出所有检测结果
-
图像:符合条件的目标图像
-
结果:符合条件的检测结果
-
图像(排除):不符合条件的目标图像
-
结果(排除):不符合条件的检测结果
-
计数:实际检测到的目标数量
-
是否通过:数量是否满足条件,(后面接保存图像 或 原图可视化,不常用可忽略)
标签种类统计

功能
统计检测结果中的种类数量,判断种类数是否达标。
参数设置与功能说明

参数介绍
| 参数 | 当前值 | 说明 |
|---|---|---|
| 阈值 | 0 | 标签种类数(0=不限制,2=标签种类数量为2) |
案例
需求:判断塑料盘上是否存在两种颜色以上的球,对球类的数量无要求,如白球、黑球、红球等。
方案:训练目标检测模型,不同的颜色的球标记不同的标签。使用【标签种类统计】模块,判断塑料盘上是否存在两种颜色以上的球。
-
流程图: 输入图像+目标检测+标签种类统计+输出结果

标签种类统计参数设置:

输入输出说明

输入
-
图像:上一个节点传入的图像,通常上一个节点接【AI模型 ➡️ 实例分割\目标检测\语义分割】。
-
结果:上一个节点传入检测结果(含类别标签、置信度、坐标)。
输出
-
图像(通过):种类数=阈值时的图像,通常下一个节点接【输出➡️输出结果】。
-
结果(通过):种类数=阈值时的完整结果
-
图像(排除):种类数≠阈值时的图像
-
结果(排除):种类数≠阈值时的结果
-
存在正样本:是否符合判定条件(后面接保存图像 或 原图可视化,不常用可忽略)
结果过滤(高级)
功能
对模型输出的所有类别预测,通过宽、高、面积上下限进行筛选,保留满足全部条件的检测框。
参数设置与功能说明

参数介绍
启用开关(勾选后才生效)
| 参数 | 说明 |
|---|---|
| ☐ 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面积。
-
结果过滤(高级):对检测结果进行筛选,过滤不符合条件的检测结果。
-
输出结果:输出最终过滤后的检测结果。

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

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

-
输入输出说明

输入
-
图像:上一个节点传入的图像,通常上一个节点接【AI模型➡️目标检测\实例分割\语义分割】。
-
结果:上一个节点传入检测结果(含类别标签、置信度、坐标)
输出
-
图像(选择):通过过滤条件的目标图像。
-
结果(选择):通过过滤的目标数据。
-
图像(其他):被过滤掉的目标图像。
-
结果(其他):被过滤掉的目标数据。
-
存在选择类别:是否有目标通过过滤,(后面接保存图像 或 原图可视化,不常用可忽略).
结果过滤(区域)
功能
保留框里 或 框外检测结果。
参数设置与功能说明

- ROI输入区域模式

| 参数 | 默认值 | 说明 |
|---|---|---|
| 文件路径输入框 | 空 | 显示参考图像,支持拖拽画框 |
| x | 0 | ROI框左上角X坐标 |
| y | 0 | ROI框左上角Y坐标 |
| w | 100 | ROI框宽度 |
| h | 100 | ROI框高度 |
- 模型输入区域模式
| 模式 | 保留规则 |
|---|---|
| any_bbox | 所有的检测框 |
| top1_bbox | 只保留置信度最高的1个检测框 |
案例
-
无结果过滤模块流程图
- 流程图:输入图像+实例分割+输出结果

案例1:手动画框
-
添加结果过滤模块(手动画框)
- 流程图:输入图像+实例分割+结果过滤(区域)+输出结果

示意图:

案例2:模型区域输入

输入输出说明

输入
-
图像:上一个节点传入的图像。
-
结果:所有检测到的目标结果
-
模型区域输入(可选):动态传入的ROI区域坐标,通常上一个节点接【AI模型 ➡️ 实例分割\语义分割\目标检测】
输出
-
图像(区域内):目标在ROI区域内的图像
-
结果(区域内):区域内的检测结果
-
图像(区域外):目标在ROI区域外的图像
-
结果(区域外):区域外的检测结果
-
存在区域内结果:是否有目标在区域内,(后面接保存图像 或 原图可视化,不常用可忽略)
类型数量校验(智能相机用)

功能
对指定类别进行数量校验,若检测数量不满足条件,取像界面显示显示NG;
若检测数量不满足条件,取像界面显示OK;
参数设置与功能说明

参数介绍
| 参数 | 当前值 | 说明 |
|---|---|---|
| 类别名称 | 空=全部 | 校验的类别,空表示所有类别; |
| 判定方式 | = | 比较运算符:= / > / < / ≥ / ≤ |
| 期望数量 | 1 | 该类别的期望目标数 |
案例
需求:塑料盘上白球=12,红球=3则OK,否则NG.
方案:训练目标检测模型,不同的颜色的球标记不同的标签。使用【类型数量校验】模块,校验塑料盘上白球数量是否为12、红球数量是否为3。
-
流程图: 输入图像+目标检测+类型数量校验计+输出结果

类型数量校验参数:

检测结果:


输入输出说明

输入
-
图像:上游节点传入的图像,通常上一个节点接【AI模型 ➡️ 实例分割\目标检测\语义分割】。
-
结果:上游节点传入的检测结果
输出
-
图像:与输入图像一致,通常下一个节点接【输出➡️输出结果】。
-
结果:校验后的结果,返回布尔值给智能相机,判定OK还是NG.
[类型数量校验]与「统计结果个数」的区别
| 节点 | 统计方式 | 示例 |
|---|---|---|
| 统计结果个数 | 不区分类别,总数校验 | 检测到50个目标(不管什么类别) |
| 类型数量校验 | 按类别分别校验 | 划痕必须2个、气泡必须1个、破损必须0个 |
[标签种类统计]与「统计结果个数」的区别
| 节点 | 统计对象 | 示例 |
|---|---|---|
| 统计结果个数 | 目标总数量 | 检测到50个齿 |
| 标签种类统计 | 类别种类数 | 检测到3种缺陷:划痕、气泡、破损 |
