xi-jia / LKU-Net

The official implementation of U-Net vs Transformer: Is U-Net Outdated in Medical Image Registration?
68 stars 9 forks source link

train程序在IXI数据集上无法获得预期性能 #8

Closed BoyOfChu closed 1 year ago

BoyOfChu commented 1 year ago

您好,非常感谢您的慷慨开源,让我们有机会学习如此简洁高效的代码。我对您在IXI数据集上获取的优异性能非常感兴趣,所以尝试了将train.py文件在该数据集上进行训练。我注意到,默认设置是MSE Loss,并且梯度正则损失的权重为0.25,这与论文中的描述稍有不同。由于您的代码非常简练,所以我只更改了数据集的路径就可以直接训练了。但是验证的Dice一直在49左右,因此我按照readme中的命令,将相似测度更改了为NCC,并将权重改为了1:5。(网络的初始通道为8,其他参数不变)然而,验证的Dice依旧在50左右无法提升。冒昧打扰您,请教原因,感激不尽!

xi-jia commented 1 year ago

您这太捧场了!感谢感谢。

我自己的实验过程中并没有遇到验证集Dice不动的问题,所以这个问题我也很懵,只好建议您用不同的参数多尝试几次。如果还是不可以的话,咱们可以继续讨论。

您也可以直接使用这几个https://github.com/xi-jia/LKU-Net/tree/main/L2ss_2_Chan_8_LR_0.0001_Smooth_5.0 https://github.com/xi-jia/LKU-Net/tree/main/L2ss_2_Chan_4_LR_0.0001_Smooth_5.0 预训练模型进行测试,看能否达到对应的准确率,排除是数据本身的问题。

BoyOfChu commented 1 year ago

非常感谢您这么晚还回复我,昨天晚上看到您的回复我就对代码重新进行了梳理,也发现了我的问题所在:由于初次学习您的代码时,发现readme中提到对标签的双线性插值可以进一步提升指标,于是就将train.py中的最近邻插值改成了双线性,结果我将这件事完全忘了,所以才导致怎么都复现不了,经过一天的检查终于发现了这一点。 在检查过程中,我还发现了一个有趣的地方。您实现的配准网络最后输出前使用了Softsign激活函数,因此输出的位移场是归一化的。为了检查是不是STN出现了问题,我尝试将网络的输出的三个通道分别乘上对应图像维度shape的一半,然后使用TransMorph,VoxelMorph中使用的STN进行测试,发现结果一致。之前还在考虑怎么获取绝对位移场计算TRE,这次正好得到了启发。 再次感谢您的不吝赐教!