秒杀DeepLabv3+与UNet的表面缺陷检测网络

时间:2022-06-20
本文章向大家介绍秒杀DeepLabv3+与UNet的表面缺陷检测网络,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

星标或者置顶【OpenCV学堂】 干货与教程第一时间送达! 阅读本文大概需要3分钟

概述

表面缺陷检测是工业视觉的热点应用之一,自动的表面缺陷检测技术越来越受到重视,其中以深度学习相关技术应用为代表,它通过大量图像对检测系统进行训练学习得到一个自动的视觉检测系统。这个方面基于深度学习的检测方法基本上可以分为两个大类。

- 基于目标检测网络实现的缺陷检测系统- 基于图像分割网络实现的缺陷检测系统

网络设计

作者采用后者实现了一个缺陷检测与缺陷大小分割的网络,实现了一个更加高效与准确的缺陷检测系统。该网络只需要20~30个样本训练量就可以得到很好的效果,避免网络训练需要成千上万样本收集成本。作者在论文中提到,经典的机器视觉方法已经不能满足工业4.0的技术要求,基于深度学习的方法显示出高的灵活性与准确性,传统的手工标准特征提取+SVM/KNN的视觉检测方法不如深度学习相关方法有效。该网络模型架构策略设计如下:

网络在最初设计时候就充分考虑了下面两个关键问题

-  需要的标注数据多少-  网络参数与浮点数计算量

通过语义分割+决策两阶段网络基于KolektorSDD(缺陷检测公开数据库)达到最好的效果,实现了少量样本训练与高精度检测。整个网络的架构如下:

在分割网络部分,作者认为表面缺陷检测可以被解释称一个图像二值分割问题,所以作者首先通过一个语义分割网络实现像素级别的语义分割,然后把分割结果作为输入特征构建决策部分,第一部分被称为分割网络,第二部分自然就被认为是决策网络

分割网络详解

分割网络包含了11个卷积层与3个池化层,在每个卷积层后面跟上一个BN层与ReLU激活层(conv +BN+ReLU),用来优化学习加速收敛。除了最后一层卷积核大小为15x15,所有的卷积层都采用5x5大小的卷积核。最后使用1x1的卷积得到的图像大小是一个单通道的是原图八分之大小的mask图像,dropout正则化被完全抛弃,作者认为这样的网络已经足够正则化(事实后面的实验数据证明的确如此),这样的网络架构有能力在高分辨率图像实现是小的缺陷检测,网络具备比较大的感受野(5x5),同时可以实现比较小的特征捕获(像素级分割),作者还解释了网络的下采样与在高层通过大的卷积核(15x15)的目的是为了放大感受野大小,以及底层采用多个卷积核与下采样max-pooling层的作用。

决策网络详解

决策网络用分割网络的输出作为输入,使用分割网络的最后一个卷积层1024个通道数据+上mask通道得到1025个通道数据作为输入特征,采用max-pooling+conv(5x5的卷积核)的方式,最后网络通过全局最大池化与均值池化输出生成得到66个输出向量。在设计决策网络的时候作者考虑了如下两个重要原则

  • 网络有能力应对大而复杂的形状,所以采用三次max-pooling降采用
  • 对输入不仅采用最后一层卷积层特征,同时把mask数据作为输入,最终输出66个特征向量,有效的解决了过拟合与全卷积特征参数过多问题。

同时作者提出了一个快捷路径的概念,通过全局最大池化与卷积层实现了不同的快捷路径,有效阻止了网络复杂性。下面是几个标注数据的原始图像与mask图像

训练

分割网络的学习目标是产生一个二分类分割网络,是基于像素级别的分类操作,作者采用了两种训练方式

- 基于回归的平方错误(MSE)- 基于交叉熵的二分类

模型最开始没有使用任何图像分类网络进行前置预训练,网络参数的初始化采用了正太分布生成。

决策网络通过交叉熵值损失,首先训练分割网络,然后冻结分割网络参数,直接使用分割网络的输出进行决策网络的训练,只有在决策层发生过拟合现象的时候才需要finetuning分割网络的权重参数。训练时候作者还没有很多GPU,他说在训练决策网络的时候batch size = 2 ,在训练分割网络的时候可以适当增加样本数量(这操作,我深刻感受到世界需要GPU)。

两个网络一起训练方式作者也做了尝试,这个时候损失函数就比较关键,作者指出这个时候两个stage网络都应该用交叉熵损失。而且作者的实验还证明一起训练的效果更佳

预测与实验结果

作者说了推断时候输入尽量使用灰度图像,作者使用了两种分辨率的图像作为测试

-  1408x512-  704x256

两个输出层分别输出二值分割mask图像与来自决策网络的表示异常在图像中出现的概率可能性得分(0~1)之间。KolektorSDD数据集支持的五种数据标注方式如下:

最后看一下网络在KolektorSDD数据集上的实验结果与表现。五种标准方式准确率与不同损失函数训练结果:

当前市场上的主宰Cognex缺陷检测在KolektorSDD数据集上测试结果如下:

显然比Cognex强不同模型效果对比如下:

很显然又胜出了!这个是2019年3月份发表不久的工业缺陷检测领域的最新论文,源码我暂时还没发现,等我发现研究了再来更新!

个人总结一下:

最核心的思想,把缺陷检测当成是一个二值图像分割问题,采用基于像素级别的语义分割网络,成功的减少了网络深度与参数总数,实现了少量样本训练就可以达到极高准确率的缺陷表面检测网络。作者在论文提到网络设计的思想实乃精髓所在!欢迎拍砖!

请点【在看】支持

论文地址
https://arxiv.org/pdf/1903.08536v1.pdf
数据集地址
https://www.vicos.si/Downloads/KolektorSDD