图像中的卷积,是离散的,这不同于我们数学中的卷积公式,数学中的卷积公式大部分都是连续的,但是也有离散的卷积公式,学过数字信号处理的应该都知道。这一点是我之前不明白的地方。
正如上图所示,大的方框表示原图像的像素,中间小的3*3的方框为卷积模板,最右边的方框是做完卷积之后的输出图像。
那么,为什么要对图像做卷积呢?卷积的物理意义是什么呢?经过查阅资料和听取课程,终于有些明白了为什么要对图像做卷积。
如上图所示,对图像的卷积就是使卷积模板与原图像的像素相对应的位置先做乘法然后把相应位置得到的结果进行求和,最终把求和的结果赋给目标像素。如上图中的计算,最终得到的结果为-8。这里实际上就是做了点积操作,点积的操作就是两个向量相应位置相乘然后求和。点积的物理意义是两个向量之间的相似度。推广到这里,可以说成卷积模板与图像中某一块区域的相似度,如果卷积结果越大,说明图像中的某位置和卷积模板类似,如果卷积结果小,说明图像中某位置和卷积模板的相似度很小。如果把卷积模板作为特征算子或者特征向量,那么就是不断的去问被卷积的这张图像上有哪些部分是符合我这个特征算子的。根据这个特点,如果我们有较好的卷积模板,也就是卷积模板中的元素较好,符合某个特征,就可以检测图像中的特征,进而利用特征识别图像。比如说我这个卷积模板是人的眼睛的特征算子,那么在人的图像进行完卷积之后,图像中眼睛部分的响应也就是相似度很高,其他部分的响应或者相似度很小。
上述只是一个卷积模板或者特征算子,那一个特征显然不足以区分这个世界。如果我们有千千万万个卷积的模板,换句话说你就会有千千万万个特征算子,那这些特征会帮助你区分这个世界中的比如猫啊,狗啊,轮船啊等等物体。那么什么是深度卷积神经网络呢?就是去求解这千千万万个卷积模板的这么一种网络。这些卷积模板可不是随随便便凭空得来的,而是要通过不断的学习得来的。深度卷积神经网络就是不断地去学习,最终求得了这些卷积模板。
刚才说到,卷积模板就是特征算子,真的是这样。比如说如上图,第一个特征算子实际上在与图像做完卷积后,输出还是原图像,就是对原图像进行了复制粘贴。第四个特征算子做了边缘检测,你看中间的值为8,非常大,边缘的都是-1,非常小,它突出了中间的像素,弱化了周围的像素,只有在边缘的时候才符合这种情况。因为边缘的灰度变化较大。
当然,我们可以看到,图像中的每一部分做完卷积后,在不做任何操作的情况下,输出的尺寸会小于原图像的尺寸。比如说原图像为7 X 7 的尺寸,卷积核为3 X 3的,每次滑动一个小格,那么经过卷积操作后输出的尺寸为5 X 5的。因为边缘部分是覆盖不到的。