今天将分享X光图像肺部二值分割的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、X光图像分析与预处理
(1)、704张X光原始数据和标注数据可以在官网上下载获取到。测试数据一共有96张数据,目前也可以在官网上下载了。
(2)、由于原始数据大小不一样,这里对图像做统一大小设置,由于训练的显卡是1080ti的11G显存的,所以首先将训练原始图像和标注图像进行图像大小缩放到固定大小,具体是512x512,如果你的显卡显存足够大的话,可以将该大小改的大一点,如果显存小的话,可以将该大小改小一点。
(3)、为了增加模型鲁棒性,还增加了数据增强的处理过程,采用旋转,平移,翻转等方法对图像和标注数据同时进行扩充处理,这里扩充了20倍。
(4)、原始图像和金标准Mask图像的预处理还需要做归一化操作,统一都归一化到(0,1)。
二、分割网络
(1)、搭建VNet2d模型,网络输入大小是(512,512)。具体实现可以参考Tensorflow入门教程(十九)——基于VNet的前列腺分割案例。
(2)、loss采用的是二分类的dice函数。具体实现可以参考Tensorflow入门教程(三十四)——常用两类图像分割损失函数。
三、测试数据结果
输入图像统一缩放到(512,512),归一化到0-1,输入到网络中预测,最后将结果缩放到原始图像大小,然后使用opencv的将轮廓绘制在原始图像上。在测试数据上分割结果如下所示。
为了方便大家更高效地学习,后期会将相关项目代码更新到github上,点击原文链接即可访问官方比赛网址,可以直接下载训练和测试数据。