zoukankan      html  css  js  c++  java
  • 【笔记】Correlation & Convolution

    主要讨论计算机视觉/神经网络中的 卷积运算(Convolutuion)


    ……在那之前,先来看看 相关运算(Correlation)
    给定 Image 和 Filter,其中 Filter 如下:

    [egin{bmatrix}A&B&C\D&E&F\G&H&Iend{bmatrix} ]

    现在对 Image 中一个 3×3 大小的小方块

    [egin{bmatrix}a&b&c\d&e&f\g&h&iend{bmatrix} ]

    也就是对 (e(i,j)) 进行 Cross-correlation
    结果:

    [G[i,j]=Aa+Bb+Cc+Dd+cdots+Hh+Ii ]


    那么卷积运算是什么呢?
    同样是上面的情况,进行 Convolution
    结果:

    [C[i,j]=Ai+Bh+Cg+Fd+Ee+Ia+Hb+Gc+Df ]

    假如 Filter 是

    [egin{bmatrix}A&B\C&Dend{bmatrix} ]

    结果:

    [C[i,j]=egin{bmatrix}Da+Cb+Bd+Ae&cdots\Dd+Ce+Bg+Ah&cdotsend{bmatrix} ]

    放到 CNN 中,这里“步长”为1
    如果 Image 是 4×4 的,那么步长若仍为 1 则会得到一个 3×3 的结果
    如果步长改为 2 则会得到一个 2×2 的结果
    CNN 就是在提取图像的每个局部(感受野)范围和卷积核的互相关函数。

    很明显,卷积能提取图像的特征。
    这需要我们合理地设置卷积核(也就是 Filter),这其实是在改变做卷积运算时的加权
    合理地设置加权,可以实现平滑滤波和边缘提取以及各种各样其他的操作
    比如说平滑

    [frac{1}{9}egin{bmatrix}1&1&1\1&1&1\1&1&1end{bmatrix} ]

    边缘提取

    [egin{bmatrix}0&-1&0\-1&-4&-1\0&-1&0end{bmatrix} ]

    作用都很明显能够看出来,其中边缘提取的例子是拉普拉斯算子
    当然也容易自己yy几个

    [egin{bmatrix}-1&-1&-1\0&0&0\1&1&1end{bmatrix} ]

    [egin{bmatrix}-1&-2&-1\0&0&0\1&2&1end{bmatrix} ]

    上面两个都是计算水平梯度,检测水平边缘的
    转置一下就能得到搞垂直的了。
    其中第二个(Sobel算子)比第一个(Prewitt算子)更加平滑(抑制噪声

    另外,常见的高斯核在 3×3 的时候是这样的

    [frac{1}{16}egin{bmatrix}1&2&1\2&4&2\1&2&1end{bmatrix} ]

    嗯,很 Gauss

    更复杂的特征就要用多层卷积来提取。
    这个过程中的 Filter 显然不能简单地人工构造,而需要借助 supervised learning 完成构造

    ……可以发现,既然 Filter 不需要人工构造,实际使用时就不必区分卷积和相关。
    所以一般来说实现的时候写个相关就好了,毕竟好写。

  • 相关阅读:
    Lucene.net系列六 search 下
    Lucene.net 系列三 index 中
    初识Antlr
    Antlr首页计算机器实验成功
    C#语言学习之旅(1):C#基础
    NeatUpload js 判断上传文件的大小是否超过了空间的大小
    对XML的各种操作
    多表求和
    xmlhttp 最简单的无刷新
    xml 查询
  • 原文地址:https://www.cnblogs.com/ccryolitecc/p/14309704.html
Copyright © 2011-2022 走看看