异常检测:PCB板的焊点异常检测

在这个项目中 我们需要检测以下PCB板上的点焊是否正确,并且分析工件上是否存在连焊(两个焊点连接)和多焊(锡量太大)两种异常。
首先,根据上方案例 异常检测:PCB零件损坏/缺失 我们可以排除掉异常检测模型,因为图像中含有大量的干扰点,异常检测模型不太适合。
然后,我们也可以排除掉目标检测模型,因为异常成不规则的区域,无法很好地使用目标检测。
那么问题来了,语义模型是否是唯一选择?
使用语义模型可以很好的分辨是否存在异常,异常出现的时候也能很好识别异常的种类:

语义分割模型添加了调整图像大小预处理,没有数据加强。一共75张图像,52图像作为训练集。
测试结果如下:

语义分割模型的结果相当不错。可是,我们可以看看有没有更好的模型选择?比如:实例分割模型。我们可以把不同的异常标注为不同类别的分割区域,使用实例分割模型去识别。

实例分割模型添加了调整图像大小预处理,没有数据加强。一共32张图像,22图像作为训练集。
测试结果如下:

实例分割模型的结果也是相当不错,相对于语义分割模型来说,实例分割模型只用了更少的数据,训练出相似的效果。由于语义模型是逐像素检测,需要较多的无异常数据进行训练,所以实例分割模型在这能占优。