社区所有版块导航
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学习  »  机器学习算法

深度学习算法和传统机器视觉结合,助力工业外观检测

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


在很多人眼里,深度学习是一个非常神奇的技术,是人工智能的未来,是机器学习的圣杯。今天深视创新带您一起揭开他神秘的面纱,了解什么才是深度学习。


当我们在网络上搜索“深度学习”的时候往往还能搜到“人工智能”以及“机器学习”这两个关键词。有很多人甚至认为深度学习就是人工智能,其实这些概念之间还是有一些区别的。因此,在介绍它的工作原理之前,为了让大家更好的了解深度学习,我们先来介绍一下这几个概念之间的区别和联系。


人工智能到目前为止还只是一个概念。它是由麻省理工学院的约翰·麦卡锡于1956年在达特矛斯会议上提出的。在会上人们把人工智能定义为一门可以让机器的行为看起来像人一样智能的技术,但是至今为止我们还没能实现这个梦想。伴随着随着计算机技术的发展以及学者们不断的探索,虽然我们目前无法实现理想中的人工智能,但已经找到了一些实现它的途径,那就是机器学习。机器学习不同于我们之前提到的理想中的人工智能。它可以使机器具有一定的决策能力。它是一种对已知数据进行学习和分类的分类器。有人认为这并不是真正的智能,于是人们把理想中的人工智能称为强人工智能,而相对的把机器学习称为弱人工智能。我们现在耳熟能详的深度学习则是一种实现机器学习的算法。所以从算法的角度上来说深度学习只是一个分类器而已。


深度学习的核心算法是CNN神经网络,即卷积神经网络。这个网络早在1989年就已经问世了,最初人们用它解决手写字符的识别问题,但是受限于当时计算机的硬件水平,其处理速度较慢,并没有推广到其他应用领域。1999年GPU的问世为卷积神经网络重回历史舞台提供了良好的条件。借助GPU高效的处理能力,卷积神经网络算法开始走向应用。它优秀的分类能力逐渐被各个应用领域所认可。而当Alpha Go战胜了围棋冠军李世石以后,人们对深度学习技术的期望更是达到了顶峰。但是我相信,很快人们就会发现深度学习只是我们目前掌握的一种新的非线性分类器。它和其他分类器一样都需要通过训练才能够实现分类的功能。比如通过水果图像的训练,它就可以帮助我们判断图像中水果的种类。


作为一个机器学习的分类器,深度学习在很多特征模糊的分类领域均有不错的表现,比如在自动驾驶和照片分类等应用领域。相比于其他的分类器,深度学习不仅可以对图像的特征进行分类,还可以通过训练对图像中的特征进行学习。这种特性对于一些特征不易描述的图像分类任务是大有裨益的。


是什么给了深度学习如此大的神通呢?这就要从它所特有的卷积神经网络说起了。


常用边缘提取卷积算法。



卷积是一种积分变换的数学方法,在图像处理中应用广泛。很多我们常用的图像滤波器都是通过卷积实现的。比如使用3x3所有元素全为1的卷积核对图像进行运算后可以去除图像噪声,突显图像整体特征。又比如使用高斯核对图像进行运算可以在保留边缘的情况下对图像噪声进行抑制。此外许多我们熟知的边缘提取算法也是由特定卷积核实现的,如canny,sobel,Laplace等。由此我们不难看出,不同的卷积核可以帮我们强化图像中不同的特征。但是如何选择正确的卷积核却是一件非常困难的事情,需要拥有丰富图像处理经验的程序员才能办到。而深度学习最大优势就在于可通过权值训练的方式对卷积核进行训练。


输入图像经过卷积、池化,再卷积再池化的过程,最后将所有图像数据转化为特征向量并输入到全连接层获得最终的分类结果。


一个卷积神经网络可以拥有多个卷积层,不同的卷积层可以设置不同的卷积核尺寸和数目。通过卷积,我们可以生成一组特征图像供后续算法使用。与图像滤波处理不同的是,卷积核中的每一个元素并非人为指定,而是通过计算获得。在这里我们将卷积核中的每个元素作为网络的权值,并通过训练逐步修改它们。理论上来说,我们可以把图像上的每个像素都作为一个特征值直接输入到全连接层中,但是,那样会导致神经网络太过复杂。于是我们采用卷积层这种共享权值的方式简化我们的网络。我们所说的权值共享,并不是指同一个卷积核中所有权值都相同,而是说在对整张图像进行卷积的过程中卷积核是不变的,图像中所有像素都享有相同卷积核权值。通过权值共享,可以降低网络的训练负担,缩短分类时间,使网络更加实用。


一般,在卷积层的后面都会紧跟着一个池化层。在池化层中,特征图像会被降采样。降采样的方法也有很多,比如选取指定范围内数值最大的特征或者使用该范围所有特征的平均值作为新特征图的特征值。


池化层可以帮助我们减少后续特征图像的运算量。此外,采样处理相当于变相缩小图像,这也使得在后续的卷积层中对图像概况训练成为可能。例如,在较浅的网络中我们可以训练出类似sobel的检测指定边缘方向的卷积核,而在较深层则能够训练出凸显折线或者其他形状的卷积核。


在经过一系列的卷积层和池化层后,特征数据会被送入全连接层进行分类。全连接层是一种被称为多层感知器(MLP)的非线性分类器。它具有很好的非线性分类能力。抛开深度学习技术不谈,这种分类器也可以单独使用,只不过输入的特征需要人为提取,而不像卷积神经网络中由前面的网络计算获得。通过全连接层的分类,我们最终可以获得样本被分为所有类别的概率,统计这些概率,我们就可以获得最终的分类结果。


通过上文的介绍,相信大家对卷积神经网络的结构已经有了一定的了解。从网络的结构上我们不难看出,卷积神经网络非常适合进行模糊特征的分类,而合理的网络结构以及合适的参数是网络能否成功分类的关键。如果你想自己搭建网络,就要了解网络中各层的用途以及相互作用关系,这需要一定的数学功底。当然从应用角度上来讲,我们可以直接使用别人搭建好的网络或者算法库,已缩短我们的研发周期。

文章来源:深视创新


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


—THE END—

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