精华内容
下载资源
问答
  • 卷积计算过程(单/RGB多通道) 特征图大小计算公式 转置卷积(反卷积)计算过程 空洞卷积计算过程 卷积计算过程(单/RGB多通道) 假设输入层的大小为 5 x 5,局部感受野(或称卷积核)的大小为 3 x 3,那么...

    感受野大小计算、卷积参数量与计算量、空洞卷积计算量与参数量

    卷积计算,反卷积计算,特征图大小计算,空洞卷积计算

    转自:https://www.jianshu.com/p/09ea4df7a788?utm_source=oschina-app

    • 卷积计算过程(单/RGB多通道)
    • 特征图大小计算公式
    • 转置卷积(反卷积)计算过程
    • 空洞卷积计算过程

     

    卷积计算过程(单/RGB多通道)

    假设输入层的大小为 5 x 5,局部感受野(或称卷积核)的大小为 3 x 3,那么输出层一个神经元所对应的计算过程(下文简称「卷积计算过程」)如下:

    每个卷积核对应的权重 W 在计算卷积过程中,值是固定的,我们称为权重共享

    如果将输入层想像成黑板,局部感受野就像是黑板擦,他会从左往右,从上至下的滑动,每次滑动 1 个步长(Stride)并且每次滑动都重复上述的计算过程,我们就可以得到输出的特征图(feature map),如下图:

    有时候,按照规定步数滑动到黑板边缘时,黑板擦一部分会露出在黑板外,这个时候就 不能够顺利执行卷积过程了,解决的方法是填充,常见的有两种填充(Padding)方法,第一种方法为 Valid,第二种方法为 Same,如下图所示:

    Valid 是丢弃的方法,比如上述的 input_width = 7,kernel_width = 5,stride = 3,只允许滑动 1 次,多余的元素则丢掉。

    Same 是补全的方法,对于上述的情况,允许滑动 3 次,但是需要补 4 个元素,左边补 2 个 0,右边补 2 个 0,这种方法则不会抛弃边缘的信息,关于如何计算填充数量会在下小节中讲到。

    在实际应用中,输入的都为彩色图像(RGB 三通道),也就是说输入的维度是 [图片数,图片高,图片宽,通道数],这个时候,执行卷积的过程如下:

    特征图大小的计算公式

    我们在设计和调整网络结构的时候,还需要快速知道调整了卷积核后,输出特征图的大小,假定:

    • 输入图片 i(只考虑输入宽高相等)
    • 卷积核大小 f
    • 步长 s
    • 填充的像素数 p

    那么输出的特征图大小 o 的计算公式则如下:

    • 当填充方式为 VALID 时,p 值等于 0,代入相应的 i,f,p,s 就可以相应的计算出 o 值了。

    • 当填充方式为 SAME 时,步长 s 为 1 时,输出的 o == i,我们则可以计算出相应的 P 值为 p = (f-1) / 2

    转置卷积(反卷积,逆卷积)的计算过程

    O=(i-1)*s + k

    空洞卷积的计算过程

    空洞卷积(Dilated convolutions)在卷积的时候,会在卷积核元素之间塞入空格,如下图所示:

    这里引入了一个新的超参数 d,(d - 1) 的值则为塞入的空格数,假定原来的卷积核大小为 k,那么塞入了 (d - 1) 个空格后的卷积核大小 n 为:

    进而,假定输入空洞卷积的大小为 i,步长 为 s ,空洞卷积后特征图大小 o 的计算公式为:

     

    展开全文
  • 反卷积计算与加速

    2020-12-06 18:11:27
    反卷积计算与加速介绍插值补零法交错相加法小卷积核法如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何...

    介绍

    反卷积(标准叫法为转置卷积),是卷积的一种逆运算(注意:是卷积的逆运算,不是卷积的逆过程),属于上采样的一种,在计算机视觉的深度学习领域中被广泛用作超分辨率重建等。反卷积的详细推导过程可以看这篇。反卷积(Transposed Convolution)详细推导

    本文将介绍三种反卷积计算方法(三种计算方法在数学上完全等价),并且简述每种方法的优劣。可以根据不同的加速平台选择不同的计算部署方法。
    首先我们列举几个参数如下,
    i:input sizeo:output sizekd:kernel size of deconvsd:stride of deconvpd:padding of deconv \begin{aligned} i:&input\ size \\ o:&output\ size \\ k_d:&kernel\ size\ of \ deconv \\ s_d:&stride\ of\ deconv \\ p_d:&padding\ of\ deconv \end{aligned}
    其中kdk_d,sds_d分别是反卷积的kernel size和stride,sds_d可以理解为feature map的放大倍数(在实际的超分网络中sds_d常见为2,3,4,分别代表将feature map放大2倍,3倍,4倍)。

    在本文介绍的每个方法下面用一个相同的例子来说明这些算法的等价性(golden数据采用TF的计算方式):
    input(i=3×3i=3\times 3): [123456789]\left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{matrix} \right]
    kernel(kd×kd=3×3k_d\times k_d= 3\times 3): [101110010]\left[ \begin{matrix} 1 & 0 & 1 \\ -1 & 1 & 0 \\ 0 & -1 & 0 \\ \end{matrix} \right]
    stride(sd=2s_d=2),
    output(o=6×6o=6\times 6): [103050112233419211344556674155176778899]\left[ \begin{matrix} 1 & 0 & 3 & 0 & 5 & 0 \\ -1 & 1 & -2 & 2 & -3 & 3 \\ 4 & -1 & 9 & -2 & 11 & -3 \\ -4 & 4 & -5 & 5 & -6 & 6 \\ 7 & -4 & 15 & -5 & 17 & -6 \\ -7 & 7 & -8 & 8 & -9 & 9 \\ \end{matrix} \right] (TF1.15计算结果)

    插值补零法

    此计算方法是目前最常见的计算反卷积的方法,核心思想就是在input feature map里的每个pixel之间插00,将kernel在二维平面旋转180°,然后进行kernel=kd,stride=1kernel=k_d,stride=1的常规卷积计算。其中00的个数 nnsds_d有关,具体数学关系为:
    n=stride1n=stride-1
    此时反卷积的输入输出尺寸关系为:
    o=sd(i1)2pd+kdo=s_d(i-1)-2p_d+k_d
    实际用tensorflow或者其他框架进行反卷积计算时,必须指定输出图像的大小 oo,参考崔权:关于tf中的conv2d_transpose的用法,tensorflow反卷积层中也没有 pdp_d这个参数( 注:TF中的padding只有’SAME’和’VALID’两种模式),我个人理解实际计算中的pdp_d应该是由i,o,sd,kdi,o,s_d,k_d反推出来的。

    让我们来看下面两张采用插值补零法的反卷积计算动图:
    反卷积计算动图1
    上图中 i=3,o=5,kd=3,sd=3i=3,o=5,k_d=3,s_d=3,因此可以推算出该反卷积在top、bottom、left、right都补了1个00
    反卷积计算动图2
    上图中 i=3,o=6,kd=3,sd=3i=3,o=6,k_d=3,s_d=3,因此可以推算出该反卷积在top、left补了1个00,而在bottom、right补了2个00注:TF的计算规则是优先在top、left补2个00,在bottom、right补1个00)。

    回到我们的例子,我们采用插值补零法计算反卷积的过程如下,

    输入input插值补零(根据TF的计算规则): [0000000000000000001020300000000000405060000000000070809000000000]\left[ \begin{matrix} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 2 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 4 & 0 & 5 & 0 & 6 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 7 & 0 & 8 & 0 & 9 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \end{matrix} \right]

    deconv kernel旋转180°: [010011101]\left[ \begin{matrix} 0 & -1 & 0 \\ 0 & 1 & -1 \\ 1 & 0 & 1 \\ \end{matrix} \right]

    最后正向卷积得: [103050112233419211344556674155176778899]\left[ \begin{matrix} 1 & 0 & 3 & 0 & 5 & 0 \\ -1 & 1 & -2 & 2 & -3 & 3 \\ 4 & -1 & 9 & -2 & 11 & -3 \\ -4 & 4 & -5 & 5 & -6 & 6 \\ 7 & -4 & 15 & -5 & 17 & -6 \\ -7 & 7 & -8 & 8 & -9 & 9 \\ \end{matrix} \right]
    可以看出和TF golden结果一致。

    优点:将反卷积转化成常规卷积,可以用专用的卷积加速器(NPU、DPU等各种xPU)进行加速计算。
    缺点:需要在每个pixel间插0,那么从外部存储器(DDR)读取数据就会不连续,容易形成带宽bound;计算中也有很多冗余计算(乘0累加),实际计算效率(computation efficiency)也很低。

    交错相加法

    此方法是名符其实的“反”卷积,让我们回想下二维卷积的计算方法,一个 k×kk\times k 的卷积核在以 stride 的间隔距离滑过input feature map,每一次滑动做一次卷积核和滑窗pixel的乘累加计算,并且得到一个output feature map中的一个pixel,如下图所示:
    kernel=3,stride=2的正向卷积
    反卷积的计算就是正向卷积计算的逆向操作,先放图:
    kernel=3,stride=2的反卷积
    具体计算过程就是input feature map上的每一个pixel和 k×kk\times k 的卷积核点乘得到一个k×kk\times k的patch,然后相邻的patch以间隔 stride 错位相加,如上图所示。一般来说,这种计算方法还需要对边界进行裁剪以符合output feature map的大小 oo 。这种计算过程正好和正向的卷积计算是“反”过来的,故名“反卷积”(大雾)。

    我们还是以计算为例,input每个pixel和反卷积核点乘得到9个 3×33\times 3 patch:
    [101110010][202220020][303330030]\left[ \begin{matrix} 1 & 0 & 1 \\ -1 & 1 & 0 \\ 0 & -1 & 0 \\ \end{matrix} \right] , \left[ \begin{matrix} 2 & 0 & 2 \\ -2 & 2 & 0 \\ 0 & -2 & 0 \\ \end{matrix} \right] , \left[ \begin{matrix} 3 & 0 & 3 \\ -3 & 3 & 0 \\ 0 & -3 & 0 \\ \end{matrix} \right]

    [404440040][505550050][606660060]\left[ \begin{matrix} 4 & 0 & 4 \\ -4 & 4 & 0 \\ 0 & -4 & 0 \\ \end{matrix} \right] , \left[ \begin{matrix} 5 & 0 & 5 \\ -5 & 5 & 0 \\ 0 & -5 & 0 \\ \end{matrix} \right] , \left[ \begin{matrix} 6 & 0 & 6 \\ -6 & 6 & 0 \\ 0 & -6 & 0 \\ \end{matrix} \right]

    [707770070][808880080][909990090]\left[ \begin{matrix} 7 & 0 & 7 \\ -7 & 7 & 0 \\ 0 & -7 & 0 \\ \end{matrix} \right] , \left[ \begin{matrix} 8 & 0 & 8 \\ -8 & 8 & 0 \\ 0 & -8 & 0 \\ \end{matrix} \right] , \left[ \begin{matrix} 9 & 0 & 9 \\ -9 & 9 & 0 \\ 0 & -9 & 0 \\ \end{matrix} \right]

    相邻patch以 stride=2 错位相加得: [1030503112233041921136445566074155176977889900708090]\left[ \begin{matrix} 1 & 0 & 3 & 0 & 5 & 0 & 3\\ -1 & 1 & -2 & 2 & -3 & 3 & 0 \\ 4 & -1 & 9 & -2 & 11 & -3 & 6 \\ -4 & 4 & -5 & 5 & -6 & 6 & 0\\ 7 & -4 & 15 & -5 & 17 & -6 & 9\\ -7 & 7 & -8 & 8 & -9 & 9 & 0\\ 0 & -7 & 0 & -8 & 0 & -9 & 0\\ \end{matrix} \right]

    对最右列和最底行进行裁剪得到最终结果: [103050112233419211344556674155176778899]\left[ \begin{matrix} 1 & 0 & 3 & 0 & 5 & 0 \\ -1 & 1 & -2 & 2 & -3 & 3 \\ 4 & -1 & 9 & -2 & 11 & -3 \\ -4 & 4 & -5 & 5 & -6 & 6 \\ 7 & -4 & 15 & -5 & 17 & -6 \\ -7 & 7 & -8 & 8 & -9 & 9 \\ \end{matrix} \right]

    可以看出和TF golden结果一致。

    优点:没有任何的冗余计算,不需要对输入补0。
    缺点:无法利用专用的卷积加速器进行加速,但是适合用CPU或GPU这种比较通用的处理器进行计算(注:caffe的反卷积采用的就是此计算方法)。

    小卷积核法

    此方法是本人最为欣赏的一个方法,该方法将每一个大小为 kd×kdk_d\times k_d 的反卷积核先在二维方向旋转180°,然后再将每一个反卷积核拆成 sd×sds_d\times s_d 个小卷积核(注:此时我们可以认为 coc_o 扩大了 sd×sds_d\times s_d 倍),然后用这些小卷积核对input feature map做 stride=1stride=1 的正向卷积,最后通过depth2space将coc_o方向的pixel重排到二维平面上。具体过程如下图示:
    kernel=3,stride=2的反卷积核拆成4个kernel=2,stride=1的正向卷积核
    上图kernel=3,stride=2的反卷积,我们先将其分拆并重排成4个kernel=2,stride=1的正向卷积核,重排方案如下:
    k3s2 deconv kernel拆分重排方案
    图中的0-8代表二维 3×33\times 3 deconv kernel每个点的index(注:-1代表这个位置没有值且补零)。

    接着用这些正向卷积核对input feature map做正向卷积,得到4个output feature map,再用depth2space将 c_o 方向的数据重排到二维平面上。如下图所示:
    depth2space做数据重排
    反卷积核的重排可以离线完成,不占用计算时间也不占用带宽。

    回到我们的例子,deconv kernel拆成4个kernel=2的小卷积核:
    [0011]\left[ \begin{matrix} 0 & 0 \\ 1 & 1 \\ \end{matrix} \right][0100]\left[ \begin{matrix} 0 & -1 \\ 0 & 0 \\ \end{matrix} \right][0001]\left[ \begin{matrix} 0 & 0 \\ 0 & -1 \\ \end{matrix} \right][0001]\left[ \begin{matrix} 0 & 0 \\ 0 & 1 \\ \end{matrix} \right]

    对input的左列和上行进行1次padding: [0000012304560789]\left[ \begin{matrix} 0 & 0 & 0 & 0 \\ 0 & 1 & 2 & 3 \\ 0 & 4 & 5 & 6 \\ 0 & 7 & 8 & 9 \\ \end{matrix} \right]

    用每个小卷积核对上面padding过的input进行stride=1的正向卷积得:
    [135491171517]\left[ \begin{matrix} 1 & 3 & 5 \\ 4 & 9 & 11 \\ 7 & 15 & 17 \\ \end{matrix} \right] , [000123456]\left[ \begin{matrix} 0 & 0 & 0 \\ -1 & -2 & -3 \\ -4 & -5 & -6 \\ \end{matrix} \right] , [123456789]\left[ \begin{matrix} -1 & -2 & -3 \\ -4 & -5 & -6 \\ -7 & -8 & -9 \\ \end{matrix} \right] , [123456789]\left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{matrix} \right] ,

    以上结果可以看成是4个通道的feature map,最后进行depth2space得:
    [103050112233419211344556674155176778899]\left[ \begin{matrix} 1 & 0 & 3 & 0 & 5 & 0 \\ -1 & 1 & -2 & 2 & -3 & 3 \\ 4 & -1 & 9 & -2 & 11 & -3 \\ -4 & 4 & -5 & 5 & -6 & 6 \\ 7 & -4 & 15 & -5 & 17 & -6 \\ -7 & 7 & -8 & 8 & -9 & 9 \\ \end{matrix} \right]

    可以看出和TF golden结果一致。

    优点:可以用专用的卷积加速器加速反卷积计算,没有带宽bound。

    缺点:卷积核重排比较复杂,没有统一的方案,部分卷积加速器可能不支持depth2space。

    展开全文
  • 第一次发专栏只能靠图片吸引大家(lsp)的眼球,如果大家觉得有帮助记得点赞呀,再次声明这是一个正经的学术专栏!!!反卷积(标准叫法为转置卷积),是卷积的一种逆运算(注意:是...本文将介绍三种反卷积计算方...

    第一次发专栏只能靠图片吸引大家(lsp)的眼球,如果大家觉得有帮助记得点赞呀,再次声明这是一个正经的学术专栏!!!

    反卷积(标准叫法为转置卷积),是卷积的一种逆运算(注意:是卷积的逆运算,不是卷积的逆过程),属于上采样的一种,在计算机视觉的深度学习领域中被广泛用作超分辨率重建等。反卷积的详细推导过程可以看这篇反卷积(Transposed Convolution)详细推导 。

    本文将介绍三种反卷积计算方法(三种计算方法在数学上完全等价),并且简述每种方法的优劣。可以根据不同的加速平台选择不同的计算部署方法。

    首先我们列举几个参数如下,

    其中

    分别是反卷积的kernel size和stride。
    可以理解为feature map的放大倍数(在实际的超分网络中
    常见为2,3,4,分别代表将feature map放大2倍,3倍,4倍)。

    在本文介绍的每个方法下面用一个相同的例子来说明这些算法的等价性(golden数据采用TF的计算方式):

    input(

    ):
    ,

    kernel(

    ):
    ,

    stride(

    ),

    output(

    ):
    (TF1.15计算结果)
    • 插值补零法

    此计算方法是目前最常见的计算反卷积的方法,核心思想就是在input feature map里的每个pixel之间插

    ,将kernel在二维平面旋转180°,然后进行
    的常规卷积计算。其中
    的个数
    有关,具体数学关系为:

    反卷积(Transposed Convolution)详细推导中推导出此时反卷积的输入输出尺寸关系为:

    其实这是不严谨的,实际用tensorflow或者其他框架进行反卷积计算时,必须指定输出图像的大小

    ,参考崔权:关于tf中的conv2d_transpose的用法,tensorflow反卷积层中也没有
    这个参数( 注:TF中的padding只有'SAME'和'VALID'两种模式),我个人理解实际计算中的
    应该是由
    反推出来的。

    让我们来看下面两张采用插值补零法的反卷积计算动图:

    9bf62203eb5d2bcf43f3596d4a220917.gif
    反卷积计算图示1

    上图中

    ,因此可以推算出该反卷积在top、bottom、left、right都补了1个0。

    977c036adfaad6e6e40e8496ef2ad854.gif
    反卷积计算图示2

    上图中

    ,因此可以推算出该反卷积在top、left补了1个0,而在bottom、right补了2个0(注:TF的计算规则是优先在top、left补2个0,在bottom、right补1个0)。

    回到我们的例子,我们采用插值补零法计算反卷积的过程如下,

    输入input插值补零(根据TF的计算规则):

    deconv kernel旋转180°:

    最后正向卷积得:

    可以看出和TF golden结果一致。

    优点:将反卷积转化成常规卷积,可以用专用的卷积加速器(NPU、DPU等各种xPU)进行加速计算。

    缺点:需要在每个pixel间插0,那么从外部存储器(DDR)读取数据就会不连续,容易形成带宽bound;计算中也有很多冗余计算(乘0累加),实际计算效率(computation efficiency)也很低。

    • 交错相加法

    此方法是名符其实的“反”卷积,让我们回想下二维卷积的计算方法,一个

    的卷积核在以
    的间隔距离滑过input feature map,每一次滑动做一次卷积核和滑窗pixel的乘累加计算,并且得到一个output feature map中的一个pixel,如下图所示:

    c72448c05231a74f21855fa0cdad7233.png
    kernel=3,stride=2的正向卷积

    反卷积计算就是正向卷积计算的逆向操作,先放图:

    16a263e59abdf91b7b5db8b89db8fc1d.png
    kernel=3,stride=2的反卷积

    具体计算过程就是input feature map上的每一个pixel和

    的卷积核点乘得到一个
    的patch,然后相邻的patch以间隔
    错位相加,如上图所示。一般来说,这种计算方法还需要对边界进行裁剪以符合output feature map的大小
    。这种计算过程正好和正向的卷积计算是“反”过来的,故名“反卷积”(大雾)。

    我们还是以计算为例,input每个pixel和反卷积核点乘得到9个

    patch:

    相邻patch以

    错位相加得:

    对最右列和最底行进行裁剪得到最终结果:

    可以看出和TF golden结果一致。

    优点:没有任何的冗余计算,不需要对输入补0。

    缺点:无法利用专用的卷积加速器进行加速,但是适合用CPU或GPU这种比较通用的处理器进行计算(注:caffe的反卷积采用的就是此计算方法)。

    • 小卷积核法

    此方法是本人最为欣赏的一个方法,该方法将每一个大小为

    的反卷积核先在二维方向旋转180°,然后再将每一个反卷积核拆成
    个小卷积核(注:此时我们可以认为
    扩大了
    倍),然后用这些小卷积核对input feature map做
    的正向卷积,最后通过depth2space将
    方向的pixel重排到二维平面上。具体过程如下图示:

    e6ec2c73fa8ef7155c8f5da4f8c9edb5.png
    kernel=3,stride=2的反卷积核拆成4个kernel=2,stride=1的正向卷积核

    上图kernel=3,stride=2的反卷积,我们先将其分拆并重排成4个kernel=2,stride=1的正向卷积核,重排方案如下:

    eb0ce0bf119e2b07462932b7cd3629be.png
    k3s2 deconv kernel拆分重排方案

    图中的0-8代表二维

    deconv kernel每个点的index(注:-1代表这个位置没有值且补零)。

    接着用这些正向卷积核对input feature map做正向卷积,得到4个output feature map,再用depth2space将

    方向的数据重排到二维平面上。如下图所示:

    09afdcbf035afd4c8e99848831706d13.png
    depth2space做数据重排

    反卷积核的重排可以离线完成,不占用计算时间也不占用带宽。

    回到我们的例子,deconv kernel拆成4个kernel=2的小卷积核:

    对input的左列和上行进行1次padding:

    用每个小卷积核对上面padding过的input进行stride=1的正向卷积得:

    ,
    ,
    ,
    ,

    以上结果可以看成是4个通道的feature map,最后进行depth2space得:

    可以看出和TF golden结果一致。

    优点:可以用专用的卷积加速器加速反卷积计算,没有带宽bound。

    缺点:卷积核重排比较复杂,没有统一的方案,部分卷积加速器可能不支持depth2space。

    展开全文
  • 反卷积

    2020-07-21 20:31:21
    由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便...这里指的反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释: 反卷积是一种特

    由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(e.g.:图像的语义分割),这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。
    上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling),我们这里只讨论反卷积。这里指的反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:
    反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。

    正向卷积

    输入图像在这里插入图片描述
    输入卷积核在这里插入图片描述
    步长srides = 1, 填充padding = 0, 输出图像尺寸为(4 + 2 *0 - 3)/1 + 1 = 2

    (image_size + 2*padding - kernal_size)/strides + 1

    输出图像尺寸为2x2
    正向卷积可以理解为
    输入元素矩阵变为列向量X
    在这里插入图片描述
    输出的2x2也改成列向量Y
    在这里插入图片描述
    即Y = CX
    稀疏矩阵C为
    在这里插入图片描述

    反卷积

    X=CTYX = C^TY

    在这里插入图片描述
    考虑两种情况:
    情况一:

    在这里插入图片描述
    此时有o=s(i1)2p+kioo = s(i-1)-2p+k, 其中i,o为反卷积的输入输出

    在这里插入图片描述
    情况二:
    在这里插入图片描述
    反卷积只能恢复尺寸,不能恢复数值

    参考https://www.zhihu.com/question/48279880

    展开全文
  • 在搭配深度学习多个卷积层时我们经常要计算卷积层的输出张量的尺寸大小,可以用如下公式计算: 1, 公式 卷积层输出尺寸: o = ⌊(i + 2p - k) / s⌋ + 1 式中,i:输入尺寸;o:输出尺寸;p:padding;k: kernel_size;...
  • 卷积和反卷积实现

    2019-10-09 11:23:07
    卷积计算过程如下: 将输入矩阵X展开成:3025*363 将权重矩阵W展开成:96*363 卷积操作就是权重矩阵乘以输入矩阵np.dot(W,X):[96,363]*[363,3025] = [96,3025],再reshape成[55,55,96] 反卷积 卷积的前向...
  • 反卷积与卷积

    2018-07-19 12:35:05
    反卷积与卷积:...caffe 卷积与反卷积后维度计算方式: 对于convolution过程: output = (input + 2 * p - k) / s + 1; 对于deconvolution过程: output = (input - 1) * s + k - 2 * p;...
  • 反卷积Deconvolution

    2019-10-03 14:55:41
    反卷积(转置卷积、空洞卷积(微步卷积))近几年用得较多,本篇博客主要是介绍一下反卷积,尤其是怎么计算反卷积(选择反卷积的相关参数) 图1 空洞卷积(微步卷积)的例子,其中下面的图是输入,上面的图是...
  • 本文将总结卷积层、卷积层、感受野、权重参数数量等卷积神经网络相关的原理和计算过程。卷积层valid卷积valid卷积是最常用的下采样卷积,其特点是卷积核不能超出特征图的范围。如图,在卷积核为3×3且步长为1,且...
  • 卷积与反卷积

    千次阅读 2017-11-15 08:54:32
     传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与...
  • 为了在反卷积过程中正确地估计噪声的方差,构造一幅纯噪声图像跟实际的观测图像同步进行反卷积计算,并把纯噪声图像的方差作为观测图像中噪声方差的估计值来辅助计算规整化参数。针对规整化的各项异性,提出了能够...
  •  传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与...
  • 传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与反卷积...
  • 反卷积/转置卷积:Transposed convolution介绍1. 上采样(UpSampling)2. 正向卷积的实现过程3. 用矩阵乘法描述卷积4. 反卷积4.1 反卷积操作4.2 反卷积输入输出尺寸关系 Transposed convolution称为转置卷积,也被...
  • 卷积 首先定义本文要用到的符号 输入图片的大小: i1=i2=ii1=i2=i。...下图表示参数为(i=5,k=3,s=2,p=1)(i=5,k=3,s=2,p=1)的卷积计算过程,可以看出输出的图片大小是(3∗3)(3∗3)。 下图是参数为(i=6...
  • 这里写目录标题1. 说明卷积反卷积池化反池化 ...最简单的方式是重采样和插值:将输入图片进行rescale到一个想要的尺寸,而且计算每个点的像素点,使用如双线性插值等插值方法对其余点进行插值来完成上采样过程。 卷积 ...
  • 传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与反卷积...
  • 深度学习---图像卷积与反卷积(最完美的解释)

    万次阅读 多人点赞 2018-05-31 10:57:28
    转自:卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)1.前言 传统的CNN网络只能给出图像的LABLE,... 对于1维的卷积,公式(离散)与计算过程(连续)如下,要记住的是其中一个函数(原函数或者...
  • 感谢博主:https://blog.csdn.net/gqixf/article/details/785495451.前言 传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to... 对于1维的卷积,公式(离散)与计算过程(连...
  • 目录PyTorch中的反卷积(Transposed Convolution)Output计算公式反卷积的stride反卷积...反卷积并不是卷积操作的逆过程。通过反卷积,只能恢复原矩阵的大小,但并不能完全恢复原矩阵的相应的数值。 Output计算公式 在
  • caffe | 反卷积

    2018-06-14 20:58:33
    1.前言 传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积...
  • 不过转置卷积是目前最为正规和主流的名称,因为这个名称更加贴切的描述了卷积计算过程,而其他的名字容易造成误导。在主流的深度学习框架中,如TensorFlow,Pytorch,Keras中的函数名都是conv_transpose。所以学习...
  • 起初是看FCN图像分割论文的时候,看到论文中用到deconvolution和up-sampling,不是特别理解up-samping和deconv之间的关系,也不知道deconv是以一种怎么样计算过程完成的。所以就去搜了相关资料,同时了解了空洞卷积-...
  • , 详细讨论了空域迭代盲目反卷积方法用于光谱图反卷积时的算法实现问题 , 并在分析光谱图卷积退化过程的基础上 , 针对光谱图反卷积算法特点 , 提出了光谱图卷积退化简化计算模型和最小二乘高斯拟合模型 , 以解决算法...
  • 在整理全卷积网络的过程中,被反卷积的概念困扰很久,于是将反卷积算法单独整理为一篇博客,本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积?中的高票答案。 1.反卷积概述: 应用在计算机视觉的深度...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
关键字:

反卷积计算过程