基于深度学习的计算机视觉在制造中的质量检验

工业制造业的自动化:

当今制造自动化水平的提高,也要求材料质量检验自动化,几乎不需要人为干预。质量检测自动化的发展趋势是达到人的水平或更高的精度。为了保持竞争力,现代工业公司努力通过自动化实现数量和质量,而不会相互影响。

深度学习质量检验:

为了达到行业标准,制造企业的质量检验员通常在产品制造完成后对产品质量进行检验,这是一项耗费时间的体力劳动,而不合格的产品会造成上游工厂产能、耗材、劳动力和成本的浪费。随着人工智能的现代发展趋势,工业企业希望在生产周期中利用基于深度学习的计算机视觉技术实现材料质量检测的自动化。目的是尽量减少人为干预,同时达到人的水平精度或更高的精度,以及优化工厂生产能力、劳动成本等。深度学习的使用是多种多样的,从自动驾驶汽车中的物体检测到医学成像的疾病检测,深度学习已经证明可以达到人类水平的准确性和更好。

什么是深度学习?

深度学习是研究数据的深度结构化和非结构化表示的领域。当数据量大且复杂时,深度学习是人工智能中提取更好结果的发展趋势。深度学习体系结构由输入层、隐藏层和输出层等神经网络的深层组成。隐藏层用于理解数据的复杂结构。神经网络不需要编程来执行复杂的任务。从GB到数TB的数据被馈送到神经网络架构,以便自己学习。以下示例深度神经网络:

卷积神经网络:

卷积神经网络是一类通常在图像分析中应用的深神经网络。卷积层运用卷积运算将结果传递给下一层。例如,1000×1000像素的图像有100万个特征。如果第一个隐藏层有1000个神经元,那么它在第一个隐藏层之后就会有10亿个特征。训练一个具有十亿个特征的神经网络所需要的计算和记忆是令人望而却步的。卷积运算解决了这一问题,因为它减少了自由特征的数量,使网络更深入,特征更少。与完全连接的层相比,使用卷积层有两个主要优点——参数共享和连接的稀疏性。

卷积神经网络在图像中寻找模式。图像与一个较小的矩阵卷积,这个卷积在图像中寻找模式。前几层可以识别线/角/边等,这些模式被传递到更深的神经网络层来识别更复杂的特征。CNN的这一特性非常擅长于识别图像中的对象。

卷积神经网络(又名ConvNet)就是一系列的层。构建ConvNet架构主要使用三种类型的层:卷积层、池化层和全连接层。这些层是堆叠层,形成一个完整的ConvNet架构:

下图澄清了卷积层的概念:

下图阐明了池化层的概念(Average or Max pooling):

以下是最初的CNN架构之一:

可视化卷积神经网络(CNN):

以下是平面上裂缝的图像:

将两个Conv(一个3X3 filter),ReLU和Max Pooling(2X2)类似于LENET-5架构的层应用于上面的裂缝图像。从下面可以看出,CNN架构专注于裂缝区域的块及其在整个表面的扩散:

案例分析:

问题陈述:

在硬件制造中检测质量差的材料是一种容易出错且耗时的手动过程,并导致误报(将坏的一个检测为好的)。如果在生产线末端检测到有缺陷的部件,则上游人工,消耗品,工厂产能和收入都会减少。另一方面,如果未检测到的不良部件进入最终产品,则会产生客户影响以及市场反应。这可能会对组织的声誉造成无法修复的损害。

摘要:

我们利用深度学习技术对硬件产品进行缺陷自动检测。在我们的硬件制造过程中,可能会出现划痕/裂纹等损坏,使我们的产品不能用于生产线上的下一道工序。我们的深度学习应用程序可以在毫秒内检测到裂纹/划伤等缺陷,具有人类水平的精度,并且可以更好地利用热图解释图像中的缺陷区域

深度学习架构的详细信息:

为了更好地描述事物,我们正在使用下面带有集成芯片的电路板的示例图像:

第一种方法:

我们采用纯计算机视觉方法(非机器学习方法)的组合从原始图像中提取感兴趣区域(ROI)和纯粹的深度学习方法来检测ROI中的缺陷。

为什么在深度学习(DL)之前提取ROI?

在拍摄图像时,相机组件、灯光等都聚焦在电路的整个区域(下面的例子图像)。我们只检查芯片区域是否有缺陷,电路中没有其他区域。我们通过一些实验发现,当神经网络只关注感兴趣的区域而不是整个区域时,深度学习(DL)的准确性会显著提高。

