卷积神经网络CNN/Pytorch,如何理解特征图Feature map?

不管是在Vision Transformer还是卷积神经网络,其实,一直想明白网络层层,到底是如何对图像进行了处理?怎么,一波操作就出了特征图?怎么就实现了目标检测?人脸识别?深度估计?等等,思前想后,就是常提起的特征图feature map在做小动作?真的不理解?那就来好好理解一下吧?到底是why?为什么?


Visualizing Filters and Feature Maps in Convolutional Neural Networks using PyTorch

学习:在深度学习中处理图像数据,卷积神经网络很引人注目,也在深度学习和计算机视觉方面提供了许多先进的解决方案和基准。那么,卷积神经网络怎么决定图像、如何处理图像?它怎么知道图象是猫?它中间都经历了什么?看到了什么?

只能说,目前,只能部分可解释,或许这就是人工智能的智能,是人脑所难以达到的计算?

  • 那么可解释的部分是什么呢?
  • 特征图之前不得不先说明过滤器?
  • 过滤器和特征图能够有效的帮我们分析了解模型所能看到的内容。

CNN的过滤器是什么?

卷积神经网络中的过滤器,稍微懂一些的人,应该会知道卷积核/Kernels,含义都是过滤器。卷积核常用的是固定大小:3*3、5*5、7*7。当谈论过滤器时,我们更关注的是权重。这些过滤器将确定模型将关注图像的那些像素部分。那么,如何确定模型关注图像的那一部分???

以ResNet-50 卷积神经网络的7*7滤波器为例,确定该特定卷积层将关注输入图像的哪些像素值。

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第1张图片

CNN的特征图是什么?

当图像像素值经过过滤器后得到的东西就是特征图,也就是说,在卷积层上看到的:图像经过卷积核后的内容,这一操作也就是所谓的卷积操作。

不妨用上述的7*7的过滤器/卷积核,对图像卷积操作一下,也就是过滤器过一下,得到:

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第2张图片

不难发现,经过过滤器的图像——就是特征图啦,可以说是只有黑白?有的部分很暗,有的部分很亮,为什么呢??因为7*7的滤波器有的部分是暗的,有的部分是亮的。当然,滤波器不是简单的叠加上去,第三排也可以看出,简单叠加并不会得到卷积后的图像。因为,卷积是有自己的一套卷积方式的!

具体可学习:深度学习基础笔记——卷积神经网络概念及其计算方式__卷积神经网络计算公式

如何可视化卷积神经网络中的过滤器和特征图?

如果我想详细的看到卷积得到的特征图,那就是可视化观察啦!——Pytorch深度学习库

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第3张图片

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第4张图片

 过滤器图像中,可以看到一些斑块是暗的,而其他斑块是亮的。

  • 像素值的范围从 0 到 255。
  • 0 对应于全黑,255 对应于白色。这意味着暗色块的权重低于亮色块
  • 当输入图像发生仿射变换时,白块将更负责激活图像的该部分。
  • 当对权重与像素值进行元素乘积时,模型将更多地关注权重值更多的图像区域

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第5张图片

特征图:可以看到不同的过滤器在创建图像的特征图时关注不同的方面。

  • 一些特征图专注于图像的背景。
  • 一些特征图专注于图像的轮廓。
  • 一些过滤器会专注于背景较暗但猫的图像较亮的特征图。
  • 这是由于过滤器的相应权重。
  • 从上图中可以清楚地看出,在深层,神经网络可以看到输入图像的非常详细的特征图。

20层特征图:

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第6张图片

40层特征图:

 卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第7张图片

44层特征图:

 卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第8张图片

48层特征图:

卷积神经网络CNN/Pytorch,如何理解特征图Feature map?_第9张图片

随着图像在各个层中前进,图像中的细节会慢慢消失。它们看起来像噪音,但在这些特征图中肯定有一种人眼无法检测到的模式,但神经网络可以。(所以难以解释清楚网络有时在干啥)

当图像到达最后一个卷积层(第 48 层)时,人类不可能分辨出里面有一只猫。这些最后一层输出对于在卷积神经网络中基本上形成分类层的完全连接的神经元非常重要。


理解卷积神经网络CNN中的特征图 feature map__卷积特征图

学习: 理论一点的参考?

Feature map的含义:

在每个卷积层,数据都是以三维形式存在,可以看作许多个二维图像叠在一起,每一层称为feature map。

  • Feature = 二维图像*N = W*H*C=长*宽*通道
    • 灰度图像:1通道,一个feature map
    • 彩色图像:3通道RGB,三个feature map

层与层之间会有若干个卷积核(kernel),设依次A层B层C层:

  • A层的feature map 1依次进行卷积操作,都会产生feature map 2,即为B层feature map;
  • feature map:该层卷积核的个数=产生的feature map个数(同上述);
  • 假如一种滤波器,也就是一种卷积核就是提出图像的一种特征,例如某个方向的边缘。那么需要提取不同的特征时,只需要加多几种滤波器。
  • 随着网络的加深,feature map的长宽尺寸缩小,本卷积层的每个map提取的特征越具有代表性(精华部分)。

卷积网络在学习过程中保持了图像的空间结构,也就是说最后一层的激活值(feature map)总和原始图像具有空间上的对应关系,具体对应的位置以及大小,可以用感受野来度量。

1 前向计算

  • 直接可视化网络每层的 feature map,然后观察feature map 的数值变化。
  • 一个训练成功的CNN网络,其feature map 的值伴随网络深度的增加,会越来越稀疏。
  • 这可以理解网络取精去燥。

2 反向计算

  • 根据网络最后一层最强的激活值,利用感受野求出原始输入图像的区域。
  • 观察输入图像的哪些区域激活了网络,利用这个思路可以做一些物体定位。

卷积网络的核心思想是将:

  • 局部感受野
  • 权值共享(或者权值复制)
  • 时间或空间亚采样

这三种结构思想结合起来获得了某种程度的位移、尺度、形变不变性。

嘿,我是小赵,多多关照!

如果好,留个赞哇,助力每一个梦想!

你可能感兴趣的:(那些不懂就整理的知识点,【科研探索】,cnn,pytorch,深度学习)