Py学习  »  机器学习算法

深度学习工具在缺陷检测中是如何工作的?

新机器视觉 • 1 年前 • 142 次点击  

点击下方卡片,关注“新机器视觉”公众号

重磅干货,第一时间送达

简介


制造业中任何公司的主要目标都是为客户生产无缺陷产品。如果在产品开发过程中出现任何内部孔、凹坑、磨损或划痕(由于多种原因,从生产设备故障到恶劣的工作条件),其结果不仅是产品缺陷,而且导致客户满意度的损失。


在本文中,您将了解可用于识别缺陷的各种深度学习方法,从而防止缺陷产品流入市场。


深度学习是如何工作的?


深度学习是一种机器学习,其特点是使用神经元或数据计算流经的节点。深度学习神经元之所以如此命名,是因为它们最初被建模为以类似于人脑中神经元的结构发送和接收信号。神经元接收一个或多个输入信号(要么来自原始数据,要么来自模型前一层的神经元),对这些输入信号进行一些计算,然后(通过突触)将输出信号发送到神经网络深处的神经元。通过这种方式,这些模型模仿了人类大脑如何学习检测、识别和分类周围环境中的项目,并做出非线性决策。最初的神经网络设计非常简单(或“肤浅”),但今天的架构已经变得极其复杂,现在被称为“深层”神经网络。


然而,深度神经网络不仅仅是一堆神经层。考虑一层作为单个神经元的外壳。这些层将始终以输入层开始(接收数据),以输出层结束(产生结果)。此外,在神经网络中,可以有零个或多个隐藏层堆叠在一起。层架构的类型包括但不限于密集(或完全连接)、卷积、反褶积和递归。然而,单独添加额外的层并不足以解决更复杂的问题,事实上可能会带来额外的挑战和潜在的错误。


必须根据需要解决的问题提出多种技术。存在不同形式的深度神经网络,每种网络都以不同的方式和不同的算法来解决问题。


图像分析-在分析图像时,更需要查看像素定义的事物层次,而不是单独查看每个像素。卷积网络使用称为卷积层的神经元的特定层,通常用于解释、编码或生成图片。由于许多卷积层的叠加,检测图片中更复杂的分层模式是可能的。卷积层越深,生成的特征图越抽象。



文本处理——文本分类、情感分析、自动翻译和语言建模概念是文本数据处理的一些最常见的深度学习用例。在某些情况下,例如分类,神经网络的表现几乎和人类一样好。然而,在某些工作中,神经网络仍然远远不能与人类进行比较,例如情绪分析等。



自动编码器-自动编码器的目标是能够完全解构并重建输入数据。重建需要使用中间压缩表示,因此神经网络的表示必须具有足够的信息来进行此生成。自动编码器的压缩表示随后可用于各种任务,例如分类。

生成对抗网络-它们已被有效地用于黑白照片的着色、增强图像分辨率和重建部分擦除的图像等。然而,GAN陡峭的学习曲线限制了他们的潜力,这似乎非常有前景。它主要用于医学图像,以提高图像性能,并使人们更容易发现疾病。



深度学习缺陷检测技术


物体识别、智能机器人、显著性检测、停车场声音事件检测和无人机叶片问题诊断只是受益于深度学习技术的众多学科中的几个例子。有时,可以通过抽象表示或奇异特征(如边缘和梯度)更好地解释数据。深度学习模型结合了这些低级特征,以构建属性和特征的更抽象的高级表示,并提高模型的性能。利用这些核心概念,一些学者正在尝试将深度学习技术应用于产品缺陷的识别,以提高产品质量。


1.LeNet,卷积神经网络(CNN)


CNN代表“卷积神经网络”,是具有一个或多个卷积层的任何前馈神经网络,但也可能包含完全连接的层、池化层、ReLU校正层等。最初的卷积神经网络结构之一是LeNet框架,它可以识别手写字符。


在这里,我们将探讨使用LeNet模型结构原理来检测缺陷的两种方法。一种是创建复杂的多层CNN结构,使用不同的网络结构添加图像内容特征,并完成端到端训练以检测图像中的缺陷。


2.基于神经网络的产品缺陷检测工具


