在上期文章中,我们了解了图像识别的大致流程,并对图像处理中涉及的图像预处理和图像分割方法进行了阐述。在本期中,我们会接着上期的内容继续对图处理部分进行细分介绍,并了解卷积神经网络的基本结构以及图像处理相关算法的基本知识。
一、图像识别细分
卷积神经网络(CNN)通常被用来张量形式的输入,例如一张彩色图象对应三个二维矩阵,分别表示在三个颜色通道的像素。
许多其它输入数据也是张量的形式:如信号序列、语言、音频谱图、3D视频等等。卷积神经网络具有如下特点:局部连接,共享权值,采样和多层。
下图中我们可以看到一个4*3的矩阵,右侧是一个核。我们先将abef看成一个整体,去点对点的乘以核元素,就会得到加权的结果aw+bx+ev+fz,同理我们可以得到其他特征组合的加权求和结果。
在具体的学科中,图像处理时我们常用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。
二、智能图像处理
1.应用场景
上文我们主要探讨了智能图像特征分割、提取和识别等问题,接着我们如何从我们的图像或者样本中得到我们想要的结果呢? 我们首先来看看实际应用中涉及智能图像的场景。
这个是谷歌推出来的一个聊天软件叫Allo,这个软件是什么作用呢?如果当对方给我发了一个图像,那么我可能在忙,不方便给他回信息内容,这时候呢,我想敷衍一下,或者自动回复消息,这时这个应用就起作用了。它能够自动的生成一些词汇。比如说对方给我发了一个小baby的图像,那么我正在忙,这时它会自动的生成:”哇,好漂亮啊!好可爱啊!真可爱的一个宝宝!” 它会生成一些词汇。然后我随便的选一个发给对方,那我们的友谊小船就继续的往前走了。这是这样的一个具体应用。当然如果是不同的图片呢?它生成的关键词,或者说匹配出来的关键词是不太一样的,能够根据场景具体的匹配出来一些词。
我们再看一个例子,这是facebook做的一个deepmask和sharpmask。
实际上我们仔细看,这些图像都被标注出来了,也就是说它能够对当前场景中的图像进行检索。实际上呢,它起到的就是分割的作用,它能够把当前的前景图像和背景图像分割开来,或者说挑出我们感兴趣的对象。
接下来这个例子可能更高级一些。它是一个「目标检索」,而且能够给出我们一个提示。
比如说我们在这个场景中可以看到有很多只羊,那么计算机会把每一只羊给标注出来,告诉我们这个是羊。当然更高级的话呢?它会告诉我们,这个是羊的可能性是多少,比如说是羊的可能性是百分之八十,那么另一只羊是百分之九十,可能还有隐藏的很隐蔽的可能只有百分之六十等等。
上面这两幅图也是一个图像处理的应用。这个应用是能够通过计算机生成一个具有真实感的图像。左边是传统办法生成的图像,我们感到很模糊,而且一眼就能看出来这个图像不太真实。但是右边不太一样,人物非常有质感,看起来会很立体。这个也是智能图像处理的一个应用,它是属于图像生成的领域。
2.智能图像处理技术
上述场景都是一些简单的应用。但是实际上我们仔细分析的话,我们称作智能图像处理。
智能图像处理我们给他拆开来看,实际上我们要关注两个问题,一个问题叫做智能技术,另外一个问题是图像处理技术。
如果说我们关注智能技术,进一步可以分成两块,一个是机器学习一个是深度学习,也可以说机器学习里边包含深度学习。但是因为深度学习又很特殊,所以我们一般会将两者分开,这是我们说的智能技术。另一个分支,是我们现在看到的右侧图像处理技术,其包含的知识点非常多,我们看这里仅仅罗列了一部分,其实还有非常多。所以说,我们要想学好智能图像处理,就要学好两个知识点,其中一个是智能技术,那么另外一个就是图像处理技术,我们必须有深厚的图像处理技术的功力,才能够做好智能图像处理。否则的话,我们谈不上智能图像处理。
三、两个“学友”
现在我们就分别来看下智能技术下两位好学友:「机器学习」和「深度学习」。
1.机器学习
1.1传统方法
传统上,我们一般的是提出来一个问题,然后确定如何去解决这个问题。接着对这个解决的方案进行评估。如果这个方案不错,那我们就说正常工作就可以了。如果我们对这个方案觉得不太好,那我们就要去修正他。然后对这个问题进行新的规则,确定新的规则后,可能是把原先的规则全部推倒,然后我们重新构建一遍,也可能是在原先的规则基础之上进行修修补补。这个是我们解决问题的思路。就像我们开车一样,我们会通过方向盘进行不断的修正,最后走上一条直线,解决问题也是一样,这是我们说传统的方式。
1.2机器学习方法
那么如果我们采用机器学习是怎么样呢?实际上机器学习呢,我们是要把所有的问题进行转化。我们要对问题进行分析,从问题里边提取数据,对数据进行处理。经过量化,把抽象的文字性的东西表示成数字,或者说数值,然后传递给机器学习系统,最后我们就能得到答案了。
如果我们现在有一个对象,需要把它处理成数据,这是我们机器学习一个非常关键的一个步骤。这个对象可能是图像,可能是文字,也可能是声音。这种实体对计算机来说,都是没有办法理解的。无论是声音还是视频,或者说是其他的文字,都要转换成一个数据的形式,把数据再交给计算机,让计算机进行处理。
所以首先要提取特征。这个时候我们就要考虑特征提取的合理与否的问题。如果说你特征提取的合理,我去判断,那么这条路是走得通的,如果特征提取的都不合理,那这个时候我在去判断你的特征,是否有意义。这就是我们说机器学习首先第一步,你要解决吸取哪些特征,也就是说哪些特征是合理的,我们才能够拿过来用那么,这是我们要解决的第一个问题,你要在对象上面找出合理的特征,然后再把这个特征转换成数据。这在图像处理方面,我们对特征进行量化以后,我们就对这些颜色数字进行各种处理,就能够达到我们最后想要分析问题、解决问题的目的。那么你给出这个对象到底是猫还是狗,这是机器学习他的一个基本的逻辑,或者说一个基本的流程。
2.深度学习
下面我们再来看看深度学习。如果我们有一个问题,然后有一个答案,那么人想到的办法,这是我们自然解决的方式。
如果加入机器学习后,我们人先想到特征,然后把那个特征交给机器学习去对特征进行分辨,然后给出答案,这个叫机器学习。
那我们看什么是深度学习呢?我们只要把问题交给神经网络或者深度学习系统就可以了剩下的我们就不用操心了,我们不用去想提取什么特征,这个特征深度神经网络会帮我们提取好。比如说我们去进行图像检索,可能还要考虑什么颜色、形状、纹理等等,然后在使用机器学习后,可以得到答案。但是神经网络不需要,我们只要把图片交给神经网络,神经网络就会给我们分好结果。这个是神经网络和机器学习不同的地方。到了深度学习领域,对我们来说就像一个黑盒,我们不知道中间发生了什么,所以这也是目前我们需要加大力度去学习的一个地方。
所以说深度学习,我们也常常称之为端到端end-to-end的结构,一端是问题,另外一端是答案。从一端直接到另一端,没有中间商赚差价,直接解决问题。
神经网络对我们使用来说是非常方便的,但是设计起来还需要去关注算法中间的细节。细节决定算法结果的好坏,那么这当中需要注意什么问题呢?其实就是如何提高模型的学习能力,而对其考核的标准即是「损失函数」。至于损失函数如何在神经网络中工作,这又是一个非常大的知识模块了,我们下次再做介绍~
领取专属 10元无门槛券
私享最新 技术干货