社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习在机器视觉系统中的应用详解

新机器视觉 • 7 年前 • 843 次点击  

虽然深度学习,人工智能和认知系统的概念并不新鲜,但也是近些年它们才真正应用于机器视觉系统。

随着机器视觉技术的不断发展,系统在不需要计算机编程的情况下也可以具有分析和分类对象的能力。而人工智能(AI)和深度学习是推动机器视觉发展的重要技术手段。

然而,描述这些概念背后的潜在科学更为简单。例如,在传统的机器视觉系统中,可能需要读取零件上的条形码、判断其尺寸或检查其是否有缺陷。为此,系统集成商通常使用现成的软件,这些软件提供了标准工具。例如,可以部署这些工具来确定数据矩阵代码,或者使用图形用户界面来测量零件尺寸的工具集。

因此,部件的测量可以分为好或坏,这取决于它们是否符合某些预定标准。与这种测量技术不同,所谓的“深度学习”工具更好地归类为图像分类器。与专门读取条形码数据的软件不同,它们被设计用于确定图像中的对象是存在还是好或坏。因此,这些工具是互补的。

神经网络等深度学习工具将拓展其他机器视觉技术。例如,这样的神经网络可以判断数据矩阵代码存在于图像中的概率,但要解码它,将使用传统的条形码算法。

神经网络

基于神经网络的工具通常用于确定零件的存在或图像中的物体是好是坏。这些工具属于一组称为图像分类器的算法,从基于实例的分类器(如k-nearest neighbor (k-NN))到决策树分类器。在Jason Brownlee 2013年11月的《机器学习算法之旅》(A Tour of Machine Learning Algorithms)中可以找到不同类型分类器的图表。

其中许多可以用于机器视觉应用程序。MVTec Software已经在其HALCON软件包中提供了预先训练的神经网络、支持向量机(SVM)、高斯混合模型(GMM)和k-NN分类器。需要注意的是,深度学习网络训练从无到有,每一个错误类别都需要几十万张样本图像才能获得有效的识别结果。然而,HALCON集成了广泛的深度学习网络。因此,训练只需要相对较少的样本图像,节省了大量的时间和金钱。

Stemmer Imaging公司也在其Common Vision Blox(CVB)Manto软件中使用SVM。

当不同组的特征值显着重叠时,SVM可用于生成多维特征空间以隔离不同的缺陷组。PR Sys Design在其perClass软件中提供许多这样的分类器。它具有一系列分类器,如k-NN、神经网络、随机森林和SVM。图像分析软件是一个基于MATLAB的工具箱,允许开发人员以交互方式处理数据,选择数据中的最佳特征进行图像分类、训练多种类型的分类器并优化其性能。

模仿大脑

就像许多不同的分类器可以用来识别图像中的对象一样,也有许多类型的神经网络可以用来执行图像分类功能。这种神经网络试图模仿人类视觉系统和大脑中使用的生物神经网络。其中最简单的是Frank Rosenblatt于1957年发明的感知器(图1)。

图1:由Frank Rosenblatt于1957年发明的感知器,它通过一组二进制输入对大脑中的神经元进行建模,每个输入乘以一个连续的值权重,并对这些加权输入的和进行阈值化,模拟生物神经元。

Perceptron通过采用一组二进制输入(附近的神经元)对每个输入进行建模,将每个输入乘以连续值权重(每个附近神经元的突触强度),然后阈值化这些加权输入的总和,如果总和足够大,则输出“1”,否则输出“0”,类似于生物神经元发射或不发射(参见”神经网络与深度学习的历史“,作者:Andrey Kurenkov)。

如今,更复杂的网络使用两层或更多这样的“神经元”来执行图像分类任务。这些“隐藏层”可以在呈现给神经网络的图像数据中找到特征。从简单的感知器到深度前馈(DFF)和卷积神经网络(CNN),许多神经网络架构都可以用于笔迹分析和语音识别等应用(参见Andrew Tch的《神经网络的基本完整图表》)。

CNN可能是机器视觉系统中应用最广泛的神经网络。这有几个原因。首先,CNN的架构旨在更紧密地模仿人类视觉皮层和模式识别机制,CNN被分成几个执行不同功能的神经元阶段(图2)。

图2:在CNN中,卷积层用于执行特征提取,就像使用卷积运算符来查找边缘等特征一样。在传统的图像处理中,诸如高斯模糊和中值滤波的图像滤波器执行该任务。另一方面,CNN架构模拟人类视觉系统(HVS),其中视网膜输出执行诸如边缘检测的特征提取。

在该简化图中,为了说明的目的,分别示出了卷积层和池化层。在实践中,它们构成了完整的CNN的一部分。在CNN中,卷积层用于执行特征提取,就像使用卷积运算符来查找边缘等特征一样。

在传统的图像处理中,可以将诸如高斯模糊和中值滤波的图像滤波器分解成现场可编程门阵列(FPGA)来执行该任务。

另一方面,CNN架构模拟人类视觉系统(HVS),其中视网膜输出执行诸如边缘检测的特征提取。在CNN中,该卷积用于执行特征提取,因此表示输入图像的特征。这些卷积层排列成特征图,每个神经元都有一个接收域,通过一组可训练的权重连接到前一层的神经元,这些权重用于确定可能应用的滤波器类型。

在提取这些特征之后,使用所谓的“合并层”来减小图像数据表示的空间大小,以提高计算速度。然后将该图像数据馈送到最终网络层以进行进一步的数据处理。


无需编程

神经网络不像其他方法那样需要传统的或FPGA编程技术。相反,CNNs可以被训练以三种不同的方式识别物体。在第一个监督学习中,图像被手工标记,并使用这些数据生成一个输出模型来分类未知的图像。监督学习需要对图像数据进行标记,而非监督学习方法可以在图像数据中发现模式,并从多个未知图像中构建模型。然后,通过对这些结果的解释,可以开发出更精确的监督分类器。

