前面的文章中,我分享了一些分割挑战赛的例子。今天我会继续分享肺结节检测和良恶性分类挑战赛的例子。希望通过这个例子可以在如何用深度学习来辅助诊断上给大家带来一些启发。
整个过程分成三个部分:肺结节数据预处理,肺结节检测和良恶性分类。这一篇主要专注于肺结节数据预处理这一部分。
1、Luna16介绍
我这里简单介绍一下Luna16。Luna16挑战赛是针对在LIDC/IDRI数据集上,专注于自动结节检测算法的评估。LIDC/IDRI数据集是由四名放射科医生对结节标注的公开数据集。从官网下载全部数据后,文件subset0.zip-subset9.zip包含所有888例CT数据,annotations.csv包含所有1186个结节标注信息(坐标和直径),candidates.csv包含551065个候选结节信息(坐标和类别标签)。
2、肺结节数据预处理
(1)、生成肺结节Mask图像
将annotations.csv文件中的坐标和直径,以坐标为中心,直径为长,生成正方体区域,最后输出成Mask图像文件。
(2)、图像去噪
设置窗宽窗位(-1000,600)去除CT图像中的噪声,例如骨头的亮点,CT床的金属线等,并将图像归一化到(0,1)。
(3)、准备肺结节检测数据
将层厚大于1mm的CT图像和对应Mask图像进行插值采样(CT图像采用线性插值法,Mask图像采用最近邻插值法),插值采样后的层厚为1mm。
在CT图像和Mask图像上按一定步长取Patch区域(96,96,16)大小,判断并保留有效的Patch Mask图像和相应Pactch图像。
(4)、准备肺结节良恶性分类数据
从candidates.csv文件中读取坐标,以该坐标为中心取(48,48,48)大小区域图像做为候选肺结节图像,并根据标签值(0或1)将图像分为两类。
上述步骤完成后,肺结节图像有1351个,非肺结节图像有549714个。正负样本相差很悬殊。
数据增强处理,针对1351个肺结节图像扩充40倍(旋转,平移,翻转等),对549714个非肺结节图像进行随机采样20%的数据。