PRIS-CV / Mutual-Channel-Loss

Code release for The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification (TIP 2020)
MIT License
257 stars 43 forks source link

大佬,我又来了,这次是关于判别性区域的问题 #12

Closed Javacr closed 4 years ago

Javacr commented 4 years ago

Screenshot from 2020-09-14 17-23-27 大佬,我在用预训练的resent50训练mcloss网络之后,得到了最终模型,我用的是你在issues中推荐的复现链接,acc为86.6,可能是batch只有32的原因。 不过我的问题不在于此。如上图所示我在可视化特征图时,发现将近有一半的特征图把注意力放在了背景信息上。我的可视化代码应该没有任何问题。请问,这种问题你有尝试过解决吗?还是说我的训练结果有问题,亦或是代码有问题?

    heat = he.data.cpu().numpy()    # heat为最后一层卷积的输出特征图
    print('heat',heat.shape)
    heat = np.squeeze(heat, 0)
    heat = heat[52*10+9,:]
    # heat = heat[2:3, :]
    heatmap = np.maximum(heat, 0)  # heatmap与0比较,取其大者
    # heatmap = np.mean(heatmap, axis=0)
    heatmap /= np.max(heatmap)
    #plt.matshow(heatmap)
    #plt.show()

    # 用cv2加载原始图像
    img = cv2.imread('/home/jim/data/FGVC/CUB_200_2011/images/053.Western_Grebe/Western_Grebe_0007_36074.jpg')
    heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0]))  # 将热力图的大小调整为与原始图像相同
    heatmap = np.uint8(255 * heatmap)  # 将热力图转换为RGB格式
    print(type(heatmap))

    heatmap = cv2.applyColorMap(heatmap, cv2.cv2.COLORMAP_HSV )  # 将热力图应用于原始图像
    heat_img = cv2.addWeighted(img, 1, heatmap, 0.5, 0)
    superimposed_img = heatmap * 0.3 + img * 0.7  # 这里的0.4是热力图强度因子
    cv2.imwrite('./self/heat_9.jpg', heat_img)  # 将图像保存到硬盘
    cv2.imshow('heat_11.jpg', heat_img)
    cv2.waitKey()
dongliangchang commented 4 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

Javacr commented 4 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

dongliangchang commented 4 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

明白了,这个问题参考论文中的图5及其相关解释。具体位置 Section IV. EXPERIMENTAL RESULTS AND DISCUSSIONS ---> D. Ablation Study ---> 1) Influence of ξ

Javacr commented 4 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

明白了,这个问题参考论文中的图5及其相关解释。具体位置 Section IV. EXPERIMENTAL RESULTS AND DISCUSSIONS ---> D. Ablation Study ---> 1) Influence of ξ

大佬的意思是,柯西值本身的问题是吧?由于resnet50中柯西值太大,所以存在一些固有问题?

dongliangchang commented 4 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

明白了,这个问题参考论文中的图5及其相关解释。具体位置 Section IV. EXPERIMENTAL RESULTS AND DISCUSSIONS ---> D. Ablation Study ---> 1) Influence of ξ

大佬的意思是,柯西值本身的问题是吧?由于resnet50中柯西值太大,所以存在一些固有问题?

嗯 ,ξ 不能设置的太大。因为在同一粒度,没有那么多不同的判别力区域。论文中有相关的分析。

Javacr commented 4 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

明白了,这个问题参考论文中的图5及其相关解释。具体位置 Section IV. EXPERIMENTAL RESULTS AND DISCUSSIONS ---> D. Ablation Study ---> 1) Influence of ξ

大佬的意思是,柯西值本身的问题是吧?由于resnet50中柯西值太大,所以存在一些固有问题?

嗯 ,ξ 不能设置的太大。因为在同一粒度,没有那么多不同的判别力区域。论文中有相关的分析。

谢谢大佬答疑,继续期待全部源码

DeepDetector commented 3 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

明白了,这个问题参考论文中的图5及其相关解释。具体位置 Section IV. EXPERIMENTAL RESULTS AND DISCUSSIONS ---> D. Ablation Study ---> 1) Influence of ξ

大佬的意思是,柯西值本身的问题是吧?由于resnet50中柯西值太大,所以存在一些固有问题?

大佬您好~分类类别只有五个,柯西值也是设置为3吗?那一共就15个通道,会不会有点少

dongliangchang commented 3 years ago

不能可视化所有的channel,只可视化属于某一类的channel。具体参考这个issue #9

额,我就是单个可视化的。上面这张图片属于第52类,所以我单个可视化了52×10--53×10的所有特征图。

明白了,这个问题参考论文中的图5及其相关解释。具体位置 Section IV. EXPERIMENTAL RESULTS AND DISCUSSIONS ---> D. Ablation Study ---> 1) Influence of ξ

大佬的意思是,柯西值本身的问题是吧?由于resnet50中柯西值太大,所以存在一些固有问题?

大佬您好~分类类别只有五个,柯西值也是设置为3吗?那一共就15个通道,会不会有点少

可以试试看.我还没做过相关的实验. 也可以用11 Conv. 将通道数降低到315试一试.