深度学习笔记(21) 边缘检测

  • 1. 边缘检测简介
  • 2. 过滤器
  • 3. 垂直和水平边缘检测
  • 4. 合适的过滤器


1. 边缘检测简介

在计算机视觉中使用的比较多的就是卷积神经网络卷积运算是卷积神经网络最基本的组成部分 边缘检测相对比较容易理解,就把它作为卷积运算的入门样例

在人脸识别中:

深度学习边界识别算法 深度边缘检测_深度学习边界识别算法

神经网络的前几层有可能是检测边缘的

后面的层有可能检测到物体的部分区域

更靠后的一些层可能检测到完整的物体

这个例子中就是人脸


2. 过滤器

深度学习边界识别算法 深度边缘检测_过滤器_02

给了上面这样一张图片,让电脑去搞清楚这张照片里有什么物体 可能做的第一件事是检测图片中的垂直边缘 比如说,在这张图片中的栏杆就对应垂直线 与此同时,这些行人的轮廓线某种程度上也是垂线 这些线是垂直边缘检测器的输出

同样,可能也想检测水平边缘 比如说这些栏杆就是很明显的水平线

深度学习边界识别算法 深度边缘检测_深度学习_03

看一个例子,这是一个6×6的灰度图像

因为是灰度图像,所以它是6×6×1的矩阵

而不是6×6×3的,因为没有RGB三通道为了检测图像中的垂直边缘,可以构造一个3×3矩阵

在共用习惯中,在卷积神经网络的术语中,它被称为过滤器

构造一个3×3的过滤器,像这样

深度学习边界识别算法 深度边缘检测_边缘检测_04

在论文它有时候会被称为 核,而不是过滤器

对这个6×6的图像进行卷积运算,卷积运算用 “ * ” 来表示

用3×3的过滤器对其进行卷积

这个卷积运算的输出将会是一个4×4的矩阵,可以将它看成一个4×4的图像 为了计算第一个元素,在4×4左上角的那个元素,使用3×3的过滤器,将其覆盖在输入图像 然后进行元素乘法(element-wise products)运算,所以

深度学习边界识别算法 深度边缘检测_过滤器_05

然后将该矩阵每个元素相加得到最左上角的元素

即3+1+2+0+0+0+(-1)+(-8)+(-2)=-5

一步一步向右移动,到达边缘时,移动下一行 重新从左向右移动,得到下图

深度学习边界识别算法 深度边缘检测_深度学习_06

为了更清楚一点,这个 -16 是通过底部右下角的3×3区域得到的


3. 垂直和水平边缘检测

来看另外一个例子,了解垂直边缘检测是怎么做到的

深度学习边界识别算法 深度边缘检测_过滤器_07

这是一个简单的 6×6 图像,左边的一半是10,右边一般是0

如果把它当成一个图片,左边像素值10是比较亮的像素值,右边像素值0比较暗

有一个特别明显的垂直边缘在图像中间 这条垂直线是从黑到白的过渡线,或者从白色到深色

这里的维数似乎有点不正确,检测到的边缘太粗了 因为在这个例子中,图片太小了 如果用一个1000×1000的图像,而不是6×6的图片 会发现其会很好地检测出图像中的垂直边缘

在这个例子中,在输出图像中间的亮处 表示在图像中间有一个特别明显的垂直边缘

从垂直边缘检测中可以得到的启发是,因为使用3×3的矩阵(过滤器) 所以垂直边缘是一个3×3的区域 左边是明亮的像素,中间的并不需要考虑,右边是深色像素

在这个6×6图像的中间部分,明亮的像素在左边,深色的像素在右边 就被视为一个垂直边缘 卷积运算提供了一个方便的方法来发现图像中的垂直边缘

相似的,水平边缘过滤器也是一个3×3的区域,它的上边相对较亮,而下方相对较暗

深度学习边界识别算法 深度边缘检测_边缘检测_08

总而言之,通过使用不同的过滤器,可以找出垂直的或是水平的边缘


4. 合适的过滤器

在历史上,在计算机视觉的文献中,曾公平地争论过怎样的数字组合才是最好的

所以还可以使用Sobel的过滤器:

深度学习边界识别算法 深度边缘检测_边缘检测_09

还有一种叫做Scharr的过滤器:

深度学习边界识别算法 深度边缘检测_边缘检测_10

它的优点在于增加了中间一行元素的权重,这使得结果的鲁棒性会更高一些

它有着和之前完全不同的特性,实际也是一种垂直边缘检测

如果将其翻转90度,就能得到对应水平边缘检测

当真正想去检测出复杂图像的边缘 不一定要去使用那些研究者们所选择的这九个数字,但可以从中获益匪浅

把这矩阵中的9个数字当成9个参数,并且在之后可以学习使用反向传播算法 其目标就是去理解这9个参数 将矩阵的所有数字都设置为参数,通过数据反馈,让神经网络自动去学习它们 会发现神经网络可以学习一些低级的特征,例如这些边缘的特征

尽管比起那些研究者们要更费劲一些 但确实可以动手写出这些东西 不过构成这些计算的基础依然是卷积运算

使得反向传播算法能够让神经网络学习任何它所需要的3×3的过滤器 并在整幅图片上去应用它 去输出这些,任何它所检测到的特征 不管是垂直的边缘,水平的边缘,还有其他奇怪角度的边缘 所以这种将这9个数字当成参数的思想,已经成为计算机视觉中最为有效的思想之一


参考:

《神经网络和深度学习》视频课程