Ø首先使用计算机视觉(非机器学习方法)提取“感兴趣区域(ROI)”。在这里,我们经历了图像上的多个过程,例如灰度缩放,诸如腐蚀,膨胀,闭运算图像等的变换,最终曲线的ROI图像基于用例类型/产品类型等。腐蚀的基本思想就像土壤侵蚀一样 - 它会侵蚀前景物体的边界。膨胀恰好与腐蚀相反 - 它增加了前景物体的大小。通常情况下,在去除噪音等情况下,腐蚀之后是膨胀。开运算只是腐蚀后膨胀的另一个名称。它在消除噪音方面很有用。闭运算与开运算相反,膨胀之后是腐蚀。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。 梯度变换是图像膨胀与腐蚀的区别。总的来说,这些步骤有助于在原始图像中查看几乎不可见的裂缝/划痕。参见下图:

Ø其次,使用深度神经网络(基于深度神经网络(CNN)的模型)检测缺陷,使用经过验证的CNN拓扑,如Inception Net(又名Google Net),Res Net,Dense Net:

其他一些需要实验才能找到最佳架构的领域

Ø 数据增强:我们有几千个标记为缺陷的独特图像,几千个标记为好的图像。数据增强对于避免过度拟合训练集至关重要。我们做了X个随机裁剪和Y个旋转(1张原始图像导致X * Y增强图像)。增强后,我们有X * Y千个缺陷图像和X * Y千个好图像。在此背景下参考原始CNN论文之一
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

Ø 初始化策略对于CNN的拓扑结构:

我们用自己的FC层和sigmoid层(二元分类)替换了最终的连接层,如下图所示:

我们考虑每个CNN拓扑的ImageNet初始化,而不是每层中权重的随机初始化,当我们使用ImageNet初始化而不是随机时,我们的深度学习(DL)精度大大提高。

Ø 损失函数和优化器:

  • 交叉熵损失:交叉熵损失或对数损失测量分类模型的性能,该分类模型的输出是0到1之间的概率值。交叉熵损失随着预测概率偏离实际标签而增加。因此,当实际观察标签为1时,预测0.01的概率将是不好的并且导致高损失值。完美模型的对数损失为0
  • SGD和Nesterov momentum:SGD或随机梯度下降是一种优化可微分目标函数(损失函数)的迭代方法,它是随机的,因为它从数据中随机抽取样本进行梯度下降更新。momentum是梯度的移动平均值,用来更新网络的权值,帮助梯度向正确的方向加速。Nesterov是最近流行的一种趋势。

第二种方法:

对于第一种方法:在提取感兴趣的区域时,只要产品类型,电路板类型/芯片类型(在我们的抽象示例的情况下),相机设置/方向等发生变化,它就需要重写代码。这是不可扩展的。

解决方案:我们构建了一个端到端的two step DL架构。在第一步中,我们使用DL方法来预测ROI本身,而不是CV方法。我们使用边界框工具手动创建了带标签的数据集,我们训练DL架构来预测ROI。这种技术的一个缺点是标记的数据集必须明确且足够广泛,以包括所有产品类型等(在我们的抽象示例的情况下的电路板类型/芯片类型),以便深度神经网络很好地概括看不见的图像。请参考下图:

ØCNNROI generator损耗函数:

  • 我们最初使用基于平方距离的损失函数如下:

在验证集上训练了20个epochs的Resnet50模型后,我们在平均遗漏区域和IOU上实现了以下验证度量:

Ave. missed area = 8.52 * 10–3

Ave. IOU (intersection over union) = 0.7817

我们希望至少在IOU上有所改进

  • 我们想出了一个基于区域的损失,请参考下图来了解我们如何使用基本数学来计算 ground truth和预测标签之间的交叉区域。在损失函数中,我们想要惩罚遗漏(missed area)和超出区域(excess area)。理想情况下,我们希望惩罚遗漏区域而不是超出区域:

上面的损失函数是可微分的,因此我们可以对损失函数进行梯度下降优化

ØCNNROI generator增强:我们只是在训练时间和测试时间内为我们预测的ROI增加了5%(左右)边距:

Ø CNN ROI generator的结果:我们使用Resnet50 (ImageNet初始化)拓扑和SGD + Nesterov momentum optimizer with =2,=1在面积为基础的损失如上所述。为多个时代训练Resnet50模型,我们希望尽量减少我们的平均值。错过了区域并最大化我们的平均值。IOU(最好的IOU是'1')。经过20个epochs的训练后,我们在验证集上实现了以下目标,基于区域的损失和增加我们改进了(如上所述)我们关于遗漏区域和IOU的验证度量:

Ave. missed area = 3.65 * 10–3

Ave. IOU (intersection over union) = 0.8577

实验与基准:

