卷积神经网络CNN-3 可视化

3 可视化

3.1中间激活

CNN非常适合可视化,它本身就是视觉概念的表示。中间激活可视化有助于我们了解CNN连续层如何对输入进行变换。我们希望在三个维度对特征图进行可视化:宽度、高度和深度(通道)。每个通道都对应相对独立的特征,所以将这些特征图可视化的正确方法是将每个通道的内容分别绘制成二维图像。
以测试猫的图像为例,观察中间激活过程。
卷积神经网络CNN-3 可视化_第1张图片
卷积神经网络CNN-3 可视化_第2张图片
卷积神经网络CNN-3 可视化_第3张图片
卷积神经网络CNN-3 可视化_第4张图片
分析显示结果。
第一层是各种边缘探测器的集合。在这一阶段,激活几乎保留了原始图像中的所有信息;
随着层数的加深,激活变得越来越抽象,并且越来越难以直观地理解,它们开始表示更高层次的概念,比如“猫耳朵”和“猫眼睛”。层数越深,其表示中关于图像视觉内容的信息就越少,而关于类别的信息就越多;
激活的稀疏度(sparsity)随着层数的加深而增大,在第一层里,所有过滤器都被输入图像激活,但在后面的层里,越来越多的过滤器是空白的。也就是说,输入图像中找不到这些过滤器所编码的模式。
CNN的这一现象称为信息蒸馏(information distillation),与人类感知世界的方式类似。再举一个例子,给一张图片喂入训练好的CNN,判断是否为车。人一出生也不知道汽车长什么样,慢慢长大学习、归纳、反馈,才认识了这世界上的东西。同样地,CNN初始化权重是随机生成的,经过大量训练和反向传播更新权重,最后以输出概率值最大为参考标准得到结果。
卷积神经网络CNN-3 可视化_第5张图片

3.2过滤器

想要观察卷积神经网络学到的过滤器,可以通过在输入空间中进行梯度上升来实现:从空白输入图像开始,将梯度下降应用于卷积神经网络输入图像的值,其目的是让某个过滤器的响应最大化。得到的输入图像是选定过滤器具有最大响应的图像。
卷积神经网络CNN-3 可视化_第6张图片
卷积神经网络CNN-3 可视化_第7张图片
卷积神经网络中每一层都学习一组过滤器,以便将其输入表示为过滤器的组合。这类似于傅里叶变换将信号分解为一组余弦函数的过程。随着层数的加深,卷积神经网络中的过滤器变得越来越复杂,越来越精细。模型第一层(block1_conv1)的过滤器对应简单的方向边缘和颜色(还有一些是彩色边缘)。更高层的过滤器类似于自然图像中的纹理:羽毛、眼睛、树叶等。

3.3热力图

热力图有助于理解CNN识别图像中的哪部分,定位图像中的物体,也叫做类激活图(CAM,class activation map)。
Grad-CAM是给定一张输入图像,对于一个卷积层的输出特征图,用类别相对于通道的梯度对这个特征图中的每个通道进行加权。直观上来看,理解这个技巧的一种方法是,你是用“每个通道对类别的重要程度”对“输入图像对不同通道的激活强度”的空间图进行加权,从而得到了“输入图像对类别的激活强度”的空间图。
以识别大象为例,解释热力图的作用。这里的图片引自《Python深度学习》。
卷积神经网络CNN-3 可视化_第8张图片
卷积神经网络CNN-3 可视化_第9张图片
卷积神经网络CNN-3 可视化_第10张图片
小象耳朵的激活强度很大,这可能是网络找到的非洲象和印度象的不同之处。
这种可视化方法很有意思,生动形象,有助于了解一张图像的哪一部分让卷积神经网络做出了最终的分类决策,检查对卷积神经网络的决策过程进行调试,特别是出现分类错误的情况下,还可以定位图像中的特定目标。
卷积神经网络CNN-3 可视化_第11张图片
参考文献:
1 Francois Chollet. Deep Learning with Python. 张亮译.Python深度学习.北京:人民邮电出版社,2018
2 斋藤康毅.Deep Learning from Scratch. 陆宇杰译. 北京:人民邮电出版社,2018
3 邱锡鹏.神经网络与深度学习.北京:机械工业出版社,2020
4 Karen Simonyan and Andrew Zisserman(2014): Very Deep Convolutional Networks for Large-Scale Image Recognition. arXiv:1409.1556 [cs] (September 2014).
5 牛津大学视觉组官方网站:www.robots.ox.ac.uk/~vgg/
6 可视化VGG-16网格结构:dgschwend.github.io/netscope/#/preset/vgg-16
7 https://www.manning.com/books/deep-learning-with-python
8 Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization. https://arxiv.org/abs/1610.02391
9 https://blog.csdn.net/xys430381_1/article/details/90413169?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163383340016780262555092%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163383340016780262555092&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-90413169.pc_search_result_control_group&utm_term=CNN%E5%8F%AF%E8%A7%86%E5%8C%96&spm=1018.2226.3001.4187

你可能感兴趣的:(神经网络,cnn,深度学习)