xiuqhou / Salience-DETR

[CVPR 2024] Official implementation of the paper "Salience DETR: Enhancing Detection Transformer with Hierarchical Salience Filtering Refinement"
https://arxiv.org/abs/2403.16131
Apache License 2.0
90 stars 7 forks source link

关于注意力热力图可视化 #19

Open yjdzyr opened 2 weeks ago

yjdzyr commented 2 weeks ago

Bug

非常感谢作者提供这个优秀的项目,我想问一下代码应该如何可视化注意力的热力图,能否提供一个例子,以便了解图片中各个区域对模型作出预测的影响有多大。期待作者的回复!

![Uploading 35bfb787d0c252b0831a92517d85091.png…]()

环境信息

No response

补充信息

No response

xiuqhou commented 2 weeks ago

原始的DETR论文《End-to-End Object Detection with Transformers》中Fig. 3给出了注意力图的可视化,其中每个query都会和特征图计算SelfAttention,得到一幅和特征图尺寸相同的attention map,因此可以给定query绘制attention map

但现在大部分DETR方法在编码器部分都采用的MultiScaleDeformableAttention,每个query只会和16个点计算注意力,所以不能产生完整的attention map

如果想了解图片每个区域对预测的贡献,可以尝试GradCAM等方法( https://github.com/jacobgil/pytorch-grad-cam?tab=readme-ov-file

yjdzyr commented 2 weeks ago

非常感谢作者的回答,我查看了GradCAM方法,但在提供的例子里没有发现DETR相关的例子,寻找了相关教程但是还是难于复现backbone和encoder的可视化,恳请作者大大提供一些帮助,非常感谢

yjdzyr commented 2 weeks ago

非常感谢作者的回答,我查看了GradCAM方法,但在提供的例子里没有发现DETR相关的例子,寻找了相关教程但是还是难于复现backbone和encoder的可视化,恳请作者大大提供一些帮助,非常感谢

xiuqhou commented 2 weeks ago

好的,后续我会考虑尝试把GradCAM相关的可视化集成进来,不过最近比较忙,要等一段时间。

如果你有自己实现的想法或比较着急要用,可以参考下面别的项目是如何将GradCAM集成到他们的项目中的。 基本上流程是首先从各个框架中得到模型和test_pipeline,然后调用grad_cam提供的方法进行可视化,有一定挑战但应该不难。

xiuqhou commented 1 week ago

我在代码中增加了关于GradCAM的实例代码(grad_cam/grad_cam.ipynb)和(#12)提到的可视化特征图的实例代码(grad_cam/feat_show.ipynb)。

这两个可视化只是基础的实例,您可以参考这两个实现进行更进一步的修改。

yjdzyr commented 1 week ago

非常感谢作者提供的代码!这将对我提供非常大的帮助!期待作者后续更优秀的项目!