Bobholamovic / CDLab

Yet another repository for developing and benchmarking deep learning-based change detection methods.
The Unlicense
196 stars 30 forks source link

有关损失函数的问题 #10

Closed IceHowe closed 1 year ago

IceHowe commented 1 year ago

你好,我看到用的是wbce,但是我看到两个权重分别是0.5

@CRITNS.register_func('WBCE_critn')
def build_weighted_bce_critn(C):
    assert len(C['weights']) == 2
    pos_weight = C['weights'][1]/C['weights'][0]
    return nn.BCEWithLogitsLoss(pos_weight=torch.Tensor([pos_weight]))

那么pos_weight不就等于1了吗?这样不就是用的普通的bce了吗?

Bobholamovic commented 1 year ago

你好,是的,P2V-CD在实验所涉及的三个数据集上均使用了0.5、0.5的类别权重系数,实际等价于使用『普通』BCE损失函数。

实际上,『普通』BCE是加权BCE的特例(各类权重系数相同)。在算法的设计阶段,我考虑使用加权BCE,增加可调的权重(也就是你所看到的,代码中支持设置C['weights'])以调节模型对不同类别的关注程度;但在实际的实验过程中,我观察到权重系数为0.5、0.5的配置取得的效果最好,因此这是我最终使用的实验配置。

综上所述,论文中『使用加权交叉熵损失,变化类和非变化类权重分别设置为0.5和0.5』的表述虽然有些奇怪,但我认为并非一个『错误』的说法。

IceHowe commented 1 year ago

好的,感谢回复,因为我对你的项目代码不太熟悉,还以为是搞错了。还有一件事,请问论文里展示的热力图是如何绘制的?能指导一下吗?grad-cam看着都是要求一个输入,而这个任务网络是孪生网络,所以我不调了好久都不会

Bobholamovic commented 1 year ago

不好意思,我不太清楚这个~建议可以咨询一下原作者

IceHowe commented 1 year ago

你不是P2V作者吗?我看到P2V论文里也有热力图

Bobholamovic commented 1 year ago

你不是P2V作者吗?我看到P2V论文里也有热力图

Sorry,我看走眼了,今天好像看成了BIT论文什么的……P2V-CD论文里的热力图需要对标准的grad-cam算法代码做一些修改,改为双输入,具体如何修改我恐怕无法提供很具体的意见,因为这和你使用的grad-cam代码有关~

IceHowe commented 1 year ago

请问能提供代码参考一下吗?

Bobholamovic commented 1 year ago

请问能提供代码参考一下吗?

P2V-CD是我在学校时候的工作,当时的资料都放在学校的机器上,现在已经毕业了,存留在我自己这里的部分都已经开源了哈