Open lichen14 opened 1 day ago
https://github.com/AiEson/CrossMatch/blob/e93ac78a5731fc3d593f6d407d70f1224b8ed223/ACDC/dataset/acdc.py#L32 在训练时,这里ACDCDataset使用了valtest.txt,包含了验证集和测试集的30个scans了,不过这一点好像与unimatch是一致的,但这样验证时能看到测试集的部分内容,能行吗 ?
另外,我在复现论文里报道的结果时也遇到了疑问。 我使用repo的代码没能成功复现出ACDC数据集在10%标注下的结果(88.27),我在训练时最好的精度是86.68,使用test.py测试latest.pth的精度是[0.86884412 0.78007681 1.80055534 0.48169394],都与论文中报道的有较大出入。 望协助我解答,谢谢 train_log.log
您好,非常感谢对本工作的关注。如您所述,我们的ACDC代码基于 UniMatch。
观察到在 test.py 中,确实是在 val 上获取的结果,这点我们在代码审查环节犯了错,稍后将进行更正,感谢您的反馈。
上述的数据泄露问题实际上是不存在的,在 https://github.com/AiEson/CrossMatch/blob/e93ac78a5731fc3d593f6d407d70f1224b8ed223/ACDC/test.py#L88 中可以看到,我们在获取结果时并不使用best.pth
,而是使用最后一次迭代的权重 latest.pth
。事实上,诸多顶会工作(BCP、ABD)均采用了数据泄露的方式取得结果: https://github.com/DeepMed-Lab-ECNU/BCP/blob/7879f988872f561231f73eecd5b4e232e54fa2bd/code/test_ACDC.py#L92 ,这也是我在本领域观察到的较为不好的现象。
上述的复现结果问题,观察到您提供的log文件中的batch_size
设置为24,这是一个较大的数值。我们的代码是基于Epochs数来写的,而非 iterations,所以您可以尝试将 batch_size 设置为 12 或 8 来取得足够的迭代次数,可能能够达到与论文相似的结果。具体地,我们的ACDC是在3张3090上以BS=4训练得到的,LA则是在单卡上训练的。
如果您有好的建议欢迎反馈,我们将进一步改正、勘误代码。再次感谢对本工作的关注
非常感谢作者快速的回复!!!我会改成12或8的batchsize再试试的 :)
我还是没看懂您的有一条回复,所以,论文报道的ACDC数据集在10%标注下的结果(88.27)是基于验证集(10 scans)?还是测试集(20 scans)呢?
您好,经过查证我们的ACDC结果全都汇报自 val.txt ,这可能是重大疏漏。但在表格中我们复现了有竞争力的UniMatch的结果,并同样在val下汇报,所以此疏漏对点数提升的影响性较小,谢谢您的勘误❤️。
如果您需要论文中汇报的权重和log,我们提供在下方的zip文件中供您使用。
感谢作者高效的回复,给您点个赞。
关于batchsize,我改成12之后在单个4090上跑了一遍,训练时的最好dice是87.10,测试时的精度是[0.8771888 0.79471987 1.61457725 0.54928673],这比我之前使用24的batchsize好了一些,但距离您报道的还有点点差距。这是训练日志 20241128_2239.log
感谢您分享了权重和log,dropbox我暂时还看不到,方便的话,可否分享一个国内能正常使用的 :)或者直接上传个log
您好,这是百度网盘的下载链接: 通过网盘分享的文件:crossmatch_acdc.zip 链接: https://pan.baidu.com/s/1ZdICmsskn31yC9rXBDp8rw?pwd=nvg9 提取码: nvg9
作者您好,很好的工作,已经star
我看到论文和github上有些许的出入,例如: https://github.com/AiEson/CrossMatch/blob/e93ac78a5731fc3d593f6d407d70f1224b8ed223/README.md?plain=1#L84 提到'The training set consists of 3 labeled scans and 67 unlabeled scans and the testing set includes 20 scans.',但是论文第6页提到'reporting the performance on the validation set.'
根据ACDC数据集的划分,The data split remains 70 patients’ scans for training, 10 for validation, and 20 for testing.
所以不知道作者报道的结果到底是以验证集(10 scans)为基础?还是测试集(20 scans)?