weixin_44022013
2020-03-30 22:01
采纳率: 50%
浏览 1.3k

用Unet进行MRI脑肿瘤(Brats18数据)分割得到一种奇怪的结果,请问我可能是哪里出错了吗?

问题是自己的结果与预测相差太大了,没找到具体原因,想请大佬帮帮忙,帮我看下哪里可能有问题,以下是我怀疑有问题的某些具体步骤,小白感激不尽!!!

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)

原图像:
图片说明
标签:
图片说明

预测输出结果:
图片说明

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题