卷积神经网络如何进行图像识别

作者: Savaram Ravindra 2017-09-08 13:30:32

卷积神经网络如何进行图像识别

什么是图像识别?为什么要进行图像识别?

在机器视觉的概念中,图像识别是指软件具有分辨图片中的人物、位置、物体、动作以及笔迹的能力。计算机可以应用机器视觉技巧,结合人工智能以及摄像机来进行图像识别。

对于人类和动物的大脑来说,识别物体是很简单的,但是同样的任务对计算机来说却是很难完成的。当我们看到一个东西像树、或者汽车、或者我们的朋友,我们在分辨他是什么之前,通常不需要下意识的去研究他。然而,对于计算机来说,辨别任何事物(可能是钟表、椅子、人或者动物)都是非常难的问题,并且找到问题解决方法的代价很高。

图像识别算法一般采用机器学习方法,模拟人脑进行识别的方式。根据这种方法,我们可以教会计算机分辨图像中的视觉元素。计算机依靠大型数据库,通过对数据呈现的模式进行识别,可以对图像进行理解,然后形成相关的标签和类别。

图像识别技术的普及应用

图像识别技术有许多应用。其中最常见的就是图像识别技术助力的人物照片分类。谁不想更好地根据视觉主题来管理巨大的照片库呢?小到特定的物品,大到广泛的风景。

图片识别技术赋予了照片分类应用的用户体验新感受。除了提供照片存储,应用程序也可以更进一步,为人们提供更好的发现和搜索功能。有了通过机器学习进行自动图像管理的功能,它们就可以做到这一点。在应用程序中整合的图像识别程序界面可以根据机器所鉴定的特征对图像进行分类,并且根据主题将照片分组。

图像识别的其他应用包括存储照片和视频网站、互动营销以及创意活动,社交网络的人脸和图像识别,以及具有大型视觉图像库网站的图像分类。

图像识别是一项艰巨的任务

图像识别不是一项容易的任务,一个好的方法是将元数据应用到非结构数据上。聘请专家对音乐和电影库进行人工标注或许是一个令人生畏的艰巨任务,然而有的挑战几乎是不可能完成的,诸如教会无人驾驶汽车的导航系统将过马路的行人与各种各样的机动车分辨出来,或者将用户每天传到社交媒体上的数以百万计的视频或照片进行标注以及分类。

解决这个问题的一个方法是使用神经网络。理论上,我们可以使用传统神经网络对图像进行分析,但是实际上从计算角度来看代价很高。举个例子,一个传统的神经网络在处理一张很小的图片时(假设30*30像素)仍然需要50万个参数以及900个输入神经元。一个相当强大的机器可以运行这个网络,但是一旦图片变大了(例如500*500像素),参数以及输入的数目就会达到非常高的数量级。

神经网络应用于图像识别的另一个会出现的问题是:过拟合。简单地说,过拟合一般发生在模型过于贴合训练数据的情况下。一般而言,这会导致参数增加(进一步增加了计算成本)以及模型对于新数据的结果在总体表现中有所下降。

卷积神经网络

卷积神经网络结构模型

根据神经网络的构建方式,一个相对简单的改变就可以让较大的图像变得更好处理。改变的结果就是我们所见到的卷积神经网络(CNNs,ConvNets)。

神经网络的广适性是他们的优点之一,但是在处理图像时,这个优点就变成了负担。卷积神经网络对此专门进行了折衷:如果一个网络专为处理图像而设计,有些广适性需要为更可行的解决方案做出让步。

对于任意图像,像素之间的距离与其相似性有很强的关系,而卷积神经网络的设计正是利用了这一特点。这意味着,对于给定图像,两个距离较近的像素相比于距离较远的像素更为相似。然而,在普通的神经网络中,每个像素都和一个神经元相连。在这种情况下,附加的计算负荷使得网络不够精确。

