python dicom unet_使用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 : ")1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

得到结果如下:

第二步:运行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 : ")1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

结果图如下:

第三步:运行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,这个也太低了

后续继续分析原因…

你可能感兴趣的:(python,dicom,unet)