神经网络-卷积神经网络

1. 全连接BP神经网络的缺点​

  1. 如果要用全连接BP神经网络,我们把输入的图片“展平”了,“展平”是什么意思呢?我们都知道,计算机存储图片,实际是存储了一个W×H×DW\times H\times DW×H×D 的数组(W,H,D分别表示宽,高和维数,彩色图片包含RGB三维),如下图所示,“展平”就是,把这个数组变成一列,然后,输入神经网络进行训练:
    在这里插入图片描述
    这种方法,在图片尺寸较小的时候,还是可以接受的;但是,当图片尺寸比较大的时候,由于图像的像素点很多,神经网络的 层与层之间 的连接数量,会爆炸式增长,大大降低网络的性能

  2. 把图片数据展开成一列,破坏了图片的空间信息,试想,如果把上图中的猫图片变成一列,再把这一列数据,以图片的形式展示给你,你还能看出这表示一只猫吗?并且,有相关研究表明,人类大脑,在理解图片信息的过程中,并不是同时观察整个图片,而是更倾向于,观察部分特征,然后根据特征匹配、组合,得出整图信息。以下图为例:
    在这里插入图片描述
    在这张图片中,你只能看到,猫的鼻子,1只眼睛,2只耳朵和嘴,虽然没有尾巴,爪子等其它信息,但是,你依然可以判断,这里有一只猫。所以说,人在理解图像信息的过程中,更专注于,局部特征,以及这些特征之间的组合。

    ​ 换句话说,在BP全连接神经网络中,隐含层每一个神经元,都对输入图片 每个像素点 做出反应。这种机制包含了太多冗余连接为了减少这些冗余,只需要每个隐含神经元,对图片的一小部分区域,做出反应就好了!卷积神经网络,正是基于这种想法而实现的。

2. 卷积神经网络基本单元

2.1 卷积(Convolution)

​ 如果,你学过信号处理,或者有相关专业的数学基础,可能需要注意一下,这里的“卷积”,和信号处理里的卷积,不太一样,虽然,在数学表达式形式上有一点类似。

​ 在卷积神经网络中,“卷积”更像是一个,特征提取算子。什么是特征提取算子呢?简单来说就是,提取图片纹理、边缘等特征信息的滤波器。下面,举个简单的例子,解释一下 边缘 特征提取算子是怎么工作的:
在这里插入图片描述
​ 比如有一张猫图片,人类在理解这张图片的时候,可能观察到圆圆的眼睛,可爱的耳朵,于是,判断这是一只猫。但是,机器怎么处理这个问题呢?传统的计算机视觉方法,通常设计一些算子(特征提取滤波器,来找到比如眼睛的边界,耳朵的边界,等信息,然后综合这些特征,得出结论——这是一只猫

​ 具体是怎么做的呢:
在这里插入图片描述
​ 如上图所示,假设,猫的上眼皮部分(框出部分),这部分的数据,展开后如图中数组所示**(这里,为了叙述简便,忽略了rgb三维通道,把图像当成一个二维数组[类比灰度图片]),我们使用一个算子,来检测横向边沿**——这个算子,让第一行的值减去第三行的值,得出结果。具体计算过程如下,比如,原图左上角数据,经过这个算子:

200 × 1 + 199 × 1 + 189 × 1 + 203 × 0 + 23 × 0 + 34 × 0 + 177 × ( 1 ) + 12 × ( 1 ) + 22 × ( 1 ) = 328200 × 1 + 199 × 1 + 189 × 1 + 203 × 0 + 23 × 0 + 34 × 0 + 177 × ( 1 ) + 12 × ( 1 ) + 22 × ( 1 ) = 328200 × 1 + 199 × 1 + 189 × 1 + 203 × 0 + 23 × 0 + 34 × 0 + 177 × ( 1 ) + 12 × ( 1 ) + 22 × ( 1 ) = 328 200×1+199×1+189×1+203×0+23×0+34×0+177×(−1)+12×(−1)+22×(−1)=328200\times1+199\times1+189\times1+203\times0+23\times0+34\times0+177\times(-1)+12\times(-1)+22\times(-1)=328 200×1+199×1+189×1+203×0+23×0+34×0+177×(−1)+12×(−1)+22×(−1)=328

​ 然后,算子向右滑动一个像素,得到第二个输出:533,依次向右滑动,最终得到第一行输出;

​ 然后,向下滑动一个像素,到达第二行;在第二行,从左向右滑动,得到第二行输出……
动图演示过程如下(图片来自csdn):

在这里插入图片描述

参考资料:

[1]https://blog.csdn.net/u014303046/article/details/86021346