这种无监督学习系统通常是不准确的,可以受益于半监督学习技术,其结合标记数据以减少需要训练的图像的数量。


表1:许多机器视觉公司现在推出的产品经常使用开源工具包开发专门针对机器视觉应用的软件。

“关于这些不同的方法,我们的大多数工具都是基于监督培训,”Adaptive Vision总经理MichałCzardybon说道。“这是最有效的,因为没有必要手动设计算法。但是,需要提供标记的训练数据。我们的一个工具Anomaly Detection使用半监督方法,开发人员提供了大量“良好”的对象图像,并且训练网络只是为了识别与这些对象的任何偏差。

Czardybon说:“对于那些希望此类软件在无监督模式下运行的人来说,我们的技术还没有准备好。然而,我们正在进一步研究半监督学习,即少量带标记的样本与数百个未带标记的样本同时存在,以提高准确性。”

在构建这样的网络时,开发人员可以同时使用商用和开源开发工具。而商业上可用的工具,如Wolfram的Version 11,MathWorks的深度学习工具箱Artelnics,可以用来开发基于神经网络的应用程序,其他公司提供开源代码来执行这项任务。

开源解决方案

英特尔、IBM、NVIDIA、微软等大公司和Google都提供开源代码来开发机器学习算法。

有趣的是,Keras是一个用python编写的高级神经网络应用程序编程接口(api)的开发人员,在一张图表中显示了一个比较基于11个数据源的深度学习框架的图表,谷歌的TensorFlow机器学习库是最广泛使用的机器学习软件(图3)。

图3:Keras已经证明,基于11个数据源,Google的TensorFlow机器学习库是最广泛采用的机器学习软件。

Keras的创始人FrançoisChollet表示,虽然Keras提供了一个高级别的界面,但它并不能处理低级操作。相反,这些可以由Google的TensorFlow或Theano的开源代码执行的,这是一个在蒙特利尔大学蒙特利尔学习算法研究所(MILA)开发的开源项目。

使用这些工具,开发人员正在部署基于视觉的应用程序。例如,英特尔已经展示了其与飞利浦合作使用其OpenVINO工具包的系统,该系统可以在不使用GPU的情况下对X射线和计算机断层扫描(CT)进行深度学习推断。而使用通用CPU可能需要数小时或数天才能进行此类分析。

为了扩展现有CPU架构的性能,飞利浦部署了OpenVINO工具包和深度学习方法,提供了比标准CPU方法快200倍的速度来进行深度学习,从而避免了使用gpu的需要。然而,这类工具在医学成像领域得到了应用。

机器视觉目标

有了所有这些开发工具,毫无疑问,众多机器视觉公司正在推出经常使用这些工具包开发专门针对机器视觉应用的软件的产品(表1)。虽然不愿意讨论可以使用哪些工具或者是否也在其产品中使用其他分类工具,但这些公司为开发人员提供了一种评估机器视觉中神经网络潜力的方法。

现在已经有许多部署这样软件包的案例,例如:在渝美压铸公司在基于英特尔计算机视觉和深度学习软件的系统中部署了英特尔的联合边缘计算平台,以检测零件铸造时的缺陷。

Cognex意识到这些方法的强大功能,于2017年购买了ViDi Systems及其ViDi软件套件。最近,该软件由AIS Technologies部署用于气缸孔检测系统。

图4:Cyth Systems展示了其神经视觉软件如何应用于以下应用:(a)半导体引线框架检查(b)医疗器械检查(c)机器人拾取和放置系统

另一家公司d-fine为Seidenader Maschinenbau开发了一套系统,测试CNNs在医疗产品检测系统中的性能。现在,研究人员正在分析这些方法与传统机器视觉方法的有效性。

Cyth Systems公司拥有自己的基于AI软件,名为Neural Vision。该软件已用于各种应用,包括半导体引线框检测,医疗器械检查和机器人拾取与定位系统(见图4) 。

智能相机系统

尽管许多系统都在基于pc的系统上部署了这样的软件,但是相机供应商已经意识到提供智能相机来完成这项任务的机会。比如:IDS成像开发系统和FLIR Systems。

利用一种专门开发的人工智能视觉应用,IDS的NXT摄像机可以加载预先训练好的人工神经网络,而基于fpga的人工智能加速则增加了推理时间。在VISION 2018上,该相机被展示为一个基于人工智能的目标识别系统。此外,FLIR公司的FireFly集成了英特尔公司的Movidius Myriad 2视觉处理单元(VPU),训练好的神经网络可以直接加载到该单元上。

智能相机将运行传统的机器视觉算法和基于神经网络的分类器,从而使开发人员在使用算法时具有灵活性。推动这一趋势的可能是来自谷歌、英特尔和微软等公司的开源代码,商业成像软件开发商将利用这些代码更快地将此类产品推向市场。

新机器视觉翻译编辑,仅供学习参考,不足之处敬请谅解!


小编推荐HOT 


工业视觉都有哪些行业标准可以参照执行

视觉+机器人,如何实现连接器的自动装配?

机器视觉在制造业应用的10个案例 

机器视觉技术发展的五大趋势 

搞懂机器视觉基本内容,这份PPT就够了!

机器视觉系统集成发展的现状和前景 

2019年光技术发展的十大趋势 

机器视觉:PC式视觉系统与嵌入式视觉系统区别  

干货:变成计算机视觉大师,需要经历的几个阶段  

计算机视觉和图像处理之间有什么区别?

基于HALCON的机器视觉开发,C++或C#如何选择?


 End 

更多是视觉资讯尽在“新机器视觉”微信公众号~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32085