在学习cnn的过程中,对convolution的概念真的很是模糊,本来在学习图像处理的过程中,已对convolution有所了解,它与correlation是有不同的,因为convolution = correlation + filp over in both horizontal + vertical

但在CNN中,明明只是进行了correlation,但却称之为convolution,实在不解

下面, 将图像处理中的convolution重新整理记录

因为网络关于这部分的解释很多,这里直接借用其他 参考

“A convolution is done by multiplying a pixel's and its neighboring pixels color value by a matrix”, 这里的matrix就是convoluiton kernel (usually a small matrix of numbers)

这里假设图像是3*3,kernel也是3*3,实际计算中,有时为了使得卷积结果与原图像一致,会对原图像进行padding操作

原图像x:

0 0 0 0 0
0 1 2 3 0
0 4 5 6 0
0 7 8 9 0
0 0 0 0 0
x(0,0) x(0,1) x(0,2) x(0,3) x(0,4)
x(1,0) x(1,1) x(1,2) x(1,3) x(1,4)
x(2,0) x(2,1) x(2,2) x(2,3) x(2,4)
x(3,0) x(3,1) x(3,2)  x(3,3) x(3,4)
x(4,0) x(4,1) x(4,2) x(4,3) x(4,4)

卷积核h:

-1 -2 -1
0 0 0
1 2 1
h(1,1) h(1,2) h(1,3)
h(2,1) h(2,2) h(2,3)
h(3,1) h(3,2) h(3,3)

具体的过程为:

将h先上下翻转,再左右翻转,然后,与x进行correlation运算

1 2 1
0 0 0
-1 -2 -1
h(3,3) h(3,2) h(3,1)
h(2,3) h(2,2) h(2,1)
h(1,1) h(1,2) h(1,1)

输出结果y:3*3

x(0,0) x(0,1) x(0,2) x(0,3) x(0,4)
x(1,0) x(1,1) x(1,2) x(1,3) x(1,4)
x(2,0) x(2,1) x(2,2) x(2,3) x(2,4)
x(3,0) x(3,1) x(3,2)  x(3,3) x(3,4)
x(4,0) x(4,1) x(4,2) x(4,3) x(4,4)

依次覆盖,对应元素相乘

h(3,3) h(3,2) h(3,1)
h(2,3) h(2,2) h(2,1)
h(1,1) h(1,2) h(1,1)

y(1,1) = h(3,3) *x(0,0) + h(3,2) *x(0,1) + h(3,1) *x(0,2) +

     h(2,3) *x(1,0) + h(2,2) *x(1,1) + h(2,1) *x(1,2) +

     h(1,3) *x(2,0) + h(1,2) *x(2,1) + h(1,1) *x(2,2)  

其他元素类似

:In image processing, a kernelconvolution matrix, or mask is a small matrix useful for blurring, sharpening, embossing, edge-detection, and more. This is accomplished by means of convolution between a kernel and an image.

2D image convolution的更多相关文章

  1. Understanding Convolution in Deep Learning

    Understanding Convolution in Deep Learning Convolution is probably the most important concept in dee ...

  2. 转置卷积Transposed Convolution

    转置卷积Transposed Convolution 我们为卷积神经网络引入的层,包括卷积层和池层,通常会减小输入的宽度和高度,或者保持不变.然而,语义分割和生成对抗网络等应用程序需要预测每个像素的值 ...

  3. TensorflowTutorial_二维数据构造简单CNN

    使用二维数据构造简单卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 图像和一些时序数据集都可以用二维数据的形式表现,我们此次使用随机分布的二位数据构造一个简单的CNN-网络卷积- ...

  4. Intel DAAL AI加速——神经网络

    # file: neural_net_dense_batch.py #================================================================= ...

  5. tensorflow: a Implementation of rotation ops (旋转的函数实现方法)

    tensorflow 旋转矩阵的函数实现方法 关键字: rot90, tensorflow 1. 背景 在做数据增强的操作过程中, 很多情况需要对图像旋转和平移等操作, 针对一些特殊的卷积(garbo ...

  6. gdc skin

    https://www.gdcvault.com/play/1024410/Achieving-High-Quality-Low-Cost 这篇是教美术怎么用做地形那种方法 复用贴图 做skin的 做 ...

  7. Winograd Convolution 推导 - 从1D到2D

    Winograd Convolution 推导 - 从1D到2D 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ Winograd Convolution 推导 - 从1 ...

  8. Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab ...

  9. Deep Learning 学习随记(七)Convolution and Pooling --卷积和池化

    图像大小与参数个数: 前面几章都是针对小图像块处理的,这一章则是针对大图像进行处理的.两者在这的区别还是很明显的,小图像(如8*8,MINIST的28*28)可以采用全连接的方式(即输入层和隐含层直接 ...

随机推荐

  1. 导演类(CCDirector)

  2. java中double四舍五入并设置小数点位数的问题

    本文系转载,原文地址:http://blog.csdn.net/star_huang/article/details/7639267 今天遇到个需要将一个double类型的数据保留小数点后两位的问题. ...

  3. fuck'em

    不要说GUNGHO的游戏,连逆转三国这种都没玩过,还是做手游的,表现的那么冠冕堂皇,还不只是个常规的做软件的而已.只是以做软件的程度来做游戏,能做出的是个JB.

  4. Java 字节数组类型(byte[])与int类型互转

    代码如下: public class CommonUtils { //高位在前,低位在后 public static byte[] int2bytes(int num){ byte[] result ...

  5. html代码实现自动滚动,鼠标滑过时停止滚动

    <marquee style="width: 1200px;height:200px;margin:0px auto" onmouseout="this.start ...

  6. JBPM WEB CONSOLE安装实录

    http://www.blogjava.net/paulwong/archive/2009/03/13/259551.html JBPM WEB CONSOLE是一个B/S端的,能管理JBPM的流程和 ...

  7. ACM——大数相加

    大数加法 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:2085            测试通过:543 描述 求两个非负整数( ...

  8. JavaScript高级程序设计(四): 关键字With的使用

    一.关键字with 1.含义    with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象.   简单的说,with为一个或一 ...

  9. prototype原型链继承

    依旧是恶补js基础,上代码: 1.定义父类及父类方法 function Animal(){ this.name = "动物"; } Animal.prototype.eat = f ...

  10. UVA 11991 Easy Problem from Rujia Liu?(vector map)

    Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...