Py学习  »  机器学习算法

复杂场景下的复杂缺陷检测方法--深度学习算法综述

小白学视觉 • 2 年前 • 255 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自|OpenCV学堂
一、背景知识


随着自动化技术的快速发展,在工业生产中很多需要人工操作的环节逐渐转由机器完成,工业生产自动化也将越来越多的工人们从枯燥乏味的工作中解放出来,让他们去发挥更大的价值。


产品表面缺陷检测是工业生产中的重要环节,是产品质量把控的关键步骤,借助缺陷检测技术可以有效的提高生产质量和效率。但是由于设备及工艺等因素的影响,产品表面的缺陷类型往往五花八门,比如织物生产中方出现的污点、破损,金属产品上的划痕、裂纹、凹凸不平等各种不同类型的缺陷,如下图所示。

单张图片中的缺陷多样且不同缺陷表现形式的也不相同,给缺陷的自动化检测带来了困难。


二、传统算法


传统的表面缺陷检测算法结构通过图像预处理得到便于检测的图像,随后借助统计机器学习方法来提取图像特征,进而实现缺陷检测的目标。

图像预处理通常包括直方图均衡化、滤波去噪、灰度二值化、再次滤波几部分,以得到前后景分离的简单化图像信息;随后利用数学形态学、傅里叶变换、Gabor 变换等算法以及机器学习模型完成缺陷的标记与检测。

上述传统算法在某些特定的应用中已经取得了较好的效果,但仍然存在许多不足。例如:图像预处理步骤繁多且具有强烈的针对性,鲁棒性差;多种算法计算量惊人且无法精确的检测缺陷的大小和形状。而深度学习可以直接通过学习数据更新参数,避免了人工设计复杂的算法流程,并且有着极高的鲁棒性和精度。


三、深度学习


目前,基于深度学习的缺陷检测已经应用于金属固件、布匹丝织物、建筑裂纹、钢筋裂纹等多个领域,并取得了不错的成果。下面将结合具体案例介绍其实现方法。



3.1裂纹缺陷检测[1]

建筑材料(如磁瓦等)的外观变化(如裂纹或腐蚀等)与其建筑结构的安全性密不可分,而依靠检察员视觉检查的效果局限性大,相比之下,基于计算机视觉的结构损伤检测更为可靠便捷。


本文使用Faster RCNN实现对图像的准实时处理,其整体架构包括RPN和Fast RCNN两部分,如上图所示,RPN和Fast RCNN使用相同的CNN网络从图像中提取特征,CNN的主要结构如下表所示。


名称

功能

卷积层

承担CNN中的主要计算作用,通过过滤器输出图像的特征。

最大池化层

通过减小输入的空间大小执行向下采样,输出最大值。

全连通层

执行点积,在每个神经元的输入上增加一个偏差。

Softmax层

分类器,输出概率最高的类作为分类结果。

RPN的作用为提出候选目标,结构示意如图所示,其实现流程包括:

  • 输入图像后,利用CNN网络得到特征图;

  • 将特征图上每一个CONV滑动窗的特征映射为向量并输入Softmax和Regressor层中;

  • 预测缺陷边界框的坐标。

Fast RCNN的作用为对图像中的缺陷位置进行定位和分类,其结构流程如上图所示。

  • 从输入图像中提取特征图并获得感兴趣区域(ROI);

  • 在ROI池中,预先计算的兴趣区域覆盖在特征图上,提取固定大小的特征向量;

  • 将所得向量输入全连接层,计算边界框的位置并对框内对象进行分类。



3.2破损缺陷检测[2]

在电气化铁路等工业中,有许多关系着安全的重要固件,这些固件的缺陷检测十分重要。


本文作者利用深度卷积神经网络(DCNNs)结合SSD,Yolo等网络方法构建了一个从粗到细的级联检测网络,包括固件的定位、缺陷检测与分类,其实现流程如下图所示。


  1. 紧固件提取

  • 借助在速度和精度方面都表现良好的SSD框架,对图像中的悬臂节点进行定位;

  • 基于Yolo框架的快速本地化架构,对紧固件进行定位。

  1. 固件缺陷检测与分类

  • 根据第二阶段对紧固件的检测来判断缺陷;

  • 再次借助DCNN,通过4个卷积层对缺陷进行分类(分类网络结构如下图)。

