4

一文梳理缺陷检测方法

 3 years ago
source link: https://mp.weixin.qq.com/s/8YJmtvnN0uAJaO6PbVW_zg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一文梳理缺陷检测方法

The following article is from AI约读社 Author 南山

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

640?wx_fmt=jpeg

近年来,随着深度学习的快速发展,基于卷积神经网络(CNN)的计算机视觉技术在工业领域得到了广泛的应用。目前,机器视觉表面缺陷检测是CNN在工业上最成熟的应用之一。接下来我们将介绍深度学习在表面缺陷检测领域的概述。

640?wx_fmt=png
640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

缺陷检测问题的定义



640?wx_fmt=png

1.1 缺陷的定义

当前对于缺陷有两种认知的方式,第一种是有监督的方法,也就是体现在利用标记了标签(包括类别、矩形框或逐像素等)的缺陷图像输入到网络中进行训练. 此时"缺陷"意味着标记过的区域或者图像。第二种是无监督的方法,就是将正常无缺陷的样本进行学习,学习正常区域的特征,网络检测异常的区域。

1.2 缺陷检测任务


缺陷检测的任务大致分为三个阶段分别是缺陷分类、缺陷定位、缺陷分割,如下图所示,缺陷分类需要分类出缺陷的类别(异色、空洞、经线);缺陷定位不仅需要获取缺陷的类别还需要标注出缺陷的位置;缺陷分割将缺陷逐像素从背景中分割出来。
640?wx_fmt=png
640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

表面缺陷检测的深度学习方法

640?wx_fmt=png根据缺陷检测的三个阶段其方法大致可以分为三类分别是分类网络、检测网络、分割网络。

2.1 分类网络

由于CNN强大的特征提取能力, 采用基于CNN的分类网络目前已成为表面缺陷分类中最常用的模式一般来说,现有表面缺陷分类的网络常常采用计算机视觉中现成的网络结构, 包括AlexNet, VGG, GoogLeNet,ResNet, DenseNet, SENet, ShuteNet,MobileNet等。利用分类网络结合上滑动窗口的方式可以实现缺陷的定位。Deep learning-based crack damage detection using convolutional neural networks检测对象:混凝土裂缝主要方法:最早采用基于滑动窗口的CNN分类网络实现了裂纹表面缺陷定位, 两种滑动窗口冗余路径结合实现图像全覆盖, 如图所示, 图中(a)为滑动窗口路径示意图, 图中(b)为裂纹定位的结果图。
640?wx_fmt=png
A fast and robust convolutional neural network-based defect detection model in product quality control检测对象:布匹缺陷主要方法:作者使用一个多层的CNN网络对布匹缺陷数据集中的六类缺陷样本进行分类,分类结束之后,对于每一类样本进行缺陷检测。具体做法是:1.使用滑动窗口的方法在512×512的原图上进行采样,采样大小为128×128;2.对上部分每一类图像采样后的小图像块进行二分类(有缺陷和无缺陷)。下图为文章两次分类使用的CNN网络,两次分类的区别在于:1.全连接层的输入分别为6和2;2.输入的图像尺寸不同。
640?wx_fmt=png

滑动窗口:

640?wx_fmt=png

2.2 检测网络

目标定位是计算机视觉领域中最基本的任务之一, 同时它也是和传统意义上缺陷检测最接近的任务, 其目的是获得目标精准的位置和类别信息。目前, 基于深度学习的目标检测方法层出不穷, 一般来说, 基于深度学习的缺陷检测网络从结构上可以划分为: 以Faster R-CNN为代表的两阶段(two stage)网络和以SSD或YOLO为代表的一阶段(one stage)网络。两者的主要差异在于两阶段网络需要首先生成可能包含缺陷的候选框(proposal), 然后在进一步进行目标检测。一阶段网络直接利用网络中提取的特征来预测缺陷的位置和类别。TDD-net: a tiny defect detection network for printed circuit boards检测对象:PCB缺陷主要方法:作者提出了一种针对PCB表面缺陷检测网络(TDD-Net), 该方法通过使用k均值聚类设计合理锚框大小, 其次引入多尺度金字塔网络(FPN)到Faster RCNN中, 加强了来自底层结构信息的融合, 使得网络适应微小的缺陷检测。最后, 考虑到小数据集和样本不平衡的特点, 在训练阶段采用了在线困难样本挖掘(OHEM)技术.该方法在PCB缺陷数据集上达到了98.90%的mAP。图 a  是没有加入FPN的结构,通过特征可视化图片可以看到,随着提取特征层数的增加,电路板的特征越来越模糊,图 b 是加入FPN结构后的可视化图片。
640?wx_fmt=png
An End-to-end Steel Surface Defect Detection Approach via Fusing Multiple Hierarchical Features检测对象:钢表面缺陷主要方法:基于Faster R-CNN的带钢表面缺陷检测网络, 该网络的改进在于提出的多级特征融合网络(MFN)将多个分层特征组合成一个特征,其可以包括缺陷的更多位置细节。基于这些多级特征,采用区域提议网络(RPN)来生成感兴趣区域(ROI).在缺陷检测数据集NEU-DET上, 提出的方法在采用ResNet-50的backbone下实现了82.3%的mAP。
640?wx_fmt=png
Automatic Defect Detection of Fasteners on theCatenary Support Device Using Deep Convolutional Neural Network检测对象:紧固件缺陷缺陷检测主要方法:作者将深度卷积神经网络(DCNNs)应用到高铁线路紧固件缺陷检测。结合SSD、YOLO等网络方法构建了一个从粗到细的级联检测网络。其过程如下图所示,分成三个阶段,第一阶段采用SSD网络对钢材的悬臂节点及其紧固件进行定位,第二阶段crop出紧固件的图片输入到YOLO网络定位缺陷位置,第三阶段一个分类器对紧固件缺陷进行分类。
640?wx_fmt=png