AutoEncoder网络的编码和解码阶段是最重要的。这是一种数据压缩技术,其中压缩和解压缩功能是从样本数据中自动学习的,而不是由人类编程的。在编码阶段将输入信号转换为用于特征提取的编码信号;特征信息在解码阶段被转换为重建信号,并且通过调整权重和偏置来最小化重建误差,以在解码阶段实现缺陷检测。


AutoEncoder网络与其他机器学习技术的区别在于,AutoEncode器网络的学习目标是特征学习,而不是分类。它还具有卓越的自学能力,能够进行极为非线性的映射。为了处理分割复杂背景和前景区域的挑战,它可以学习非线性度量函数。


3.深度残差神经网络产品故障检测技术


深度残差网络向卷积神经网络添加残差模块。残差网络具有简单的优化过程,并且可以通过增加网络深度来提高精度。生成对抗网络、CNN等。提取特征随着网络深度的增加而改善,然而,激活函数可能无法收敛。深度残差网络的目标是在增长网络结构的同时优化网络层的数量,使得残差单元中卷积层的输出和输入元素维度相同。


4.全卷积神经网络


当两个相邻层中的所有节点都连接时,该层称为密集层或完全连接层。由于完全连接的神经网络采用完全连接的操作,因此将有更多的权重值,这意味着网络将需要更多的内存和计算。在构建完全连接的神经网络期间,卷积层创建的特征图被映射为固定长度的特征向量。整个卷积神经网络可以拍摄任何大小的输入图片,通过用去卷积层对最后一个卷积层的特征图进行采样,可以恢复到与原始图像相同的大小。


实施


下面,我们实施图像处理技术,这些技术产生的输出类似于深度学习网络可能产生的卷积神经网络中的特征图。


import numpy as npimport cv2import matplotlib.pyplot as plt

接下来,将创建一个函数,使用图像处理来检测缺陷,以显示不同形式的图像,如hsv、binay、dst、扩张等。


def fab_defect_detect(img):    image = img.copy()    hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)    h = hsv[:,:,0]    s = hsv[:,:,1]    v = hsv[:,:,2]
blr = cv2.blur(v,(16,16)) dst = cv2.fastNlMeansDenoising(blr,None,10,7,22) _,binary = cv2.threshold(dst, 127,256,cv2.THRESH_BINARY+cv2.THRESH_OTSU) kernel = np.ones((5,5),np.uint8) erosion = cv2.erode(binary,kernel,iterations = 1) dilation = cv2.dilate(binary,kernel,iterations = 1) if(dilation==0).sum() >1: print("Fabric has a defect") contours,_ = cv2.findContours(dilation,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) for i in contours: if cv2.contourArea(i) < 261124.0: cv2.drawContours(image, i, -1, (0,255,0), 3) else: print("There is No Defect in Fabric") return img,hsv,v,blr,dst,binary,dilation,image


最后,使用以下命令生成输出。


input_img= cv2.imread('Fabric1.jpg')image,hsv,v,blr,dst,binary,dilation,img = defect_detect(input_img)fig, ax = plt.subplots(2,4,figsize=(16,12))ax[0,0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))ax[0,0].set_title('Original Image')ax[0,1].imshow(cv2.cvtColor(hsv, cv2.COLOR_BGR2RGB))ax[0,1].set_title('HSV Image')ax[0,2].imshow(cv2.cvtColor(v, cv2.COLOR_BGR2RGB))ax[0,2].set_title('V Image')ax[0,3].imshow(cv2.cvtColor(blr, cv2.COLOR_BGR2RGB))ax[0,3].set_title('Blur Image')ax[1,0].imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))ax[1,0].set_title('Filter Image')ax[1,1].imshow(binary,cmap='gray')ax[1,1].set_title('Binary Image')ax[1,2].imshow(dilation,cmap='gray')ax[1,2].set_title('Dilation Image')ax[1,3].imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))ax[1,3].set_title('Output Image')fig.tight_layout()

输出


以下是以与第一张原始图像不同的格式生成的图像。



结论


在本文中,我们了解了什么是深度学习,它是如何工作的,以及我们可以使用什么技术来检测产品中的缺陷,同时学习了如何使用图像处理来检测图像中的缺陷。


本文仅做学术分享,如有侵权,请联系删文。

—THE END—

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/152047
 
142 次点击