首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计算机如何识图

深度学习到今天如此火热,源起于它在计算机视觉领域的超强分类能力,而最初的引爆点就在2012年发布的ImageNet竞赛中,使用深度学习的计算机识图算法准确率超过人类,从而引起大家对它的广泛关注。那么今天我们就来聊一聊计算机识图这个主题。

计算机识图

计算机识图过程中要处理的问题,可以简单理解为让摄像头扮演人的眼睛,让计算机运算单元扮演大脑,实现类似于人的眼脑结合,从而让计算能够准确识别图像中的内容。

这其中涵盖了了解一幅图中是什么(图像分类),它们出现在图像中的什么位置(物体检测),具体的图像轮廓(图像分割)和周围区域如何区分等问题。这个过程中需要将图像转换到高层的语义信息。

图像在计算机中的表示

看到这里,你可能会有疑问,这不是很简单嘛,这种问题,我想都不用想就知道啊。各个问题解决起来似乎也很简单啊,对于图像分类,不就是一张图给个标签嘛,而物体检测不就是要对着图中出现的东西画个框而已嘛。

恩,问题恰巧就妙在这里,因为这件简单的事要交给计算机来做时,整个过程就变得不一样了。我们人想都不用想就可以完成的问题,对于计算机来说,却变成了一个很困难的问题。

这里就要说下计算机是怎么表示图像的了。对于下面这样一张喵大人的图像,在计算机里面实际上存储的则是一系列的点阵(下图中一个灰色的框表示图像中的一个点),而每一个点由三个0~255的值来表示,表明它在红(Red)、绿(Green)、蓝(Blue)三色上的强度(真实的存储中有时还会加多一个0~255的alpha值,表明透明度)。

所以当我们看到一张图中有一只猫时,计算机其实只看到了一串连续的数字而已,那么我们又怎么能强求它认出这张图像其实只是一只猫呢。

看到这里,你可能会好奇,如果是这样,那么计算机识图错误率低于人类是怎么实现的呢?这里就涉及到视觉识图里的重点内容,如何用深度学习的方法来处理图像。到这里,我们先缓一缓,在继续之前,先来了解一些深度学习中重要的概念。

卷积操作

卷积实际上是比较学术的说法,对于一个区域做卷积,简单理解的话就是用一个固定大小的模版去处理图像中每一块与模版同等大小的区域,并输出该块结果值的过程。下面是一个2维空间里的3x3卷积模版处理一块5x5输入图像的过程。模版中的每个数会和与它对应位置的数相乘,然后将乘后各个位置的结果值加起来作为这个区域在该点输出图像中的数值。

深度神经网络

除了卷积之外,我们还要理解深度学习中的数据处理单元,神经网络。对于一般的机器学习问题,我们将问题定义为在给出一组固定特征维度的输入样本以及它们对应的标签的条件下,训练得到一个模型,可以很好的拟合数据的分布情况。

例如我们在二维平面上给出了如图中蓝色x表示的五个点的坐标,并说明它们的数据分布满足抛物线方程y=a*x^2+b,然后通过机器学习的方式,带入五个样本点的具体数值,最终得出对这五个样本点最好的拟合曲线为y=1*x^2+0的抛物线。此时模型表示就是该抛物线的方程式,而其中的模型参数是a=1,b=0。

当然,在真实的机器学习问题中,我们的输入数据并不仅仅局限为二维的数据坐标,而是通常会扩展到一个d维的向量,并且事前也无法预知数据满足的分布情况。在这样的条件下,我们怎样表示模型呢?在深度学习中,此时就会使用神经网络图这个符号来更直观地表现模型结构。下图是一个接受1x3的向量作为输入样本,并输出一个结果值的单层神经网络。

通常实际中使用的神经网络可能会有多层,最前面的输入层表示数据,中间的处理层称为隐藏层,最后的一层表示输出的结果,下图则是一个输入为1x3的向量,并包含一个隐藏层,输出为一个数值的神经网络表示图。

卷积神经网络识图

在我们理解了卷积操作,并了解了神经网络的表示之后,自然就理解了卷积神经网络的概念。在神经网络中,包含了一个或者多个卷积层的神经网络,就称为卷积神经网络(好像有点废话)。在前面的例子中我们的输入均是向量。而对于需要识别的图像而言,通常是表示为含有多个通道的二维矩阵(对于灰度图则通道数为1)。

此时,我们使用卷积神经网络处理输入图像的过程,可以描述为使用一系列的卷积核在输入图像上扫描,从而得到输出图像的过程。后面一层的图像是由前面一层与特定卷积核做卷积操作得到。下图描述了这个过程。

结合两者,我们就得到了一个通常意义上的卷积网络结构示意,它可以处理我们在计算机中的图像数据阵列,并最终输出一个数值,表明图像的类别。不过在实际识图过程中,我们并非只用一个数值来表示类别,而是让网络层最终输出一个1xN的向量,表示输入图像在这N个类上的得分。对比这N个数值,谁的得分高,我们就认为这张图片是哪个类别。

于是,一个原本复杂的问题,到这里就得到了解决。计算机识图的过程,就是通过以使用事先收集的大量图片,以及每张图片人工给定的标注类别,让计算机通过所构建的卷积神经网络,把输入的每张图片转换为一个N维的数值输出的过程。通过利用这些最终输出的数字,计算机便可以知道图篇中的类别了。这个过程一般叫做图像分类。

至此,我们完成了深度学习做图像分类的简要介绍,以后,将再专门花点时间来讲一下视觉中的检测问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G19QLT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券