【问题标题】:Visualize the learned filter of each CNN layer可视化每个 CNN 层的学习过滤器
【发布时间】:2017-11-08 06:06:57
【问题描述】:

谁能告诉我如何可视化每个 CNN 层的学习过滤器? 以下答案告诉我如何仅可视化第一个 CNN 层的学习过滤器,但无法可视化其他 CNN 层。

1) 您可以恢复过滤器并使用 Matlab 的函数将它们显示为图像。例如,从http://www.vlfeat.org/matconvnet/pretrained/ 加载预训练网络后:

imshow( net.layers{1}.filters(:, :, 3, 1), [] ) ;

2) 您可能会发现 VLFeat 函数 vl_imarraysc 对显示多个过滤器很有用。 http://www.vlfeat.org/matlab/vl_imarraysc.html

【问题讨论】:

  • 第一层有 1 个(灰度)或 3 个(彩色)通道。其他层有更多的通道(例如,64、128、512)。如果您有 3 个以上的通道,则不清楚如何同时可视化通道。您可以一次查看一个通道,例如:net.layers{2}.filters(:, :, 21, 1),与可视化第一层过滤器的方式相同。告诉我
  • @DataHungry 我看过很多论文,其中他们展示了不同层的特征。他们只显示一个频道吗?

标签: computer-vision deep-learning conv-neural-network convolution matconvnet


【解决方案1】:

用于可视化中间层中的过滤器。有几种技术:

(1) 一次将一个或三个通道显示为灰度或 RGB。由于 ResNet 和 VGG 的过滤器很小,因此信息量不是很大。

(2) 关闭其他单元。仅将此单元反向传播到输入空间。你可以看到一个反映这个单元关心什么的模式。有许多论文使用了类似的技术。例如,Zeiler、Matthew D. 和 Rob Fergus。 “可视化和理解卷积网络。”欧洲计算机视觉会议。 2014.

(3) 找到最大程度地激活这个单元的输入补丁,看看它们是什么。

【讨论】:

  • 感谢您提及这些技术。这些技术有实现代码吗?
  • @Addee 我不立即知道有实现。它们实施起来并不困难。以(2)为例,你可以简单地做我描述的:关闭其他单元。仅将一个感兴趣的单元反向传播到输入空间(即输入图像)。你会看到一些模式。顺便说一句,如果您可以将它们发布在某个地方,那么您会很感兴趣地看到一些这样的可视化。
  • @Addee。方法 #3 在 github.com/kukuruza/TF-Visualize-CNN 中为 TF 实现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 2017-05-25
  • 2017-07-05
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多