YaoZhang93 / mmFormer

[MICCAI 2022] The official code for "mmFormer: Multimodal Medical Transformer for Incomplete Multimodal Learning of Brain Tumor Segmentation"
Apache License 2.0
93 stars 10 forks source link

背景,WT,TC,ET标签错误 #1

Closed 60wanjinbing closed 1 year ago

60wanjinbing commented 2 years ago

作者你好,我用的代码跑BRATS2018数据集,但最后实验结果只有1,2,3标签,为啥没有0标签?哪个标签是背景?按你的代码最后Decoder分成4类,softmax结果应该是0,1,2,3才对,但实验结果没有0

60wanjinbing commented 2 years ago

请问作者,你的test.py文件里哪里有计算dice的方法?

YaoZhang93 commented 2 years ago

你好,0标签就是背景,我不太理解你说的实验结果没有0是什么意思? test.py里没有包含计算dice的代码,可以使用medpy.metric.binary.dc计算

60wanjinbing commented 2 years ago

out = model(x, missing_modal)[0] output = out[0, :, :128, :128, :128].cpu().detach().numpy() output = output.argmax(0) 按道理这个output中应该有0的,但实验结果是只有123,没有0

YaoZhang93 commented 2 years ago

网络的输出output有4个channel,output.argmax(0)即是输出4个channel中prob最大的channel index。如果prob最大的channel index是0,就会输出0。

60wanjinbing commented 2 years ago

我这边的实验结果是output不会有0输出,而且实验结果表明1,2,3中,1是背景,这个现象很让人迷惑,可以在解释的详细点么?谢谢

60wanjinbing commented 2 years ago

image 这张图是实验结果打印output中,0123标签的数量,结果显示1的数量是最多的

YaoZhang93 commented 2 years ago

你可以使用ITKSnap读取nii.gz文件,可视化看一下结果。

