CTA-GAN:基于生成对抗网络对颈动脉和主动脉的非增强CT影像进行血管增强

写在前面

目前只分析了文章的大体内容和我个人认为的比较重要的细节,代码实现还没仔细看,后续有时间会补充代码细节部分。

文章地址:Generative Adversarial Network-based Noncontrast CT Angiography for Aorta and Carotid Arteries

代码地址:GitHub - yml-bit/CTA-GAN: synthesis CTA using CT base GAN model

PS:代码仓库并未提供详细的环境依赖项说明,但文章在补充材料中说明了环境的主要配置:python3.8 + pytorch1.7.1 + cu110,想要复现的小伙伴可以参考一下。

一、动机

碘对比剂广泛用于CTA成像,但可能会对人体造成不良影响,同时碘对比剂的使用耗时且昂贵。

如果深度神经网络可以根据非增强CT(noncontrast CT,NCCT)生成对应的CTA图像,且生成图像的质量足以用于临床诊断,这将是具有重要意义的。

二、数据和方法

1. 数据:以病人为单位

  • 训练集:1137;
  • 验证集:400;
  • 测试集:212;

共1749 例。外部测试集42例。

2. 数据筛选原则

数据筛选对于我们进行相关的研究具有重要的参考价值。本研究存在以下情况的数据不能纳入:

  • CT影像中存在伪影,包括运动伪影或者金属伪影;
  • NCCT和CTA的slice thickness、slice number或者slice location不一致;
  • 由于CTA出现问题导致扫描失败的,包括无对比剂充盈或者对比剂充盈不足,影响临床诊断;
  • 已经进行过手术的动脉,例如动脉瘤手术;

3. 数据类型

生成的CTA影像能用于临床诊断才有意义。文中数据可进一步细分为如下类型:

  • 动脉瘤
  • 动脉粥样硬化
  • 动脉夹层
  • 正常动脉

文中对内部测试集 和外部测试集各类别的数量进行了说明,并对将生成结果用于临床诊断,绘制了如下所示的混淆矩阵。但并未说明训练集中各类别数据的情况。

4. 模型

文中对模型部分的介绍比较笼统,后续有机会结合代码仔细看一下。文中放置了相对完整的模型结构图,主要分为三部分:

  • 生成器:根据NCCT生成对应的CTA图像
  • 校正器:固定NCCT,将CTA往NCCT配准
  • 判别器:判别真实CTA和生成的CTA(SynCTA)

具体结构如下图所示:

三、结果

1. 定量评估

文中对比了pix2pix 和Reg-GAN 这两种方法,参考的评价指标为NMSE (normalized mean absolute error)、SSIM 和PSNR,具体结果如下图所示:

2. 视觉质量评估

两名高级放射医师独立评估CTA和SynCTA的图像质量,分为三个分数段:差(1分)、满意(2分)、高(3分)。质量评估的主要方面包括:血管壁清晰度、管腔边缘锐利度以及管腔对比度。

然后对内部测试集和外部测试集的CTA和SynCTA的打分情况进行统计学分析,结果显示两者无明显统计学差异,结果图就不放了。

3. 诊断评估

为了验证SynCTA用于临床诊断的可行性,两名高级放射医师以CTA为金标准,对SynCTA进行临床诊断,并根据诊断结果绘制混淆矩阵,具体诊断结果在2-3数据类型中体现,总体而言诊断准确率还是相当高的。

四、不足

  • 单中心数据,且模型有时会在增强区域出现错误和遗漏;
  • GAN训练过程中仍然可能会出现坍缩或不稳定的情况。
相关推荐
Solange__18 分钟前
Blender 3D模型优化:普通复制、共享网格、实例、合并怎么选?
人工智能·3d·ai·自然语言处理·编辑器·blender·材质
师夷长技以自愈21 分钟前
手搓 AI Agent 第 8 篇:从手写循环到画流程图——LangGraph 封装
人工智能·python
数据治理自习室35 分钟前
2026最新:MCP开发与使用指南
人工智能
小小疯狐狸38 分钟前
我踩过的Agent harness几个坑:上下文越跑越慢
人工智能
kaixin_啊啊1 小时前
【零基础学AI】第 30 章——对话记录与结构化输出
人工智能
aifannihao1 小时前
Rust 1.100 的 DropGuard:用 Python 实测失败回滚与吞异常
python·rust·异常处理·标准库·contextlib
泯泷2 小时前
让知识"长骨架"——RAPTOR、GraphRAG 与 OpenViking(四)
人工智能·llm
kaixin_啊啊2 小时前
【零基础学AI】第 30 章课后练习与答案
人工智能
电科_银尘2 小时前
【深度学习项目实战·33】自定义数据集:把自己的图片接入PyTorch
人工智能·pytorch·深度学习
武子康3 小时前
单卡 A6000 跑 Qwen-Drive:怎样留下可比较的第一条基线?
linux·人工智能·深度学习