Zhaozixiang1228 / MMIF-CDDFuse

[CVPR 2023] Official implementation for "CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion."
349 stars 34 forks source link

关于Training Statge I 中的Decoder输入以及损失函数计算问题 #36

Open eecoder-dyf opened 4 months ago

eecoder-dyf commented 4 months ago

在train.py中的phase 1中,输入Decoder还包括输入的原图

data_VIS_hat, _ = DIDF_Decoder(data_VIS, feature_V_B, feature_V_D)
data_IR_hat, _ = DIDF_Decoder(data_IR, feature_I_B, feature_I_D)

在net.py中表现为:

out_enc_level1 = self.output(out_enc_level1) + inp_img

这里的inp_img即为输入的data_VIS/data_IR 请问为什么需要加这个残差呢 并且论文中在Training Stage I中也没有说需要这个残差 此外还有梯度损失函数的问题,在#32中提到了

XuJiahaoMuggle commented 4 months ago

可以看看Restormer的结构,Restormer论文中将原图加到了最后的结果上,但是他论文中没讲清楚。代码中还有许多很好玩的事情:论文中所提到的BRB结构上有残差连接,但是代码中却把残差连接去掉了,我试着把残差连接打开,发现训练过程中梯度直接爆炸了,这大概就是为什么残差被注释掉的原因;还有论文中图5的分解以后的特征,我尝试计算它的相关性系数却发现根本到不了那个值;表1中TNO的SSIM能超过1,这些都是很有趣的事情,但从指标上和视觉效果上看,这个方法融合以后的图像效果确实不错

tq-quan commented 4 months ago

还有代码里面Restormer模块和LT模块为什么是一样的