卷积神经网络中边缘检测矩阵背后的直觉

时间:2018-12-07 13:21:45

标签: machine-learning deep-learning conv-neural-network

我是深度学习的新手,试图了解CNN如何执行图像分类

我经历了多个youtube视频,多个博客和论文。他们都提到大致相同的事情:

  1. 添加过滤器以获取要素地图
  2. 执行池化
  3. 使用RELU删除线性度
  4. 发送到完全连接的网络。

虽然这一切都很好,但我真的不了解卷积的本质。例如。边缘检测。

例如ex:[[-1,1],[-1,1]]检测垂直边缘。

如何?为什么?我们如何肯定会检测到垂直边缘。

类似地,用于模糊/锐化的矩阵,我们如何真正知道它们将执行其目标。

我只是接受人们的话吗?

请帮助/由于我无法理解卷积以及矩阵如何检测边缘或形状,我感到无助

1 个答案:

答案 0 :(得分:2)

过滤器通过检测图像强度值的变化来检测图像中的空间图案(例如边缘)。

快速回顾:就图像而言,高频图像是像素强度发生较大变化的图像,而低频图像则是像素强度发生较大变化的图像。强度几乎是均匀的。图像同时具有高频和低频成分。高频分量对应于对象的边缘,因为在边缘,像素值的强度变化率很高。

高通滤波器用于增强图像的高频部分。

让我们举一个示例:图像的一部分像素值[[10,10,0],[10,10,0],[10,10,0]]指示图像像素值向右减小,即图像从左侧的光变为右侧的暗。此处使用的过滤器为[[1、0,-1],[1、0,-1],[1、0,-1]。

现在,我们对这两个矩阵进行卷积,得到输出[[10,0,0],[10,0,0],[10,0,0]]。最后,将这些值相加得出一个像素值30,当我们从左移到右时,这会给出像素值的变化。同样,我们找到后续的像素值。

vertical edge detection

在这里,您会注意到像素值的变化率从左到右变化很大,因此已检测到垂直边缘。如果您使用过滤器[[1,1,1],[0,0,0],[-1,-1,-1]],则将得到仅由0组成的卷积输出,即不存在水平边缘。 [[-1,1],[-1,1]]以类似的方式检测垂直边缘。

您可以在Andrew Ng的lecture中查看更多内容。

编辑:通常,垂直边缘检测滤镜的左侧有亮像素,右侧有暗像素(反之亦然)。滤镜的值之和应为0,否则结果图像将变亮或变暗。此外,在卷积神经网络中,在训练过程中通过反向传播,以与超参数相同的方式学习滤波器。