可视化理解

设计来源

看了CS231的课程,想自己尝试做下可视化,权当加深对卷积神经网络的理解吧。

可视化第一层卷积核

课程:
课程里提到第一层卷积一般做的是传统视觉的工作,主要提取一些有向边,可视化卷积核的原因是类似模板匹配的思想啥的,具体我也没有深究。我自己的看法是,可视化卷积核,权重大的位置说明该点对输出**影响大,第一层卷积恰好对应图像的三个颜色通道,因此直接可视化卷积核可以反应该个卷积操作主要寻找的特征。
实践:
我用pytorch官方的Resnet50预训练模型、voc2007的一些图片做测试实验,可视化第一层64个773的卷积核,如下图所示。
可视化理解
可以看到,跟课程里讲的类似,大部分卷积核都关注有向边,或者一些颜色通道(上图就有一些红色、绿色、蓝色,反应这些卷积核主要关注哪些通道)
课程也提到中间层的卷积核看不出什么信息(不是直接对原始图像操作),中间层的我也没去做。

可视化第一层featuremap

按照卷积核可视化理解,可视化第一层featuremap会发现一些有趣的现象(我这里实际可视化的是relu之后的层,查看**部分)
可视化理解
右侧是原图,左边一共64个feturemap分别对应每个卷积操作的输出结果(截图没有全部显示64个),可以看到上面卷积核可视化中,第二个卷积核比较关注绿色通道的特征,从上图第二个featuremap里也能看出主要**了原图绿草部分。
再比如下图,从卷积核可视化中,第四行第六列(第24个卷积核)主要关注棕红色,而对应的featuremap中,基本只**了棕红的飞机头那部分。
可视化理解
也可以看到,大部分卷积核都在关注一些有向边,比如横线、竖线、斜线等等,下图看起来就比较明显。这个比较好理解,opencv的canny、sobel等轮廓提取算子也是特定卷积操作的结果嘛。

可视化理解

底层特征可视化

大概的观点就是说同类别的对象在模型底层特征向量是接近的,这个也比较好理解,最后一层接的是输出,模型已经训好的情况下,同类别图像类别输出基本都一致,最后一层特征肯定也是相近的。特征空间降维可视化还不想花时间去做。。

隐层featuremap可视化

课程:
课程里提到中间层featuremap可以提取对最终分类有用的特征

未完,待续。。。