AI在工业检测中的最新进展
随着人工智能(AI)和深度学习改变了我们创造商品的方式以及质量检测的方式,制造业正在发生翻天覆地的变化。新的深度学习技术、软件、并行处理的强大功能和易用性工具的结合是这一转变的核心。
传统的图像处理软件依赖于特定于任务的算法,而深度学习软件使用多层网络来实现预训练或用户训练的算法来识别好坏图像或区域。传统上,需要数百甚至数千张高质量的手动分类图像来训练系统并创建一个模型,以创建一个能以高度可预测性对物体进行分类的模型。事实证明,仅仅收集这种类型的数据集就是一个障碍,阻碍了深度学习在主流制造环境中的采用。
新技术的进步使制造商更容易将深度学习作为检测过程的一部分。今天,我们训练深度学习系统时,不良图像更少,甚至没有。虽然用于机器视觉的深度学习软件已经存在了十多年,但现在它变得更加用户友好和实用。因此,制造商正在从试验深度学习软件转向实施它。
深度学习与传统方法的比较
深度学习非常适合传统图像处理方法难以完成的任务。适合深度学习的典型环境是光照、噪声、形状、颜色和纹理等变量较多的环境。例如,在食品检测中,几乎没有两块面包是完全相同的。每块面包的成分相同,重量相同,但形状、颜色和质地可能略有不同,但仍在正常范围内。
另一个例子是苹果的成熟度。成熟度可以是指颜色、柔软度或质地;然而,苹果被认为成熟的可能性是有一定范围的。正是在这些类型的环境中,深度学习可以大显身手。其他示例包括检查表面光洁度质量、确认套件中是否存在多个项目、检测异物等,以确保整个装配过程的质量。
显示深度学习优势的一个实际例子是对金属等纹理表面进行划痕检测。其中一些划痕的亮度较低,其对比度与纹理背景本身的对比度处于同一数量级。传统技术通常无法可靠地定位这类缺陷,尤其是当不同样本的形状、亮度和对比度各不相同时。图 1 展示了金属板上的划痕检测。缺陷通过热图清晰显示,热图是一种伪彩色图像,突出显示了缺陷位置的像素。
缺陷检测的另一个例子是对复杂部件进行好坏分类的能力。例如,金属螺丝是一种表面变化很大的物体,传统算法很难将其缺陷分离出来。深度学习算法非常擅长检测这类物体。
使用简单分类进行缺陷检测
尽管深度学习比传统的图像处理技术更具优势,但挑战确实存在。首先,许多用户缺乏对通过深度学习取得成功所需的条件的理解。其次,直到最近,深度学习还需要一个庞大的数据集来训练系统。
由于缺乏高质量的手动分类图像,许多应用程序无法利用深度学习。在有大型数据集的情况下,下一个挑战是标记每张图像。这种标记可能是一项艰巨的任务,因为它必须由专家完成,并且需要没有错误。如果存在大量的类别(不同的组别,每个组别都有唯一的标签),就很容易出错。
细微的标签错误是AI工具无法达到令人满意的性能的原因之一。在意识到失败是由于原始数据集中的错误标注造成的之前,人们会痛苦地发现浪费了大量时间。事实上,正确的数据集是特定系统中最重要的项目,通常被用户视为专有知识产权。
典型的深度学习应用需要数百甚至数千个图像样本。在更具挑战性或自定义应用程序中,训练模型可能需要多达一百万个或更多的图像样本。即使你可以得到足够的图像,你也必须确保你有正确的“好”和“坏”图像组合,以满足训练模型的参数。
为了从训练模型中获得预期结果,您需要一个平衡的数据集。这种同时使用好样本和坏样本的训练方式被称为缺陷检测,也被认为是一种简单的分类器。
要验证训练模型是否准确,您需要使用一组新图像测试模型。如果模型接近训练集模型,则表示该模型具有很好的泛化性。如果模型在测试集上表现不佳,这往往反映出模型记住了所有训练情况,而没有了解图像的好坏因素,这被称为过度训练或过度拟合。如果测试集表现更好,则训练集可疑(可能是由于分布不良),或者测试集太小。这种方法称为监督学习。
一种新的深度学习技术:异常检测
有些应用可能只有很好的例子。在许多生产环境中,在许多生产环境中,我们看到的是可以接受的情况,但永远无法确定所有可能导致废品的情况。在某些情况下,可能会以非常低的概率发生独特的新废品事件,但这仍然是不可接受的。
过去,由于缺乏不良示例,这些类型的应用无法有效地部署深度学习。现在情况发生了变化,新工具使制造商能够扩展从深度学习中受益的应用范围。
有一种新的分类技术叫做异常检测,在这种模式下,只有好的示例才能训练网络,网络会识别出被认为是正常的内容,并将该数据集之外的任何内容识别为异常。如果你把“好例子”数据集放在一个图表上,它看起来像一个斑点。落在斑点内的任何东西都被归类为正常,而落在斑点之外的任何东西都被归类为异常。图 1 和图 2 中所示的例子都可以在只有少数甚至没有不良样本可用于训练的情况下通过异常检测进行求解。
异常检测工具现已推出,可以将深度学习扩展到以前无法利用其优势的新应用中。异常检测的加入有助于减少训练系统所需的工程工作量。如果拥有数据,非图像处理专家也能训练系统,同时大幅降低成本。例如,Teledyne DALSA的Astrocyte软件就是一款基于深度学习算法的训练工具,包括分类、异常检测、物体检测、分割和降噪。
采用深度学习进行缺陷检测
无论是使用简单的分类器还是异常检测算法来实现制造环境中的检测,都必须使用最小的样本集来训练神经网络。如前所述,异常检测允许使用不平衡的数据集,通常包括比坏样本多得多的好样本。但无论如何平衡,这些样本都需要标记为好或坏,并输入到神经网络训练器中。基于GUI的训练工具是一种将数据集提供给神经网络的简单方法,同时允许您以图形方式标记图像。
图3展示了Astrocyte软件中的分类训练,其中所有样本都以缩略图的形式列出。对于每个样本,缩略图周围的矩形指定标签(即好或坏),这些信息由用户在训练时编辑。自动执行此过程的一种简单方法是将样本放在两个不同的文件夹(好的和坏的)中,并使用文件夹名称作为标签。
训练数据集时要考虑的另一个重要方面是保留这些样本的一部分进行测试。在实践中,一个好的规则是分配 80% 的数据集用于训练,而将剩余的 20% 用于测试。与训练样本不同,测试样本通过神经网络进行测试,而不会影响网络的权重。训练和测试样本组对于开发在生产中表现良好的适当训练模型非常重要。
一旦创建并标记了训练集,就可以开始训练过程。训练参数称为超参数(与“参数”相对,“参数”是神经网络的实际权重)。最常见的超参数包括学习率,它告诉算法收敛到解决方案的速度,周期数,它决定了训练过程中的迭代次数,批处理大小,它选择一次处理多少个样本,以及模型架构选择该选项来解决问题。用于简单分类的模型架构的一个常见示例是 ResNet,它是一种卷积神经网络,是分类问题(如缺陷检测)中常用的模型架构。
超参数配置完成后(好的训练工具提供了在实践中效果很好的默认值),训练过程就可以启动了。训练时间从几分钟到几小时不等,具体取决于数据集中的样本数量、超参数以及 GPU 卡的功率/内存。在训练期间,您可以监控两个基本指标:损失函数和准确性。损失函数显示了当前模型预测(神经网络的输出)和期望(基本事实)之间的差异。
在训练过程中,这些损失函数应趋向 0。如果它们出现分歧,您可能必须取消训练会话,并使用不同的超参数重新启动它。准确度表示您的模型在正确分类样本方面有多好。在训练期间,该指标应达到100%。在实践中,你很少会达到100%,但通常在95%到99%之间。图4描绘了在星形胶质细胞中训练时的损失函数和准确性图。
在训练以可接受的精度完成训练后,您的模型就可以在生产中使用了。将模型应用于真实样本称为推理。推理可以在使用GPU卡的PC上实现,也可以在使用并行处理引擎的嵌入式设备上实现。根据应用所需的尺寸、重量和功耗,可以使用各种技术在嵌入式设备(如 GPU、FPGA 和专用神经处理器)上实现深度学习。
深度学习比以往任何时候都更加人性化和实用,使更多的应用能够从中受益。深度学习软件已经改进到可以比任何传统算法更好地分类图像的地步,并且可能很快就能超过人类检查员。
文章版权归西部工控xbgk所有,未经许可不得转载。