pytorch神经网络可视化工具包
flashtorch的Python项目详细描述
手电筒:手电筒:
Pythorch中实现的可视化工具包,用于检查神经网络在图像识别任务(特征可视化)中学习的内容。
这个项目正在进行中,非常感谢您的反馈!
它目前支持torchvision.models下所有可用模型的显著性地图可视化。
安装
$ pip install flashtorch
笔记本示例
图像处理
笔记本:Image handling
显著图
笔记本:Image-specific class saliency map with backpropagation
- 笔记本也可以在Google Colab上使用-这可能是快速玩游戏的最佳方式,因为不需要设置环境!
^人类视觉感知中的{str 1}$Saliency是一种主观质量,它使视野中的某些事物从其他事物中脱颖而出,引起我们的注意。
计算机视觉中的显著性地图提供图像中最显著区域的指示。通过为神经网络创建显著性映射,我们可以对输入图像中网络最关注“”的位置获得一些直觉。
AlexNet可视化
使用flashtorch.saliency
模块,让我们可视化AlexNet在ImageNet分类任务上预先训练的图像特定类显著性映射。
大灰猫头鹰(类索引24): 网络关注的是这只猫头鹰凹陷的眼睛和圆圆的脑袋。
peacock(类索引84): 但它并不总是关注动物的眼睛和头部。在它的世界观中,使豌豆变成豌豆的是它尾巴上的眼点!
toucan(类索引96): 而对于一头巨嘴鸟来说,网络正在密切关注它的嘴。
你同意吗?:机器人:
关于迁移学习的标志
在上面的例子中,我们可视化了一个在imagenet上训练过的网络的显著性映射,并使用了它已经知道的对象的图像。
我们可以更进一步地研究当网络被一个新对象呈现时,网络的感知在训练前后是如何变化的。
这次,我将使用DenseNet,它再次在imagenet(1000个类)上进行了预训练,并将其训练成一个花分类器,以识别102种花(dataset)。
在没有额外训练的情况下,通过交换最后一个完全连接的层,模型的性能非常差(0.1%的测试精度)。通过绘制梯度图,我们可以看出网络主要关注的是花的形状。
foxglows例如:
经过训练,该模型的测试精度达到了98.7%。但是为什么?它现在看到的是什么,以前没有看到的是什么?
网络已经学会了将注意力转移到花杯里斑驳的图案上!在它的世界观中,这是关于这个物体最显著的东西,我认为这与我们认为这朵花最独特的特征紧密相关。
手电筒会谈
- Hopperx1 London,2019年6月-slide deck
专题可视化论文
功能可视化简介和概述:Feature Visualization
功能可视化的最新进展:Exploring Neural Networks with Activation Atlases
使用反向传播进行梯度可视化:Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
灵感
pytorch-cnn-visualizations由utkuozbulak编写
keras-vis作者:拉哈科特