当前位置: 首页 > news >正文

深度学习|表示学习|卷积神经网络|DeconvNet是什么?|18

如是我闻: DeconvNet(反卷积网络)是一种可视化 CNN(卷积神经网络)内部特征的方法,用于理解 CNN 是如何提取图像特征的。这个方法由 Zeiler & Fergus(2013) 提出,目的是通过反向传播特征图,恢复输入图像中的显著区域
在这里插入图片描述


1. DeconvNet 的核心思想

DeconvNet 并不是一个新的神经网络结构,而是一种分析 CNN 内部特征的工具,它的基本原理是:

  • 给定 CNN 中某一层的激活特征图(即网络中某个卷积层的输出)。
  • 将其他位置的激活值清零,只保留一个特定的激活区域。
  • 使用 DeconvNet 逐步反向恢复输入图像的相关区域,即:
    1. 反向 Unpooling(反池化)
    2. 反向 ReLU(非线性激活反向映射)
    3. 反向 Convolution(转置卷积)
  • 最终可视化 CNN 关注的输入图像部分

2. CNN 处理图像的过程

为了理解 DeconvNet,我们先回顾 CNN 处理图像的方式:

(1) CNN 的前向传播

CNN 主要由以下几部分组成:

  1. 卷积(Convolution)
    • 使用卷积核(filter)扫描输入图像,提取局部特征。
  2. ReLU(非线性激活)
    • 对卷积后的值进行非线性变换,增加模型的表达能力。
  3. 池化(Pooling)
    • 例如 最大池化(Max Pooling),用来减少特征图的大小,同时保留最重要的特征。

在 CNN 计算的过程中,每一层的输出都是低维度的、提取了高级特征的表示


3. DeconvNet 如何可视化 CNN

DeconvNet 通过 逆向操作 来还原 CNN 关注的输入图像部分。它的主要步骤如下:

(1) 选择某一层的激活特征图

  • 选定 CNN 训练好的某一层(例如 conv3),并只保留某个特定通道的激活值,其余位置置零。

(2) 反向计算特征图(DeconvNet 操作)

  1. Unpooling(反池化)

    • CNN 在前向传播时使用 Max Pooling(最大池化) 来降低特征图的分辨率。
    • DeconvNet 通过记录池化时的位置(Switches),在 Unpooling 过程中,将激活值放回原来的位置,其余填充 0。
    • 作用:恢复特征图的空间分辨率
  2. ReLU 反向映射

    • CNN 采用 ReLU 进行非线性变换(负数变为 0)。
    • DeconvNet 仅保留正数部分,确保可视化的特征仍然是原始网络激活的部分
    • 作用:保持原始网络的非线性信息
  3. 转置卷积(Transpose Convolution)

    • CNN 在前向传播时使用卷积核进行特征提取。
    • DeconvNet 采用 卷积核的转置(Transposed Convolution),从特征图反推回去,恢复更原始的图像信息。
    • 作用:重建输入图像的结构

(3) 迭代执行,直到恢复到输入空间

  • DeconvNet 反向经过多个层,最终可以得到 CNN 某个特定神经元 对输入图像的响应区域,从而可视化 CNN 关注的特征。

4. 图示解析

在这里插入图片描述

(1) 右上角的流程图

它展示了 CNN(右侧)和 DeconvNet(左侧)的对应关系:

  • CNN 处理过程
    • 卷积(Convolution)
    • ReLU 非线性变换
    • 最大池化(Max Pooling)
  • DeconvNet 反向过程
    • 反池化(Max Unpooling)
    • ReLU 反向变换
    • 转置卷积(Convolution Filtering {Fᵀ})

在这里插入图片描述

(2) 右下角的示意图

  • CNN 在前向传播时,池化层(Pooling)会记录最大值的位置(Max Locations “Switches”)
  • DeconvNet 反向传播时,通过这些开关(Switches)进行 Unpooling,把原来的信息放回正确的位置
  • 然后逐步恢复到输入图像的像素空间

5. DeconvNet 的作用

  1. 可视化 CNN 的特征学习过程

    • 通过 DeconvNet,我们可以看到 CNN 关注的图像区域,从而理解 CNN 是如何做出决策的。
  2. 分析 CNN 提取的模式

    • 例如:
      • 低层 CNN 学习到的是边缘、颜色、纹理等低级特征
      • 高层 CNN 学习到的是物体的形状、轮廓、复杂结构
  3. 调试和改进 CNN 结构

    • 通过 DeconvNet 的可视化结果,我们可以检查 CNN 关注的区域是否合理,以便调整网络结构。

6. DeconvNet 和其他可视化方法的对比

方法原理优点缺点
DeconvNet反向传播特征图能清晰显示 CNN 关注的图像区域依赖于 Unpooling 记录的位置
Grad-CAM计算梯度加权特征图适用于不同网络架构,直观只能产生粗略的热图
Saliency Map计算输入对输出的梯度细粒度分析 CNN 关注的像素计算量较大

7. 总的来说

  • DeconvNet 是一种 CNN 可视化工具,用于理解 CNN 内部的特征表示。
  • 主要包括:
    1. Unpooling(反池化):恢复池化层的信息。
    2. ReLU 反向映射:仅保留正值,保持非线性信息。
    3. 转置卷积(Transpose Convolution):从高层特征恢复到原始图像。
  • 通过 DeconvNet,我们可以看到 CNN 在输入图像中关注的部分,从而解释 CNN 的决策机制。

以上

http://www.lryc.cn/news/531854.html

相关文章:

  • (优先级队列(堆)) 【本节目标】 1. 掌握堆的概念及实现 2. 掌握 PriorityQueue 的使用
  • 优化数据库结构
  • 密云生活的初体验
  • 图像分类与目标检测算法
  • 计算机网络——流量控制
  • 体验 DeepSeek 多模态大模型 Janus-Pro-7B
  • 使用mockttp库模拟HTTP服务器和客户端进行单元测试
  • 解决每次打开终端都需要source ~/.bashrc的问题(记录)
  • UE5 蓝图学习计划 - Day 14:搭建基础游戏场景
  • C++常用拷贝和替换算法
  • 取消和确认按钮没有显示的问题
  • Python安居客二手小区数据爬取(2025年)
  • Java/Kotlin HashMap 等集合引发 ConcurrentModificationException
  • 【Day31 LeetCode】动态规划DP Ⅳ
  • Unity 2D实战小游戏开发跳跳鸟 - 记录显示最高分
  • Ollama AI 开发助手完全指南:从入门到实践
  • Racecar Gym
  • 代码随想录36 动态规划
  • 离散时间傅里叶变换(DTFT)公式详解:周期性与连续性剖析
  • 深度学习|表示学习|卷积神经网络|Batch Normalization在干什么?|19
  • Go基础之环境搭建
  • echarts、canvas这种渲染耗时的工作能不能放在webworker中做?
  • Android学习21 -- launcher
  • antd pro框架,使用antd组件修改组件样式
  • 响应式编程_05 Project Reactor 框架
  • RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)
  • 导出依赖的几种方法
  • CS 与 BS 架构的差异
  • OpenCV YOLOv11实时视频车辆计数线:让车辆进出有条理!
  • 配置@别名路径,把@/ 解析为 src/