漫画人工智能

先提一个小问题:

“你是通过什么了解这个世界的?”

当一辆汽车从你身边疾驰而过,你是通过哪些信息知道那是一辆汽车?

“它的材质,速度,发动机的声响,还是什么?”

你可能说不清所以然,但是当你看到下图时,你会第一时间反应出来,“噢,车! ”

为什么你能猜对它?

“轮廓”!

——对,我给你看了它的轮廓。

再给你一些七七八八、大小不一的图片,你总能猜对一些。

你是怎样做到的?

很简单

你读了一张图片 找到了图片的特征 进而对图片做出了分类

如果是一张黑白图片,我们看到的,是这个样子的:

而在计算机的眼里,它看到的,是这个样子的:

好没有情趣……

这些数字是哪里来的?

因为图片是由一个又一个的像素点构成。(当你将图片无限放大,你能看到那些像素点)

而每一个像素点,都是由一个0~255的数字组成。

所以,在计算机“看”来,一张图片,就是一个又一个的数字。

所以,我们第一步的工作,是将左上图的那只小狗,转换成右上图的那一行行数字。

幸运的是,目前在python中,很多第三方库,诸如PIL/Matplotlib等,都可以实现这种转换,我们需要了解的是,后面的所有运算过程,都是基于右上图来完成的,至于具体的转换过程,不需要我们费心来做。

在文章开篇的例子中,我们知道,在识别一辆汽车的时候,可以将它的轮廓提取出来,从而判断出那是一辆车。

同样的,CNNs在识别图片时,也需要提取图像的特征。

在CNNs中,完成这一工作的小伙叫“卷积”。(希望你不要纠结这个极具个性的名字,懂得它的原理就OK)

“卷积”在每次工作时,手里都会握着几把“过滤器”。

过滤器的作用是:寻找图片的特征。

仍以小狗为例,过滤器会在图片上从头到尾“滑过”一遍

每滑到一个地方,就将该地方的图像特征提取出来。

那它是怎样提取的呢?

别忘了,在计算机的眼里,世界是这个样子的:

(为了简化问题,这里将像素值仅用0和1表示)

假设过滤器是这个样子的:

当橘色的过滤器在绿色矩形框中,缓慢滑过时,

我们用橘色过滤器中的每一个值,与绿色矩形框中的对应值相乘、再相加

有点儿拗口,直接看图:

结果“4”,就是我们从第一个橘色方框中,提取出的特征。

如果我们每次将橘色过滤器,向右、向下移动1格,则提取出的特征为:

你可能会问:

我知道绿色矩阵代表一张图片,是计算机“眼中”图片的样子。

但是,

经过橘色过滤器提取特征后,得到的粉色矩阵,那是什么?

我们从人类的视角,再重新审视一遍。

这次,我们回到之前的例子中。

仍以这张萌狗为例,它经过“过滤器”提取特征后,得到的是一张……哦,好吧……看起来有点儿模糊的图。

虽然图片模糊了,但是图片中的主要特征,已经被过滤器全部提取出来,单凭这么一张模糊的图,作为人类的我们,足以对它做出判断了。(谁敢说它是一只猫?!)

下面,我们再换几个过滤器试试。

这些就是经过过滤器提取后,得到的不同“特征图片”。

由此我们可以看出,采用不同的“过滤器”,能够提取出不同的图片特征。

你可能又会问:

那过滤器里的数值,该如何确定呢?

4种过滤器-效果.png (116.6 KB)

4种过滤器.png (21.42 KB)

dog-黑白.jpg (41.25 KB)

更多资料获取请私信我

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

扫码关注云+社区

领取腾讯云代金券