一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于机器视觉的自动化缺陷检测的制作方法

2022-08-13 16:28:59 来源:中国专利 TAG:

基于机器视觉的自动化缺陷检测
1.相关申请的交叉引用
2.本技术要求于2019年12月19日提交的、题为“automated machine vision-based defect detection”的美国临时申请第62/950,440号的权益,该临时申请通过引用以其整体并入本文以用于所有目的。
技术领域
3.本公开总体上涉及制造部件的检查,并且更具体地涉及基于机器视觉的自动化缺陷检测。
4.背景
5.识别缺陷是许多制造过程中的重要组成部分。现有系统中的质量检验包括目视确认(visual confirmation),以确保部件位于正确的位置,具有正确的形状、颜色或纹理,并且没有任何瑕疵(诸如划痕、针孔和杂质颗粒)。然而,由于人类视觉的局限性和人为错误,人类目视检查可能并不可靠。另外,检查量、产品多样性和缺陷可能出现在产品上的任何地方以及可以是任何大小的可能性对检查人员来说都是一个沉重的负担。因此,需要有效的系统和方法来代替机器制造部件的人类目视检查。
6.概述
7.以下给出了本公开的简要概述,以便提供对本公开的特定实施例的基本理解。本概述不是本公开的广泛综述,也不识别本公开的重要/关键要素或描述本公开的范围。其唯一的目的是以简化的形式给出本文公开的一些概念,作为后面给出的更详细的描述的序言。
8.一般而言,本公开的特定实施例描述了用于基于机器视觉的自动化缺陷检测的系统和方法。该方法包括在训练模式和在推理模式下操作。该方法包括训练神经网络以检测缺陷。训练神经网络包括接收多个历史数据集,该多个历史数据集包括与一个或更多个已知缺陷对应的多个训练图像,将每个训练图像转换成对应的矩阵表示,以及将每个对应的矩阵表示输入到神经网络中,以基于一个或更多个已知缺陷来调整加权参数。加权参数对应于矩阵表示的维度。该方法还包括获得对象的测试图像。测试图像不是历史数据集的一部分。
9.该方法还包括提取测试图像的部分作为输入到神经网络中的多个输入图像块(patch),每个输入图像块对应于测试图像的一个提取部分。该方法还包括将每个输入图像块作为相应的矩阵表示输入到神经网络中,以使用加权参数自动生成每个输入图像块的概率分数。每个输入图像块的概率分数指示该输入图像块包括预测缺陷的概率,并且基于每个输入图像块的概率分数生成测试图像的缺陷分数。缺陷分数指示对象的条件。
10.输入图像块可以包括统一的高度和统一的宽度。输入图像块可以包括测试图像的重叠部分。可以对齐输入图像块,使得每个输入图像块紧邻多个输入图像块中的一个或更多个其他输入图像块。
11.神经网络可以包括以下中的一个或更多个:卷积层、最大池化层、平坦化层和全连
接层。可以训练神经网络,以使用加权参数准确地输出输入图像块具有未知缺陷的概率分数。该方法还可以包括基于概率分数生成输入图像块的热图(heat map)。在将测试图像传递到神经网络中之前,可以对测试图像进行预处理以去除背景并仅以ycbcr格式的亮度(luma)分量表示图像。
12.本公开的其他实现包括被配置为执行所描述方法的对应设备、系统和计算机程序。这些其他实现可任选地包括以下特征中的一个或更多个。例如,提供了一种服务器系统,其包括接口,该接口被配置为接收多个历史数据集以及对象的测试图像,该多个历史数据集包括与一个或更多个级别的已知缺陷对应的多个图像。该测试图像不是历史数据集的一部分。该系统还包括存储器,该存储器被配置为存储历史数据集和测试图像。
13.该系统还包括与神经网络相关联的处理器。被配置用于训练神经网络来检测缺陷。训练神经网络包括将每个训练图像转换成对应的矩阵表示,并将每个对应的矩阵表示输入到神经网络中,以基于一个或更多个已知缺陷来调整加权参数。加权参数对应于矩阵表示的维度。
14.处理器还被配置用于提取测试图像的部分作为用于输入到神经网络中的多个输入图像块,每个输入图像块对应于测试图像的一个提取部分。处理器还被配置用于将每个输入图像块作为相应的矩阵表示输入到神经网络中,以使用加权参数自动生成每个输入图像块的概率分数。每个输入图像块的概率分数指示该输入图像块包括预测缺陷的概率,并且基于每个输入图像块的概率分数生成测试图像的缺陷分数。缺陷分数指示对象的条件。
15.还提供了一个或更多个非暂时性计算机可读介质,该介质上存储有一个或更多个程序,以用于由计算机执行来执行所描述的方法和系统。下面参考附图进一步描述这些和其他实施例。
16.附图简述
17.通过参考下面结合附图进行的描述,可以最好地理解本公开,这些附图示出了本公开的特定实施例。
18.图1a示出了根据一个或更多个实施例的用于实现本公开的各种系统和方法的示例网络体系结构的图示。
19.图1b示出了根据一个或更多个实施例的用于自动检查制造部件的示例成像和处理系统。
20.图2示出了根据一个或更多个实施例的用于基于机器视觉的自动化缺陷检测的过程流程图。
21.图3a和图3b示出了根据一个或更多个实施例的针对部件检查而捕获的图像。
22.图4a和图4b示出了根据一个或更多个实施例的由自动化检查而产生的示例输出图像。
23.图5示出了根据一个或更多个实施例的用于显示经处理和检查的图像的示例用户界面。
24.图6示出了根据一个或更多个实施例的被实现来自动检测缺陷的示例神经网络体系结构。
25.图7a、图7b和图7c示出了根据一个或更多个实施例的用于基于机器视觉的自动化缺陷检测的示例方法。
26.图8示出了可与本公开的各种实施例一起使用的计算机系统的特定示例。
27.特定实施例的描述
28.现在将详细参考本公开的一些具体示例。这些具体实施例的示例在附图中示出。尽管结合这些具体实施例描述了本公开,但将理解,并不打算将本公开限制到所描述的实施例。相反,旨在覆盖如可以包括在如所附权利要求所限定的本公开的精神和范围内的替代方案、修改及等同物。
29.在下面的描述中,阐述了许多具体细节以便提供对本公开的透彻理解。本公开的特定示例实施例可以在没有这些具体细节中的一些或全部的情况下实现。在其他情况下,没有详细描述众所周知的过程操作,以免不必要地使本公开模糊。
30.为了清楚起见,有时将以单数形式描述本公开的各种技术和机制。然而,应当注意,除非另有说明,否则一些实施例包括技术的多次迭代或机制的多个实例。此外,本公开的技术和机制有时将描述两个实体之间的连接。应当注意,两个实体之间的连接并不一定意味着直接、不受阻碍的连接,因为两个实体之间可能存在各种其他实体。因此,除非另有说明,否则连接并不一定意味着直接、不受阻碍的连接。
31.综述
32.本公开的一般目的(将在随后对其进行更详细地描述)是提供一种用于自动化的计算机视觉解决方案的系统和方法,以取代机器制造部件的人类目视检查。人类对部件的目视检查通常需要30秒到1分钟,并且总是包括人为错误的可能性。所描述的系统和相关联的方法可以显著地减少检查时间,并在确定有缺陷的部件方面提供提高的准确性。
33.所描述的系统包括光源和高分辨率成像设备,用于捕获机械制造部件的高分辨率图像。对图像进行处理以去除背景和其他噪声,对齐图像,并实现其他图像增强。最后,图像被分割成输入图像块,用于输入到基于计算机视觉的模型或神经网络中进行分析。
34.神经网络可以包括各种计算层,包括至少一系列卷积和最大池化层、平坦化层以及一个或更多个全连接层。训练神经网络以准确地输出每个输入图像块的概率分数,该概率分数对应于该输入图像块包括缺陷图像的可能性。这种缺陷可能是划痕、凹痕或不符合部件质量标准的任何其他条件。
35.然后可以基于每个输入图像块的概率分数为该部件的整个图像生成总体缺陷分数。如果总体缺陷分数低于预定阈值,则对应于图像的部件可被分类为令人满意的。然而,如果总体缺陷分数大于预定阈值,则该部件可被分类为有缺陷的。有缺陷的部件可以从装配线上移除。在一些实施例中,有缺陷的部件可以被丢弃或修复以满足质量标准。
36.可以在用户界面上生成和显示各种输出图像。例如,可以生成热图以指示每个输入图像块的概率分数。作为另一示例,可以将具有检测到的缺陷的区域的轮廓覆盖在捕获的图像上以定位缺陷。
37.与人类目视检查相比,这种成像技术可以提供更准确和精确的部件分析。通过对图像进行预处理,可以增强表面特征以实现可视化。所描述的技术还可以在不降低检测质量的情况下提供在给定量的时间内对更多部件的更快浏览。
38.缺陷检测过程可以在装配线中的不同点处实现,以便降低生产成本或识别沿装配线的故障组件。例如,为了避免不必要的生产成本,在对有缺陷的部件进行附加的加工或处理之前,可以由所描述的系统识别和丢弃有缺陷的部件。作为另一示例,如果在装配线中的
特定点之后发现高百分比的类似缺陷,则所描述的技术可以确定和识别与处理或制造组件有关的问题。
39.本装置、系统和方法的其他目标和优点对于读者来说将变得明显,并且这些目标和优点意欲在本发明的范围内。
40.为了实现上述和相关的目标,所公开的装置、系统和方法可以以附图中所示的形式来实现,然而,提请注意以下事实,即附图仅是说明性的,并且可以在所示的具体构造中进行改变。
41.详细实施例
42.现在描述性地转向附图,附图中类似的附图标记在多个视图中表示类似的元素,附图示出了用于基于机器视觉的自动化缺陷检测的系统和方法。
43.根据本公开的各种实施例,图1a示出了根据一个或更多个实施例的用于实现本公开的各种系统和方法的示例网络体系结构100的图示。网络体系结构100包括能够通过网络110通信地连接到一个或更多个服务器系统112和114的多个客户端设备(或“用户设备”)102-108。在一些实现中,网络110可以是公共通信网络(例如,因特网、蜂窝数据网络、电话网络上的拨号调制解调器)或专用通信网络(例如,专用lan、租用线路)。
44.在一些实施例中,服务器系统112和114包括一个或更多个处理器和存储器。服务器系统112和114的处理器执行存储在存储器中的计算机指令(例如,网络计算机程序代码)以接收和处理从各种客户端设备接收的数据。在一些实施例中,服务器系统112是被配置为接收和存储历史数据集、参数和神经网络的其他训练信息的内容服务器。在一些实施例中,服务器系统114是被配置为传输和/或路由包括网络消息的网络数据分组的调度服务器(dispatch server)。在一些实施例中,内容服务器110和调度服务器114被配置作为单个服务器系统,该单个服务器系统被配置为执行两个服务器的操作。
45.在一些实施例中,网络体系结构100还可以包括能够经由网络110通信地连接到客户端设备102-108以及服务器系统112和114的数据库116。在一些实施例中,网络数据或其他信息(诸如计算机指令、历史数据集、参数和神经网络的其他训练信息)可以存储在数据库116中和/或从数据库116中检索。
46.客户端设备102-108的用户访问服务器系统112以参与网络数据交换服务。例如,客户端设备102-108可以执行可用于访问网络数据交换服务的web浏览器应用。在另一示例中,客户端设备102-108可以执行特定于网络的软件应用(例如,在诸如计算机或智能手机等设备上运行的联网数据交换“app”)。
47.与客户端设备102-108交互的用户可以通过分发和检索数字内容,例如文本注释(例如,更新、公告、答复)、数字图像、视频、在线订单、支付信息、活动更新、位置信息、计算机代码和软件或其他适当的电子信息,来参与由服务器系统112提供的网络数据交换服务。在一些实施例中,网络体系结构100可以是被配置用于边缘计算的分布式、开放信息技术(it)体系结构。
48.在一些实现中,客户端设备102-108可以是计算设备,例如膝上型或台式计算机、智能手机、个人数字助理、便携式媒体播放器、平板计算机、相机或可用于通过网络进行通信的其他适当的计算设备。在一些实现中,服务器系统112或114可以包括一个或更多个计算设备,例如计算机服务器。在一些实现中,服务器系统112或114可以表示一起工作以执行
服务器计算机(例如,云计算)的动作的多于一个的计算设备。在一些实现中,网络110可以是公共通信网络(例如,因特网、蜂窝数据网络、电话网络上的拨号调制解调器)或专用通信网络(例如,专用lan、租用线路)。
49.在各种实施例中,客户端设备和/或服务器可以被实现为成像和图像处理系统。图1b示出了根据一个或更多个实施例的用于自动检查制造部件的这样的示例成像和处理系统150。在各种实施例中,系统150包括平台152,平台152具有围绕平台定位的一个或更多个光源160。对象310可以放置在平台的表面上。在一些实施例中,平台可以被配置成将对象310固定在期望的位置或取向。对象固定机构可以包括紧固件、夹具、基于真空的保持件等。尽管示出了四个光源160被定位在平台152的拐角处,但各种实施例可包括定位在各种其他位置以提供对象310的期望照明的更多或更少的光源。在一些实施例中,光源160的位置可以被配置成在操作期间改变到期望位置,以在对象上提供期望的照明。可以实现用于定位光源的任何合适的运动机构(例如马达等)。
50.系统150还可以包括相机154。在各种实施例中,相机154是被配置成为平台上的对象拍摄高分辨率静止图像的高分辨率相机。然后,可以将捕获的图像传输到处理设备156,处理设备156可以应用图像处理算法并实现本文描述的基于计算机视觉的模型以自动检测对象上的缺陷。如本文所使用的,基于计算机视觉的模型可以包括神经网络。
51.在各种实施例中,处理设备156可以是边缘计算设备,其被配置为使用本文描述的计算机视觉模型来本地处理从相机154捕获的图像。在一些实施例中,处理设备156是客户端设备(例如相机154)中的嵌入式设备,其执行本文描述的图像处理。在一些实施例中,嵌入式设备是微控制器单元(mcu)或其他嵌入式处理器或芯片。在一些实施例中,客户端设备102-108可以用作处理设备156以执行图像处理。在一些实施例中,处理设备156可以是服务器112和/或114,其被实现为本地计算机或专用lan上的服务器以处理所捕获的图像。在一些实施例中,服务器112和/或114可以被实现为集中式数据中心,为由处理设备实现的神经网络提供更新和参数。这样的边缘计算配置可以允许有效的数据处理,因为可以在源附近处理大量数据,从而减少因特网带宽使用。这既降低了成本,又确保了应用可以在远程位置有效地使用。此外,处理数据而无需将其放入公共云的能力为敏感数据增加了有用的安全层。
52.图2示出了根据一个或更多个实施例的用于基于机器视觉的自动化缺陷检测的过程流程图。在操作202,获得用于成像的对象。在特定实施例中,对象310是机器制造的部件。例如,对象310可以是用于汽车的装饰件,例如模塑装饰物。
53.在操作204,将对象定位到期望的取向。例如,部件可以被定位并固定在平台152上。在一些实施例中,这样的部件可以通过各种自动化过程加工并直接放置在平台上。在一些实施例中,平台可以集成到装配线中,使得可以在制造过程中的不同时间检查部件。例如,汽车装饰部件可能有一个划痕(或多个划痕),这不符合预定的质量标准。这些有缺陷的部件随后可以被丢弃或进一步处理以解决缺陷。没有指示任何划痕或缺陷的部件是可以接受的,并能通过质量标准进行进一步处理。
54.一旦以期望取向被定位在平台上,对象暴露于足够的照明并且由相机154捕获静止图像,在操作206,相机154可获得对象的高分辨率图像。例如,捕获图像可包括约8兆字节,或高于约1800
×
1200像素的分辨率,或高于约300像素/英寸的有效分辨率。参考图3a,
示出了对象310的高分辨率图像300。如图所示,图像300包括对象310以及背景312和阴影314。
55.在操作208,预处理该高分辨率图像以准备好该图像用于输入到所描述的神经网络中。在一些实施例中,可以对图像进行预处理以锐化图像从而增强成像对象的精细细节。在一些实施例中,其他预处理阶段可以包括对象的自动对齐、背景移除、颜色移除、对比度增强和其他图像质量增强。
56.参考图3b,示出了根据一个或更多个实施例的对象310的预处理或增强图像320的示例。已经对图像320进行了预处理以去除背景并提高对比度。此外,图像320仅以单个通道表示,具体地,以ycbcr格式的y分量表示。这种颜色去除可以增强存在的任何表面缺陷。
57.在操作210,提取增强图像的部分作为输入图像块。在各种实施例中,系统提取预处理图像的包括相同像素维度的一致部分。例如,每个输入图像块的维度可以是64
×
64像素。然而,输入图像块的其他大小可以由系统的配置确定。输入图像块可以被提取为对应于y分量的图像的二维片段(segment)。然而,在一些实施例中,如果在预处理图像中包括某种颜色分量或通道,则图像块可以包括第三维度。
58.图3b中示出了输入图像块的几个示例。在一些实施例中,输入图像块包括增强图像的重叠部分。例如,图像块322、324和326包括图像320的重叠部分。为了说明的目的,输入图像块322被示出为以不同的线条图案勾勒。在这样的实施例中,每个图像块可以与相邻图像块重叠相同的预定量。通过输入重叠图像,对象的部分可以被模型分析不止一次,从而提高最终缺陷分数的准确性。然而,通过重叠输入图像块,将需要更多的输入图像块来输入整个增强图像经过神经网络,从而需要附加的处理时间和资源。
59.作为另一个示例,输入图像块可能正好与相邻图像块邻接。这允许整个图像被馈送到神经网络中,同时最小化必要的图像块数量,从而减少所需的处理时间和资源。例如,图像块330、331和332彼此紧邻,使得相邻图像块边缘处的像素在图像320中彼此紧邻地定位。
60.在其它实施例中,提取的图像块可以分隔开多个像素,从而进一步降低处理要求,但由于对象或增强图像的并非所有部分都将被输入到神经网络中的事实,因此牺牲了一些精度。例如,图像块340、341和342彼此分隔开设定距离。
61.在操作212,输入图像块被传递到所描述的基于计算机视觉的模型或神经网络中。在各种实施例中,输入图像块作为像素矩阵输入。例如,系统可以将每个图像块转换成具有与图像块的像素维度相等的维度的矩阵。每个像素可以由一个矩阵元素呈现,并基于像素的阴影分配一个值。例如,每个矩阵元素可以对应于集合{0,1,2,

255}中的一个整数,其中0对应于黑色,255对应于白色。在所描述的特定示例中,每个输入图像块是64
×
64像素。这样的输入图像块将产生一个64
×
64
×
1的矩阵。
62.然后,根据系统体系结构,输入图像块可以顺序地或并行地馈入神经网络。如前所述,系统体系结构可以包括处理设备,该处理设备被实现为嵌入式目标,该嵌入式目标被设计用于较大系统内的具体控制功能,通常具有实时计算约束。这种嵌入式目标可以作为通常包括硬件和机械部件的完整设备的一部分被嵌入。例如,嵌入式目标可以是相机的嵌入式微控制器单元(mcu)或嵌入式处理器,其实现神经网络。在各种实施例中,神经网络存储在闪存或对应于嵌入式目标的其他存储设备中,或者存储在相机的其他可访问存储器中。
在其他实施例中,处理设备可以实现为本地或基于云的服务器。在边缘计算配置中,可以在源附近处理大量数据,从而减少互联网带宽的使用,允许并行输入图像。然而,在处理设备被实现为集中式基于云的服务器的情况下,可能需要附加的处理时间和功率来将图像传输到服务器进行处理,这需要顺序输入图像。
63.在一些实施例中,只有包含对象的部分的输入图像块被输入到神经网络中。可以实现各种对象识别技术以识别不包括对象的任何部分的输入图像块,例如图像块340和341。这可以通过防止分析不包括成像对象的任何部分的输入图像块来降低总体处理需求。
64.在操作214,由基于计算机视觉的模型针对传递到模型中的每个输入图像块输出概率分数。例如,可以为每个输入图像块确定0到1之间的概率分数,该概率分数指示输入图像块中的图像包括缺陷的可能性。因此,分数为0将表示未检测到缺陷,分数为1将表示检测到缺陷。换句话说,概率分数为1意味着模型对输入图像块中示出的缺陷有100%的确信度,而输出概率分数为0.87意味着模型对缺陷的存在有87%的确信度。
65.在各种实施例中,训练该模型以基于几个因素确定概率分数。例如,如输入图像块中的图像所表示的部件上划痕的大小和深度可能会影响概率分数。在各种实施例中,概率分数可以被可视化以供用户查看。参考图4a,示出了反映所确定的概率分数的输入图像块的示例热图410。热图410的坐标轴指示图像大约是3840
×
880像素。
66.包括在图4a中的刻度412指示概率分数用从黑色(指示分数为0.00)到白色(指示分数为1.00)的阴影来表示。在各种实施例中,基于该图像块内缺陷的预测存在,对图像410的对应于该输入图像块的区域进行阴影化。因此,阴影图像块指示部件上估计缺陷的位置和严重程度。图4a中的阴影图像块被示为重叠,指示提取的输入图像块的重叠部分。
67.在操作216,确定对象的总体缺陷分数。可以基于每个输入图像块的概率分数来确定总体缺陷分数。在一些实施例中,总体缺陷分数是累积概率分数的最大值。例如,p(s1)标识第一个图像块的缺陷概率,p(s2)标识第二个图像块的缺陷概率,以此类推,直到第n个图像块的p(sn)。总体缺陷分数可确定为max{p(s1),p(s2),

,p(sn)}。然而,在一些实施例中,可以基于其他方法来确定总体缺陷分数。例如,可以基于累积概率分数的平均值来确定总体缺陷分数。
68.在一些实施例中,如果总体缺陷分数高于预定阈值,则确定部件有不可接受的缺陷。例如,总体缺陷分数大于0.90的部件可能被认为是具有不可接受的缺陷。返回参考图4a的示例,概率分数的最大值为0.93,因此总体缺陷分数为0.93。
69.参考图4b,示出了根据一个或更多个实施例的由所述描的系统产生的示例图像420。图像420描绘了具有与由模型检测到的缺陷相对应的轮廓区域的部件。在一些实施例中,轮廓区域可以对应于包括在输入图像块中的图像的具有高于预定阈值的概率分数的部分。例如,轮廓区域可以对应于分配的概率分数大于0.90的输入图像块。
70.可以在用户界面上显示先前描述的各种图像中的一个或更多个。参照图5,示出了根据一个或更多个实施例的显示经处理和检查的图像的示例用户界面500。图像300、320和420显示在用户界面500上。这可以允许系统的用户可视地查看由模型执行的分析。在一些实施例中,可以显示指示部件的可接受性的质量控制状态510。在一些实施例中,还可以示出总体缺陷分数。
71.在操作218,可基于确定的缺陷分数进一步处理对象。在一些实施例中,所描述的
缺陷检测方法可以在加工之后执行,以分析最终输出的部件。被发现可接受的部件(如缺陷分数在0.90或0.90以下的部件)可转移以进行包装或装运。然而,所描述的模型可以在装配线的不同点处实现,也可以在装配线的多个点处实现。
72.在一些实施例中,可以修复部件以纠正缺陷。例如,部件可能被自动转移到装配线的另一个区域,以纠正发现的缺陷。作为另一个示例,可以处理掉有缺陷的部件。在一些实施例中,有缺陷的部件可以再加工或再循环以形成新的部件。在不同的点处实现基于计算机视觉的模型可以在对缺陷部件进行进一步制造之前识别有缺陷的部件,节省资源、材料和成本。该模型提供的快速自动缺陷检测也可以用于制造过程中的不同点,以便管理装配线特定组件的性能并确定潜在的问题。例如,如果在装配线中的b点之后发现很高百分比的部件有缺陷,但在前一个a点之后相同的部件是可以接受的,那么这可能表明从b点开始的加工工具有问题。
73.基于计算机视觉的模型可以是具有各种计算层的神经网络。参考图6,示出了根据一个或更多个实施例的示例神经网络体系结构600,该体系结构被实现以自动检测缺陷。如图所示,神经网络600包括卷积层612、最大池化层614、平坦化层616、全连接层618和全连接层620。
74.输入图像块602可以被输入到卷积层612中。在各种实施例中,输入图像块602可以是图像的提取部分,例如输入图像块330。在一些实施例中,输入图像块602可以是具有未知缺陷状态的图像的一部分。在一些实施例中,输入图像块602可以是具有已知对应缺陷的训练图像。例如,训练图像可以包括为0(指示没有缺陷)或为1(指示缺陷)的对应概率分数。
75.在各种实施例中,卷积层612将特定维度的滤波器k应用于输入图像块的像素矩阵。例如,滤波器可以包括3x3x1的维度。在一些实施例中,滤波器以步长8应用。卷积操作从输入图像块提取高级特征。卷积层输出经卷积的矩阵。卷积层可以对矩阵应用相同的填充或有效的填充以输出经卷积的矩阵。
76.然后将经卷积的矩阵输出馈入最大池化层614。在各种实施例中,最大池化层通过返回经卷积矩阵的被最大池化内核覆盖的部分中的最大值来执行经卷积矩阵的最大池化。例如,池大小可以是2x2x1。在一些实施例中,神经网络可以应用平均池化函数而不是最大池化,平均池化函数返回经卷积矩阵的被最大池化内核覆盖的部分中所有值的平均值。在一个示例中,最大池化层的输出可以是64个单元的矩阵(64x64矩阵)。
77.因此,池化层可以减小经卷积特征的空间维度,以便通过降维来降低处理数据所需的计算能力,以及提取突出特征以维持训练模型的过程。在一些实施例中,神经网络可以包括一系列连续的卷积和最大池化层。例如,神经网络600可以包括三个连续的卷积池化对615,其中最大池化层的输出作为输入被馈送到后续卷积池化对的卷积层中。卷积和最大池化层可以实现用于初始化的截断正态分布(truncated normal distribution)和修正激活函数。因此,每个卷积池化对615可以将64个单元的矩阵作为输入并输出64个单元的矩阵。
78.神经网络可以包括基于可用处理资源和期望性能的任意数量的连续卷积池化对。三个连续卷积池化对的实现可以使图像处理的延迟最小化,同时保持预测中的期望精度水平。例如,在神经网络中使用三个卷积池化对可以允许对测试图像的每个输入图像块进行全面分析,以在大约5秒内确定对象的缺陷分数。基于在每个输入图像块上使用的滤波器的放置数量,使用步长8可进一步优化图像处理(或运行时间(runtime))的精度和延迟。因此,
推理过程可以被高度优化以从移动设备或受限制的嵌入式设备运行。
79.最后的最大池化层的输出随后被馈入平坦化层616,以将输出平坦化为列向量。然后将列向量输出馈入全连接层618和620。在各种实施例中,全连接层可以是多层感知器(前馈神经网络)。在一些实施例中,第一全连接层618实现修正线性单元(relu)作为激活函数。在示例实施例中,第一全连接层618可以包括128个神经元。然而,可以在不同的实施例中实现更多或更少数目的神经元。在一些实施例中,第二全连接层620实现sigmoid激活函数。在一些实施例中,全连接层可以实现用于初始化的截断正态分布。
80.在训练模式期间,神经网络600可被配置为产生特定输入图像块包括缺陷的概率。在各种实施例中,如果训练图像包括已知缺陷,则输出630可以被设置成概率分数为1,或者如果训练图像不包括任何缺陷,则输出630可以被设置成概率分数为0。利用已知的概率分数,可以使用反向传播更新全连接层中的权重(或参数)。例如,可以通过带有adam优化算法的随机梯度下降算法来更新参数。在一些实施例中,这可以通过使用softmax函数将输出层神经元的激活值转换为概率来实现。
81.在一些实施例中,神经网络的训练可以在全局或云网络中的集中式服务器系统处执行。在一些实施例中,训练数据,诸如权重、参数和训练图像,可以存储在集中式服务器系统中。然后,可以将更新的权重从集中式服务器系统传输到本地边缘计算设备,以用于更有效的图像处理。如前所述,本地边缘计算设备可以是客户端设备(诸如相机154)的嵌入式目标,例如mcu或嵌入式处理器。在一些实施例中,神经网络的参数可以基于新的训练数据在集中式服务器处周期性地更新。然而,在一些实施例中,可以在本地边缘计算设备处执行神经网络的训练。
82.在一些实施例中,一旦预定数量的训练图像被输入到模型中,神经网络就被充分训练。在一些实施例中,一旦神经网络能够以期望的准确率生成预测,则神经网络就被充分训练。
83.一旦被完全训练,神经网络然后可以在推理模式中操作,以将具有未知缺陷特性的输入图像块作为输入602。然后,神经网络使输入通过所描述的层,并基于更新的权重在0和1之间为输入图像块生成输出630,以指示输入图像块包括缺陷的概率。
84.参考图7a、图7b和图7c,示出了用于训练和操作神经网络以进行基于计算机视觉的缺陷检测的示例方法700。神经网络可以是神经网络600,并且可以包括一个或更多个计算层702。如前面所讨论的,可包括以下层中的一个或更多个:卷积层、最大池化层、平坦化层和全连接层。根据一个或更多个实施例,图7b示出了神经网络在训练模式710中的操作的示例,图7c示出了神经网络在推理模式730中的操作的示例。
85.在训练模式下,利用训练图像的数据集对神经网络进行训练以检测缺陷。当在训练模式710中操作时,在操作711处接收多个历史数据集。历史数据集可以包括对应于一个或更多个已知缺陷的多个训练图像717。在一些实施例中,训练图像可以表示或对应于从一个或更多个对象的图像中提取的输入图像块。在一些实施例中,训练图像可以包括指示训练图像是否包括对象的对应部分上的缺陷的对应值。例如,如果训练图像示出相关缺陷,则训练图像可以与概率分数1相关联,或者如果训练图像未示出相关缺陷,则训练图像可以与概率分数0相关联。这些值可以存储在训练图像的图像文件中,例如作为示例存储在元数据中。
86.在操作713,将每个训练图像转换成对应的矩阵表示。如前所述,矩阵表示可以对应于训练图像的像素维度。例如,训练图像可以是64x64像素并且仅在一个颜色通道(亮度)中表示。因此,对应矩阵的维度可以是64x64x1。
87.在操作715,将每个对应的矩阵表示输入到神经网络中,以基于一个或更多个已知缺陷来调整神经网络的各个层中的加权参数719。在一些实施例中,加权参数719可以对应于矩阵表示的维度。已知的概率分数可以与矩阵表示一起输入到神经网络中,以生成和更新神经网络的全连接层中的参数。因此,神经网络可以被训练(721)以使用加权参数719准确地输出输入图像块具有未知缺陷的概率分数。
88.在一些实施例中,一旦达到期望的错误率,可确定预测性商家关联模型被充分训练。例如,期望的错误率可以是0.00001%(或者准确率为99.9999%)。在其他实施例中,可以在设定数目的轮次(epoch)或迭代之后,例如在已经将预定数量的训练图像输入到模型中之后,确定模型被充分训练。例如,当1000个训练图像连同已知的概率分数已经被输入到神经网络中时,该模型可以是被充分训练的。一旦被充分训练,神经网络可以被实现以在推理模式730下检测新图像中的缺陷。
89.当在推理模式730下操作时,在操作731处获得对象(诸如对象310)的测试图像743。测试图像743不是历史数据集的一部分,并且可以包括具有未知的可能缺陷的部分。例如,可以在制造过程期间在装配线上的各种不同点之一处获得部件的测试图像743。然后,在操作733,在输入到神经网络用于分析之前,对测试图像进行预处理。在一些实施例中,对测试图像进行预处理以从部件的图像中移除背景。在一些实施例中,对测试图像进行预处理以仅以ycbcr格式的亮度分量表示图像。如先前参考操作208所讨论的,可以在测试图像上实现各种其他图像预处理技术。
90.在操作735,提取测试图像的部分作为用于输入到神经网络中的多个输入图像块745。例如,输入图像块可以是参考图3b描述的输入图像块中的任何一个。每个输入图像块745可以对应于测试图像的一个提取部分。输入图像块的像素维度可以与训练图像相同。
91.在操作737,每个输入图像块被输入到神经网络中,以使用加权参数719自动生成每个输入图像块745的概率分数749。每个输入图像块745可以作为相应的矩阵表示747(类似于训练图像717)输入到神经网络中。如上所述,输入图像块可以串行或并行地输入到神经网络中。每个输入图像块的概率分数749指示该输入图像块包括预测缺陷的概率。
92.一旦确定了对应于测试图像的每个部分的输入图像块的概率分数,在操作739,基于每个输入图像块的概率分数为测试图像生成缺陷分数751。缺陷分数751可以指示对象的条件。在一些实施例中,缺陷分数可以是所确定的概率分数749中的最大值。例如,高于预定阈值的缺陷分数可被确定为不适合销售或使用。作为另一个示例,缺陷分数可以是概率分数的平均值。
93.缺陷分数高于预定阈值的部件可以被处理掉,使得它们不被使用。在一些实施例中,可进一步处理有缺陷的部件以修复或移除所识别的缺陷。对图像的分析可以被可视化以供系统的用户查看。例如,在操作741,可以基于概率分数生成输入图像块的热图,例如热图410。可以生成其他输出图像,例如图像420。这些输出图像可以显示在用户界面,例如界面500,使得系统的用户可以查看检测到的缺陷。这可以允许用户定位缺陷以便移除或修复它们。
94.在一些实施例中,可以在操作743确认测试图像或对应输入图像块内的预测缺陷,并使用该缺陷进一步训练和微调神经网络。例如,概率分数可以由用户在显示输入图像块图像和对应的概率分数的用户界面处确认。然后,用户可以确认图像或特定图像块是否显示缺陷。如果用户确认存在缺陷,则输入图像块的相关概率分数可以被设置为1。如果用户确认不存在缺陷,则输入图像块的相关概率分数可以改变为0。
95.在操作743处被选择以用于确认的输入图像块可以从在推理模式期间获得的一个或更多个不同的测试图像中随机选择。然而,在一些实施例中,可以选择具有在预定范围内的概率分数的输入图像块来进行确认。例如,可以选择接收概率分数在0.4和0.6之间的输入图像块进行确认。这些图像可能对应于神经网络无法以足够的确定性识别缺陷的实例。
96.输入图像块一旦被确认,就可以在训练模式期间被输入到神经网络中,以细化神经网络的加权参数。例如,该方法可以返回到操作713或715,以转换并输入经确认的输入图像块作为具有确认的概率分数的训练图像。在一些实施例中,经处理的输入图像块被传回,来以规则的批大小(batch size)重新训练神经网络,该批大小可包括预定数量的经处理的输入图像块,例如100个输入图像块。例如,一批经确认的输入图像块可以包括在操作711处接收的历史数据集。随着时间的推移,随着网络看到更多的示例,这改善了网络性能。
97.参考图8,示出了可用于实现本公开的特定示例的计算机系统的特定示例。例如,根据上述各种实施例,计算机系统800可以表示客户端设备、服务器或其他边缘计算设备。根据特定示例实施例,适于实现本公开的特定实施例的系统800包括处理器801、存储器803、加速器805、接口811和总线815(例如,pci总线或其他互连结构)。当在适当的软件或固件的控制下动作时,处理器801负责训练和实现所描述的计算机模型和神经网络。处理器还可以负责控制相机的操作功能,并在客户端设备和服务器系统之间通过网络传输数据。各种特殊配置的设备也可用于代替处理器801或者附加于处理器801被使用。完整的实现也可以在定制硬件中完成。
98.接口811可以包括单独的输入和输出接口,或者可以是支持这两种操作的统一接口。当在适当的软件或固件的控制下动作时,处理器801负责诸如实现神经网络或基于计算机视觉的模型的任务。各种特殊配置的设备也可用于代替处理器801或者附加于处理器801被使用。完整的实现也可以在定制硬件中完成。接口811通常被配置为通过网络发送和接收数据分组或数据片段。设备支持的接口的特定示例包括以太网接口、帧中继接口、电缆接口、dsl接口、令牌环接口等。通常,这些接口可以包括适合于与适当介质通信的端口。在某些情况下,它们还可以包括一个独立的处理器,并且在某些情况下还可以包括易失性ram。独立处理器可以控制诸如分组交换、媒体控制和管理的通信密集型任务。
99.此外,可以提供各种非常高速的接口,例如快速以太网接口、千兆以太网接口、atm接口、hssi接口、pos接口、fddi接口等。通常,这些接口可以包括适合于与适当介质通信的端口。在某些情况下,它们还可以包括一个独立的处理器,并且在某些情况下还可以包括易失性ram。独立处理器可以控制诸如分组交换、媒体控制和管理的通信密集型任务。
100.根据特定示例实施例,系统800使用存储器803来存储数据和程序指令,并维护本地侧缓存。例如,程序指令可以控制操作系统和/或一个或更多个应用的操作。存储器(一个或多个)还可以被配置为存储接收的元数据和批量请求的元数据。
101.在一些实施例中,系统800还包括图形处理单元(gpu)809。如上所述,gpu 809可被
实现为在独立的线程上处理每个像素。在一些实施例中,系统800还包括加速器805。在各种实施例中,加速器805是可以与图形处理单元分离的渲染加速器芯片。加速器805可以被配置为通过并行处理像素来加速整个系统800的处理,以防止系统800的过载。例如,在某些情况下,可以处理超高清图像,超高清图像包括许多像素,例如dci 4k或uhd-1分辨率。在这样的情况下,过量的像素可能比能够在标准gpu处理器(例如gpu 809)上处理的要多。在一些实施例中,加速器805可以只在预期或检测到高系统负载时使用。
102.在一些实施例中,加速器805可以是与cpu(例如处理器801)分离的单元中的硬件加速器。加速器805可以实现自动并行化能力,以便在共享存储器多处理器机器中同时利用多个处理器。加速器805体系结构的核心可以是混合设计,该设计使用操作被非常好地定义的固定功能单元和需要灵活性的可编程单元。在各种实施例中,加速器805可以被配置为适应api,特别是opengl 2和dx9中的更高性能和扩展。
103.因为这种信息和程序指令可用于实现本文所述的系统/方法,所以本公开涉及有形的机器可读介质,其包括用于执行本文所述的各种操作的程序指令、状态信息等。机器可读介质的示例包括硬盘、软盘、磁带、诸如cd-rom盘和dvd的光学介质;诸如光盘的磁光介质、以及专门被配置为存储和执行程序指令的硬件设备,例如只读存储器设备(rom)和可编程只读存储器设备(prom)。程序指令的示例包括(例如由编译器产生的)机器代码和包含高级代码的文件,这些高级代码可以由计算机使用解析器执行。
104.尽管为了方便起见,上面以单数描述了许多组件和过程,但本领域技术人员将理解,也可以使用多个组件和重复的过程来实践本公开的技术。
105.尽管参考本发明的特定实施例特别示出和描述了本发明,但本领域技术人员将理解,在不脱离本发明的精神或范围的情况下,可以对所公开的实施例的形式和细节进行改变。因此,意图将本公开解释为包括落入本公开的真正精神和范围内的所有变体和等同物。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献