使用U-Net進行肺結節分割案例分析:DSB3Tutorial

使用U-Net進行肺結節分割案例分析:DSB3Tutorial

本文要分析的代碼作者是jonrmulholland,這裏是其鏈接地址
數據集:LUNA 2016,這裏是LUNA2016數據集詳細說明鏈接
重要文件介紹: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,這個也太低了
後續繼續分析原因…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章