今天将分享NODE21肺结节检测和生成挑战赛中肺结节生成的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。

一、结节生成方案

由于数据中存在结节阳性和阴性数据,而结节生成是要在阴性数据上指定的结节区域生成有结节的图像出来。挑战赛官方给了基础方法,大体思路是根据对应的CT和X-ray的结节数据,采用DDR技术将CT投影到二维图像,然后根据结节Mask区域的图像与X-ray图像进行叠加得到生成的X-ray结节图像。但是官方没有提供CT和X-ray相对应的数据,只是提供了独立的CT和独立的X-ray。所以基础方法就不太适用了,因此这里技术方案是使用GAN网络来生成结节图像,输入图像是没有结节区域的x-ray图像,金标准图像是有结节区域的x-ray图像,通过GAN将没有结节区域的x-ray生成到有结节区域的x-ray图像。

二、技术路线详细过程

A、数据预处理

1、根据两个csv文件分别将阳性结节的ROI区域裁切出来,将阴性结节的ROI区域裁切出来。

2、将阴性结节的ROI区域图像做为输入,阳性结节的ROI区域做为金标准图像。

3、将图像按照最大最小方式归一化到0-1范围,将图像统一缩放到128x128大小。

B、网络结构及超参数设置

网络结构是生成器和判别器组成,其中生成器是encoder-decoder的图像生成网络结构,判别器是二分类网络结构。学习率是0.0001,epoch是20,batchsize是128

C、训练结果

判别器网络损失函数:

NODE21——肺结节检测和生成挑战赛(三)_损失函数

生成器网络损失函数:

NODE21——肺结节检测和生成挑战赛(三)_数据_02

D、训练中间结果

训练中间结果展示,第一个是网络预测生成图像结果,中间是输入图像,第三个是真实结节结果。

生成图像结果

NODE21——肺结节检测和生成挑战赛(三)_数据_03

输入图像

NODE21——肺结节检测和生成挑战赛(三)_数据_04

真实结节结果图像

NODE21——肺结节检测和生成挑战赛(三)_生成器_05

E、测试结果

测试数据:第一个是生成图像,第二个是输入图像

可以看到生成结节图像有些看上去还有点相似,但是有些还不是那么真实。

生成图像结果

NODE21——肺结节检测和生成挑战赛(三)_损失函数_06

输入图像

NODE21——肺结节检测和生成挑战赛(三)_数据_07

生成图像结果

NODE21——肺结节检测和生成挑战赛(三)_数据_03

输入图像

NODE21——肺结节检测和生成挑战赛(三)_数据_04

生成图像结果  

NODE21——肺结节检测和生成挑战赛(三)_生成器_10

输入图像

NODE21——肺结节检测和生成挑战赛(三)_生成器_11