• 解卷积与卷积的一些思考


    解卷积层和卷积层一样吗?(论文解析)


    作者:elfin   资料来源:deconvolution论文



    1、前言

    解卷积一词的来源:

    • Zeiler, Matthew D., et al. "Deconvolutional networks." Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on. IEEE, 2010.

      这篇文章的资料好像并不是很容易找到,这里我从IEEE上下载下来,提供深度学习解卷积网络的论文链接如下,Deconvolutional networks.提取码:2020

    • Zeiler, Matthew D., Graham W. Taylor, and Rob Fergus. "Adaptive deconvolutional networks for mid
      and high level feature learning." 2011 International Conference on Computer Vision. IEEE, 2011.

      这一篇论文中,作者提出了解卷积层的概念,此文章考古链接。提取码:2020

    ​ 解卷积可以理解为卷积的“逆向”过程,但是说deconvolution是反卷积,这个好像并不是那么恰当,查阅资料,deconvolution这个词的专业解释(专有名词翻译)叫:解卷积、去卷积。实际上这个叫法更专业,更贴近深度学习的使用场景。后面在介绍deconvolution和卷积层是否一样的时候,我们将使用“解卷积”称呼deconvolution。

    ​ 在我们的CVPR 2016论文[1]中,我们提出了一种新的网络结构来处理单图像超分辨率(SR)。大多数现有的基于卷积神经网络(CNN)的超分辨率方法[10,11]首先使用“双三次插值(专有名称)”对图像进行上采样,然后应用卷积网络。我们将这些首先对图像进行上采样的网络称为高分辨率(HR)网络。相反,我们直接将低分辨率(LR)输入直接输入到亚像素卷积神经网络中,如下图所示:

    其中(r)表示上采样的比例,即若输入图像大小为 (1 imes 1) ,那么输出图像的大小为 (r imes r) 。这里使用(r^{2})个通道而不是HR,并且使用周期性的shuffing重构HR图像。关于我们高效的亚像素卷积层工作原理的具体细节可以在本文中找到。我们将把我们的网络称为LR(低分辨率)网络

    ​ 在这篇文章中,我们想关注两个方面,这两个问题与CVPR的大多数人在看到这个网络时向我们提出的两个问题有关。

    • 首先,(r^{2})个通道是如何神奇地成为HR特征图的?
    • 其次,为什么LR空间中的卷积是更好的选择?

    ​ 这些实际上是我们试图在论文中回答的关键问题,但考虑到篇幅限制,我们未能深入到我们希望的深度和清晰度。为了更好地回答这些问题,我们首先讨论了以转置卷积层、亚像素卷积层和高效亚像素卷积层形式存在的解卷积层之间的关系,我们将在第一节、第二节中讨论。我们将高效亚像素卷积层称为LR空间中的卷积层,以区别于普通的亚像素卷积层[5]。然后,我们将证明,对于固定的计算预算和复杂度,在LR空间中仅有的卷积网络在相同的速度下比首先在HR空间中对输入进行上采样的网络具有更大的表示能力。


    Top  ---  Bottom

    2、转置卷积层和亚像素卷积层

    ​ 首先我们需要考察解卷积层。人们通常所说的解卷积层,首先出现在Zeiler的论文中,作为解卷积网络的一部分[2],但没有一个特定的名称。deconvolution(解卷积)层一词在他后来的工作[3]中使用,然后在caffe中实现。

    ​ 在网络可视化论文[4]取得成功之后,它被广泛采用,目前常用于语义分割[5]、流估计[6]和生成建模[7]。它还有许多名称,包括(但不限于)亚像素或微步卷积层[7]、转置卷积层[8,9]、逆卷积层、上卷积层或后向卷积层[5,6]。为了解释这些不同名称之间的关系,让我们从下图所示的1D中的步长2的简单卷积开始,它的灵感来自于[8,9]:

    上图说明了一个padding后的1D信号(x),经过信号过滤器(f),获得了一个1D信号(y)。信号(x) 长度为8,过滤器(f) 的长度为4,信号(y) 的长度为5。(x)中的灰色部分是padding(使用0),(f)中的灰色区域表示与零相乘。(x)(y)值的贡献如上图行所示,我们注意到步长为2的卷积是一种下采样操作。

    现在,让我们来研究一个1D中带步长2的裁剪转置卷积和带步长(frac{1}{2})的亚像素卷积:

    • (a):步长为2的转置卷积(1D数据中)
    • (b):步长为(frac{1}{2})的亚像素卷积(1D数据中)
    • 总结:
      • (a)中的矩阵是(b)中的转置,所以称之为转置卷积
      • (b)中每个元素都插入的padding元素,相当于每个元素添加一个微步元素,这样卷积的时候,卷积的步长如果为1,那么实际对于原特征图而言,步长为(frac{1}{2})

    ​ 上面两种卷积我们可以看出其都是上采样操作,上面的案例中,我们可以知道输入的信号(x)长度为5,过滤器(f)的大小为4,卷积后的信号(y)长度为8。信号(y)中的灰色区域表示裁剪(这部分不要所以也称之为裁剪卷积)。转置卷积之所以得名,是因为中间运算的矩阵是上上个图中矩阵的转置版本。它也被称为反向卷积,因为它是卷积层的反向传播。值得注意的是,填充后的卷积由于转置矩阵而成为裁剪卷积,而亚像素卷积的名称来自于在原始像素之间填充微步索引的假想子像素(如图b中使用0进行像素间的填充)。

    ​ 我们可以看到,这两种操作之间的唯一区别是,从x贡献y时所使用的权重索引形式是不同的(直观上就是一个是横着一个是竖着)。如果我们在亚像素卷积中反转滤波器f的元素索引(横向与纵向转换,也即原矩阵与转置矩阵),那么该层将与转置卷积层相同。换言之,如果滤波器被学习,两个操作可以获得相同的结果。


    Top  ---  Bottom

    3、解卷积 VS 低分辨率中的卷积

    ​ 在本文中,我们还想证明在LR空间中具有卷积核大小为(输出通道、输入通道、核宽度、核高度)=((o imes r^{2}, i, k, k))的简单卷积层,等于解卷积(kernel\_size = (o, i, k*r, k*r)),其中k是正整数。我们将在2D特征图中执行这些步骤,并可以与上一节的内容对应。为了避免过于复杂的图形,让我们先从一个简单的亚像素卷积层(带padding)开始,该层有一个(1,4,4)的输入和一个(1,1,4,4)卷积核,并假设一个上采样缩放因子2,得到一个((1, 8, 8))的输出:

    • 亚像素卷积第一步:构建低像素特征图的微步特征图

      ​ 如在1D数组中一样,我们对输入特征图创建一个亚像素图像,即使用微步索引。白色像素是原始的LR像素,灰色像素是零填充的假想子像素。

    • 亚像素卷积第二步:在亚像素卷积空间中卷积

      ​ 如果亚像素图像中卷积核的大小为((1, 1, 4, 4)),由非零像素激活的第一组权重是紫色(即第一组中LR像素有值,其余为0,未被激活)的。然后我们在亚像素图像中向右移动一个子像素,蓝色权重被激活。绿色和红色的也一样。

    • 亚像素卷积第三步:亚像素卷积全视角

      最后,输出的HR图像具有与亚像素图像相同的维数,我们对其进行颜色编码以显示哪个权重集对像素有贡献。

    Take care 我们注意到,(1,1,4,4)内核中的不同权重集是相互独立激活的。所以我们可以很容易地将它们分成(4,1,2,2)个内核(即4个([1,1,2,2])的卷积核),如下图所示。

    这个操作是可逆的,因为在卷积过程中,每组权重是相互独立的。

    Tips: 有上面的操作我们可以将亚像素卷积修改为下面的方式

    在我们的论文中,我们没有将(1,1,4,4)的过滤器与unpooled亚像素图像卷积,而是直接将内核与LR输入卷积,如下图所示:

    卷积后的特征图是([4,4,4]),我们可以简单地使用本文中提到的周期性(shuffling)操作将输出通道重塑为HR输出。上图的HR输出与上上图的HR输出是一样的!

    这里我们可以证明对任意的缩放比例(r)我们都可以将解卷积变换为多个卷积核的周期性(shuffling)操作。如上面所述,若(r=2),则我们要使用(r^{2}=9)个卷积核( (kernel\_size = (o, i, k*r, k*r)) ) 。

    在作者的论文中最后训练的卷积层核为(9,32,3,3),经过逆运算可以重建解卷积层卷积核为(1,32,9,9)。

    如果我们应用(9,32,3,3)到任意32通道输入,通过(periodic\_shuffling)操作我们可以得到使用解卷积(1,32,9,9)一样的结果。如1D数据中的第二张图,我们使用卷积核(f_{1}=(2,4))(f_{2}=(1,3))替换(f=(1,2,3,4))。由(y_{1}=f_{1}*x)(y_{2}=f_{2}*x),其中星号表示卷积,合并产生信号(y)。LR空间中的卷积和上面讨论的亚像素卷积之间的等价性适用于大小等于(k*r)的过滤器(f)。但读者可能已经注意到,对于亚像素卷积,可以是任何大小。然而,LR空间中的卷积实际上也适用于大小不等于(k*r)的情况。例如,我们的过滤器如果是(f=(1,2,3)),则可以有(f_{1}=(2))(f_{2}=(1,3)),合并(f_{1})(f_{2})产生(y)


    Top  ---  Bottom

    4、总结

    综上所述:解卷积层和LR空间(有(r^{d})个通道)中的卷积一样。这意味着网络可以学习使用LR特征图的(r^{2})个通道来表示一个HR特征图(如果鼓励这样做的话)。并且创建(r^{2})个通道的特征图使用的是普通卷积,这和下图中的创建(n_{l-1})特征图之前的卷积一样!

    ​ 在我们完成这篇论文之后,我们在去年对这个问题有了更多的见解,如果我们现在把注意力放在最后一次卷积之前的卷积层上,它有n个特征映射,我们现在知道,在上采样因子为2的情况下,它可以学习在LR空间中表示n个特征图(n为通道数),相当于在高分辨率下的(frac{n}{4})特征图(即通道数缩放了(r^{2})倍)。现在假设两个网络架构拥有一样的运行速度。其中一个特征图通道数为32(在低分辨率特征图下);另一个卷积之前先上采样并且最后有通道数为8的高分辨率特征图。在运行速度一样的情况下,前者的模型性能要比后者好!

    对于LR网络的复杂度,它与HR网络是一样的!两种网络的信息量也是一样的!在源图中的感受野也是一样的!然而LR模型比HR模型的参数要多很多,这也是其性能更好的原因。

    鉴于上述论点,我们现在认为,对于超分辨率问题,使用双三次或解卷积层的显式上采样实际上是没有必要的。例如,由Dong[12]和Johnson[13]独立开发的后期作品在LR中使用卷积实现超分辨率和均匀风格转换。

    这引发了更有趣的问题。在其他应用中是否需要使用双三次插值或解卷积进行显式上采样?网络是否可以从仅使用卷积中了解何时进行上采样以及有多大比例的特征图进行上采样?当resNet与需要上采样的任务的多层卷积相结合时,网络会自动学习LR和HR特性的结合吗?我们将留给读者思考这些更有趣的问题。

    Top  ---  Bottom


    完!

    清澈的爱,只为中国
  • 相关阅读:
    C++---拷贝构造函数和赋值构造函数
    C++---类成员变量定义为引用
    从文件处理到文件的高级应用
    Jupyter的使用复习
    字符编码到python编辑器流程
    周四的小结
    中秋前的题目
    三段代码块带走今天的脚本
    今日份的随笔
    明天才能学的运算符号表格
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/14397940.html
Copyright © 2020-2023  润新知