卷积神经网络通过消除大量类似的不重要的连接解决了这个问题。技术上来讲,卷积神经网络通过对神经元之间的连接根据相似性进行过滤,使图像处理在计算层面可控。对于给定层,卷积神经网络不是把每个输入与每个神经元相连,而是专门限制了连接,这样任意神经元只能接受来自前一层的一小部分的输入(例如3*3或5*5)。因此,每个神经元只需要负责处理一张图像的一个特定部分。(顺便提一下,这基本就是人脑的独立皮质神经元工作的方式。每个神经元只对完整视野的一小部分进行响应)。

卷积神经网络的工作过程

上图从左到右可以看出:

  • 网络对输入的真实图像进行扫描提取特征。传递特征的滤波器由浅色方块表示。
  • 激活图由堆栈形式排列,每一个对应所用的滤波器。较大的方形是要进行下采样的块。
  • 激活图通过下采样进行压缩。
  • 下采样后的激活图经过滤波器产生新的一组激活图。
  • 第二次下采样——对第二组激活图进行压缩。
  • 全连接层为每个节点的输出指定一个标签。

卷积神经网络的滤波器如何对连接根据相似性进行滤波?诀窍在于新加的两种层结构:池化层和卷积层。我们下面将步骤进行分解。用为了只完成一件事情而设计的网络实例进行介绍,即决定一张图片中是否含有一个老爷爷。

过程的第一步是卷积层,它自己本身就包含几个小步骤。

  • 首先,我们要将包含老爷爷的图片分解为一系列有重叠的3*3的像素块。
  • 在这之后,我们将每个像素块输入一个简单的、单层的神经网路,保持权重不变。这一步将像素块集转化成一个矩阵。只要我们保持每块像素块都比较小(这里是3*3),处理它们所需的网络也可以保持可控以及小型。
  • 下一步,输出值会被排成矩阵,以数据形式表示照片中每个区域的内容,不同轴分别代表颜色、宽度、和高度通道。对于每一个图像块,都有一个3*3*3的表示。(如果要处理视频,可以加入第四维度代表时间)。

接下来是池化层。池化层对这些3或4维的矩阵在空间维度上进行下采样。处理结果是池化阵列,其中只包含重要部分图像,并且丢弃了其他部分,这样一来最小化了计算成本,同时也能避免过拟合问题。

经过下采样的矩阵作为全连接层的输入。由于经过了池化和卷积操作,输入的尺寸被大幅减小,我们现在有了正常网络能处理的,同时能保持数据最重要特性的东西。最后一步的输出代表系统对于图片中有老爷爷这一判断的确信度。

在实际应用中,卷积神经网络的工作过程很复杂,包括大量的隐藏、池化和卷积层。除此之外,真实的卷积神经网络一般会涉及上百甚至上千个标签,而不只是样例中的一个。

如何搭建卷积神经网络

从头开始构建一个卷积神经网络是很费时费力的工作。目前已经有了许多API能够实现关于卷积神经网络的想法,而不需要工程师去了解机器学习的原理或者计算机视觉的专业知识。

Google云视觉

Google云视觉是使用REST API搭建的视觉识别API。它基于开源的TensorFlow框架。它可以检测到独立的人脸或物体,并且包含十分全面的标签集。

IBM Watson 视觉识别

IBM Watson 视觉识别是Waston Developer Cloud服务的一部分,并且自带大量内置类别,但它实际是为训练基于你提供图片的自定义类别而打造的。同时,和Google云视觉一样,它也提供了大量花哨的特性,包括NSFW以及OCR检测。

Clarif.ai

Clarif.ai也是一个使用REST API的初创图像识别服务。关于Clarif.ai有趣的一点是,它自带的一系列模块可以用于修改算法,将其应用到特定的主题上,例如食物、旅游和结婚。

尽管上述的API适合一些一般的应用,但最好还是针对特定问题开发一个自定义的解决方案。幸运的是,大量可用的库解决了优化和计算方面的问题,开发人员和数据科学家可以只关注训练模型,这样一来他们的工作便轻松了一些。这些库包括Theano、 Torch、 DeepLearning4J以及TensorFlow,已成功地运用在各种各样的应用程序中。

