问题是自己的结果与预测相差太大了,没找到具体原因,想请大佬帮帮忙,帮我看下哪里可能有问题,以下是我怀疑有问题的某些具体步骤,小白感激不尽!!!
label标签有4种,分别是0(背景),1,2,4。
我首先对4种模态(T1,T2,T1ce,Flair)同一z轴位置的切片做成一个(4,240,240)的.npy文件,unet输入和输出的都是(1,4,240,240),在unet的最后一层输出用了softmax进行多标签分类。
不知道做法对不对,我是这样进行onehot:把label中像素为标签4的值变成3,用一个(4,240,240)的张量,它每个通道的矩阵元素根据是否为具体某一标签(例如元素2)变成0-1,这样一个通道只与一个标签有关。
损失函数用到是MutiDiceloss,就是每个标签Diceloss之和。
在dataset中我没有用transforms.compose代码中的transforms.ToTensor(),也包括其他数据增强代码。
优化函数用的是带momentum的SGD
计算评价指标Dice要用到的混淆矩阵时,我用下面代码将unet输出结果变成了一个通道240x240的标签图(每个像素的值是其最大概率的通道数值0,1,2,3)
pred=outputs.contiguous().view(-1, args.num_classes).max(1)[1].view(b, h, w)
原图像:
标签:
预测输出结果: