计算机视觉是深度学习的重要组成部分,而卷积神经网路是计算机的主要研究方向。
在了解卷积神经网络前,我们有必要了解图片的构成。以下张图片为例
上述图片所示的是数字‘8’,但这个“8”在计算机看来,确是(28*28)矩阵的组合
每一个不同的数值代表一个元素,而(0~255)是我们一般所表示的颜色,数值越高代表颜色越深(越接近于黑色)。
当然这里也可以改为0或1的数值的矩阵,其1意义代表全黑或全白。
但自然界更常见的是彩色的图片,
对于彩色的图片均是以Red(R)、Green(G)、Blue(B)三原色通道表示。
这三个彩色图片也分别是由红、绿、蓝三个颜色的(0至255)不同深度的矩阵。
而实际的彩色图片是由三个通道叠加在一张map上组成的,如下图所示。
实际的map是由三个矩阵构成
对于这类位置相关性的矩阵pytorch是如何处理的?
首先对于全连接层神经网络,将该问题看做数字识别问题时,可以构建出的全连接网络如下。
该全连接型神经网络有输入层、4个隐藏层、带十个节点的输出层。
那么假设数据集图片为28*28型的,将其打平为784。而中间节点全选择为256节点.输出为10个节点。则其数据量大体为[784, 256, 256, 256, 256, 10]。其参数量(多少条线就有多少参数量)为784*256 256*256 256*256 256*10,大概为390K的参数量。若用四字节存储,则大概要1.6MB。这种十分简单的全连接神经层虽然现在看来十分小,但在很多年前,处理器还是只有20K~30K的SO386的CPU来说仍是十分巨大。
在当时为解决数据量过大的问题,科学家们借助人体生物学的概念。
如图片中的小男孩,一眼就看见了桌子上的蛋糕。而忽略了周围的座椅、树木。这与人眼在日常中所观察的一样,先关注自己感兴趣的东西,再关注周围的事物。因此会对局部相关性高的先进行扫描。
因此科学家们依据此特点提出了卷积神经网络模型如下图所示:
每次先感受一个个可移动的小方块,然后再感受大的区间。相应的不是整个28*28的大图片,而是3*3的小图片。后续科学家们又提出了权值共享的概念,即每个小窗口的权值W保留,直至一个epoch运算完毕后再进行更新。
这个6层的神经网络有大概60K的参数量,比之前全连接层减少了近5/6。
那么具体对单张图片,其取相关性过程如下图所示
假设整体图片是由28*28构成,那么每次取3*3的小图片进行与下一部分的连接。即3*3再乘下个区间窗口。这样其连接量大大减少。我们称提取后的图片成为feature map(特征图片)。这样他只取其相关的属性进行输出。