精华内容
下载资源
问答
  • 监督卷积矩阵分解的文档推荐
  • 卷积矩阵完成的数据中毒攻击
  • CMF.jl:Julia中的卷积矩阵分解
  • DL之CNN:卷积神经网络算法简介之卷积矩阵、转置卷积(反卷积Transpose)、膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略 目录 卷积矩阵的简介 卷积、转置卷积——Transpose convolution 0、各种卷积...

    DL之CNN:卷积神经网络算法简介之卷积矩阵、转置卷积(反卷积Transpose)、膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略

     

     

     

    目录

    卷积矩阵的简介

    卷积、转置卷积——Transpose convolution

    0、各种卷积的动态演示

    1、转置卷积/分数步长卷积/反卷积

    2、转置卷积 具体是怎么计算的?

    卷积、反卷积与膨胀卷积——Dilated Convolutions

    1、膨胀卷积的优点

    2、膨胀卷积的应用——语义分割网络中引入膨胀卷积

    3、卷积、反卷积与膨胀卷积

    4、采用不同的方式来增大神经元的感受野

    5、膨胀卷积又被称为带孔卷积——atrous convolution

    卷积案例应用


     

     

     

     

     

     

    相关文章
    DL之CNN:卷积神经网络算法简介之原理简介(步幅/填充/特征图)、七大层级结构(动态图详解卷积/池化+方块法理解卷积运算)、CNN各层的作用等之详细攻略
    DL之CNN:卷积神经网络算法简介之卷积矩阵、转置卷积(反卷积Transpose)、膨胀卷积(扩张卷积Dilated/带孔卷积atrous)之详细攻略
    DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

     

    卷积矩阵的简介

     


    第一步,将3x3 卷积核,重新排列为 4x16 矩阵。

     

     

             这是卷积矩阵。每行定义一个卷积运算。其实,卷积矩阵的每一行只是重新排列核,其在不同位置具有零填充。 

    第二步,为了使用输入图像,将输入矩阵( 4x4 )展平为列向量( 16x1 )
    第三步,矩阵相乘

           展平一个列向量以后,就可以进行矩阵运算了,可以将 卷积核【4x16 卷积矩阵】与 输入图像【16x1 输入矩阵(16 维列向量)】进行矩阵乘法。

    第四步,
    将输出4x1矩阵重新整形为2x2矩阵
     

           简而言之,卷积矩阵只不过是重新排列的卷积核权重,并且可以使用卷积矩阵表示卷积运算。
    关键在于使用卷积矩阵,可以从16(4x4)到4(2x2),因为卷积矩阵是4x16。然后,如果有一个16x4矩阵,可以从4(2x2)到16(4x4)。
           从4(2x2)到16(4x4),即这就得到了卷积的转置矩阵

     

     

     

     

    卷积、转置卷积——Transpose convolution

    0、各种卷积的动态演示

     

    1、转置卷积/分数步长卷积/反卷积

    1、转置卷积/反卷积/分数步长卷积

          转置卷积 (Transpose convolution)是一种可学习的上采样方法learned upsampling。又称为Fractionally-stridedconvolution (分数步长卷积)、Deconvolution (反卷积)。如右图。

    (1)、转置卷积小结

    • 转置卷积运算,形成与正常卷积相同的连接性(connectivity),但是在反向的方向
    • 可以用它来进行上采样,而且,转置卷积中的权重是可学习的,所以不需要预定义的插值方法
    • 虽然它被称为转置卷积,但这并不意味着我们采用一些现有的卷积矩阵并使用其转置,而是要学习的。重点是与标准卷积矩阵相比,输入和输出之间的关联以反向方式处理(一对多而不是多对一关联)。
    • 因此,转置卷积不是卷积。但可以使用普通卷积,来模拟转置卷积运算。通过在输入矩阵中的值之间添加零,来对输入进行上采样,这样直接卷积产生与转置卷积相同的效果。有一些文章以这种方式解释了转置卷积,但是,由于需要在卷积之前添加零来对输入进行上采样,因此效率较低

    1、卷积反卷积

    • 反卷积,可看作步长小于1的普通卷积。
    • 对于普通卷积,卷积核?×?,步长?:
      s>1:卷积的同时做了下采样,卷积后图像尺寸减小;
      s=1:采用图像填充(padding) 后,可保证卷积的图像输入和输出有相同的尺寸大小;
      0<s<1:分数步长卷积,相当于对图像进行上采样;比如?=0.5,意味着在图像每个像素之间填充上一个空白像素,然后步长为1做普通卷积,卷积后得到的特征图尺寸增大一倍。

    (1)、如第一对图所示,第一张图输入4*4、卷积核3*3,输出2*2;     反卷积输入2*2、卷积核3*3,输出4*4,即相当于在原图上插入间隙0,即反卷积的效果实现了上采样

    2、转置卷积 具体是怎么计算的?

    1、转置卷积的一维例子演示


    Transpose Convolution: 1D Example
    比如输入a、b,经过滤波器xyz,求转置卷积的话,相当于由输入加权的滤波器copies即ax、ay、az和bx、by、bz;接着,如果有重叠,就在重叠的位置求和(az+bx),最后输出即可!

     

    写成矩阵进行运算:
    (1)、当stride=1时:
    卷积作为矩阵乘法(一维例子)——Convolution as Matrix Multiplication (1D Example)
    注:(4*1)加零后(6*1)相当于padding
    右边的反卷积核(6*4),是卷积核(4*6)的转置

    (2)、当stride=2时:
    此时正好是第一张示意图的结果

    2、转置卷积的二维例子演示

    1、下采样图像的步进卷积运算
    Strided convolution operation for down sampling an image
    2、二维转置卷如何操作?
    Transpose Convolution: 2D Example
    注:移动的矩形框的Stride=1
     

     

    2、卷积操作与反卷积操作的关系不同

    卷积操作(下采样):卷积运算,形成了多对一的关系。

          假设有一个 4*4 矩阵,并使用 3*3 卷积核对其进行运算,若Padding、Stride= 1,输出为 2*2 矩阵。

           卷积运算,计算输入矩阵和卷积核矩阵之间的逐元素乘法的总和,由于Padding、Stride= 1,只能做4次运算。因此,输出矩阵是2x2。

    反卷积(上采样):反卷积运算,是一对多的关系

         如何进行反卷积呢?需要先定义卷积矩阵(convolution matrix)和转置卷积矩阵(transposed convolution matrix)。最上边有关于卷积矩阵卷积的转置矩阵四步思路过程!

     

    转置卷积矩阵  Transposed Convolution Matrix

    • 想要从4(2x2)到16(4x4)需要使用16x4矩阵。但这里还有一件事。希望保持1到9的关系。
    • 假设将卷积矩阵C(4x16)转置为C.T(16x4)。可以将C.T(16x4)与列向量(4x1)进行矩阵乘法,得到矩阵(16x1),转置矩阵将1个值连接到输出中的9个值。

           
                     然,后输出可以重新整形为4x4,

           我们刚刚将一个较小的矩阵(2x2),上采样为一个较大的矩阵(4x4)。转置卷积由于其布置权重的方式而保持1到9的关系。
    NB: the actual weight values in the matrix does not have to come from the original convolution matrix. What important is that the weight layout is transposed from that of the convolution matrix.
    (注意:矩阵中的实际权重值不必来自原始卷积矩阵。重要的是权重布局是从卷积矩阵的转置)

     

    卷积、反卷积与膨胀卷积——Dilated Convolutions

    DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    1、膨胀卷积的优点

    • 在同样参数数目下,膨胀卷积不必添加池化层来增大感受野,可让每个卷积输出,都包含较大范围的信息;
    • 用于图像需要全局信息,或者语音文本需要较长的序列信息依赖的问题

     

    2、膨胀卷积的应用——语义分割网络中引入膨胀卷积

    • 增大网络的感受野;
    • 减少特征图像尺寸的损失(摈弃pooling层),即不再使用pooling层;

    1、增大感受野

    • 传统卷积的感受野大小,和层数成线性关系
    • 传统卷积,通常后接池化层来进一步增大感受野
    • 膨胀卷积的感受野大小,可随着层数呈指数级增长,而不是线性的增长;

     

    3、卷积、反卷积与膨胀卷积

    • 普通卷积:用于图像特征提取。步长大于1时实现对特征图的下采样。通过添加池化层增大感受野;
    • 反卷积:可看作分数步长的普通卷积,实现对特征图中插入零元素后的非线性上采样
    • 膨胀卷积:通过在卷积核中插入零元素,对卷积核进行上采样

     

    4、采用不同的方式来增大神经元的感受野

    • 普通卷积,通过添加池化层;
    • 膨胀卷积,通过对卷积核上采样,可避免池化层引起的信息损失
      说明:池化有助于分类网络,因为有助于增加感受野。但这不是分割的最佳选择,因为池化会降低分辨率。因此,作者使用膨胀卷积层,其工作方式如上图所示:对3*3的卷积核通过插入0操作,

     

    • (a)、F1 is produced from F0 by a 1-dilated convolution; each element in F1 has a receptive field of 3×3.
      F1由F0通过1-膨胀卷积得到;F1中每个元素的接受域为3×3;膨胀=1即原来的普通卷积!
    • (b)、F2 is produced from F1 by a 2-dilated convolution; each element in F2 has a receptive field of 7×7.
      F2由F1通过2-膨胀卷积得到;F2中每个元素的感受野为7×7;膨胀=2即对卷积核进行插0操作!
    • (c)、F3 is produced from F2 by a 4-dilated convolution; each element in F3 has a receptive field of 15×15.
      F3由F2通过4倍卷积得到;F3中每个元素的感受野为15×15;膨胀=4即对卷积核进行插0操作!
           上边三张图可知,与每个层相关联的参数数量是相同的,但是感受野呈指数增长,而参数数量呈线性增长

     

     

    5、膨胀卷积又被称为带孔卷积——atrous convolution

    膨胀卷积又被称为带孔卷积。

    1、采用带孔卷积(atrous convolution )扩大感受野

    (1)、一维图:Illustration of atrous convolution in 1-D
    • (a)、在低分辨率输入特征图上,使用标准卷积(rate=1即膨胀=1),进行Sparse稀疏特征提取;
    • (b)、在高分辨率输入特征图上,利用rate = 2的膨胀卷积(即相邻的输入插入灰色的0),进行Dense密集特征提取。
    (2)、二维图:Illustration of atrous convolution in 2-D
    • 顶行:在低分辨率输入特征图上,使用标准卷积进行稀疏特征提取;
      原图下采样(分辨率变低)→标准卷积→上采样
    • 底行:在高分辨率输入特征图上,利用rate = 2的膨胀卷积进行密集特征提取。
      高分辨率原图→直接密集特征提取
    • 提取效果对比非常明显!Dense提取的结果更加丰富!

     

     

    卷积案例应用

    1、AlexNet算法

    2、Yolo算法

    3、GoogLeNet算法

    4、VGGNet算法

    5、ResNet算法

     

     

     

     

    展开全文
  • 在图像处理领域,Kernel = convolution matrix = mask,它们一般都为一个较小的矩阵; 用于:Sharpen,Blur, Edge enhance,Edge ...1. 卷积操作与卷积矩阵的等价性 (1)创建一维信号 N = 100; s = zeros(N, 1...
    • 在图像处理领域,Kernel = convolution matrix = mask,它们一般都为一个较小的矩阵;
    • 用于:Sharpen,Blur, Edge enhance,Edge detect,Emboss(使凸出;在……上作浮雕图案;装饰)

    1. 卷积操作与卷积矩阵的等价性

    • (1)创建一维信号

      N = 100;
      s = zeros(N, 1);
      k = [20, 45, 70];
      a = [2, -1, 1];
      s(k) = a;
    • (2)创建卷积核

      L = 4;
      h = ones(L, 1)/L;
    • (3)使用 matlab 创建 convolution matrix

      首先考虑,卷积矩阵的 size,卷积操作conv(h, s) 返回的响应其长度为 L+N-1, 因此:

      M = N+L-1;
      H = sparse(M, N);
      e = ones(N, 1)
      for i = 0:L-1,
          H = H + spdiags(e*h(i+1), -i, M, N);
      end
    • (4)验证二者操作的等价性:

      err = H*s - conv(h, s);
      max_err = max(abs(err));

    2. spy:可视化稀疏矩阵的形式

    而不是简单地将稀疏矩阵以一个矩阵的形式显示,显然是因为其规模十分之大,且较为稀疏,不易直观观察。

    Kernel (image processing)
    8.2. Convolution Matrix

    转载于:https://www.cnblogs.com/mtcnn/p/9422730.html

    展开全文
  • Below is an example of one such matrix (used in the blur effect) 记住,这种操作称为卷积矩阵 。 因此,您需要一个矩阵。 下面是一个这样的矩阵的示例(用于模糊效果) Now you take one of the channels, say R ...
    矩阵卷积的卷积核

    矩阵卷积的卷积核

    In the previous post I talked about manipulating and changing pixels in an image (using JavaScript and canvas) one at a time. We took a single pixel and messed around with its R, G, B or A values.

    一篇文章中,我谈到了一次处理和更改图像中的像素(使用JavaScript和canvas )。 我们只用了一个像素,就把它的R,G,B或A值弄乱了。

    This time let's look into taking account not only the single pixel but the pixels around it. This allows you to do all kinds of effects, the most popular being emboss, edge detection, blur and sharpen.

    这次,我们不仅要考虑单个像素,还要考虑其周围的像素。 这使您可以执行各种效果,其中最流行的是浮雕,边缘检测,模糊和锐化。

    The demo page is here

    演示页面在这里

    理论(Theory)

    The type of manipulation we'll consider is called image convolution using a 3x3 matrix. You take 9 pixels from the image: the current pixel you're changing and the 8 immediately around it.

    我们将考虑的操作类型称为使用3x3矩阵的图像卷积。 您从图像中获取了9个像素:您正在更改的当前像素以及周围的8个像素。

    In other words you want to change the RGB values for the pixel in the middle based on its own value and those around it.

    换句话说,您要根据中间像素的值及其周围的值更改中间像素的RGB值。

    Let's say we have some sample values (given in red for R, blue for B and green for G in this figure):

    假设我们有一些样本值(在此图中,R表示红色,B表示蓝色,G表示绿色):

    Remember this manipulation was called convolution matrix. So you need a matrix. Below is an example of one such matrix (used in the blur effect)

    记住,这种操作称为卷积矩阵。 因此,您需要一个矩阵。 下面是一个这样的矩阵的示例(用于模糊效果)

    1,2,1,2,4,2,1,2,

    Now you take one of the channels, say R for example. You take each of the 9 R values you have and multiply it by the corresponding number in the matrix. Then sum the nine numbers.

    现在您选择其中一个频道,例如说R。 取9个R值中的每一个,并将其乘以矩阵中的相应数字。 然后将九个数字相加。

    1,2,1,2,4,2,1,2,
    1*1 + 2*2 + 5*1 + 11*2 + 10*4 + 20*2 + 1*1 + 10*2 + 1*1 =
     1  +  4  + 5   +   22 +  40  +  40  +  1  +  20  +  1  =
                          134 
    
    

    In addition to the matrix we also have a divisor and an offset, both optional. If there's no divisor (meaning it's 1, not 0), the result for Red we're looking for is 134. As you can see 134 is pretty far off from the original value of 10. But the blur effect has a divisor of 16. So the new value for red is 8.375

    除了矩阵,我们还有除数偏移量,两者都是可选的。 如果没有除数(表示它是1,而不是0),则我们要查找的Red的结果是134。您可以看到134与原始值10距离很远。但是模糊效果的除数为16 。因此,红色的新值为8.375

    If the convolution asked for an offset, you add it to the end result.

    如果卷积要求偏移量,则将其添加到最终结果中。

    Then you repeat the same for Green and Blue. You can do alpha if you want but for regular images it has constant 255 value so you'll do a lot of math and end up with 255.

    然后,对绿色和蓝色重复相同的操作。 您可以根据需要进行alpha转换,但对于常规图像,它具有恒定的255值,因此您将进行大量数学运算并最终得到255。

    You may have noticed that the divisor 16 is also the sum of the numbers in the matrix;

    您可能已经注意到,除数16也是矩阵中数字的总和。

    1 + 2 + 1 + 2 + 4 + 2 + 1 + 2 + 1 = 16
    

    This way the result image is as bright as the original. If you have an unbalanced matrix you'll get a darker or a lighter image.

    这样,结果图像与原始图像一样明亮。 如果矩阵不平衡,则会得到较暗或较亮的图像。

    The offset is 0 most of the time, but not always. The emboss effect has offset 127 for example.

    偏移量在大多数情况下为0,但并非总是如此。 压纹效果具有例如偏移127。

    演示矩阵 (Demo matrices)

    My demo uses the most popular matrices out there. You can search the web for other matrices and play with them. None of them define a divisor because it's the sum of their elements, but the API I'll show you lets you use your custom divisor.

    我的演示使用了最流行的矩阵。 您可以在网上搜索其他矩阵并与它们一起玩。 它们都不定义除数,因为它是元素的总和,但是我将向您展示的API使您可以使用自定义除数。

    Without further ado, here are the matrices I used defined as an array of JavaScript objects:

    事不宜迟,这里是我用来定义为JavaScript对象数组的矩阵:

    var matrices = [
      {
        name: 'mean removal (sharpen)',
        data:
         [[-1, -1, -1],
          [-1,  9, -1],
          [-1, -1, -1]]
      },
      {
        name: 'sharpen',
        data:
         [[ 0, -2,  0],
          [-2, 11, -2],
          [ 0, -2,  0]]
      },
      {
        name: 'blur',
        data:
         [[ 1,  2,  1],
          [ 2,  4,  2],
          [ 1,  2,  1]]
      },
      {
        name: 'emboss',
        data:
         [[ 2,  0,  0],
          [ 0, -1,  0],
          [ 0,  0, -1]],
        offset: 127,
      },
      {
        name: 'emboss subtle',
        data:
         [[ 1,  1, -1],
          [ 1,  3, -1],
          [ 1, -1, -1]],
      },
      {
        name: 'edge detect',
        data:
         [[ 1,  1,  1],
          [ 1, -7,  1],
          [ 1,  1,  1]],
      },
      {
        name: 'edge detect 2',
        data:
         [[-5,  0,  0],
          [ 0,  0,  0],
          [ 0,  0,  5]],
      }
    ];
    

    结果 (Results)

    Original

    原版的

    Blur

    模糊

    Sharpen

    锐化

    Edge detect

    边缘检测

    Edge 2

    边缘2

    Emboss

    浮雕

    Emboss (subtle)

    浮雕(微妙)

    Mean removal (sharpen a lot)

    卑鄙的去除(很多)

    API (The API)

    The API is the same as in the previous post, same constructor and all, just adding a new method called convolve(). This is where the magic happens.

    该API与上一篇文章相同,相同的构造函数,以及所有相同的东西,只是添加了一个称为convolve()的新方法。 这就是魔术发生的地方。

    You use this method like so:

    您可以这样使用此方法:

    transformador.convolve([
      [1,2,1],
      [2,4,2],
      [1,2,1]
    ], 16, 0);
    

    Again, 16 is optional as the method will figure it out if you omit and offset is optional too. Actually you can go to the demo and play in the console to see what happens with a different divisor, e.g.

    同样,16是可选的,因为如果您忽略了该方法,它将计算出来,而offset也可选。 实际上,您可以转到演示并在控制台中播放以查看使用其他除数的情况,例如

    transformador.convolve([[1,2,1],[2,4,2],[1,2,1]], 10);
    

    or

    要么

    transformador.convolve([[1,2,1],[2,4,2],[1,2,1]], 20);
    

    卷积() (convolve())

    Some comments on how convolve() was implemented in this demo.

    关于此演示中如何实现convolve()一些评论。

    The big picture:

    大图:

    CanvasImage.prototype.convolve = function(matrix, divisor, offset) {
      // ...
    };
    

    Handle arguments: flat matrix is easier to work with and figure out the divisor if missing. How 'bout that array reduce, eh? ES5 ftw.

    处理参数:平面矩阵更易于使用,并找出除数是否丢失。 这个数组如何减少,是吗? ES5开始

      var m = [].concat(matrix[0], matrix[1], matrix[2]); // flatten
      if (!divisor) {
        divisor = m.reduce(function(a, b) {return a + b;}) || 1; // sum
      }
    

    Some vars more or less the same as the last time in the transform() method:

    一些var与transform()方法中的上一次大致相同:

      var olddata = this.original;
      var oldpx = olddata.data;
      var newdata = this.context.createImageData(olddata);
      var newpx = newdata.data
      var len = newpx.length;
      var res = 0;
      var w = this.image.width;
    

    Then a loop through all the image data, filter out every 4th element (because we ignore Alpha channel) and write the new image data to the canvas.

    然后循环遍历所有图像数据,滤出第4个元素(因为我们忽略了Alpha通道),然后将新的图像数据写入画布。

      for (var i = 0; i < len; i++) {
        if ((i + 1) % 4 === 0) {
          newpx[i] = oldpx[i];
          continue;
        }
     
        // 
        // magic...
        //
      }
      this.setData(newdata);
    

    Remember that canvas image data is one long array where 0 is R for pixel #1, 1 is B, 2 is G, 3 is Alpha, 4 is R for pixel #2 and so on. This is different than more other code examples you'll in different languages where there are two loops in order to touch every pixel: one from 0 to width and an inner one from 0 to height.

    请记住,画布图像数据是一个长数组,其中像素#1的R为0,像素1为B,2为G,3为Alpha,像素2#的R为4,以此类推。 这与您将使用不同语言编写的更多其他代码示例不同,在其他语言中,有两个循环触摸每个像素:一个循环从0到宽度,内部循环从0到高度。

    And finally, the "magic" part:

    最后,“魔术”部分:

        res = 0;
        var these = [
          oldpx[i - w * 4 - 4] || oldpx[i],
          oldpx[i - w * 4]     || oldpx[i],
          oldpx[i - w * 4 + 4] || oldpx[i],
          oldpx[i - 4]         || oldpx[i],
          oldpx[i],
          oldpx[i + 4]         || oldpx[i],
          oldpx[i + w * 4 - 4] || oldpx[i],
          oldpx[i + w * 4]     || oldpx[i],
          oldpx[i + w * 4 + 4] || oldpx[i]
        ];
        for (var j = 0; j < 9; j++) {
          res += these[j] * m[j];
        }
        res /= divisor;
        if (offset) {
          res += offset;
        }
        newpx[i] = res;
    

    these are the pixels we want to inspect. oldpx[i] is the one in the middle which we're changing to newpx[i]. Also note how we default all pixels to oldpx[i]. This is to deal with the boundary pixels: tho top and bottom rows of pixels and the left and right columns. Because the pixel in position 0x0 has no pixels above it or to the left. Then we loop through these and multiply by the corresponding value in the matrix. Finally divide and offset, if required.

    these是我们要检查的像素。 oldpx[i]是中间的一个,我们要更改为newpx[i] 。 还要注意我们如何将所有像素默认为oldpx[i] 。 这是为了处理边界像素:像素的顶部和底部行以及左侧和右侧列。 因为位置0x0中的像素在其上方或左侧没有像素。 然后,我们遍历these值并乘以矩阵中的相应值。 最后,如果需要的话, divide offset

    谢谢! (Thanks!)

    Thanks for reading, and now go play with the demo in the console. An easy template to start is:

    感谢您的阅读,现在在控制台中玩演示。 一个简单的模板开始是:

    transformador.convolve([[1,0,0],[0,0,0],[0,0,-1]], 1, 127); 
    

    If you want to apply convolutions on top of each other, you can reset the original image data to the current.

    如果要在彼此之间应用卷积,可以将原始图像数据重置为当前图像。

    transformador.original = transformador.getData();
            
            

    Tell your friends about this post on Facebook and Twitter

    FacebookTwitter上告诉您的朋友有关此帖子的信息

    翻译自: https://www.phpied.com/canvas-pixels-2-convolution-matrix/

    矩阵卷积的卷积核

    展开全文
  • **在卷积网络反向传播最后一步,即求权值更新量时, 用误差矩阵卷积上一层的输出,会把这个输出矩阵旋转180度,为什么,没想明白?**
  • 卷积矩阵及其运算实例

    千次阅读 2018-01-12 00:51:59
     矩阵卷积运算主要用在图像处理中,假设输入信号为x[m,n],激活响应为h[m,n],则其卷积定义为: 不过在图像处理中这里的激活响应(也称为核)h[m,n]通常是一个3乘3矩阵,其下标如下图所示 其余下标的...

    转自:http://blog.sina.com.cn/s/blog_5562b0440101a2pr.html

      矩阵的卷积运算主要用在图像处理中,假设输入信号为x[m,n],激活响应为h[m,n],则其卷积定义为:

    卷积矩阵及其运算实例
    不过在图像处理中这里的激活响应(也称为核)h[m,n]通常是一个3乘3矩阵,其下标如下图所示
    卷积矩阵及其运算实例

    其余下标的值取0,注意到原点(0,0)是是矩阵的中心。
        在图像处理中,输入信号x[m,n]的非零值通常是横坐标从0到M-1,纵坐标从0到N-1,这里M和N分别是图像宽和高的值,其余的值设置为0。
        根据定义可以直接计算矩阵的卷积。假设我们有一个3x3的核和一个3x3的输入:
    卷积矩阵及其运算实例   卷积矩阵及其运算实例   卷积矩阵及其运算实例
           核                   输入                输出
    具体的计算过程如下:
    卷积矩阵及其运算实例      卷积矩阵及其运算实例
    卷积矩阵及其运算实例         卷积矩阵及其运算实例

    卷积矩阵及其运算实例     卷积矩阵及其运算实例

    卷积矩阵及其运算实例      卷积矩阵及其运算实例
    卷积矩阵及其运算实例           卷积矩阵及其运算实例


    卷积矩阵及其运算实例     卷积矩阵及其运算实例

    卷积矩阵及其运算实例       卷积矩阵及其运算实例

    卷积矩阵及其运算实例            卷积矩阵及其运算实例

    卷积矩阵及其运算实例      卷积矩阵及其运算实例
    展开全文
  • 基于图的推荐系统 我们仓库的结构 . |-- README.md (here) |-- log (saved tensorboard log file) |-- ml-100k (raw dataset) |-- weights (saved model weights) |-- text (grid search text and ablation study ...
  • as3.0 卷积矩阵

    2014-07-31 11:10:00
    //矩阵 通过设置矩阵加入过滤器 实现不同效果  mymatrix = [-1, -1, 0,  -1, 1, 1,  0, 1, 2];  myconvmat = new ConvolutionFilter(3, 3, mymatrix);  } 转载于:...
  • 本文提出了一种新的上下文感知推荐模型——卷积矩阵因式分解(convmf),将卷积神经网络(CNN)与概率矩阵因式分解(PMF)相结合。因此,convmf捕获了文档的上下文信息,进一步提高了评级预测的准确性。对三个真实数据集...
  • 文章目录ConvMF概述PMFCNN无缝融合进入PMF——形成ConvMF结果和影响R-...深度学习在推荐系统上的运用,具体用了卷积神经网络(CNN)提取文本特征,融合PMF模型进行推荐。 具体论文见http://dm.postech.ac.kr/~cart...
  • 文章目录1 相关介绍1.1 背景1.2 side information1.3 contributions1.4 相关介绍自编码器矩阵分解模型Matrix completion with side information2 在二部图中矩阵补全作为一种连接预测2.1 符号定义2.2 Revisiting ...
  • MATLAB矩阵分析和计算编辑锁定讨论上传视频本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!《MATLAB矩阵分析和计算》是清华大学出版社出版的一本图书。[1]书名MATLAB矩阵分析和计算作者...
  • 主流深度学习软件在进行卷积操作的时候并不是采用我们非常熟悉但是效率底下的双重循环算法,而是将卷积表示为一个由卷积核...卷积矩阵之所以叫双重块状toeplitz矩阵,是因为1)组成该矩阵的每一个分块矩阵都是toe...
  • 二维卷积/矩阵卷积

    万次阅读 2017-07-22 05:09:02
    二维卷积/矩阵卷积的计算方程设有矩阵A和矩阵B,它们的卷积结果矩阵的元素可由下列公式计算得来: C(j,k)=∑p∑qA(p,q)B(j−p+1,k−q+1)C(j,k)=\sum_p \sum_q A(p,q) B(j-p+1,k-q+1) 其中的index只要在A,B中valid...
  • 矩阵卷积运算过程讲解

    千次阅读 2019-05-16 17:12:24
    在爬虫处理验证码的过程中接触到矩阵卷积运算,关于该类运算,记录...现在对于上面卷积过程进行分析:我们用来做例子的 A 矩阵为 m×m(3×3)二维矩阵(被卷积矩阵),K 为 n×n(2×2)的二维矩阵(卷积核)。 卷...
  • 两个矩阵的中心卷积和普通卷积

    热门讨论 2009-01-19 14:39:53
    矩阵矩阵的二维卷积 矩阵与数组的卷积 数组与数组的卷积 数组与矩阵卷积
  • 本文件是用matlab实现用矩阵法计算循环卷积矩阵。适合初学数字信号处理的筒子参考
  • 矩阵卷积矩阵相乘的转化

    万次阅读 多人点赞 2013-10-05 16:49:49
    两个矩阵卷积转化为矩阵相乘形式——Matlab应用(这里考虑二维矩阵,在图像中对应)两个图像模糊(边缘)操作,假设矩阵A、B,A代表源图像,B代表卷积模板,那么B的取值决定最后运算的结果。    Matlab中的应用函数...
  • 卷积矩阵理解

    千次阅读 2019-02-25 17:46:14
    卷积的数学形式通常通过矩阵乘法来表示。本文从卷积最一般的数学形式开始讲起,并从一般形式变换为不同网络中的各种特殊形式,最后将说明opencv、tensorflow和pytorch中的卷积的数学形式。 1. 卷积的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,751
精华内容 1,500
关键字:

卷积矩阵