【论文解读】ZFNet中的特征可视化

    这篇文章通过对特征图进行可视化,使得神经网络这个黑盒不再那么黑。ZFNet的网络结构是基于AlexNet改的,如下图所示,比较清晰明了。

【论文解读】ZFNet中的特征可视化

从上图注意到,ZFNet含5个卷积层Layer1~Layer5以及2个fc层Layer6、Layer7,特征可视化是针对的Layer1~Layer5。我们知道一个标准的卷积层大概包含三个步骤:Conv(卷积)->Activation(**)>Pooling(池化)。如果要将特征图可视化,你需要有一个逆操作,将feature map还原到原图像素尺寸。作者在这里提出了deconvnet层,就是用来完成这个逆操作。例如,假如要对Layer5的特征图(尺寸为13x13x256)进行可视化,需要连续5次deconvnet,以还原到224x224x3尺寸。deconvnet层和convnet层配套使用,具体结构如下图所示。

【论文解读】ZFNet中的特征可视化

这里涉及到几个关键步骤:

  • Max Unpooling

在convenet层含max pooling操作,这个操作理论上是不可逆的,但是正因为是max pooling,只要记住max值的位置仍然可以近似还原出来。文中所提到的Switches就是来存储这个映射关系的。

【论文解读】ZFNet中的特征可视化

  • 转置卷积

搞定了Max Pooling的逆操作后,还剩下Conv的逆操作哟。原文中是这样说的"uses transposed versions of the same filters",也就是说对Conv的卷积核进行转置,然后将这个转置卷积核作用于上层经过**后的特征图。

【论文解读】ZFNet中的特征可视化

关于转置卷积强烈建议阅读下面的参考文章。

【参考文章】

 #代码实现

https://github.com/hvy/chainer-visualization

#转置卷积

https://blog.csdn.net/LoseInVain/article/details/81098502