美文网首页科学生活 智慧人生
unet 处理multi-label的数据

unet 处理multi-label的数据

作者: 幽并游侠儿_1425 | 来源:发表于2019-07-16 01:06 被阅读0次

    办法1:debug原来的unet代码,看看哪里不对劲。

    1.sigmoid

    sigmoid是处理二分类问题的。

    在loss function里,用了sigmoid函数进行prediction结果的二分类。

    所以应该是一个channel用来表示一个label比较合适。

    所以针对我们的问题:

    就是2个output channel 就可以了。

    办法2:跑新的代码

    https://github.com/zsdonghao/u-net-brain-tumor

    以后再说。

    具体操作:

    1.label the gourndtruth

    2. 思路是:

    在同一张图中label,然后再手动转化成two channels.然后丢进网络里去跑。

    3.直接改loss function部分就好啦

    直接在lossfunction里 把groudnturth的一张图变成两个channel

    详细的改loss function的步骤:

    建议是都用 tensor写,不要转化成numpy

    view(-1) 是把array变成一维的

    torch的一些tip:

    1.查看数组的type

    var.size()

    2.

    torch.zeros([2,4],dtype=torch.int32)

    3.

    torch转numpy的转换方法

    Numpy2Tensor:1. torch.from_numpy(Numpy_data) 2. torch.tensor(Numpy_data) 

    Tensor2Variable: 1. Variable(Tensor_data)

    Variable2Tensor: 1. Variable_data.data()

    Tensor2Numpy : 1.Tensor_data.numpy() 

    4.

    画图

    import matplotlib.pyplot as plt 

    plt.imshow(img). imshow()

    debug:

    1. Totensor这个是怎么实现的。

    可以从to_tensor()函数看到,函数接受PIL Image或numpy.ndarray,将其先由HWC转置为CHW格式,再转为float后每个像素除以255.

    记录:label1是171,label2是85

    2.问题出在label不是单纯的171和85

    找到原因了。放大nrrd图,其实同一个cell的label的颜色还是不一样的!

    现在需要做的事情是nrrd图转tif图的过程的检查

    运行命令行:

    python main.py -n_classes 2

    报错:

    RuntimeError: expected backend CPU and dtype Float but got backend CUDA and dtype Float

    期望得到CPU类型张量,得到的却是CUDA张量类型。

    很典型的错误,例如计算图中有的参数为cuda型有的参数却是cpu型就会遇到这样的错误。

    把数据从cpu迁移到cuda的网址:

    https://blog.csdn.net/qq_28444159/article/details/78781201

    https://blog.csdn.net/hustchenze/article/details/79154139

    结果:

    用了这里的代码

    https://github.com/HZCTony/U-net-with-multiple-classification

    代码理解和分析:

    为什么之前自己跑不出来!

    shape问题!

    gt  和 prediction flat之后相减,对应元素对不上!

    https://github.com/ophir91/MultiClass_UNet

    相关文章

      网友评论

        本文标题:unet 处理multi-label的数据

        本文链接:https://www.haomeiwen.com/subject/etcpkctx.html