您好、欢迎来到现金彩票网!
当前位置:刘伯温论坛 > 图像分类 >

详解如何使用深度神经网络进行图像分类?

发布时间:2019-05-27 01:14 来源:未知 编辑:admin

  近期以来,深度学习在各个领域应用广泛,其取得的最近进展使得诸如图像和语音识别等任务成为可能,不再遥不可及。

  深度学习:机器学习算法的一个子集,擅长于模式识别,但通常需要大量的数据。

  深度学习在识别图像中的对象方面具有非常优异的表现,因为它是通过3层或更多层人工神经网络实现的,其中每层都负责提取图像的一个或多个特征(详情稍后介绍)。

  神经网络:一种与人脑中神经元类似的计算模型。每个神经元接受一个输入,执行一些操作,然后将输出传递给下面的神经元。

  为了实现这一目的,我们首先需要在计算机能够识别一个新对象之前教它认识猫,狗和鸟等对象。计算机看到的猫越多,其识别猫的能力就越好。这就是所谓的监督学习。我们可以通过标记图像来执行此任务,计算机将开始识别猫图片中出现的模式,而这些模式在其他图片中是不存在的,而后计算机将开始构建自己的认知。

  我们将使用Python和TensorFlow来编写程序。TensorFlow是一个由Google创建的开源深度学习框架,它可以让开发者对每个神经元(在TensorFlow中被称为“节点”)进行细粒度控制(granular control),这样你就可以调整权重,实现最佳性能。TensorFlow有许多内置的库(其中很少是可以用于我们的图像分类任务中的),并有一个令人惊奇的社区,所以你将能够在其中找到几乎任何有关深度学习主题的开源实现。

  计算机能够对数字进行计算,但无法以我们的方式来解读图像。因此我们必须以某种方式将图像转换为计算机能够理解的数字。

  图像将被转换为灰度级(灰色范围从白色到黑色),计算机将根据颜色的深浅为每个像素分配一个值。所有的数字都将放在一个数组中,然后计算机将在该数组上进行计算。这是使用灰度级后所看到的数字8:

  颜色可以表示为RGB值(红色,绿色和蓝色的组合,范围从0到255)。然后,计算机可以提取每个像素的RGB值,并将结果放在数组中进行解读。

  当计算机对一个新的图像进行解读时,它将使用相同的技术把图像转换为数组,继而将数字模式与已知对象进行比较。然后计算机将为每个类分配一个置信度分数。具有最高置信度分数的类通常就是计算机所预测的那一个。

  简而言之,在人工智能领域中,用于提高图像分类精确度的最流行技术之一就是卷积神经网络(简称CNN)。

  卷积神经网络:一种特殊类型的神经网络,其工作方式与常规神经网络相同,只是开始时具有一个卷积层。

  该技术不是将整个图像作为数字数组,而是将图像分解成多个图块,然后计算机会尝试预测每个图块是什么。最后,计算机试图根据所有图块的预测结果来分析预测图片中的对象。这使得计算机能够并行化操作并检测对象,而不管其位于图像中的位置。

  我们决定使用CIFAR-10数据集,该数据集由60,000个尺寸为32 x 32像素的图像组成。该数据集包含10个相互排斥(不重叠)的类,每个类中含有6,000个图像。图像小巧,标记清晰,没有噪声,这些优点使得该数据集成为这项任务的理想选择,而且只需要非常少的预处理就可以了。以下是从数据集中获取的几张图片:

  首先,我们需要为数据添加一些变化,因为数据集中的图像是非常有组织的,并且几乎不包含任何噪声。我们将使用名为imgaug的Python库人为地添加噪声。接下来我们要对图像进行随机组合:

  对于使用整个大型数据集的模型来说,计算其梯度需要花费很长时间。因此,我们将在优化器的每次迭代期间使用一小批图像。批量大小通常是32或64—我们将使用的是64,因为我们有相当多的图像。然后将数据集分为含有50,000张图像的训练集,以及包含10,000张图像的测试集。

  现在我们已经完成了对数据集的预处理和拆分操作,那么,接下来我们可以开始实现神经网络。我们将要有3个具有2×2最大池化(max-pooling)的卷积层。

  最大池化(max-pooling):一种通过获取网格的最大像素值来减小图像尺寸的技术。此外该技术还有助于减少过度拟合,使模型更为通用。以下示例显示了2 x 2 最大池化的工作原理:

  之后,我们将添加2个完全连接层。由于完全连接层的输入应该是二维的,卷积层的输出是四维的,所以我们需要在它们之间有一个扁平层(flattening layer)。

  可是说参数识别是一项非常具有挑战性的任务,因为我们有如此多的参数需要调整。因此,我们阅读了大量的资料,并试图找出一种实现方法。但是,效果并不明显,因为它似乎需要大量的经验。所以我们发现了一个由Alex Krizhevsky搭建的架构,他使用这种结构,并赢得了ImageNet LSVRC-2010的冠军。而相较于他的工作任务,我们的任务就简单的多了,所以我们只使用3个卷积层,并在每个层之间保持一个梯度。

  既然我们已经有一个已训练的神经网络,那么我们就可以使用它来进行试验了!然后,我们让计算机解读10,000个未知图像,其达到的精度为78.4%(7844/10000)。有趣的是,不正确的预测看起来与计算机所认为的非常接近。

  以右上方的图片为例,图片看起来就像一只坐在卡车上的猫,所以对于计算机来说,将其预测为卡车也是很合理的。

  以上就是对使用神经网络进行图像识别的详细介绍,总而言之,现如今,我们可以使用TensorFlow构建一个人工卷积神经网络,其识别图像的精确度为78%。我们要对图像进行预处理操作从而使其更为通用,然后将数据集拆分成多个批次,最后构建和训练模型,从而使其能够识别图像。

http://airgomusic.com/tuxiangfenlei/109.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有