使用NVIDIA端到端深度学习平台进行缺陷自动检测

NV Blog
128 1 2019-10-20

 生产制造商对质量的要求不断提高,以满足客户的需求。 通常需要手动检查以确保产品质量,但这需要大量成本,并且可能导致生产瓶颈,生产率降低等问题。

与其他用于消费者应用程序的计算机视觉问题相比,用于工业应用程序的缺陷检查具有独特的特征和挑战:

-缺少带标记、带注释和管理好的数据

-利益缺陷是对比度低的结构

-多尺度缺陷尺寸

-非常不对称的数据集,具有非常低的真实缺陷。

本文中详细介绍的U-Net方法避免了劳动密集型和潜在的脆弱的特征工程,而是允许数据驱动的模型自动学习健壮的特征表示,以生成最先进的检测和分割结果。

传统质量检验存在的问题

随着全球竞争的加剧,制造商正寻求开发智能工厂战略,利用先进的信息技术(IT)和操作技术(OT)来促进和自动化他们的制造过程。为了实现这一目标,制造系统常常需要自动地观察和理解世界。

光学质量检测是保证高精度制造过程质量控制的常用方法之一。但是,这一步仍然是实现完全自动化和集成的瓶颈。质量检查可能包括一系列的手工操作——包括视觉确认,以确保组件的颜色、形状、纹理和位置是正确的——这是非常具有挑战性的,因为产品差异很大。质量检验员必须不断适应不同产品的不同质量要求,这往往导致不准确和质量不一致。随着产量的不断增加,质量检验员经常出现眼疲劳等健康问题,这是由于长时间的重复产品检查,使得更多的有缺陷的部件通过,应该通过的失效部件通过。人工检查受到不断增加的成本、培训时间和有限的资源的限制,使其成为具有挑战性的解决方案。用人工智能进行缺陷自动检测正在开始革新制造业。

传统的计算机视觉方法通常用于生产自动化光学检测(AOI)机器,需要大量的人力和资本投入。

缺陷可以是视觉上明显的或细微的。这使得在各种环境下,如光照条件、表面纹理等,对所有缺陷进行鲁棒检测变得非常具有挑战性。

常见的工业缺陷是均质表面的局部异常。以前自动化检测和分类这些异常的方法可以分为四类:

-基于缺陷形态的结构

-基于统计纹理测量

-基于手工制作的转换过滤器

-基于机器学习模型

大多数传统的方法都是用手工制作的特性设计的,这使得它们依赖于应用程序,并且不能推广或扩展到新的应用程序。这些传统的方法通常也有很差的灵活性,常常需要领域专家昂贵而耗时的手工特征工程。在nvidia的一个生产案例中,pcba制造中的传统aoi机器以低精度产生高误报(失败的pcbs)。对于工业应用,误报和低精度的成本可能非常高。低误报率和高精度之间的折衷使得传统的cv算法具有很大的挑战性,从而以高误报率告终。深度学习自动找到最佳决策边界,在误报和精确性之间取得平衡,具有巨大的价值。

深度学习如何解决这些问题
事实证明,深度学习(尤其是CNN)对于图像检测和分类非常有效,现在正被用于解决工业检查任务。 图1中的NVIDIA DL平台已成功地以端到端的方式成功应用于检测和分割缺陷,以快速开发自动工业检测。 所有进程都基于NGC优化的docker映像构建,以实现快速迭代。

一种流行的、有效的神经网络结构——最初是为生物医学图像分割提出的——是U-Net结构,它由编码器、解码器和跳连接层组成。特别地,这个演示使用了U-Net体系结构和DAGM 2007数据集(图2)。为了解决真实缺陷数据的不足,将DAGM数据集的所有六个缺陷类统一为一个类。该组合训练集用于演示U-Net的泛化能力。我们建立了一个能够分割所有缺陷类的U-Net模型。这种工艺在实际生产缺陷检测中较为常见。为了防止对小型DAGM数据集的过度拟合,我们使用与U-Net相同的体系结构,并对内核的数量进行了实验,以使模型适合我们的数据集。


图2:来自DAGM数据集的工业制造缺陷示例。


