计算机视觉之卷积神经网络
前言
随着计算机视觉的不断发展,深度学习这门技术也越来越重要,其中卷积神经网络(CNN),是一种常见的深度学习架构,常用于图像识别,这项技术使得机器人可以自主对于特定目标进行识别,极大提升工作效率。
一、计算机是如何对特定目标进行识别的?
计算机的世界里只有0和1,所有的数据在电脑中都是以0和1组成的编码存储的,这样的编码叫做二进制。
那么它是如何对图像进行识别的呢?要解决这个问题,我们首先要了解大脑是如何识别物体的? 图像进入我们的眼睛后,我们并不能直接认出这个物体,第一层大脑皮层看到的是“一些有规律的点”,再将这些点传至下一层大脑皮层,在这一层将有规律的点连接成线条,再将这些局部线条拼接起来传至下一层大脑皮层,就认出字母Z。如下图所示:
依据这一原理,卷积神经网络应运而生,帮助计算机实现图像识别,与大脑类似,卷积神经网络主要包括卷积层、池化层和全连接层三部分。
卷积层:卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
池化层:用于减小图像数据量,提升识别效率。有多种不同形式的非线性池化函数,而其中最大池化(Max pooling)和平均采样是最为常见的
全连结层:与普通神经网络一样的连接方式,一般都在最后几层,用于做最后的识别判断
卷积层
在如下图像上,有一个黄色X
我们将黄色的像素点设置为1,白色的像素点设置为0,要想识别出这个X,我们只需要识别出,一个右下的斜线和一个左下的斜线即可。如下图所示:
首先识别右下斜线,在此处我们使用一个33的卷积核,此卷积核也是一个右下斜线,然后我们用图像左上角33的区域,与这个卷积核相应的像素点相乘,再相加得到一个结果2,如下图所示:
将其放入另一个表格中,然后依次进行相应的计算,直到填满整个表格,如下图所示:
同样,我们采用左下斜线的卷积核,计算左下斜线的特征,得到如下表格:
基本上,表格中数值较大的部分,就是原图像右下斜线的部分。
池化层
由于一张图像的像素特别大,计算起来十分复杂,所以就要对图像进行压缩,池化的目的也就是这个,我们只需要将四个像素点的最大值保留即可。依次进行计算得到一个更小的图像,如下图所示:
压缩后的图像,依旧保持原来的特征,采用同样的方法计算左下斜线点的卷积核。现在得到的这个图像计算机还是无法识别,还需要进入下一阶段,全连接层。
全连接层
将上述得到的两个3*3的图像,展开成一维数组,并且拼接起来,对于人眼这个数组难以判别,但是对于计算机十分容易。因为在识别前要拿样本图像对计算机进行训练,训练后计算机就会对每个特定的图像,保存一个特征数组,然后计算机利用识别图像得到的数组,与训练后数组作对比,根据相似度,对物体进行识别。如下图所示:
严格来讲,全连接层可以理解成一个函数,把展开后的数组扔进去,输出的是图片属于各个类的概率。
总结
卷积神经网络仿照大脑识别物体,经过不断卷积、池化、全连接,最后基于概率识别出目标。目前,CNN用于手写数字识别并一直保持了其在该问题的霸主地位。近年来卷积神经网络在多个方向持续发力,在语音识别、人脸识别、通用物体识别、运动分析、自然语言处理甚至脑电波分析方面均有突破。
版权归原作者 我是一颗跳跳糖哦 所有, 如有侵权,请联系我们删除。