CTA-GAN:基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 CT到增强CT的合成技术

Generative Adversarial Network–based Noncontrast CT Angiography for Aorta and Carotid Arteries

  • 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影
    • 背景
    • 贡献
    • 实验
    • 方法
    • 损失函数
    • Thinking

基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影

https://github.com/ying-fu/CTA-GAN
Radiology 2023

背景

碘造影剂(ICAs)广泛用于CT血管造影术(CTA),可能会对人体产生不良影响,而且使用耗时且成本高昂。研究用平扫CT合成造影剂CT并评价生成的效果很有意义。CTA——Syn-CTA

  • 难点:传统的深度学习模型不能充分解决成对未对准图像的映射翻译问题。此外,先前的医学图像翻译研究集中在单个解剖位置,而临床诊断经常在多个位置进行(14,15)。

贡献

  • 本文:开发一种基于生成对抗性网络(GAN)的CTA成像模型(16-21),以合成独立于ICAs的高质量CTA样图像,并评估使用这些合成CTA(Syn-CTA)图像辅助临床诊断的可行性。使用内部和外部测试数据从定量指标视觉质量和血管疾病诊断准确性方面评估Syn-CTA图像

实验

  • 数据集:收集了17-22年颈部和腹部的成对的CT和CTA图像,1749名患者,1137训练,400验证,212测试,外部验证42名。
  • 数据处理:每个NCCT和CTA扫描被重采样到0.67x0.67x1.25的体积中,由75-490各切片组成,512x512分辨率,CTA造影剂浓度370mg/ml,注射速率4.5ml/s,将-2000-2095的像素值标准化到-1-1,排除手动检查后图像质量较差的扫描。
  • Patient Characteristics(患者特征),在1833名符合条件的患者中,84名图像质量较差的患者被排除在外,1749名患者(中位年龄,60岁[IQR,50-68岁];1057名[60.4%]男性患者和692名[39.6%]女性患者)被纳入分析。1137名患者的CT扫描用于模型训练;来自400名患者的扫描用于模型开发验证;212名患者的扫描用于模型测试(图1)。外部独立验证集包括42名患者(中位年龄67岁[IQR,59–74岁];37名[88.1%]男性患者和5名[11.9%]女性患者)。
  • 评估方法:Quantitative Evaluation(定量评价),正态平均绝对误差(NMAE)、峰值信噪比(PSNR)、结构相似性指数测量(SSIM
  • Visual Quality Evaluation(视觉质量评估),具有10年经验的专家,独立评估了CTA和Syn-CTA图像的图像质量。任何分歧都通过协商一致的方式解决。放射科医生使用主观三点量表(视觉质量评分)(25,26)评估Syn-CTA和真实CTA扫描的图像质量1、质量差;2、质量合格;3、质量好;具体而言,图像质量评估包括血管壁清晰度、管腔边缘清晰度和管腔壁对比度(附录S1,图S1)。
  • Diagnostic Evaluation(诊断评估),对每次扫描的Syn-CTA图像和真实CTA图像进行匿名化,然后将其随机并按序列号呈现给进行独立阅读视觉质量评估的同两名放射科医生。基于每次扫描的血管诊断(动脉瘤、夹层、动脉粥样硬化或健康动脉)由两名放射科医生确定。通过一致阅读解决任何诊断分歧(附录S1)。从真实的CTA图像中读取的血管诊断被视为基本事实。
    在这里插入图片描述
    人工评价:Syn-CTA测试集中的高质量分数(分数=3)的比率均大于90%,高质量分数的总体比率为95%
    在这里插入图片描述
    在这里插入图片描述

方法

在这里插入图片描述
在这里插入图片描述
论文中对方法描述不多,以下是从源代码中简化的训练步骤伪代码

# real_A2是CT,real_B2是Syn_CTA,
# NetG_A2B是生成器,R_A是校准器,spatial_transform是进行采样的一个配准场不是模型,
# netD_B是判别器,target_real = Variable(Tensor(1,1).fill_(1.0), requires_grad=False),
# target_fake = Variable(Tensor(1,1).fill_(0.0), requires_grad=False

optimizer_R_A.zero_grad()
optimizer_G.zero_grad()								# 只更新生成器和校准器
fake_B = netG_A2B(real_A2)  						# CT生成的Syn_CTA,fake_B
Trans = R_A(fake_B, real_B2)						# fake_B和real_B校准得到Trans
SysRegist_A2B = spatial_transform(fake_B, Trans)	# fake_B和Trans,配准得到,SysRegist_A2B
pred_fake0 = netD_B(fake_B)							# fake_B输入到判别器得到pred_fake0

SM_loss = smoothing_loss(Trans)
SR_loss = L1_loss(SysRegist_A2B, real_B2)			# 配准后的生成图和real_B要长得像
adv_loss = MSE_loss(pred_fake0, target_real)  		# 对抗,fake_B的pred_fake0和1的MSEloss

loss = SM_loss + SR_loss + adv_loss					# 总损失
loss.backward()										# 梯度回传
optimizer_R_A.step()								# 更新R_A和G
optimizer_G.step()

optimizer_D_B.zero_grad()							# 只更新判别器
with torch.no_grad():
	fake_B = netG_A2B(real_A2)  					# 生成器不更新权重
pred_fake0 = netD_B(fake_B)							# 再算一次pred_fake0
real_BB2 = copy.deepcopy(real_B2)			
pred_real = netD_B(real_BB2)						# 判别real_B得到pred_real
loss_D_B = MSE_loss(pred_fake0, target_fake) 		# 对抗,pred_fake0和0,pred_real和1
			+ MSE_loss(pred_real, target_real)	
loss_D_B.backward()
optimizer_D_B.step()								# 更新判别器

损失函数

配准后的图像和源图像的L1 loss,对抗loss

Thinking

输入是未配准的成对CT-SynCTA影像,先用CT影像生成SynCTA影像,再对SynCTA影像进行配准,再通过判别器,判别生成的影像和原始SynCTA影像。最终合成配准了的SynCTA影像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/188352.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4-20mA高精度采集方案

下载链接!https://mp.weixin.qq.com/s?__bizMzU2OTc4ODA4OA&mid2247557466&idx1&snb5a323285c2629a41d2a896764db27eb&chksmfcfaf28dcb8d7b9bb6211030d9bda53db63ab51f765b4165d9fa630e54301f0406efdabff0fb&token976581939&langzh_CN#rd …

kafka精准一次、事务、幂等性

Kafka事务 消息中间件的消息保障的3个级别 At most once 至多一次。数据丢失。At last once 至少一次。数据冗余Exactly one 精准一次。好!!! 如何区分只要盯准提交位移、消费消息这两个动作的时机就可以了。 当:先消费消息、…

计算机中由于找不到vcruntime140.dll无法继续执行代码无法打开软件怎么解决分享

关于如何解决vcruntime140.dll无法继续执行代码的6个教程。在这个科技日新月异的时代,电脑已经是我们日常和工作中必不可少的电子产品,然后我们在使用过程中经常会遇到不一样的问题,比如vcruntime140.dll文件丢失,那么vcruntime14…

selenium的基础语法

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️山水速疾来去易,襄樊镇固永难开 ☁️定位页面的元素 参数:抽象类By里…

实验题【网关设置+VRRP+OSPF】(H3C模拟器)

嘿,这里是目录! ⭐ H3C模拟器资源链接1. 实验示意图2. 要求和考核目标3. 当前配置3.1 PC1、PC2、PC3、PC4和PC5配置3.2 SW配置3.2.1 SW2配置3.2.2 SW3配置3.2.3 SW4配置3.2.4 SW1配置 3.2. R配置3.2.1 R1配置3.2.2 R2配置 ⭐ H3C模拟器资源链接 H3C网络…

Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难,不想问题重重,不想后人重蹈覆辙,也记录下点点滴滴。 目前网上存在的cesium代码版本主要有两个分支: 原始网站【不能生成layer文件,且经久不更新,使用gdal…

计算机应用基础_错题集_PPT演示文稿_操作题_计算机多媒体技术操作题_文字处理操作题---网络教育统考工作笔记007

PPT演示文稿操作题 提示:PPT部分操作题 将第2~第4张幻灯片背景效果设为渐变预置的“雨后初晴”效果(2)设置幻灯片放映方式

【小沐学写作】免费在线AI辅助写作汇总

文章目录 1、简介2、文涌Effidit(腾讯)2.1 工具简介2.2 工具功能2.3 工具体验 3、PPT小助手(officeplus)3.1 工具简介3.2 使用费用3.3 工具体验 4、DeepL Write(仅英文)4.1 工具简介4.2 工具体验 5、天工AI…

【负载均衡】这些内容你需要知道下

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…

Golang并发模型:Goroutine 与 Channel 初探

文章目录 goroutinegoexit() channel缓冲closerangeselect goroutine goroutine 是 Go 语言中的一种轻量级线程(lightweight thread),由 Go 运行时环境管理。与传统的线程相比,goroutine 的创建和销毁的开销很小,可以…

Python基于jieba+wordcloud实现文本分词、词频统计、条形图绘制及不同主题的词云图绘制

目录 序言:第三方库及所需材料函数模块介绍分词词频统计条形图绘制词云绘制主函数 效果预览全部代码 序言:第三方库及所需材料 编程语言:Python3.9。 编程环境:Anaconda3,Spyder5。 使用到的主要第三方库:…

【Leetcode】【实现循环队列】【数据结构】

代码实现: typedef struct {int front;int back;int k;int* a;} MyCircularQueue;bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj->frontobj->back; }bool myCircularQueueIsFull(MyCircularQueue* obj) {return (obj->back1)%(obj->…

位图和布隆过滤器

目录 一. 位图 1.题目: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中? 2.解析题目: 3.位图 4.代码以及测试 5.其他题目 二.布隆过滤器 1.介绍 2.实现 …

Vue服务端渲染——同构渲染

Vue.js 可以用于构建客户端应用程序,组件的代码在浏览器中运行,并输出 DOM 元素。同时,Vue.js 还可以在 Node.js 环境中运行,它可以将同样的组件渲染为字符串并发送给浏览器。这实际上描述了 Vue.js 的两种渲染方式,即…

【云原生】什么是 Kubernetes ?

什么是 Kubernetes ? Kubernetes 是一个开源容器编排平台,管理着一系列的 主机 或者 服务器,它们被称作是 节点(Node)。 每一个节点运行了若干个相互独立的 Pod。 Pod 是 Kubernetes 中可以部署的 最小执行单元&#x…

电脑技巧:U盘运用小技巧,提升U盘运用寿命

目录 1、注意清洁,防止污染 2、别随意插拔 3、文件多时分段写入 4、U盘传输数据中切记拔掉U盘 5、建议不要长期将U盘插在电脑上 6、杜绝别频繁将U盘格式化 7、U盘中毒怎么办 U盘是大家日常办公经常用得到的便携式文件储存工具,因为其小巧便携、方…

5.3每日一题(不确定正负号的级数敛散性:和一个正项级数比较判定)

比较判别法和比较判别法的极限形式是对正项级数而言的&#xff0c;若一个级数和p级数比较&#xff0c;结果>0&#xff0c;则同敛散&#xff1b;若结果<0&#xff0c;则结果乘以-1 结果又同敛散了&#xff1b;所以只要比值不等于0&#xff0c;则同敛散&#xff1b; 所以当…

鸿蒙(HarmonyOS)应用开发——生命周期、渲染控制、状态管理装饰器

生命周期 任何程序都是有一定的生命周期的。生命周期是记录从产生到销毁的过程&#xff1b;如果熟悉前端vue.js的话&#xff0c;就可以很好的理解生命周期。 自定义组件生命周期 ArkTS中&#xff0c;自定义组件提供了两个生命周期函数&#xff1a;aboutToAppear() 和aboutTo…

代码随想录算法训练营第四十七天|198. 打家劫舍、213. 打家劫舍II、337. 打家劫舍III

LeetCode 198. 打家劫舍 题目链接&#xff1a;198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 第一次打家劫舍&#xff0c;来个简单一些的&#xff0c;无非就是偷了当前这家偷不了下一家&#xff0c;因此dp[n]代表&#xff0c;偷前n家的时候所能偷到的最高金额&#x…

记一次RocketMQ线上broker内存持续升高问题排查

RocketMQ 版本 5.1.0 jdk版本 1.8 JVM启动参数 -Xms46g -Xmx46g -XX:MetaspaceSize1259m -XX:MaxMetaspaceSize2517m -XX:UseG1GC -XX:G1HeapRegionSize16m -XX:G1ReservePercent25 -XX:InitiatingHeapOccupancyPercent30 -XX:SoftRefLRUPolicyMSPerMB0 -verbose:gc -Xlog…