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模块,让我们可视化AlexNetImageNet分类任务上预先训练的图像特定类显著性映射。

大灰猫头鹰(类索引24): 网络关注的是这只猫头鹰凹陷的眼睛和圆圆的脑袋。

Saliency map of great grey owl in Alexnet

peacock(类索引84): 但它并不总是关注动物的眼睛和头部。在它的世界观中,使豌豆变成豌豆的是它尾巴上的眼点!

Saliency map of peacock in Alexnet

toucan(类索引96): 而对于一头巨嘴鸟来说,网络正在密切关注它的嘴。

Saliency map of tucan in Alexnet

你同意吗?:机器人:

关于迁移学习的标志

在上面的例子中,我们可视化了一个在imagenet上训练过的网络的显著性映射,并使用了它已经知道的对象的图像。

我们可以更进一步地研究当网络被一个新对象呈现时,网络的感知在训练前后是如何变化的。

这次,我将使用DenseNet,它再次在imagenet(1000个类)上进行了预训练,并将其训练成一个花分类器,以识别102种花(dataset)。

没有额外训练的情况下,通过交换最后一个完全连接的层,模型的性能非常差(0.1%的测试精度)。通过绘制梯度图,我们可以看出网络主要关注的是花的形状。

foxglows例如:

Transfer learning pre

经过训练,该模型的测试精度达到了98.7%。但是为什么?它现在看到的是什么,以前没有看到的是什么?

网络已经学会了将注意力转移到花杯里斑驳的图案上!在它的世界观中,这是关于这个物体最显著的东西,我认为这与我们认为这朵花最独特的特征紧密相关。

Transfer learning post

手电筒会谈

专题可视化论文

灵感

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何确保在ActivityfromStaticMethodNewInstance中创建片段   java什么是允许集合的线程安全列表实现。分类   java正则表达式,用于检查字符串是否为正自然数   java Selenium WebDriver getText()   JSF(AWS)下的java Springboot白标签错误页面   java禁用特定URL Spring的基本身份验证   字符串无法转换为int!如何在java上对扫描的整数求和?   java创建键值对象列表   java Gradle with TestNg:未找到任何测试   java在Spark之外加载Mllib模型   当值存在时,比较器Java树映射为键返回null   java如何在Travis上使用Maven构建RPM包?   使用socket上传安卓 Java文件,需要上传文件的百分比?   java同步两个水平滚动视图   java通过扫描仪读取日期类型的字段