Original Message Sender: @.> Recipient: @.> Cc: Yao @.>; @.> Date: Friday, Jul 8, 2022 22:23 Subject: Re: [YaoZhang93/mmFormer] 背景,WT,TC,ET标签错误 (Issue #1)

这张图是实验结果打印output中,0123标签的数量,结果显示1的数量是最多的 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

60wanjinbing commented 2 years ago

ITKSnap读取nii.gz文件可视化看了结果,结果显示1是背景

YaoZhang93 commented 2 years ago

方便用百度网盘发给我看一下么?

60wanjinbing commented 2 years ago

可以,我这边上传百度网速慢,等上传完在发给你,非常感谢

60wanjinbing commented 2 years ago

链接:https://pan.baidu.com/s/1plTRpnJ64oc8pmV5uTStBw 提取码:jxhf 麻烦给看看,谢谢,有代码导出的图片和nii文件

60wanjinbing commented 2 years ago

作者,你好,有时间帮忙看下,谢谢

YaoZhang93 commented 2 years ago

您好,最近工作有点多,我这周给您答复。您可以先检查一下ground truth是否正确,BraTS的label是0,1,2,4,train和predict的时候代码会自动把4改成3进行计算,所以您不需要提前对数据做处理,只需要用原始的数据就可以。

60wanjinbing commented 2 years ago

谢谢, 数据的处理就是按照你的README说明:在文件 preprocess.py处理的,代码我没有任何的改动

YaoZhang93 commented 2 years ago

您好,我直接pull了代码训练,结果是正常的。您有观察过训练时的log是否正常么?

60wanjinbing commented 2 years ago

我又重新训练了下,log是正常的

YaoZhang93 commented 2 years ago

log里记录了每个目标的loss,如果这个是正常的,网络的输出应该是包含所有目标的

Linzy0227 commented 1 year ago

作者您好,请问按照您的代码进行训练,loss不收敛是咋回事呢?

YaoZhang93 commented 1 year ago

您好,请问不收敛具体是指什么情况?或者您可以把log贴上来。

Linzy0227 commented 1 year ago

您好,请问不收敛具体是指什么情况?或者您可以把log贴上来。

你看一下 这个

2022-07-15 04:52:30 ===> Epoch: 999_Iter:0 loss: 11.08123 || 1:0.0005 | 2:0.8414 | 3:0.6293 || 2022-07-15 04:52:32 ===> Epoch: 999_Iter:1 loss: 10.90239 || 1:0.0079 | 2:0.8225 | 3:0.4703 || 2022-07-15 04:52:35 ===> Epoch: 999_Iter:2 loss: 13.71569 || 1:0.0077 | 2:0.7875 | 3:0.4339 || 2022-07-15 04:52:38 ===> Epoch: 999_Iter:3 loss: 10.22860 || 1:0.0074 | 2:0.8039 | 3:0.0000 || 2022-07-15 04:52:39 ===> Epoch: 999_Iter:4 loss: 12.11202 || 1:0.0048 | 2:0.7488 | 3:0.8098 || 2022-07-15 04:52:41 ===> Epoch: 999_Iter:5 loss: 8.11035 || 1:0.0182 | 2:0.7830 | 3:0.6631 || 2022-07-15 04:52:43 ===> Epoch: 999_Iter:6 loss: 7.97674 || 1:0.0160 | 2:0.8895 | 3:0.6883 || 2022-07-15 04:52:45 ===> Epoch: 999_Iter:7 loss: 21.19992 || 1:0.0039 | 2:0.0755 | 3:0.0000 || 2022-07-15 04:52:48 ===> Epoch: 999_Iter:8 loss: 12.75717 || 1:0.0014 | 2:0.7394 | 3:0.4432 || 2022-07-15 04:52:50 ===> Epoch: 999_Iter:9 loss: 8.42474 || 1:0.0288 | 2:0.9104 | 3:0.7704 || 2022-07-15 04:52:51 ===> Epoch: 999_Iter:10 loss: 7.81738 || 1:0.0060 | 2:0.9284 | 3:0.9430 || 2022-07-15 04:52:54 ===> Epoch: 999_Iter:11 loss: 8.93376 || 1:0.0059 | 2:0.8354 | 3:0.7429 || 2022-07-15 04:52:56 ===> Epoch: 999_Iter:12 loss: 7.45416 || 1:0.0058 | 2:0.8738 | 3:0.6822 || 2022-07-15 04:52:57 ===> Epoch: 999_Iter:13 loss: 6.78659 || 1:0.0116 | 2:0.7419 | 3:0.6544 || 2022-07-15 04:52:59 ===> Epoch: 999_Iter:14 loss: 10.68367 || 1:0.0039 | 2:0.9013 | 3:0.4221 || 2022-07-15 04:53:01 ===> Epoch: 999_Iter:15 loss: 10.32767 || 1:0.0023 | 2:0.8149 | 3:0.7957 || 2022-07-15 04:53:03 ===> Epoch: 999_Iter:16 loss: 8.34559 || 1:0.0783 | 2:0.8568 | 3:0.7970 || 2022-07-15 04:53:05 ===> Epoch: 999_Iter:17 loss: 7.13275 || 1:0.0016 | 2:0.8355 | 3:0.7426 || 2022-07-15 04:53:06 ===> Epoch: 999_Iter:18 loss: 7.33763 || 1:0.0028 | 2:0.8688 | 3:0.8104 || 2022-07-15 04:53:08 ===> Epoch: 999_Iter:19 loss: 15.19388 || 1:0.0000 | 2:0.8913 | 3:0.4372 || 2022-07-15 04:53:11 ===> Epoch: 999_Iter:20 loss: 8.02363 || 1:0.0018 | 2:0.7826 | 3:0.8446 || 2022-07-15 04:53:14 ===> Epoch: 999_Iter:21 loss: 8.59467 || 1:0.0060 | 2:0.8063 | 3:0.8463 || 2022-07-15 04:53:16 ===> Epoch: 999_Iter:22 loss: 7.12275 || 1:0.0028 | 2:0.7690 | 3:0.9029 || 2022-07-15 04:53:18 ===> Epoch: 999_Iter:23 loss: 9.11534 || 1:0.0407 | 2:0.8961 | 3:0.8356 || 2022-07-15 04:53:21 ===> Epoch: 999_Iter:24 loss: 11.42418 || 1:0.0023 | 2:0.8361 | 3:0.7740 || 2022-07-15 04:53:24 ===> Epoch: 999_Iter:25 loss: 14.92277 || 1:0.0042 | 2:0.4918 | 3:0.4404 || 2022-07-15 04:53:26 ===> Epoch: 999_Iter:26 loss: 8.39429 || 1:0.0069 | 2:0.7971 | 3:0.8033 || 2022-07-15 04:53:27 ===> Epoch: 999_Iter:27 loss: 7.94281 || 1:0.0341 | 2:0.7546 | 3:0.4532 || 2022-07-15 04:53:29 ===> Epoch: 999_Iter:28 loss: 12.36101 || 1:0.0565 | 2:0.7647 | 3:0.0000 || 2022-07-15 04:53:32 ===> Epoch: 999_Iter:29 loss: 9.94711 || 1:0.0233 | 2:0.8254 | 3:0.8671 || 2022-07-15 04:53:34 ===> Epoch: 999_Iter:30 loss: 9.31919 || 1:0.0114 | 2:0.8777 | 3:0.8710 || 2022-07-15 04:53:37 ===> Epoch: 999_Iter:31 loss: 14.39157 || 1:0.0002 | 2:0.7895 | 3:0.4337 || 2022-07-15 04:53:39 ===> Epoch: 999_Iter:32 loss: 7.45636 || 1:0.0085 | 2:0.7730 | 3:0.7781 || 2022-07-15 04:53:40 ===> Epoch: 999_Iter:33 loss: 15.11593 || 1:0.0025 | 2:0.4086 | 3:0.4575 || 2022-07-15 04:53:42 ===> Epoch: 999_Iter:34 loss: 16.03389 || 1:0.0001 | 2:0.4502 | 3:0.4378 || 2022-07-15 04:53:44 ===> Epoch: 999_Iter:35 loss: 7.70871 || 1:0.0119 | 2:0.8767 | 3:0.8840 || 2022-07-15 04:53:46 ===> Epoch: 999_Iter:36 loss: 9.65387 || 1:0.0160 | 2:0.7607 | 3:0.4172 || 2022-07-15 04:53:47 ===> Epoch: 999_Iter:37 loss: 8.75199 || 1:0.0148 | 2:0.8393 | 3:0.3898 || 2022-07-15 04:53:49 ===> Epoch: 999_Iter:38 loss: 8.64040 || 1:0.0208 | 2:0.7943 | 3:0.3717 || 2022-07-15 04:53:50 ===> Epoch: 999_Iter:39 loss: 8.20946 || 1:0.0040 | 2:0.7609 | 3:0.7028 || 2022-07-15 04:53:53 ===> Epoch: 999_Iter:40 loss: 8.28492 || 1:0.0053 | 2:0.9048 | 3:0.8225 || 2022-07-15 04:53:55 ===> Epoch: 999_Iter:41 loss: 7.67248 || 1:0.0019 | 2:0.8494 | 3:0.7209 || 2022-07-15 04:53:56 ===> Epoch: 999_Iter:42 loss: 8.11595 || 1:0.0162 | 2:0.8446 | 3:0.8833 || 2022-07-15 04:53:59 ===> Epoch: 999_Iter:43 loss: 17.09151 || 1:0.0000 | 2:0.4085 | 3:0.0000 || 2022-07-15 04:54:00 ===> Epoch: 999_Iter:44 loss: 7.67677 || 1:0.0261 | 2:0.7710 | 3:0.8275 || 2022-07-15 04:54:03 ===> Epoch: 999_Iter:45 loss: 8.69581 || 1:0.0146 | 2:0.8672 | 3:0.8316 || 2022-07-15 04:54:05 ===> Epoch: 999_Iter:46 loss: 13.85435 || 1:0.0032 | 2:0.3689 | 3:0.3930 || 2022-07-15 04:54:08 ===> Epoch: 999_Iter:47 loss: 10.89788 || 1:0.0162 | 2:0.7602 | 3:0.2892 || 2022-07-15 04:54:11 ===> Epoch: 999_Iter:48 loss: 7.45482 || 1:0.0135 | 2:0.8323 | 3:0.4496 || 2022-07-15 04:54:12 ===> Epoch: 999_Iter:49 loss: 7.04484 || 1:0.0031 | 2:0.8417 | 3:0.8756 || 2022-07-15 04:54:14 ===> Epoch: 999_Iter:50 loss: 7.56921 || 1:0.0187 | 2:0.7440 | 3:0.6062 || 2022-07-15 04:54:15 ===> Epoch: 999_Iter:51 loss: 8.63206 || 1:0.0129 | 2:0.8609 | 3:0.3262 || 2022-07-15 04:54:17 ===> Epoch: 999_Iter:52 loss: 9.63633 || 1:0.0031 | 2:0.8521 | 3:0.8481 || 2022-07-15 04:54:20 ===> Epoch: 999_Iter:53 loss: 7.20882 || 1:0.0094 | 2:0.8898 | 3:0.8320 || 2022-07-15 04:54:22 ===> Epoch: 999_Iter:54 loss: 6.99825 || 1:0.0122 | 2:0.5321 | 3:0.8159 || 2022-07-15 04:54:23 ===> Epoch: 999_Iter:55 loss: 9.55061 || 1:0.0144 | 2:0.8417 | 3:0.4211 || 2022-07-15 04:54:25 ===> Epoch: 999_Iter:56 loss: 6.59082 || 1:0.0138 | 2:0.8259 | 3:0.8063 || 2022-07-15 04:54:28 ===> Epoch: 999_Iter:57 loss: 10.68506 || 1:0.0282 | 2:0.5771 | 3:0.3868 || 2022-07-15 04:54:30 ===> Epoch: 999_Iter:58 loss: 6.93886 || 1:0.0069 | 2:0.7125 | 3:0.7097 || 2022-07-15 04:54:31 ===> Epoch: 999_Iter:59 loss: 9.77528 || 1:0.0244 | 2:0.8173 | 3:0.4210 || 2022-07-15 04:54:32 ===> Epoch: 999_Iter:60 loss: 12.32972 || 1:0.0005 | 2:0.7358 | 3:0.4080 || 2022-07-15 04:54:34 ===> Epoch: 999_Iter:61 loss: 6.94036 || 1:0.0612 | 2:0.8569 | 3:0.7473 || 2022-07-15 04:54:36 ===> Epoch: 999_Iter:62 loss: 10.81823 || 1:0.0005 | 2:0.8523 | 3:0.8902 || 2022-07-15 04:54:38 ===> Epoch: 999_Iter:63 loss: 6.63748 || 1:0.0039 | 2:0.7507 | 3:0.8239 || 2022-07-15 04:54:40 ===> Epoch: 999_Iter:64 loss: 12.70074 || 1:0.0001 | 2:0.7244 | 3:0.4406 || 2022-07-15 04:54:41 ===> Epoch: 999_Iter:65 loss: 6.94826 || 1:0.0536 | 2:0.7190 | 3:0.6751 || 2022-07-15 04:54:42 ===> Epoch: 999_Iter:66 loss: 12.00629 || 1:0.0135 | 2:0.8410 | 3:0.0000 || 2022-07-15 04:54:45 ===> Epoch: 999_Iter:67 loss: 10.83212 || 1:0.0008 | 2:0.9058 | 3:0.9034 || 2022-07-15 04:54:48 ===> Epoch: 999_Iter:68 loss: 10.40934 || 1:0.0095 | 2:0.8752 | 3:0.3769 || 2022-07-15 04:54:50 ===> Epoch: 999_Iter:69 loss: 5.89983 || 1:0.0049 | 2:0.7719 | 3:0.8806 || 2022-07-15 04:54:52 ===> Epoch: 999_Iter:70 loss: 13.92555 || 1:0.0583 | 2:0.3885 | 3:0.3577 || 2022-07-15 04:54:55 ===> Epoch: 999_Iter:71 loss: 9.12407 || 1:0.0006 | 2:0.8382 | 3:0.8900 || 2022-07-15 04:54:56 ===> Epoch: 999_Iter:72 loss: 6.47897 || 1:0.0184 | 2:0.8274 | 3:0.7904 || 2022-07-15 04:54:58 ===> Epoch: 999_Iter:73 loss: 11.10279 || 1:0.0316 | 2:0.7358 | 3:0.7920 || 2022-07-15 04:55:00 ===> Epoch: 999_Iter:74 loss: 7.86939 || 1:0.0547 | 2:0.7034 | 3:0.6286 || 2022-07-15 04:55:03 ===> Epoch: 999_Iter:75 loss: 13.65806 || 1:0.0001 | 2:0.9295 | 3:0.4473 || 2022-07-15 04:55:05 ===> Epoch: 999_Iter:76 loss: 8.90331 || 1:0.0038 | 2:0.8777 | 3:0.8481 || 2022-07-15 04:55:08 ===> Epoch: 999_Iter:77 loss: 15.43872 || 1:0.0027 | 2:0.3913 | 3:0.3037 || 2022-07-15 04:55:11 ===> Epoch: 999_Iter:78 loss: 9.52322 || 1:0.0005 | 2:0.9195 | 3:0.4502 || 2022-07-15 04:55:12 ===> Epoch: 999_Iter:79 loss: 7.78509 || 1:0.0118 | 2:0.8100 | 3:0.4686 || 2022-07-15 04:55:14 ===> Epoch: 999_Iter:80 loss: 6.73063 || 1:0.0158 | 2:0.8581 | 3:0.7742 || 2022-07-15 04:55:15 ===> Epoch: 999_Iter:81 loss: 14.16114 || 1:0.0553 | 2:0.6827 | 3:0.3347 || 2022-07-15 04:55:18 ===> Epoch: 999_Iter:82 loss: 11.15892 || 1:0.0115 | 2:0.7729 | 3:0.8651 || 2022-07-15 04:55:21 ===> Epoch: 999_Iter:83 loss: 13.40156 || 1:0.0026 | 2:0.4380 | 3:0.4135 || 2022-07-15 04:55:23 ===> Epoch: 999_Iter:84 loss: 7.00205 || 1:0.0109 | 2:0.8479 | 3:0.8241 || 2022-07-15 04:55:24 ===> Epoch: 999_Iter:85 loss: 9.43437 || 1:0.0032 | 2:0.7508 | 3:0.7830 || 2022-07-15 04:55:26 ===> Epoch: 999_Iter:86 loss: 11.49615 || 1:0.0006 | 2:0.7892 | 3:0.8610 || 2022-07-15 04:55:28 ===> Epoch: 999_Iter:87 loss: 8.68363 || 1:0.0004 | 2:0.7817 | 3:0.7847 || 2022-07-15 04:55:30 ===> Epoch: 999_Iter:88 loss: 11.04881 || 1:0.0409 | 2:0.7717 | 3:0.0000 || 2022-07-15 04:55:33 ===> Epoch: 999_Iter:89 loss: 7.13336 || 1:0.0127 | 2:0.7668 | 3:0.7353 || 2022-07-15 04:55:34 ===> Epoch: 999_Iter:90 loss: 6.16312 || 1:0.0346 | 2:0.7687 | 3:0.7849 || 2022-07-15 04:55:35 ===> Epoch: 999_Iter:91 loss: 7.69973 || 1:0.0174 | 2:0.8684 | 3:0.7632 || 2022-07-15 04:55:37 ===> Epoch: 999_Iter:92 loss: 9.76549 || 1:0.0576 | 2:0.7788 | 3:0.6089 || 2022-07-15 04:55:39 ===> Epoch: 999_Iter:93 loss: 6.17769 || 1:0.0228 | 2:0.8190 | 3:0.7793 || 2022-07-15 04:55:40 ===> Epoch: 999_Iter:94 loss: 8.57573 || 1:0.0039 | 2:0.9141 | 3:0.3838 || 2022-07-15 04:55:43 ===> Current epoch time consumption: 3.21 minutes! 2022-07-15 04:55:43 ===> Estimated remaining training time: 0.00 hours! 2022-07-15 04:55:45 ===> The total training time is 56.64 hours 2022-07-15 04:55:45 ===> ----------------------------------The training process finished!-----------------------------------

YaoZhang93 commented 1 year ago

您是在哪个数据集上训练的?实验设置是什么?

Linzy0227 commented 1 year ago

您是在哪个数据集上训练的?实验设置是什么?

BraTs2018,num_workers=8,2张3090,其他都是默认参数

YaoZhang93 commented 1 year ago

从log看是label 1的预测挂掉了。我在实验中有遇见过类似情况,不过很少见,大概一两次。老师说我目前不太知道具体原因是什么。重新训练就正常了。然后就是如果您是用2卡,需要保证每块卡batch size是1。

Linzy0227 commented 1 year ago

从log看是label 1的预测挂掉了。我在实验中有遇见过类似情况,不过很少见,大概一两次。老师说我目前不太知道具体原因是什么。重新训练就正常了。然后就是如果您是用2卡,需要保证每块卡batch size是1。

batchsize设置是2,我再训练一下试试,谢谢您的耐心解答。

60wanjinbing commented 1 year ago

def softmax_dice(output, target): ''' The dice loss for using softmax activation function :param output: (b, num_class, d, h, w) :param target: (b, d, h, w) :return: softmax dice loss ''' loss1 = Dice(output[:, 1, ...], (target == 1).float()) loss2 = Dice(output[:, 2, ...], (target == 2).float()) loss3 = Dice(output[:, 3, ...], (target == 4).float())

return loss1 + loss2 + loss3, 1-loss1.data, 1-loss2.data, 1-loss3.data

这个算Loss,为啥没有算上0索引,0按道理应该是背景,应该也要算上的

YaoZhang93 commented 1 year ago

对于肿瘤这种小目标分割来讲,计算背景的loss并不是很必要

60wanjinbing commented 1 year ago

对于肿瘤这种小目标分割来讲,计算背景的loss并不是很必要

因为你的网络输出是4个通道,然后计算loss却是3个通道

YaoZhang93 commented 1 year ago

对于肿瘤这种小目标分割来讲,计算背景的loss并不是很必要

因为你的网络输出是4个通道,然后计算loss却是3个通道

是的,只计算前景的loss就可以

yunqiang6265 commented 1 year ago

请问一下您计算WT、ET、TC性能的代码在哪里呢?谢谢!

Linzy0227 commented 1 year ago

我又重新训练了下,log是正常的

您好,可以看一下您的log吗,我的一直不收敛,我的邮箱lizy0227@qq.com

YaoZhang93 commented 1 year ago

请问一下您计算WT、ET、TC性能的代码在哪里呢?谢谢!

您好,我们重新整理了代码,里边带有评测,您可以试试。

YaoZhang93 commented 1 year ago

我又重新训练了下,log是正常的

您好,可以看一下您的log吗,我的一直不收敛,我的邮箱lizy0227@qq.com

您好,我们重新整理了代码,提供了log,您可以试试。

YaoZhang93 commented 1 year ago

如果有其他问题,欢迎提新的issue,这个issue先close掉了