首页 > 技术知识 > 正文

文章目录 1 颜色翻转 2 背景 3 U-Net网络 4 Modified U-Net (mU-Net) 5 数据集 6 数据处理及增强 7 结果 8 基于深度学习的图像分割总结 1 颜色翻转

原数据集中的标准肝脏和白色的肿瘤, 【深度学习】腹部CT的肝脏肿瘤分割的探索

肝脏分割的图片,发现做窗口值等的操作,也是将非目标区域变黑,然后可以突出肝脏(肝脏变成灰白色,当然,还有其他qiguan更是白色)。 于是,我做了一个大胆的实验,将肝脏变成灰色,肿瘤变成白色,肝脏外的区域为黑色。(进行了颜色翻转) 【深度学习】腹部CT的肝脏肿瘤分割的探索1 【深度学习】腹部CT的肝脏肿瘤分割的探索2

2 背景

近年来,快速发展的深度学习技术已经渗透进了各行各业,医疗方面也不例外。这篇文章我主要介绍如何使用深度学习计算机视觉方法对CT扫描中的肝脏和肝脏肿瘤进行分割。

根据2018年的统计数据[1],肝脏肿瘤是全球第7常见的肿瘤,但zhisi病例总数却在所有肿瘤类疾病中排名第二。早发现早治疗能有效提升肝脏肿瘤疾病的治愈率,但人工在大量的肝脏CT影像中寻找体积很小的肿瘤工作量极大,也很容易漏检。这个场景下,使用深度学习算法自动进行快速、准确的肝脏及肝脏肿瘤分割筛查是一个很好的解决方案。

【深度学习】腹部CT的肝脏肿瘤分割的探索3

3 U-Net网络

【深度学习】腹部CT的肝脏肿瘤分割的探索4

4 Modified U-Net (mU-Net)

Modified U-Net (mU-Net) With Incorporation of Object-Dependent High Level Features for Improved Liver and Liver-Tumor Segmentation in CT Images .

论文笔记

Improved Liver and Liver-Tumor Segmentation in CT Images.

肝脏自动分割的困难,肝脏和肿瘤相对于周围组织的对比度很低,它们的形状会改变。

核心想法在于更改skip connection,将一幅图的全局像素特征和细小目标(如边缘)分离。这即为文中的残差模块的构建。

学习心得:利用残差模块将图像特征分为两部分。

卷积Unet的三大问题:

1.跳跃连接,允许传递低分辨率特征图,但这会让提取的特征图模糊。

文中主要意为,pooling时候已经将低分辨率特征向后传递了,skip时候又用了一次低分辨率特征。多次使用低分辨率特征,边界平滑了,尤其是边界本身就模糊时。 【深度学习】腹部CT的肝脏肿瘤分割的探索5 这个p就是l+1层没经过卷积前。

U是反卷积

D是池化

C是卷积

【深度学习】腹部CT的肝脏肿瘤分割的探索6 2.high level特征往往不包括输入高分辨率图的边界信息,这让边界部分出现更多不确定性。不足以评估高分辨图的边界信息。即便有跳跃链接,不像低分辨率图片的边界,高分辨率边界是无法通过卷积层的

3.为了去提取high level特征,池化层数十分难以优化。这是因为池化层数由对象尺寸来决定。

为了处理这三个问题,在跳跃链接上加了带反卷积和激活的残差,用来避免复制使用低分辨率特征值信息。此外,在跳跃链接上加上一个卷积层用来提取高分辨图边界信息的high level特征 mU-net结构单元 【深度学习】腹部CT的肝脏肿瘤分割的探索7

5 数据集

使用数据集: (LiTS) challenge 2017

512512 机内尺寸0.980.98mm2到0.45*0.45mm2.切片范围75到987,厚度0.45到5毫米。

40个病人数据用于训练,5个用于验证,剩下35个测试

照片数22500 2550 16125

使用3d重建技术来验证性能

6 数据处理及增强

我们首先将LiTS数据集中3D的CT扫描分成2D的切片。CT在拍摄和重建的过程中会引入一些噪声,因此我们只保留-1024到1024范围内的数据。经过这两步处理,可以得到大概1万张CT扫描切片及对应的分割标签,随机选择一组进行可视化结果如下

【深度学习】腹部CT的肝脏肿瘤分割的探索8 在训练深度神经网络的过程中,我们通常需要在训练集上训练多个epoch以让网络达到一个比较高的训练准确率。但是这样做又容易使网络过拟合训练集,其表现为网络在训练集上准确率很高但是测试时准确率偏低。针对这个问题有多方面的解决方案,数据增强是其中重要的一种。这个项目中我们采用的数据增强策略包括随机水平、垂直翻转、随机旋转、随机尺度缩放、随机位置裁剪和弹性形变。在项目中可以看到具体代码,图5是对图4中数据进行数据增强的结果: 【深度学习】腹部CT的肝脏肿瘤分割的探索9

CT图像和分割标签共同进行了左右翻转,逆时针15度旋转,0.8倍尺度缩放和弹性形变。虽然一些简单的数据增强步骤过后图像看起来没有很大区别,但是只要图像有变化对算法来说就是新的数据,结合Droupout、权重正则化等方法能较好地抑制网络过拟合,提升测试准确率。 开始训练前的最后一个步骤是定义损失函数。飞桨PaddlePaddle框架为开发者准备了许多Loss函数,通过几行代码就可以方便地调用。这里我们采用交叉熵和Dice Loss结合作为模型的Loss。Dice评价我们网络分割输出和数据集中的实际分割结果有多大程度的重合,是我们最终的优化目标。但是Dice Loss在训练过程中不是很稳定,不利于网络收敛,因此加入了交叉熵来稳定训练。 def create_loss(predict, label, num_classes=2): predict = fluid.layers.transpose(predict, perm=[0, 2, 3, 1]) predict = fluid.layers.reshape(predict, shape=[-1, num_classes]) predict = fluid.layers.softmax(predict) label = fluid.layers.reshape(label, shape=[-1, 1]) label = fluid.layers.cast(label, “int64”) dice_loss = fluid.layers.dice_loss(predict, label) # 计算dice loss ce_loss = fluid.layers.cross_entropy(predict, label) # 计算交叉熵 return fluid.layers.reduce_mean(ce_loss + dice_loss) # 最后使用的loss是dice和交叉熵的和 7 结果

【深度学习】腹部CT的肝脏肿瘤分割的探索10 深度学习算法对一组CT扫描进行分割大概耗时15S,其效率明显高于医生阅片的效率。而且从分割结果中,我们可以计算获得肝脏体积,肿瘤数量,肿瘤体积,肝脏肿瘤负担等数量化的指标,更好地辅助医生进行诊断。

8 基于深度学习的图像分割总结

【深度学习】腹部CT的肝脏肿瘤分割的探索11 参考 A Review on Deep Learning Techniques Applied to Semantic Segmentation ·Reference·

[1] https://pubmed.ncbi.nlm.nih.gov/30207593/

[2] https://aistudio.baidu.com/aistudio/datasetdetail/10273

[3] https://arxiv.org/abs/1505.04597

猜你喜欢