实验:

  • 总图像数:几千张图片
  • 数据拆分:80- 10- 10拆,只使用唯一图像
  • 使用的框架:PyTorch和Tensorflow / Keras
  • 权重初始化:在ImageNet上进行预训练
  • 优化器:SGD,学习率= 0.001,Nesterov with momentum = 0.9
  • 损失:交叉熵
  • Batch size:12
  • epochs总数:24
  • 图像形状:224x224x3(除了Inception V3,需要299x299x3)
  • 标准:最低验证损失

基准:

我们使用这两种方法的基准测试具有相当的可比性,使用CV + DL(第一)方法的结果比DL + DL(第二)方法稍好一些。我们相信,如果我们能够创建一个大量而明确的带标签的bounding box数据集,我们的DL+DL可能会更好。

在成功完成训练之后,必须找到一个推理解决方案来完成整个端到端解决方案。我们使用Intel OpenVino软件对除CPU外的各种硬件进行优化推理,如FPGA、Intel Movidius等。

推论:

英特尔Open Vino:基于卷积神经网络(CNN),英特尔Open Vino工具包可扩展英特尔硬件的工作负载并最大限度地提高性能:

  • - 在边缘启用基于CNN的深度学习推理
  • - 支持跨计算机视觉加速器的异构执行 - CPU,GPU,英特尔®Movidius™神经计算棒和FPGA - 使用通用API
  • - 通过函数库和预优化内核加快产品上市速度
  • - 包括对OpenCV和OpenVX *的优化调用

请参阅Open Vino架构的以下图表:

两步部署:

- 第一步是使用模型优化器将预训练的模型转换为IR :

§ 生成有效的中间表示:如果此主转换工件无效,则推理引擎无法运行。模型优化器的主要职责是生成两个文件以形成中间表示。

§ 生成优化的中间表示:预训练模型包含对训练很重要的层,例如dropout层。这些层在推理期间是无用的,并且可能增加推理时间。在许多情况下,可以从生成的中间表示中自动删除这些层。然而,如果一组层可以作为一种数学运算来表示,因此作为一层,模型优化器会识别出这样的模式然后用一个层替换这些层。结果是一个中间表示,其层数比原始模型少。这减少了推理时间。

IR是描述整个模型的一对文件:

  • .xml:描述网络拓扑
  • .bin:包含权重和偏差二进制数据

- 第二步是使用推理引擎读取,加载和推断IR文件,使用CPU,GPU或VPU硬件上的通用API

Vino文档:https:
//software.intel.com/en-us/inference-trained-models-with-intel-dl-deployment-toolkit-beta-2017r3

样本图像的推理基准:

很明显,使用软件堆栈进行优化对于缩短推理时间至关重要。使用OpenVino软件优化,我们看到延迟时间缩短了30到100倍。此外,除英特尔CPU外,我们还推出了其他英特尔硬件加速器,如英特尔Movidius和FPGA。以下是样本图像的一些推理基准:

使用热图可视化我们的CNN:

通常深度神经网络被批评为解释性低,大多数深度学习解决方案在标签分类完成时停止。我们想要解释我们的结果,为什么CNN架构将图像标记为好或坏(我们的案例研究是二元分类),CNN最关注图像中的哪个区域。

基于MIT
https://arxiv.org/pdf/1512.04150.pdf的研究,提出了结合全局max池化层的类激活映射来定位类特定的图像区域。

全局平均池化通常起着调节作用,防止训练过程中过度拟合。本研究认为,全局平均池化层的优点不仅仅是简单的作为一个正则化器——稍作调整,网络可以保持其显著的定位能力,直到最后一层。这一调整可以轻易地识别出不同的图像区域的不同类型的任务,甚至是那些网络最初没有被训练的任务。

以下是使用此技术对使用在ImageNet上训练的Resnet-50架构的“平面上的裂缝”图像进行热图解释。正如我们所看到的,热图集中在下面的裂缝区域,尽管架构没有经过这样的图像训练 -

总结与结论:

通过基于深度学习的计算机视觉,我们使用我们的两种方法 - CV + DL和DL + DL,实现了人类水平的准确性。我们不仅使用深度学习进行分类,而且还使用图像本身的热图来解释缺陷区域。

最优模型总是在FPR(假阳性率)和FNR(假阴性率)或精确度与召回率之间进行微调。对于我们的用例,我们成功地使用了针对低FNR(高召回率)优化的模型来自动检测缺陷。我们大幅降低了人工审核率。通过我们的案例研究,我们证明了我们可以通过深度学习实现材料检查的自动化,并降低人的审查率。

(0)

