基于可视化的局部解释
综述阅读
[1]王鹏达. 面向分类任务的深度神经网络可解释性研究[D].大连理工大学,2021.DOI:10.26991/d.cnki.gdllu.2021.000185.
[2]司念文. 面向图像识别的深度学习可视化解释技术研究[D].战略支援部队信息工程大学,2021.DOI:10.27188/d.cnki.gzjxu.2021.000012.
[3]庞焱萌. 基于可解释CNN的图像分类方法[D].西安电子科技大学,2020.DOI:10.27389/d.cnki.gxadu.2020.001163.
关于目标检测这方面的可解释研究,由于分类问题是个大类,语义分割、目标检测、自然语言处理等任务的特征提取模块都是深度神经网络,因此研究分类问题的可解释性是基础。
事前可解释算法:
ICNN 每一个神经元加入一个损失函数,其特征图将表示一个具体的物体部分[14] ada-shen/ICNN: A pytorch implementation of interpretable convolutional neural network. (github.com)
hard attention:模型会给出其做出预测所关注的图像区域[15] parsatorb/PyTorch-Saccader: PyTorch implementation of Saccader: Improving Accuracy of Hard Attention Models for Vision (github.com)
基于概念的分类模型:对于一次预测,模型将展示输入图像与每个概念的相关性[17] AmanDaVinci/SENN: Self-Explaining Neural Networks (github.com)
事后可解释算法[^ 对完成训练的模型在运用中得到的决策进行解释]
局部解释:在测试阶段对单幅图像的预测结果做出解释
[可视化](MisaOgura/flashtorch: Visualization toolkit for neural networks in PyTorch! Demo –> (github.com))[^ 有个工具集flashtorch]:主要是内部特征的表示形式以及与输入输出的关系等
基于反向传播:通过计算特定类别的预测分数关于输入的梯度
- integrated gradients【22】
- smooth [23] pikahhh/pytorch-smoothgrad: SmoothGrad implementation in PyTorch (github.com)
- 引导反向传播【24】
- full grad[25] idiap/fullgrad-saliency: Full-gradient saliency maps (github.com)
- LRP[26-28] JindongGu/Contrastive-LRP (github.com)
- 反卷积【68】[2]
- VBP【57 58】[2]
以上关于可视化的部分综述关键词 CNN 可视化基于扰动:随机生成掩膜mask与原图相乘获得扰动图像
- 用L1范数 全变分约束优化mask[29] pytorch-explain-black-box/explain.py at master · jacobgil/pytorch-explain-black-box (github.com)
- exmask 指定面积下进行优化【30】
- LIME 将原图分割为超像素随机采样获取多幅扰动图像[31] [lime/Tutorial - images - Pytorch.ipynb at master · marcotcr/lime (github.com)](https://github.com/marcotcr/lime/blob/master/doc/notebooks/Tutorial - images - Pytorch.ipynb)
- RISE 随机采样多个掩膜[32] https://github.com/hysts/pytorch_D-RISE
- 生成式扰动【72-73】[2] zzzace2000/FIDO-saliency: Explaining Image Classifiers by Counterfactual Generation (github.com)
- 基于GAN的扰动【71】[2]
基于类激活映射CAM[^ 有个torchcam工具集]:用于定位与特定输出类别最相关的输入区域
CAM 需要对模型插入一个全局平均池化层 重新训练模型【33】
grad-cam(++) 不需要重新训练模型【33-34】
score-cam 结合RISE 把每个特征图作为掩膜扰动原图【35】
guided feature inversion对权重两阶优化【36】
基于激活最大化:寻找最大化激活某个神经元的对应输入图像
替代模型解释:利用传统的可解释性较好的机器学习模型去替代
全局解释:针对一类图像的预测做出解释
基于视觉概念:将相似的图像作为一种概念,然后评估某概念对一类图像的重要程度
- TCAV 【4】
- ACAV【38】
- NCAVs【39】
- ACE 【40】
- 全局解释框架AfI【43】
基于通道重要性:关键是设计一种量化通道重要性的方式
- CHIP【44】
- 网络剖析network dissection【45】CSAILVision/NetDissect-Lite: Light version of Network Dissection for Quantifying Interpretability of Networks (github.com) 在一个具体网络上的应用
- 用shapley评估重要性【46】
基于替代模型
CNN可视化[^ 此标题下的引用为第三篇文章的]
新型可解释CNN模型
可解释的R-CNN【8】msracver/Deformable-ConvNets: Deformable Convolutional Networks (github.com)
infoGAN【9】msracver/Deformable-ConvNets: Deformable Convolutional Networks (github.com)
可解释CNN【10】ada-shen/ICNN: A pytorch implementation of interpretable convolutional neural network. (github.com)
卷积层是如何提取特征的
每个卷积核都能生成一个特征图,体现的特征可能也不相同
之后对特征图进行池化:缩小图像同时提取重要信息
==注意卷积层提取特征时并不会关注特征产生的位置==
通过反向传播不断比较预测值和真实值,来对卷积核的参数进行自适应调整,提高模型的泛化能力
一个CNN可视化的详细研究
[基于pytorch实现可视化的一系列方法](utkuozbulak/pytorch-cnn-visualizations: Pytorch implementation of convolutional neural network visualization techniques (github.com))
Gradient visualization with vanilla backpropagation
Gradient visualization with guided backpropagation
Gradient visualization with saliency maps
Gradient-weighted class activation mapping
Guided, gradient-weighted class activation mapping
Smooth grad
CNN filter visualization
Inverted image representations
Deep dream
Class specific image generation
开源可视化工具
一个目标检测开源工具箱: OpenMMLab Detection Toolbox
相关CNN可视化综述(待读)
[1]How convolutional neural networks see the world — A survey of convolutional neural network visualization methods
[2]Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
[3]Visualizing and Understanding Convolutional Networks