三分钟知识学习到~

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

缺陷检测问题的定义

表面缺陷不仅影响产品的美观和舒适度,而且一般也会对其使用性能带来不良影响,因此企业对产品的表面缺陷检测非常重视,以便有效控制产品质量。

当前对于缺陷有两种认知的方式:

有监督的方法,也就是体现在利用标记了标签(包括类别、矩形框或逐像素等)的缺陷图像输入到网络中进行训练. 此时"缺陷"意味着标记过的区域或者图像。无监督的方法,就是将正常无缺陷的样本进行学习,学习正常区域的特征,网络检测异常的区域。缺陷检测的任务大致分为三个阶段分别是缺陷分类、缺陷定位、缺陷分割,如下图所示,缺陷分类需要分类出缺陷的类别(异色、空洞、经线);缺陷定位不仅需要获取缺陷的类别还需要标注出缺陷的位置;缺陷分割将缺陷逐像素从背景中分割出来。

缺陷检测的问题

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

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

分类网络由于CNN强大的特征提取能力, 采用基于CNN的分类网络目前已成为表面缺陷分类中最常用的模式一般来说,现有表面缺陷分类的网络常常采用计算机视觉中现成的网络结构, 包括AlexNet, VGG, GoogLeNet,ResNet, DenseNet, SENet, ShuteNet,MobileNet等。利用分类网络结合上滑动窗口的方式可以实现缺陷的定位。

Deep learning-based crack damage detection using convolutional neural networks

检测对象:混凝土裂缝

主要方法:最早采用基于滑动窗口的CNN分类网络实现了裂纹表面缺陷定位, 两种滑动窗口冗余路径结合实现图像全覆盖, 如图所示, 图中(a)为滑动窗口路径示意图, 图中(b)为裂纹定位的结果图。

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.输入的图像尺寸不同。

滑动窗口

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)到FasterRCNN中,加强了来自底层结构信息的融合,使得网络适应微小的缺陷检测。最后,考虑到小数据集和样本不平衡的特点,在训练阶段采用了在线困难样本挖掘(OHEM)技术.该方法在PCB缺陷数据集上达到了98.90%的mAP。图a是没有加入FPN的结构,通过特征可视化图片可以看到,随着提取特征层数的增加,电路板的特征越来越模糊,图b是加入FPN结构后的可视化图片。

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。

Automatic Defect Detection of Fasteners on theCatenary Support Device Using Deep Convolutional Neural Network

检测对象:紧固件缺陷缺陷检测

主要方法:作者将深度卷积神经网络(DCNNs)应用到高铁线路紧固件缺陷检测。结合SSD、YOLO等网络方法构建了一个从粗到细的级联检测网络。其过程如下图所示,分成三个阶段,第一阶段采用SSD网络对钢材的悬臂节点及其紧固件进行定位,第二阶段crop出紧固件的图片输入到YOLO网络定位缺陷位置,第三阶段一个分类器对紧固件缺陷进行分类。

3 分割网络

分割网络将表面缺陷检测任务转化为缺陷与正常区域的语义分割甚至实例分割问题, 它不但能精细分割出缺陷区域, 而且可以获取缺陷的位置、类别以及相应的几何属性(包括长度、宽度、面积、轮廓、中心等)。按照分割功能的区别, 其大致可以分为: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出来输入到缺陷分类网络分类缺陷的类别。整个算法的流程如下图所示:

AENetwork全卷积网络