相关推荐

  • 【目标检测算法解读】yolo系列算法一

    前言 大家好,这是目标检测算法解读系列的第一篇文章,在这个系列中小糖豆会对经典的目标检测算法进行解读,在每个算法原理讲解完后,会有相应的源代码解析.小糖豆认为学习一个算法,既要弄清楚它的原理,又要真正 ...

  • 电影照片背后的技术

    视频介绍: 电影照片背后的技术 查看过去的照片可以帮助人们重温他们最珍贵的时刻.去年 12 月,我们推出了电影照片,这是 Google 相册中的一项新功能,旨在重现拍摄照片时的沉浸感,通过推断图像中的 ...

  • 基于转移学习的图像识别

    重磅干货,第一时间送达 01.前言 我们希望编写一个简单的算法用来识别狗狗的品种,假设我们想知道这只狗是什么品种. 算法该如何分辨这只狗可能属于哪个品种?当然小伙伴们可以训练自己的卷积神经网络来对这张 ...

  • 中山大学提出新型行人重识别方法和史上最大评测基准

    来源:机器之心公众号 来自:我爱计算机视觉公众号 导读:行人重识别,是利用 CV 技术判断图像或视频序列中是否存在特定行人的技术.常规的行人重识别方法往往需要高昂的人工标注成本,计算复杂度也很大.在本 ...

  • 肾小管末端磷酸钙沉积栓的自动检测。

    Healthc Technol Lett. 2019 Dec; 6(6): 271–274. Published online 2019 Dec 6. doi: 10.1049/htl.2019.00 ...

  • 干货 | 阿里的图像搜索架构

    进入21世纪以来,伴随着互联网的高速发展,通过图像和视频来进行需求表达越来越成为大家的习惯. 图像搜索与识别算法使得图像视频内容得以结构化和数字化,以便可以在各种检索和分析引擎中被最大限度地挖掘和利用 ...

  • 深度学习和计算机视觉中的基础数学知识(一)

    2.1 线性变换与非线性变换 2-1叫相加性,2-2叫齐性 2.1.2 旋转.缩放与矩阵乘法 旋转坐标 矩阵形式 缩放坐标的矩阵形式(B → \to →C) 2.1.3 点积和投影 点积定义: 两个向 ...

  • 在OpenCV中基于深度学习的边缘检测

    重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 分析了Canny的优劣,并给出了OpenCV使用深度学习做边缘检测的流程,文末有代码链接. 在这篇文章中,我们将学习如何在OpenCV中使用 ...

  • [智能制造] CIRP 2019: 基于深度学习的自适应热位移补偿法

    原文信息 标题:Adaptive thermal displacement compensation method based on deep learning 作者:Makoto Fujishima ...

  • 基于深度学习的特征提取和匹配方法介绍

    转载于 :黄浴博士知乎 https://zhuanlan.zhihu.com/p/78053406 计算机视觉需要图像预处理,比如特征提取,包括特征点,边缘和轮廓之类.以前做跟踪和3-D重建,首先就得 ...

  • 【隐创119期】基于深度学习的自动目标识别技术研究(一)

    编者按: 深度学习算法正重新定义目标检测和分类技术.算法训练需要大量数据集,而数据集搜集通常是复杂和耗时的.在国防和安全领域,如果数据具有敏感性,例如军用舰船红外图像,训练可能难以实现.算法开发和训练 ...

  • 基于深度学习的无监督磁共振图像去噪方法

    MRI图像是一种以不同灰度显示不同结构的解剖和病理的断面图像,广泛应用于疾病的检测.诊断以及治疗监测.然而,MRI图像的成像过程往往伴随着随机噪声,这导致了低质MRI图像的产生.MRI图像的质量不仅会 ...

  • 极市直播丨朱思语:基于深度学习的视觉稠密建图和定位

    一直以来,为让大家更好地了解学界业界优秀的论文和工作,极市已邀请了超过90位技术大咖嘉宾,并完成了82期极市线上直播分享.往期分享请前往bbs.cvmart.net/topics/149或直接阅读原文 ...

  • 【学习指南】深度学习与计算机视觉学习总结与经验分享

    深度学习与计算机视觉,学习总结与经验分享 深度学习-什么是计算机视觉? [视频资源分享]机器学习|深度学习|编程语言|数据挖掘等视频资源汇总 深度学习-计算机视觉学习路线[从学术到工作] 计算机视觉领 ...

  • 基于深度学习的文本自动生成

    导读:本章主要介绍如何通过文本到文本的文本复述技术,进行基于深度学习的文本自动生成.文本复述技术的现有方法能够为给定的文本生成具有较小差异的复述文本,但是难以有效生成具有很大差异的高质量复述文本.原因 ...