基于深度学习的肺部CT影像识别——采用U-net、3D CNN、cGAN实现肺结节的检测(三)

点击此处跳转到系列博客索引


引言

深度学习网络模型需要海量的数据集训练,否则无法体现深度学习应有的优势。因此医学图像数据增强是至关重要的,基于生成对抗网络充分利用数据本身来进行数据生成,从而在一定程度上解决正样本不足的问题,提升肺结节的检测精度。

CT-GAN图像数据增强

基于条件生成网络的肺结节图像生成算法CT-GAN。该网络能学习图像到图像的映射关系,通过篡改原始的CT图像数据,在指定位置添加肺结节,得到近似真实的医学图像数据,从而扩充正样本数据。

算法原理

原始GAN模型是通过随机噪声来生成数据,没有引入约束信息特征,因此生成数据的效果并不理想。本章研究基于条件生成对抗网络(cGAN) [ 1 ] \color{#0000FF}{[1] } [1]的肺结节图像生成算法CT-GAN [ 2 ] \color{#0000FF}{[2] } [2],加入了图像到图像之间的映射关系作为约束信息特征。该算法通过训练能够篡改原始的CT图像数据,在指定位置添加肺结节,得到近似真实的医学图像数据,从而扩充正样本数据。

为了注入结节,算法的预处理和后处理步骤是必要的,整个CT-GAN的处理流程如下图所示。
在这里插入图片描述
读取DICOM和标注文件,定位到目标结节,按照16×16×16大小处理得到掩膜(mask)。将掩膜数据输入到训练好的网络,在指定位置注入结节。然后对注入的结节进行缩放、修补等后处理操作,使其更接近真实结节。最后写入DICOM文件,得到新数据。

网络结构

在这里插入图片描述
生成器部分输入原图大小为323,使用43大小、步幅为2的卷积核对图像处理,依次通过五个卷积核数量翻倍的卷积层,逐层提取特征。同时采用对称跳层连接结构,在对称结构中加入Dropout和Batch-Norm,可以保留更多的图像细节,协助反卷积层完成图像的恢复工作,并且减少梯度消失,加快模型训练。判别器部分将生成的图像或真实图像作为输入,同样使用43大小、步幅为2的卷积核进行卷积。依次通过四次卷积运算,最后得到判别器的输出概率。

实现过程

根据Mirsky 的开源项目 [ 3 ] \color{#0000FF}{[3] } [3]说明进行复现,首先打开config.py文件设置数据和模型的读写路径。由于CT-GAN不仅可以注入结节,也可以去除结节,所以需要根据提示设置成injector模式,选择前缀为1A、2A的文件进行修改、运行,根据Mirsky在GitHub上的指南操作即可,这里不再赘述。

需要注意的是在读取原始CT图像数据时,代码中有这样一条语句:

J.append([os.path.join(self.src_dir, sample.filename), coord, config['cube_shape'], 
		self.coordSystem])

这是在读取病例的结节信息,用LUNA16数据集时,由于原始数据是mhd和raw格式的,所以需要修改为:

 J.append([os.path.join(self.src_dir, sample.seriesuid + '.mhd'), coord, 
           config['cube_shape'], self.coordSystem])

这里一定要是 “.mhd”,并且把对应的raw文件放到同一目录下。虽然不会报错,但是无法处理生成数据。笔者一开始是写的’.raw’,在这里卡了很久。

同样地,由于笔记本硬件条件限制,不能用到全部的数据,所以我通过pandas.read_csv()函数参数设置了忽略多少csv文件中标注的结节,以此来减少数据量。

self.coords = pd.read_csv(coords_csv_path, skipfooter=960) if coords_csv_path is not None else pd.read_csv(config['unhealthy_coords'])
# skipfooter设置忽略几个结节

此外,为了将训练过程可视化,笔者在trainer.py中补充了绘制Loss和Acc的曲线图。运行完1A、2A前缀文件代码可以得到处理好的结节样本数据文件、injector模型。

最后,通过3A文件使用训练好的模型设置注入结节坐标(image (voxel) 坐标系),或者通过GUI.py在GUI界面中注入结节,能即时观察结节注入情况,并且可以注入任意数量的结节。注入结节完成最终得到该病例的DCOM格式文件,和一个注入结节的坐标信息的CSV文件

实验结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用CT-GAN扩充训练集后,U-net分割模型和3D CNN分类模型的准确度略有提升。CT-GAN产生的新形态的结节样本增加了样本数据的多样性,在一定程度上提高了检测模型的泛化能力。模型对于尺寸较大孤立实性结节生成的效果较好,而对于尺寸较小的结节,生成的细节还有待改进。

参考

[1] Mirza M, Osindero S. Conditional Generative Adversarial Nets[EB/OL]. arXiv:1411.1784, 2014. https://arxiv.org/abs/1411.1784.

[2] Mirsky Y, Mahler T, Shelef I, et al. CT-GAN: Malicious tampering of 3D medical imagery using deep learning[C]//28th {USENIX} Security Symposium ({USENIX} Security 19). 2019:461-478.

[3] https://github.com/ymirsky/CT-GAN

  • 6
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
遥感影像分类是指通过对遥感影像进行分析和处理,将其分为不同的地物类别。随着深度学习的发展,基于深度学习的遥感影像分类方法也逐渐成为研究热点。本文将从国内外两个方面介绍基于深度学习的遥感影像分类方法的研究现状。 一、国内研究现状 1. 基于卷积神经网络的遥感影像分类方法 卷积神经网络(CNN)是深度学习中常用的神经网络结构,也是遥感影像分类中常用的方法。国内研究者针对遥感影像特点,对传统的CNN进行了改进和优化。例如,利用多尺度卷积核进行卷积处理,可以更好地提取遥感影像的特征,并且具有较高的分类精度。 2. 基于循环神经网络的遥感影像分类方法 循环神经网络(RNN)是一种常用的序列数据处理方法,适用于遥感影像时间序列数据的分类。国内研究者通过引入RNN,可以对遥感影像序列数据进行有效的分类和预测。例如,将LSTM-RNN应用于遥感影像的分类和分割,可以提高分类和分割的准确率。 3. 基于自编码器的遥感影像分类方法 自编码器是一种无监督学习方法,可以通过对输入数据进行重构,学习数据的特征表示。国内研究者将自编码器应用于遥感影像分类,可以有效提取遥感影像的特征,从而提高分类准确率。 二、国外研究现状 1. 基于深度卷积神经网络的遥感影像分类方法 深度卷积神经网络(DCNN)是近年来应用最广泛的深度学习方法之一,也是国外研究中常用的遥感影像分类方法。DCNN通过多层卷积和池化操作,可以有效地提取遥感影像的特征,并且具有较高的分类精度。例如,Google公司开发的Inception-v3模型在遥感影像分类中取得了很好的效果。 2. 基于深度卷积循环神经网络的遥感影像分类方法 深度卷积循环神经网络(DCRNN)是将CNN和RNN结合的一种网络结构。DCRNN可以对遥感影像进行序列化处理,从而更好地提取遥感影像的时空特征,并且具有较高的分类精度。例如,美国加州大学伯克利分校的研究人员利用DCRNN对遥感影像进行城市化变化检测,取得了很好的效果。 3. 基于生成对抗网络的遥感影像分类方法 生成对抗网络(GAN)是一种无监督学习方法,可以生成逼真的图像。国外研究者将GAN应用于遥感影像分类,可以生成更加逼真的遥感影像,从而提高分类准确率。例如,美国斯坦福大学的研究人员利用CGAN对遥感影像进行分类,取得了很好的效果。 总结:基于深度学习的遥感影像分类方法在国内外研究中都取得了很好的效果。国内研究者主要关注在针对遥感影像特点的CNN优化和改进,而国外研究者则更多地关注于网络结构的创新和发展。随着深度学习的不断发展,基于深度学习的遥感影像分类方法将会得到更广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值