全卷积神经网路【U-net项目实战】肺结节分割案例分析:DSB3Tutorial

本文要分析的代码作者是jonrmulholland

https://github.com/booz-allen-hamilton/DSB3Tutorial

数据集:

LUNA 2016

重要文件介绍:

LUNA_mask_extraction.py,LUNA_segment_lung_ROI.py,LUNA_train_unet.py

第一步:运行LUNA_mask_extraction.py,生产images_#.npy,masks_#.npy

该步骤主要是生产掩码文件,该掩码文件作为实验的输出结果,运行成功后,可以通过下列代码查看结果:

#查看掩码生成的文件
def CheckImageMask():
    working_path = "./tutorial/"
    imgs = np.load(working_path + 'images_0001_0009.npy')
    lungmask = np.load(working_path + 'masks_0001_0009.npy')

    # np.set_printoptions(threshold=np.inf)
    # print("numpy 打印显示不全处理")

    # print(lungmask)
    # print(imgs[0])
    # print(imgs[0] * lungmask[0])

    for i in range(len(imgs)):
        print("image:",i)
        fig, ax = plt.subplots(2, 2, figsize=[8, 8])
        ax[0, 0].imshow(imgs[i], cmap='gray')
        ax[0, 1].imshow(lungmask[i], cmap='gray')
        ax[1, 0].imshow(imgs[i] * lungmask[i], cmap='gray')
        plt.show()
        input("hit enter to cont : ")

得到结果如下:
在这里插入图片描述

第二步:运行LUNA_segment_lung_ROI.py,生产trainImages.npy,trainMasks.npy,testImages.npy,testMasks.npy

该步骤主要进行肺实质的分割,该代码的思路是采用基于二值化的方法,分割好肺实质的后,图像重新resize到512*512,同样的方法对mask结果也进行处理。
第二步完成后,可以通过下列代码查看结果:

def CheckLungMask():
    imgs = np.load(working_path + 'images_0003_0024.npy')
    masks = np.load(working_path + 'masks_0003_0024.npy')
    lungmask = np.load(working_path + 'lungmask_0003_0024.npy')

    # np.set_printoptions(threshold=np.inf)
    # print("numpy 打印显示不全处理")

    # print(lungmask)

    for i in range(len(imgs)):
        print("image:", i)
        fig, ax = plt.subplots(2, 2, figsize=[8, 8])
        ax[0, 0].imshow(imgs[i], cmap='gray')
        ax[0, 1].imshow(lungmask[i], cmap='gray')
        ax[1, 0].imshow(imgs[i] * lungmask[i], cmap='gray')
        ax[1, 1].imshow(masks[i], cmap='gray')
        plt.show()
        input("hit enter to cont : ")

结果图如下:
在这里插入图片描述

第三步:运行LUNA_train_unet.py,训练U-Net模型

本文使用显卡为GTX1060,设置为20个epoch,训练集大小为307,批量大小为2。 运行后dice系数大约0.3
结果保存在masksTestPredicted.npy中,查看了一下结果:一片黑,没有任何东西
分割效果非常不理想,why? 步骤是完全按照文档一步步进行的
分析原理:
1.查看了部分肺实质分割结果,发现有一下分割效果很差的,难道是因为这样?
2.原实验是使用使用TitanX训练得到的,太贵了,我是买不起,我个人用的是GXT1060,难道是因为这样?
3.dice系数才0.3,这个也太低了

原因可度娘。

发布了673 篇原创文章 · 获赞 194 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43838785/article/details/104505450