卷积神经网络的有趣小应用:自动为无声电影添加声音

要为无声电影添加匹配的声音,系统必须在这个任务中自动合成声音。该系统使用上千个视频样例进行训练,视频带有鼓棍敲打不同表面产生的不同声音。一个深度学习模型将视频的帧和预录的声音建立联系,然后选择能够完美匹配场景的音频进行播放。系统会通过图灵测试进行评估,让人来决定那个视频是合成的,哪个是真实的声音。这是卷积神经网络和LSTM循环神经网络的一个很潮的应用。

深度学习 图像识别 卷积神经网络
上一篇:机器学习K-means算法在Python中的实现 下一篇:未来10年,人工智能和机器人将对就业有7点影响
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

12个场景应用,百余种算法,AI是如何攻占经济学的?

在虚拟世界中模拟现实经济状况,想法设计更好的制度只是AI和经济学结合方式之一。其实深度强化学习在面临风险参数和不确定性不断增加的现实经济问题时,也可以提供更好的性能和更高的精度。

蒋宝尚 ·  3天前
机器学习算法集锦:从贝叶斯到深度学习及各自优缺点

本文筛选并简单介绍了一些最常见算法类别,还为每一个类别列出了一些实际的算法并简单介绍了它们的优缺点。

佚名 ·  2020-05-21 14:50:37
用TFserving部署深度学习模型

本文介绍了TFserving部署线上推理服务,从模型的转换,部署启动和调用推理,欢迎交流,希望对你有帮助。

佚名 ·  2020-05-21 14:05:17
520开发者的情人节 飞桨全平台35项升级大礼“示AI”

5月20日,由深度学习技术及应用国家工程实验室与百度联合主办的“WAVE SUMMIT 2020”深度学习开发者峰会以线上形式召开。本届峰会,飞桨公布最新全景图,带来多达35项全新发布和重磅升级,不仅进一步升级核心框架、完善从开发训练到部署的全流程工业级极致体验、深化企业端服务,更着眼未来,引领布局前沿技术,首发量子机器学习开发工具“量桨”,以及蓄力AI人才培养和开发者生态,发布青少年AI科普教育“晨曦计划”、“星辰计划”开发者探索基金等。

佚名 ·  2020-05-20 14:07:06
百度CTO王海峰:飞桨深度学习平台是新基建的重要一环

5月20日,由深度学习技术及应用国家工程实验室与百度联合主办的“Wave Summit 2020”深度学习开发者峰会在线上召开。百度CTO王海峰在致辞中表示,时代契机为飞桨的发展提供了最好的机遇,作为中国首个开源开放、功能完备的产业级深度学习平台,飞桨将与产业紧密融合,与开发者并肩前行。

佚名 ·  2020-05-20 11:32:27
PyTorch官方教程大更新:增加标签索引,更加新手友好

PyTorch官方教程,现已大幅更新,不必再面对一整页教学文章茫然无措,可以想学哪里就精准点哪里了。

鱼羊 ·  2020-05-18 09:44:08
机器学习:使用批归一化有哪些缺点?

批归一化(Batch Normalization)是深度学习领域的重大突破之一,也是近年来研究人员讨论的热门话题之一。批归一化是一种被广泛采用的技术,能够使训练更快、更稳定,并已成为深度学习领域最具影响力的方法之一。然而,它仍然存在一些要注意的问题。

不靠谱的猫 ·  2020-05-18 08:42:13
深度度量学习的这十三年,难道是错付了吗?

近日,Facebook AI 和 Cornell Tech 的研究者在论文预印本平台 arXiv 上公布了最新研究论文,声称这十三年来深度度量学习领域的研究进展「实际上并不存在」。

机器之心 ·  2020-05-17 15:57:28
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载