2.2 分割网络

分割网络将表面缺陷检测任务转化为缺陷与正常区域的语义分割甚至实例分割问题, 它不但能精细分割出缺陷区域, 而且可以获取缺陷的位置、类别以及相应的几何属性(包括长度、宽度、面积、轮廓、中心等)。按照分割功能的区别, 其大致可以分为:FCN(Fully Convolutional Networks)方法和Mask R-CNN方法两种。(1)FCN(Fully Convolutional Networks)方法Automatic Metallic Surface Defect Detection and Recognition with Convolutional Neural Networks检测对象:金属表面缺陷主要方法:该方法是基于FCN网络的改进,提出的一种能够对缺陷进行像素级分割和分类的网络,整个网络可以分成两个阶段:缺陷检测阶段和缺陷分类阶段。在缺陷检测阶段,作者设计了一个级联的自动编码器(CASAE),利用编码器对正常区域和缺陷区域的响应不同,通过阈值分割的方式实现缺陷区域的像素级定位。然后将缺陷区域crop出来输入到缺陷分类网络分类缺陷的类别。整个算法的流程如下图所示:
640?wx_fmt=png

AE Network  全卷积网络:

640?wx_fmt=png
(2)Mask R-CNN方法Mask R-CNN是目前最常用的图像实例分割方法之一, 可以被看作是一种基于检测和分割网络相结合的多任务学习方法. 当多个同类型缺陷存在粘连或重叠时, 实例分割能将单个缺陷进行分离并进一步统计缺陷数目, 然而语义分割往往将多个同类型缺陷当作整体进行处理. 目前大部分文献都是直接将Mask R-CNN框架应用于缺陷分割。Automatic defect segmentation on leather with deep learning 实现皮革表面缺陷,Road Damage Detection And Classiflcation In Smartphone Captured Images Using Mask R-CNN 实现路面缺陷分割。640?wx_fmt=png

03

缺陷检测的关键问题



640?wx_fmt=png

缺陷检测的关键问题主要是三个方面分别是小样本、小目标、实时性。

(1)小样本问题,表面缺陷检测中面临的最关键的问题是小样本问题, 在很多真实的工业场景下甚至只有几张或几十张缺陷图片. 实际上, 针对于工业表面缺陷检测中关键问题之一的小样本问题, 目前有3种不同的解决方式:

    • 数据扩增、合成与生成

    • 网络预训练或迁移学习

    • 采用无监督与半监督模型方法

(2)小目标问题,表面缺陷检测中面临的另一个问题是部分缺陷偏小,解决这部分问题可以通过引入特征金字塔结构,将不同阶段的特征图,都融合起来,提高多尺度检测的准确率;最简单的办法是放大图像尺寸;如果是在两阶段检测网络中可以使用 ROI align 替换 ROI pooling;其次,也可以使用GAN对小目标生成一个super-resolved feature叠加在原来的小目标的特征图上,以此增强小目标特征表达。

(3)实时性问题,基于深度学习的缺陷检测方法在工业应用中包括三个主要环节: 数据标注、模型训练与模型推断. 在实际工业应用中的实时性更关注模型推断这一环节。目前大多数缺陷检测方法都集中在分类或识别的准确性上, 而很少关注模型推断的效率. 有不少方法用于加速模型, 例如模型权重量化和模型剪枝等。

640?wx_fmt=png

04

总结



640?wx_fmt=png

缺陷检测是一个宽泛的应用领域, 具体包括缺陷分类、缺陷定位和缺陷分割等环节, 相比于传统图像处理方法分多个步骤和环节处理缺陷检测任务, 基于深度学习的方法将其统一为端到端的特征提取和分类。虽然表面缺陷检测技术已经不断地从学术研究走向成熟的工业应用, 但是依然有一些需要解决的问题。

640?wx_fmt=png陶显等.表面缺陷检测综述,自动化学报。3D视觉工坊公众号后台,回复:缺陷检测方法,获取完整PDF。本文仅做学术分享,如有侵权,请联系删文。下载1在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。下载2在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。下载3在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

640?wx_fmt=png▲长按加微信群或投稿

640?wx_fmt=jpeg

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款640?wx_fmt=jpeg 圈里有高质量教程资料、可答疑解惑、助你高效解决问题觉得有用,麻烦给个赞和在看~640?wx_fmt=gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK