报告人:中国科学院自动化研究所研究员谭杰
题 目:人工智能在智能制造中的应用
摘 要:报告主要讲述了人工智能技术在制造业中的发展现状,人工智能在制造业中的应用模式及其发展趋势,在智能制造中的应用案例,最后阐述了人工智能对于制造业的价值。
• end •
转自:2018国家智能制造论坛
基于深度学习的计算机视觉在制造中的质量检验
不靠谱的猫
工业制造业的自动化:
当今制造自动化水平的提高,也要求材料质量检验自动化,几乎不需要人为干预。质量检测自动化的发展趋势是达到人的水平或更高的精度。为了保持竞争力,现代工业公司努力通过自动化实现数量和质量,而不会相互影响。
深度学习质量检验:
为了达到行业标准,制造企业的质量检验员通常在产品制造完成后对产品质量进行检验,这是一项耗费时间的体力劳动,而不合格的产品会造成上游工厂产能、耗材、劳动力和成本的浪费。随着人工智能的现代发展趋势,工业企业希望在生产周期中利用基于深度学习的计算机视觉技术实现材料质量检测的自动化。目的是尽量减少人为干预,同时达到人的水平精度或更高的精度,以及优化工厂生产能力、劳动成本等。深度学习的使用是多种多样的,从自动驾驶汽车中的物体检测到医学成像的疾病检测,深度学习已经证明可以达到人类水平的准确性和更好。
什么是深度学习?
深度学习是研究数据的深度结构化和非结构化表示的领域。当数据量大且复杂时,深度学习是人工智能中提取更好结果的发展趋势。深度学习体系结构由输入层、隐藏层和输出层等神经网络的深层组成。隐藏层用于理解数据的复杂结构。神经网络不需要编程来执行复杂的任务。从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)精度大大提高。
Ø 损失函数和优化器:
第二种方法:
对于第一种方法:在提取感兴趣的区域时,只要产品类型,电路板类型/芯片类型(在我们的抽象示例的情况下),相机设置/方向等发生变化,它就需要重写代码。这是不可扩展的。
解决方案:我们构建了一个端到端的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上有所改进
上面的损失函数是可微分的,因此我们可以对损失函数进行梯度下降优化
Ø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可能会更好。