第一步是用U-Net模型拟合数据集,即,在第一层有8个内核数,然后在下一层将内核数加倍。然后观察训练学习曲线的损失,决定是否进一步增加模型的复杂度。这一步是为了确保我们有一个有足够能力识别所有缺陷的模型。一旦我们确信模型足够复杂以适合数据集,我们就会添加正则化技术,例如删除层、L1或L2正则化,甚至尝试增加数据集。改进后的U-Net使用二进制交叉熵和Adam优化器进行训练,学习速率从1e-3开始。在缺乏标记数据和需要快速性能的情况下,我们证明U-Net能够成功地用正则化技术泛化性能,是工业检测中用于缺陷分割的合适模型。

在一个分割模型中,比如U-Net,输出是一组概率。通过对每个像素的这些概率进行阈值处理,为每个像素分配defect类,并确定数据集的精度和召回率。确定正确的阈值,以偏差的精度或召回是完全依赖于应用程序。在生产情况下,缺陷要小得多,通常在百万分之十到百万分之百(DPPM)范围内。在这个非常倾斜的数据集中,精确回忆值对阈值非常敏感。这就需要在概率阈值上进行扫频实验,进行精度和回忆。如果减少误报(提高准确率)更重要,那么在平衡精确召回的权衡时,应该提高概率阈值。通过U-net学习内部表示,允许定义决策边界,这已被证明可以极大地减少对真阳性的敏感性增加和假阳性率显著降低之间的权衡。

对于工业应用程序,误报的成本可能非常高,这可能是一个巨大的价值来源。领域专家可调阈值也是工业检查所需要的,这使得人工智能具有可解释性,避免了DL的输入-输出黑箱关系。这个在DL之后具有可调阈值的两步过程可以应用于许多用例,包括医疗成像、视频监视和自治机器。第一步使用U-Net从输入中提取信息,然后第二步根据前一步的信息做出最后的决策。

为了确保DL训练和推理的快速部署,我们使用了NGC来实现Volta和Turing GPU优化的TensorFlow (TF)和TensorRT (TRT) docker容器,以及基于边缘的解决方案Jetson AGX Xavier和Nano。如果应用软件工程师或高级用户能够适应将DL模型引入到可能没有TensorFlow框架的环境中所需要的额外步骤,则鼓励他们使用本机TRT以获得最大的性能。我们在实验中使用了TensorRT NGC容器。数据科学家或快速原型用户应该在不离开TF框架的情况下运行优化的加速推理。我们使用基于TRT集成的TensorFlow NGC容器的TF - TRT推断。TF-TRT与TRT之间的权衡是,TF-TRT易于使用,并与TensorFlow工作流集成以实现快速原型设计。一旦一个想法被证实可以与TF-TRT一起工作,TRT就可以用于实现最大的性能。

总结

利用U-Net在公共数据集上构建端到端通用缺陷检查模型,使用NVIDIA DL平台进行端到端培训和推理。召回率为96.38%,正确率为99.25%,误报率为0.11%。在V100 gpu和TensorRT 4上,通过集成了NVIDIA TensorRT引擎的TensorFlow容器,推理吞吐量增加了2.1倍。通过使用NGC优化TRT容器,推理吞吐量比本机TF进一步提高了8.6倍。为了高效节能和小形态因子推理部署,使用了T4 gpu和TensorRT 5。与基于cpu的推理性能相比,TF-TRT的性能提高了11.9倍,NVIDIA Turing Tensor core的INT8精度提高了23.5倍。T4 GPU封装了一个节能70瓦,小的PCIe形式的因素,优化了向外扩展的服务器和目的建立提供最先进的人工智能。

对于基于边缘、嵌入式和远程离线应用程序,我们采用了相同的代码,并以嵌入式gpu的NVIDIA Jetson家族为目标。Jetson Nano平台的吞吐量为18 FPS, Jetson AGX Xavier平台的吞吐量为228.1 FPS,是Jetson Nano平台的12.7倍。这些结果是使用天然TRT获得的。对于本机TRT,像Tensorflow这样的DL框架不需要安装在边缘设备上。这对它们很重要,因为系统的能力、系统大小、计算能力和磁盘存储都是有限的。此外,自动混合精度(AMP), DNN图优化FP16和FP32张量核心上的Volta和图灵gpu是全自动的,易于使用,具有很大的性能。有了放大器,U-net性能进一步提高了17%的培训和30%的测试。