【深度学习系列】CNN模型的可视化

机器人培训 2021-05-31 12:29www.robotxin.com机器人培训
大家都了解卷积CNN,对于它在每一层提取到的特征以及训练的过程可能还是不太明白,所以这篇主要通过模型的可视化来在每一层中是如何训练的。我们知道,本身包含了一系列特征提取器,理想的feature map应该是稀疏的以及包含典型的局部信息。通过模型可视化能有一些直观的认识并帮助我们调试模型,比如feature map与原图很接近,说明它没有学到什么特征;或者它几乎是一个纯色的图,说明它太过稀疏,可能是我们feature map数太多了(feature_map数太多也反映了卷积核太小)。可视化有很多种,比如feature map可视化、权重可视化等等,我以feature map可视化为例。

模型可视化

因为我没有搜到用paddlepaddle在image 1000分类的数据集上预训练好的googLeNet inception v3,所以用了keras做实验,以下图作为输入:

输入图片

  • 北汽绅宝D50:

  • feature map可视化

取网络的前15层,每层取前3个feature map。

北汽绅宝D50 feature map

从左往右看,可以看到整个特征提取的过程,有的分离背景、有的提取轮廓,有的提取色差,但也能发现10、11层中间两个feature map是纯色的,可能这一层feature map数有点多了,北汽绅宝D50的光晕对feature map中光晕的影响也能比较明显看到。

  • Hypercolumns

    通常我们把一个fc全连接层作为整个图片的特征表示,这一表示可能过于粗糙(从上面的feature map可视化也能看出来),没法精确描述局部空间上的特征,而网络的第一层空间特征又太过精确,缺乏语义信息(比如后面的色差、轮廓等),于是论文《Hypercolumns for Object Segmentation and Fine-grained Localization》提出一种新的特征表示方法Hypercolumns——将一个像素的 hypercolumn 定义为所有 n 单元对应该像素位置的激活输出值组成的向量),比较好的tradeoff了前面两个问题,直观地看如图

把北汽绅宝D50 第1、4、7层的feature map以及第1, 4, 7, 10, 11, 14, 17层的feature map分别做平均,可视化如下

代码实践(关注博客园专栏作者Charlotte77 http://.blogs./charlotte77 查看源代码)

还有一些网站做的关于CNN的可视化做的非常不错,譬如这个网站http://shixialiu./publications/nvis/demo/,大家可以在训练的时候采取不同的卷积核尺寸和个数对照来看训练的中间过程。最近PaddlePaddle也开源了可视化工具VisaulDL,下篇文章我们讲讲paddlepaddle的visualDL和tesorflo的tensorboard。

Copyright © 2016-2025 www.robotxin.com 人工智能机器人网 版权所有 Power by