视觉检测

什么是视觉检测?

视觉检测是一项旨在发现表面问题或缺陷的任务。它常用于制造、建筑和航空航天等领域。

自动化视觉检测系统

在制造业中,自动化视觉检测系统搭载高分辨率的相机,可以高效地检测到人眼难以觉察的微米级甚至纳米级缺陷。然而,当存在未知缺陷或多种不同缺陷时,可能会发生误检测,这是一项重大挑战。因此,采用深度学习技术的软件,如 MATLAB® 和 Computer Vision Toolbox™ Automated Visual Inspection Library,将发挥更重要的作用。

截图显示安装板以及使用 MATLAB 计算和可视化的异常检测输出。

安装板以及在 MATLAB 中使用深度学习突出显示的异常。

使用 MATLAB 和 Computer Vision Toolbox 开发自动化视觉检测系统

使用 MATLAB 和 Computer Vision Toolbox Automated Visual Inspection Library,您可以开发视觉检测系统。MATLAB 支持从图像采集到算法开发乃至部署的完整工作流。借助 MATLAB 中的交互式 App,工程师可以探索、迭代和自动化算法,从而提高工作效率。他们可将这些方法应用于许多工业应用。

成功案例:汽车和航空航天行业中的自动化视觉检测

例如,汽车部件制造商武藏精密工业每月以人工目测方式检测的部件约有 130 万个。通过使用 MATLAB 开发基于深度学习的方法来检测和定位不同类型的异常,该制造商构建了自动化视觉检测系统,用于检测圆锥齿轮。据预计,最新的方法将大幅减少公司的工作量及其成本。

汽车组件圆锥齿轮及使用 MATLAB 构建的检测系统。

武藏精密工业借助 MATLAB 使用深度学习对汽车部件进行自动化视觉检测。

同样,空中客车构建了稳健的视觉检测人工智能 (AI) 模型,用来自动检测多个飞机部件中的各种缺陷,以确保飞机在服役前毫无缺陷。借助 MATLAB,空中客车工程师能够在短时间内以交互方式构建算法原型并测试缺陷,从而简化了此过程。

截图显示空中客车通过用 MATLAB 开发的目标检测发现的局部异常。

空中客车使用 MATLAB 构建了稳健的视觉检测人工智能模型,用来自动检测多个飞机部件中的各种缺陷。

缺陷检测过程:数据准备、人工智能建模和部署

缺陷检测过程可以分为三个主要阶段:数据准备、人工智能建模和部署。

示意图显示端到端视觉检测工作流,其中包括在 MATLAB 中执行的数据准备、人工智能建模和部署的示例,以及各步骤之间执行的迭代和改进。

使用 MATLAB 的端到端自动化视觉检测工作流。

对于视觉检测,异常图像有时很少见或呈多样化。在这种情况下,您可以训练一个异常检测器。这是一种训练时只需使用正常图像的无监督学习。如果有足够数量的异常图像,则有监督学习应会派上用场。

在下一节中,您可以了解异常检测方法(无监督学习)和目标检测方法(有监督学习)的必要步骤和实用的 MATLAB 功能。

视觉检测过程中的数据准备

数据来自多个数据源,并且通常是非结构化的含噪数据,这使得数据准备和管理既困难又耗时。如果对数据集中的图像进行预处理,则可以提高异常检测的准确度。

使用 MATLAB 进行图像预处理

MATLAB 提供了若干 App,用来支持各种预处理方法。例如,通过 MATLAB 中的图像配准器,您可以探索各种算法来配准未对齐的图像,从而使人工智能模型更容易检测到缺陷。

配准估计器的截图,显示如何对齐一对六角螺栓的图像,以提高视觉检测的准确度。

MATLAB 中的配准估计器有助于简化图像预处理。

MATLAB 提供了自动化功能,用来加速标注过程。例如,图像和视频标注器可以应用自定义语义分割或目标检测算法,以标注图像或视频帧中的区域或目标。

视觉检测过程中的人工智能建模

视觉检测中所用异常检测方法的特征

可用于视觉检测的异常检测器包括:

  • 全卷积数据描述 (FCDD)
  • FastFlow
  • PatchCore

下表分别列出在训练和推断期间使用的这些异常检测方法的特征和性能。这些方法通过 Computer Vision Toolbox Automated Visual Inspection Library 提供。

训练方面 PatchCore FastFlow FCDD
输入图像大小 首选小到中(由于大图像存在内存限制) 首选小到中(由于大图像存在内存限制) 小到大(高分辨率图像)
模型大小 中到大(可随压缩比的值而变化) 中到大 小(最轻量级模型)
性能速度 快速 快速 最快
小样本训练机制 支持 不支持 不支持

视觉检测中的异常阈值和可解释人工智能

对于异常检测方法,异常阈值的自动计算有助于避免由于人为判断的不同而导致的差异。通过使用可解释的人工智能视图进行评估,可以浏览和解释分类结果。

viewAnomalyDetectionResults 函数的截图,该函数可帮助人们在视觉检测中理解和使用人工智能模型。

可解释的人工智能视图是在视觉检测中成功实现人工智能的关键。

视觉检测中用于有监督学习的预训练网络

将深度学习应用于有监督学习有两种方法。一种方法是从头开始构建并训练深度网络。另一种方法是调整和微调预训练神经网络,亦称迁移学习。这两种方法都很容易在 MATLAB 中实现。

使用深度网络设计器构建、编辑和训练深度学习网络

MATLAB 提供了深度网络设计器,可用于构建、可视化、编辑和训练深度学习网络。您还可以分析网络以确保网络架构定义正确,并在训练之前发现问题。

通过在 MATLAB 中使用来自外部平台的预训练网络,您既可以从 TensorFlow™、PyTorch® 导入网络和网络架构,也可以将其从 ONNX™ 模型格式导入和导出。您还可以使用并编辑这些预训练网络以实现迁移学习。

深度网络设计器的截图,显示可用于视觉检测的预训练神经网络。

深度网络设计器中提供有大量预训练模型。

检测和定位缺陷的目标检测

YOLOX 等目标检测用于对图像中的缺陷进行检测、定位和分类。YOLOX 目标检测模型采用一种单阶段、无锚点方法,有助于对小型目标进行检测。与以前的 YOLO 模型相比,该模型可以大幅减小模型大小并提高计算速度。用矩形感兴趣区域 (ROI) 标注的导出数据用于训练目标检测模型。

截图显示使用目标检测方法 YOLOX 对 PCB 进行异常检测的结果。

YOLOX 目标检测用于在视觉检测中发现细微异常。

视觉检测系统的部署

代码生成和部署框架

深度学习模型必须集成到更大的系统中才能发挥作用。MATLAB 提供了代码生成框架,使得在 MATLAB 中开发的模型可以随处部署,而不必重写原始模型。这样,您便能够在整个系统中测试和部署模型。

先部署到嵌入式硬件平台

MATLAB 使您能够将深度学习网络部署到各种嵌入式硬件平台,例如 NVIDIA® GPU、Intel® 与 ARM® CPU、Xilinx® 以及 Intel SoC 和 FPGA。借助 MATLAB,您可以轻松探索和部署到嵌入式硬件。

示意图显示将深度学习网络从 MATLAB 部署到各种嵌入式硬件平台的工作流。

MATLAB 支持面向各种嵌入式硬件平台的代码生成功能。

另请参阅: MATLAB 在图像处理和计算机视觉领域的应用, Deep Learning Toolbox, 模式识别, 计算机视觉, 制造分析