Grad-CAM.pytorch icon indicating copy to clipboard operation
Grad-CAM.pytorch copied to clipboard

feature = self.feature[0].cpu().data.numpy()

Open wangzyon opened this issue 5 years ago • 3 comments

您好,非常感谢您提供的目标检测CAM思路!代码中有两处疑问向您请教。

grad_cam.py:

  1. weight = np.mean(gradient, axis=(1, 2)) # [C] 这里为什么要取平均? 2.feature = self.feature[0].cpu().data.numpy() # [C,H,W] 为什么选用feature[0]而不是feature[proposal_idx]

谢谢!!!

wangzyon avatar Apr 29 '20 02:04 wangzyon

@wangzyon 感谢您的反馈

  1. 每个通道一个权重,所以取均值,求和都可以的,结果一样 2.第二个问题,是bug,应该是feature[proposal_idx],感谢反馈!

yizt avatar Apr 29 '20 08:04 yizt

@wangzyon 感谢您的反馈

  1. 每个通道一个权重,所以取均值,求和都可以的,结果一样 2.第二个问题,是bug,应该是feature[proposal_idx],感谢反馈!

第二个问题不存在bug,proposal_idx对应的是预测的类别,与feature没有关系。 self.feature可以打印尺寸,是[1,C,H,W]的, 所以feature = self.feature[0].cpu().data.numpy() # [C,H,W]相当于去掉了第一个batchsize维度。

milliema avatar May 09 '20 09:05 milliema

@milliema 您好,proposal_idx是proposal的序号,表示该预测边框来自第几个proposal,不是类别;self.feature的尺寸是[num_proposals,C,H,W],一个例子如下: feature shape:torch.Size([343, 2048, 7, 7])

yizt avatar May 09 '20 10:05 yizt