• DeconvNet--学习笔记


    1. 普通的反卷积:
      1. 为理解卷积网络而提出,为理解中间层的特征值提供了办法。
      2. 反卷积网络的每一层都可以看做卷积网络中对应层的逆过程,它们拥有相同的卷积核和池化索引,因此反卷积将特征值逆映射回了输入图片的像素空间,借此说明图片中的哪些像素参与激活了该特征值。
      3. 卷积网络将一张图片作为输入,计算得到各层的特征表示;为了验证某层一个具体的特征值,将该层特征值之外的所有值置零后,将其作为反卷积网络的输入,经过反卷积网络每一层的操作,该特征值被映射回了输入图片的像素空间。
      4. 反卷积网络的构成:
        1. 反池化:理论上,卷积网络中的最大池化操作是不可逆的,但可以通过池化索引进行近似可逆
        2. 矫正[对应卷积网络ReLU操作]:卷积网络中采用ReLU确保特征值非负,为了确保正逆过程的一致性,将反卷积网络每一层的重构特征也通过ReLU得到非负值。
        3. 反卷积操作:
          1. 卷积操作是低效操作,主流神经网络框架都是通过im2col+矩阵乘法实现卷积,以空间换效率。    
            1. im2col:
              1. 输入中每个卷积窗口内的元素被拉直成为单独一列,输入就被转换为了H_out * W_out列的矩阵(Columns)
              2. im2col操作是用来优化卷积运算,它的核心是将卷积核感受野的转化成一行(列)来存储,优化运算速度,减少内存访问时间

              3. 详细描述:

                1. 在输入数据上,根据卷积核大小,将3个通道依次展开为一维数组,再连接成一个长的一维数组,根据stride,输入数据上每个应用卷积核的地方都会生成一个一维数组。

                2. 将卷积核展开处理(同上,先展开,再连接)

                3. 将输入图像得到额的矩阵与卷积和展开后的列做矩阵乘法

            2. 卷积核也拉成一列后(Kernel),左乘(即拉直后的卷积核在左边)输入矩阵,得到卷积结果(Output)
          2. 此处的反卷积实际是转置卷积,神经网络框架借助转置卷积实现梯度的反向传播:将卷积核矩阵转置(Weight_T)后,左乘梯度输出(GradOutput),得到梯度列矩阵(GradColumns),通过col2im还原到输入大小,便得到了相对于输入的梯度(GradInput)。
            1. col2im:
              1. 复原结果,是一个逆过程(结构是可逆的,结果不是)
              2. (图中的展开应该是以该列为起始列与之前得到的结果累加)
            2. 注意此处的转置卷积不用于梯度反向传播,操作对象不是梯度而是特征值。
      5. 可视化特征:
        1. 为了避免出现类似基于错误的信息做出判断的著名的“坦克分类问题”。
        2. 可视化之后,还可以把热力图中显著的部分挡住看是否会影响最后的分类结果。
    2. 用于语义分析的DeconvNet:
      1. 提出原因:FCN的限制:
        1. 网络的感受野尺寸是预先固定。对于输入图片中比感受野大或者小的物体可能会被忽略。即对于较大的物体,只有局部的细节信息能够被正确标记,或者标记的结果是不连续的,而对于小物体会被忽略。
        2. 卷积后送入反卷积层的feature map十分稀疏,而反卷积的过程又十分的粗糙,输入图片中的结构细节信息会有所损失。
      2. DeconvNet架构的贡献:
        1. 学习一个带有反卷积层,上采样层,ReLU层的深层反卷积网络。
        2. 将训练好的模型,应用到图片的proposals中,得到实例级分割结果,最终将这些结合组成最终的分割结果,解决了原始FCN网络中的尺寸问题,同时,物体的细节信息更详尽。
      3. 网络架构:
        1. 两个部分,卷积网络和反卷积网络两部分,完全对称。
        2. 网络的最后一层输出是一张概率map,与输入图片的大小相同,表示每个像素代表属于某个类别的概率。
        3. 卷积层:使用的是VGG16的前13层。在卷积层后接Relu和Maxpooling。增加了两个全连接层(1×1的卷积)来强化特定类别的投影。
        4. 反卷积:转置卷积,可学习 进行上采样,是卷积层的镜像。其中的unpooling操作是通过pooling过程中所用的Max值索引实现的。
        5. 低层的deconvolution获得目标的位置,形状等较粗信息,高层的deconvolution获得更精细的信息。
        6. unpooling是为了获得图像空间结构细节,deconvolution获得的是物体类别分类信息。
    3. 额外知识点:批处理中的维度约定:  
      1. 输入数据:(N,C,H,W)
      2. 卷积核:(FN,C,FH,FW)
      3. 偏置:(FN,1,1)
      4. 输出数据:(N,FN,OH,OW)
            
  • 相关阅读:
    verilog testbench
    【单片机毕业设计】【mcuclub-jj-050】基于单片机的门禁的设计
    MMDetection自定义模型训练
    随手笔记(四十五)——idea git冲突
    dockerfile关键字
    linux按键驱动设计(V3S开发板)
    问道管理:华为概念股捷荣技术13天10板,监管质疑迎合热点炒作
    如何用Xcode创建你的第一个项目?学起来
    如何使用 saplink 安装其他网站上提供的 ABAP 程序
    leetcode算法题--求1+2+…+n
  • 原文地址:https://blog.csdn.net/weixin_45647721/article/details/126858071