DCNNs具有良好的鲁棒性和自适应性,有利于检测的快速进行,因此本方法在紧固件的缺陷检测和分类中具有良好的应用前景。



3.3斑点缺陷检测[3,4]


斑点缺陷检测在纺织、木材、瓷砖等许多行业中都很常见,通常利用其纹理的一致性实现检测的目的。近年来,利用深度学习视觉检测技术对相关产业的表面缺陷检测引起了广泛关注。


作者采用结合图像金字塔层次结构思想和卷积去噪自编码器网络

(CDAE)实现对布匹纹理图像的缺陷检测,其总体结构如下图所示。

  1. 训练阶段

  • 图像预处理:光照归一化、高斯金字塔下采样和噪声降噪等操作,避免光照等因素的影响;

  • Patch提取:提取Patch对每个金字塔层的CDAE网络进行训练;

  • 模型训练:利用训练Patch的重构残差作为像素级缺陷预测的指标;

  • 阈值确定:区分缺陷点与无缺陷点的重要参数。



  1. 模型测试阶段:

  • 图像预处理:只需进行光照归一化和高斯金字塔下采样操作即可;

  • Patch提取:提取Patch用于纹理检测;

  • 残差贴图构造:提取局部接受域在训练后的模型中滑动,以对每一个像素进行预测;

  • 缺陷分割:对每个金字塔层的残差图进行分割;

  • 合成:将多个金字塔级别的信息合成,以提高缺陷检测的鲁棒性和准确性。



文章通过分析和实验已经证明,充分利用无监督学习和多模态结果融合策略,可以提高缺陷检测的鲁棒性和准确性。


3.4划痕缺陷检测[5]


划痕缺陷检测通常用于金属类产品的表面缺陷检测中,随着生活质量的提高,人们对产品的外观完整性与美观程度的要求也越来越高,因此精准地检测到产品外观的划痕等缺陷在生产环节十分重要。


使用上图所示的缺陷检测体系结构,下面将针对检测模块展开介绍。


  1. CASAE架构

将两个自动编码器(AE)级联在一起,这里的AE结构是FCN框架的迁移使用,有一层层的卷积、反卷积和跳跃链接组成,其结构如下图所示。

  1. 阈值模块

连接到CASAE网络末端的独立模块,用于进一步细化预测掩码的结果。

  1. 缺陷区域检测

通过语义分割获得所有可能缺陷的区域,进一步使用blob分析以寻找准确的缺陷轮廓,最终从图像中提取最小的外接矩形区域。


四、总结


本文参考前沿文献,总结了部分当前主流的缺陷检测实现思路。总的来说,使用基于深度学习的算法可快速准确地实现的缺陷检测,且适用范围广能够灵活地应用于建筑、金属固件以及布匹丝织物等众多行业的生产过程中。


作者:北京矩视智能科技有限公司


参考文献:

[1] Cha Y J et al. Autonomous structural visual inspection using region‐based deep learning for detecting multiple damage types[J]. Computer‐Aided Civil and Infrastructure Engineering, 2018.

[2] Chen J et al. Automatic defect detection of fasteners on the catenary support device using deep convolutional neural network[J]. IEEE Transactions on Instrumentation and Measurement, 2017.

[3] Mei S et al. An unsupervised-learning-based approach for automated defect inspection on textured surfaces[J]. IEEE Transactions on Instrumentation and Measurement, 2018.

[4] Mei S el al. Automatic fabric defect detection with a multi-scale convolutional denoising autoencoder network model[J]. Sensors, 2018.

[5] Tao X et al. Automatic metallic surface defect detection and recognition with convolutional neural networks[J]. Applied Sciences, 2018.


好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119919
 
255 次点击