(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 实现路面缺陷分割。

缺陷检测的关键问题

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

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

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

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

总结

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

深度学习之表面缺陷识别相关推荐

  1. 基于深度学习的表面缺陷检测方法综述-论文阅读笔记

    //2022.3.2日阅读笔记 原文链接:基于深度学习的表面缺陷检测方法综述 (aas.net.cn) 个人对本篇综述内容的大致概括 论文首先介绍了表面缺陷检测中不同场景下的成像方案,主要根据表面颜色 ...

  2. 论文《基于深度学习的表面缺陷检测方法综述》学习笔记

    <基于深度学习的表面缺陷检测方法综述>学习笔记 前段时间完成了<基于图像的零部件缺陷识别系统设计>毕业课程设计,过程中收获了很多,老师也分享了很多论文,在此记录一下学习的收获. ...

  3. 基于深度学习的口罩识别与检测PyTorch实现

    基于深度学习的口罩识别与检测PyTorch实现 1. 设计思路 1.1 两阶段检测器:先检测人脸,然后将人脸进行分类,戴口罩与不戴口罩. 1.2 一阶段检测器:直接训练口罩检测器,训练样本为人脸的标注 ...

  4. 用OpenCV和深度学习进行年龄识别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习算法那些事 在本教程中,您将学习如何使用OpenC ...

  5. 基于深度学习的脑电图识别 综述篇(三)模型分析

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

  6. 基于深度学习的脑电图识别 综述篇(二)数据采样及处理

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

  7. 【深度学习】人脸识别和口罩检测的应用

    [深度学习]人脸识别和口罩检测的应用 文章目录 1 概述 2 人脸识别模型搭建与训练 3 口罩检测3.1 数据来源3.2 YoloV4简介3.3 数据集处理3.4 开始训练3.5 测试 1 概述 1. ...

  8. opencv 计数后不动了 训练模型时_用OpenCV和深度学习进行年龄识别

    在本教程中,您将学习如何使用OpenCV,深度学习和Python执行年龄的自动识别/预测. 学完本教程后,您将能够以相当高的精确度去自动预测静态图像文件和实时视频中的人物年龄. 要了解如何使用Open ...

  9. python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

最新文章

  1. Numpy 一维、二维数组、size/dtype/shape属性、数组函数arange/linspace/logspace /diag/zeros/ones/random 、多维数组索引和筛选)
  2. Windows MySQL8.0安装出错解决方案(Start Server 失败)
  3. No module named pycurl(无法使用yum和pip的情况下的解决方案)
  4. mysql出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'如何解决?
  5. eclipse中的JSP项目连接mysql报错,找不到jdbc驱动,java项目却没问题
  6. 新疆农业大学的计算机专业的分数线是多少,2017新疆农业大学科学技术学院专业排名及分数线...
  7. Zabbix自带模板监控MySQL服务
  8. Android ADB命令?这一次我再也不死记了!【简单说】
  9. 自我与人际沟通课程复习
  10. RobotFramework中实现接口上传文件
  11. banner设圆角_Banner设计技巧!
  12. 创业成功第一步:写好商业计划书 第一章习题答案
  13. 电瓶升级问题:在本节最后一个electric_car.py版本中,给Battery类添加一个名为upgrade_battery()的方法。这个方法检查电瓶容量,如果它不是85,就将它设置为85。
  14. PayPal支付集成到自己Web网站
  15. Oracle DUL Data Unloader数据恢复工具信息汇总
  16. 论文撰写格式-------Mathtype公式分章节自动编号及引用编号
  17. jquery-210812-05---jquery函数02
  18. 扫地机器人可以扫纸片_扫地机器人扫的干净吗?
  19. unordered_mapunordered_set的应用以及底层实现(哈希表)
  20. STM32学习笔记(二)——常用接口

热门文章

  1. wxWidgets:wxColourPickerCtrl类用法
  2. wxWidgets:wxValidator概述
  3. boost::hana::comparing用法的测试程序
  4. boost::hana::detail::wrong用法的测试程序
  5. GDCM:从VR查找标签的测试程序
  6. ITK:提取网格边界上的顶点
  7. VTK:可视化之TextureMapImageData
  8. VTK:PolyData之ConvexHullShrinkWrap
  9. VTK:网格之TableBasedClipDataSetWithPolyData
  10. OpenCV模板匹配Template Matching