医疗图像处理2023年CVPR:Label-Free Liver Tumor Segmentation-无标签肝肿瘤分割
目录
一、摘要
二、介绍
三、相关工作
四、网络框架
1.位置选择
2.纹理处理
3.形状生成
4.后处理
5.参数设计
五、实验
1.数据集:
2.评价指标:
3.实现:
4.结果:
六、结论
一、摘要
通过在CT扫描中使用合成肿瘤(synthetic tumors),人工智能模型可以准确地分割肝脏肿瘤,而无需手动注释。优势:(I)形状和质地逼真,即使是医学专业人员也会将其与真实肿瘤混淆;(II) 有效地训练人工智能模型,该模型可以与在真实肿瘤上训练的模型类似地执行肝脏肿瘤分割。还没有任何现有的工作,仅使用合成肿瘤,达到与真实肿瘤相似甚至接近的性能。未来可以显著减少逐体素注释肿瘤的手动工作(这需要数年的时间才能创建)。此外,我们的合成肿瘤可以自动生成许多小(甚至微小)合成肿瘤的例子,并有可能提高检测小肝肿瘤的成功率,这对检测癌症的早期至关重要。除了丰富训练数据,我们的合成策略还使我们能够严格评估人工智能的稳健性。
二、介绍
训练模型需要大量的标注,而合成肿瘤能帮助我们建立新数据,但是,使用合成肿瘤训练的人工智能模型的表现明显不如使用真实肿瘤训练的模型。主要是有几个重要因素:形状、强度、大小、位置和纹理。所以我们手工制作了一种在腹部CT扫描中合成肝脏肿瘤的策略: (i)在不与容器碰撞的情况下定位,(ii)具有放大高斯噪声的纹理,(iii)由扭曲的椭球体生成的形状。
通过这样生成的图片即使是医学专业人员在视觉检查中也通常将其与真实肿瘤混淆。此外,在我们的合成肿瘤上训练的模型在分割真实肝脏肿瘤时获得了59.81%的骰子相似系数(DSC),而在真实肿瘤上训练过的人工智能获得了57.63%的DSC,这表明在训练人工智能模型时,合成肿瘤有可能被用作真实肿瘤的替代品。下面两个图片就是合成肿瘤图片让人来判断,很难判断成功。
迄今为止,没有任何先前的工作达到与在真实肿瘤上训练的模型相似(甚至接近)的性能,并且这些肿瘤不限于固定的有限大小训练集。我们的主要贡献是合成肿瘤发生器,有五个优点:
1.合成策略将医学知识嵌入到可执行程序中,通过放射科医生和计算机科学家的合作来生成真实的肿瘤。
2.整个训练阶段不需要注释成本,所得模型显著优于以前的无监督异常分割方法和肿瘤合成策略
3.人工合成肿瘤训练的人工智能模型在真实肿瘤分割中可以达到与真实肿瘤训练的人工智能模型相似的性能,并且可以推广到健康肝脏的CT扫描和其他医院的扫描
4.该合成策略可以生成各种肿瘤用于模型训练,包括小、中、大尺度的肿瘤,因此具有检测小肿瘤和促进肝癌早期检测的潜力
5.该合成策略允许直接操作肿瘤位置、大小、纹理、形状和强度等参数,为在分布外场景下评估AI模型提供了全面的测试平台
三、相关工作
无监督异常分割:一般无监督异常检测设置仅使用正常样本进行训练,没有任何异常数据,并且不提供图像级注释或像素级注释。
合成肿瘤:相关工作中手工制作的“假”肿瘤看起来与真实肿瘤有很大不同。因此,对合成肿瘤进行训练的人工智能算法可能在检测测试集中的合成肿瘤方面工作得很好,但无法识别实际的肿瘤。
从合成域到实域的泛化:评估模型在真实数据上的泛化能力,论文旨在证明我们的肿瘤生成器足够强大并且我们的模型在检测真实肿瘤方面具有突出的泛化能力。
四、网络框架
为了定位肝脏,我们首先将预先训练好的nnUNet1应用于CT扫描。有了肝脏的大致位置,然后我们开发了一系列形态图像处理操作来合成肝脏内的真实肿瘤。肿瘤生成包括四个步骤:(1)位置选择,(2)纹理生成,(3)形状生成,(4)后处理。
input:上面是CT图,下面的是肝脏掩模图;salt-noise:盐噪声产生;scaling:缩放比例;interpolation:插值;ellipse:椭圆生成;elastic deformation:弹性变形;edge blurring:边界模糊。
1.位置选择
为肿瘤选择一个合适的位置,因为肝肿瘤通常不允许任何血管(如肝静脉、门静脉和下腔静脉)通过它们,为了避开血管,我们首先通过体素阈值进行血管分割。分段的血管遮罩由以下公式给出:
其中f′(x,y,z)是平滑的CT扫描,f′(x, y, z) =f(x, y, z) ⊗ g(x, y, z; σa)。 通过将具有标准差σa的高斯滤波器g(x,y,z;σa)应用于原始CT扫描f(x,y,z);⊗是标准的图像滤波算子。
平滑可以有效地消除CT重建带来的噪声。阈值T被设置为略大于肝脏的平均Hounsfield单位(HU)的值。 l(x, y, z)为肝脏掩膜(背景=0,肝脏=1);⊙是逐点乘法,b是一个超参数。
v(x, y, z)就是血管掩膜,那么人们可以检测一个选定的位置是否有使肿瘤与血管碰撞的危险。
前提就是这个图有肿瘤,在提出一个随机位置(X, Y, Z)∈{X, Y, Z | l(X, Y, Z) = 1}后,我们通过判断肿瘤半径r范围内是否有血管来进行碰撞检测。若∃v(X, Y, Z) = 1,∀X∈[X−r,X r], Y∈[Y−r, Y r], Z∈[Z−r, Z r],则存在碰撞的风险,因此需要重新选择位置。这个过程迭代,直到找到一个没有碰撞的肿瘤位置(xt, yt, zt)。有了理想的肿瘤位置,我们就可以生成肿瘤的纹理和形状。
2.纹理处理
首先生成一个三维高斯噪声,预定义的平均HU强度µt和与肝实质(不含血管的肝脏区域)相同的标准差σp, T (x, y, z) ~ N(µt, σp)。由于随机高斯噪声作为肿瘤的纹理通常过于尖锐,我们通过在x, y, z方向上使用3阶的样条插值(三次插值)将纹理放大来软化纹理,放大后的纹理表示为T ' (x, y, z)。比例因子η∈[1,∞]决定了生成的纹理感觉有多粗糙。η = 1表示高斯纹理没有缩放,导致相邻体素之间的值波动较大。η越大,晶粒度越大,这可能与真实的肿瘤织构相似。最后,考虑到层析成像质量,我们使用高斯滤波器g(x, y, z;σb)。
其中σb为标准差。经过模糊处理后,纹理与真实成像产生的纹理相似。
3.形状生成
大多数肿瘤从中心开始生长并逐渐膨胀,使小肿瘤(即r < 20mm)接近球形。这促使我们用椭球体生成类似肿瘤的形状。从均匀分布U(0.75r, 1.25r)中随机抽取椭球x、y、z方向的半轴长度,并将生成的椭球掩模以(xt, yt, zt)为中心放置。
对于生成的椭球肿瘤掩膜t(x, y, z)(背景=0,肿瘤=1),其形状与扫描体积f(x, y, z)相同,采用由σe控制的弹性变形来丰富其多样性,更接近自然生长的肿瘤。
将变形后的肿瘤蒙版记为t' (x, y, z),为了使生成的肿瘤与周围肝实质之间的过渡更加自然,我们最后通过高斯滤波器g(x, y, z;σc)与标准差σc。模糊形状t′′(x, y, z) = t′(x, y, z) ⊗ g(x, y, z; σc).
4.后处理
第一步是将肿瘤放置在扫描体f(x, y, z)和相应的肝掩膜l(x, y, z)上, 假设肿瘤掩膜阵列t”(x, y, z)和纹理阵列T”(x, y, z)具有与f(x, y, z)和l(x, y, z)相同的形状,我们可以通过方程得到新的带有肿瘤的扫描体。
新扫描体对应的肿瘤(bg=0,肝脏=1,肿瘤=2)的新掩模,可以用l ' (x, y, z) = l(x, y, z) t ' (x, y, z)进行合成。然后放置肿瘤后再用两步,模拟质量效应和胶囊外观,让图更真。
①质量效应是指不断扩大的肿瘤将周围组织推开,本文选择局部缩放翘曲来实现质量效应。 局部缩放翘曲:它重新映射像素在一个圆更接近圆周。对于距离圆中心为γ的像素,重新映射的像素距离γ′为
γmax为膨胀圆面积的半径,I∈[0,100]为控制膨胀强度的超参数, 较大的I导致更强的翘曲。翘曲后分别命名为f”(x, y, z)和l”(x, y, z),后一个(肝脏/肿瘤分割标签)已经准备好进行后续训练。
②胶囊外观,通过亮化肿瘤边缘来模拟包膜的外观。 边缘面积可由:
其中lb和ub分别为从肿瘤掩膜中滤波边缘的下界和上界。然后我们增加模糊边缘区域的HU强度来模拟胶囊。
d为预先定义的肿瘤与其包膜之间的HU强度差。新的扫描体积f ''' (x, y, z)现在可以用于训练或图灵测试,这就是最后合成肿瘤图。
5.参数设计
五、实验
1.数据集:
肝脏肿瘤的详细逐体素注释在LiTS中有提供。肝脏肿瘤体积为38mm3 ~ 349 cm3,肿瘤半径为[2,44]mm。人工智能模型(例如U-Net)在101个带有肝脏和肝脏肿瘤注释的CT扫描上进行训练,并且从其他数据集中收集了116个健康肝脏CT扫描数据集。然后,我们在这些扫描中生成肿瘤,产生巨大的图像标签对合成肿瘤,用于训练人工智能模型,生成了五个级别的肿瘤大小用于模型训练。
2.评价指标:
采用DSC (Dice similarity coefficient)和NSD (Normalized Surface Dice, NSD公差为2mm)评价肿瘤分割效果;通过敏感性和特异性评价肿瘤检测性能。对于上述所有指标,计算95% ci,并使用小于0.05的p值截断值来定义统计显著性。
3.实现:
代码是基于MONAI2框架在U-Net和Swin UNETR上实现的,输入图像以[-21,189]的窗口范围进行裁剪,然后归一化使其均值为零,单位标准差为零。在训练过程中,从三维图像体中裁剪出96 × 96 × 96的随机斑块。所有模型训练4000次,基本学习率为0.0002。批处理大小为每个GPU两个。我们采用线性预热策略和余弦退火学习率计划。对于推理,我们通过将重叠面积比设置为0.75来使用滑动窗口策略。
4.结果:
使用来自胰腺CT、CHAOS和BTCV的116个CT扫描和我们的无标签肿瘤生成器,我们在LiTS基准上优于所有这些方法,而以前的方法使用101个CT扫描和来自LiTS的注释。
①使用视觉图灵测试进行临床验证:20张真30张假专业人员来看,就是上面的图人员看的结果
②与最先进方法的比较:只关注肝脏区域进行训练和测试,之前所有的无监督方法在分割真实肝脏肿瘤时都表现出次优的性能。
③推广到不同的模型和数据:使用Swin UNETR3验证了合成肿瘤的普遍性,从图4可以看出,在真实肿瘤上训练的模型性能略好于在合成肿瘤上训练的模型,但由于p值大于0.05,两者的结果没有统计学差异。还使用来自其他数据集(即msd -胰腺,msd -脾脏,msd -结肠)的数据评估了它们的领域泛化能力,其鲁棒性优于仅使用来自lit的真实数据进行训练的模型,并且同时在三个外部数据集上获得更高的特异性,因为它减少了接受侵入性诊断程序的患者数量和相关费用。
④小肿瘤检测的潜力:由于大多数患者在早期阶段仍然无症状,因此在实际数据集中很少有这样的病例。因此,先进的肿瘤发生器可以生成包含各种肿瘤大小的合成数据,用于训练和测试模型,解决真实数据中存在的大小不平衡问题,下图的下面板为按肿瘤大小分层的定量肿瘤检测性能,上面板为两例小肿瘤进行定性比较。大量合成小肿瘤的产生可以提高模型对真实小肿瘤的检测效率,从而对癌症的早期发现起到至关重要的作用。
⑤可控鲁棒性基准:医学影像学的标准评价仅限于确定人工智能在检测肿瘤方面的有效性。这是因为现有测试数据集中标注的肿瘤数量不够大,不足以代表真实器官中发生的肿瘤,特别是只包含有限数量的非常小的肿瘤。而合成肿瘤可以作为一个可访问的和全面的来源,用于严格评估人工智能在各种不同大小和位置的器官中检测肿瘤的性能,帮助微调人工智能算法。
⑥形状生成的消融研究:为了显示肿瘤生成中每个步骤的重要性,我们设计了聚焦于形状生成和小肿瘤合成的消融研究,从全肿瘤分割和小肿瘤检测两个方面对不同综合策略不完全设置训练的模型进行了评价。
六、结论
本文研究了一种有效的合成肝脏肿瘤的策略。在零人工注释的情况下,我们验证了在合成肿瘤上训练的人工智能模型的表现与在LiTS数据集中(花了几个月的时间创建)训练的真实肿瘤相似。这揭示了利用合成肿瘤在更大规模的健康CT数据集(比肝脏肿瘤CT扫描更容易获得)上训练人工智能模型的巨大潜力。此外,合成肿瘤使我们能够评估人工智能在CT扫描中检测不同位置、大小、形状、强度、纹理和分期的肿瘤的能力。在未来,我们将考虑生成对抗网络(GANs),扩散模型,并可能使用3D几何模型如NeRF进行改进,以生成更好的肿瘤纹理。
相关文章:

医疗图像处理2023年CVPR:Label-Free Liver Tumor Segmentation-无标签肝肿瘤分割
目录 一、摘要 二、介绍 三、相关工作 四、网络框架 1.位置选择 2.纹理处理 3.形状生成 4.后处理 5.参数设计 五、实验 1.数据集: 2.评价指标: 3.实现: 4.结果: 六、结论 一、摘要 通过在CT扫描中使用合成肿瘤&am…...

远程桌面如何连接?
远程桌面连接是一种可以在不同地点之间共享电脑桌面的技术。通过远程桌面连接,用户可以在远程的计算机上操作另一台计算机,就像是直接坐在前者的前面一样。这种技术可以帮助用户解决在不同地点之间共享数据、协同办公、设备管理等问题。 【天联】的使用场…...

Centos 停服倒计时!你的操作系统何去何从?
在计算机技术的不断演进中,操作系统扮演着至关重要的角色。然而,对于许多企业和个人用户来说,CentOS的突然停服消息带来了一场不小的冲击。作为一款备受欢迎的企业级Linux发行版,CentOS的停服意味着用户需要重新评估自己的操作系统…...

ITMS-91053: Missing API declaration
1. 添加PrivacyInfo.xcprivacy File → New → File → App Privacy 2. 格式 3. 已知对应关系 NSPrivacyAccessedAPICategoryFileTimestamp 3B52.1: Files provided to app by user, per documentation:File Timestamp NSPrivacyAccessedAPICategoryDiskSpace …...

iOS 裁剪图片
参考资源 YSHYClipImageDemo YQImageTool 裁剪图片 完整demo:https://github.com/liquangang/cutImageFinish...

算法训练营第60天|LeetCode 647.回文子串 516.最长回文子序列
LeetCode 647.回文子串 题目链接: LeetCode 647.回文子串 代码: class Solution { public:int countSubstrings(string s) {int size s.size();int result 0;vector<vector<int>>dp(size,vector<int>(size,false));for(int i si…...

读天才与算法:人脑与AI的数学思维笔记25_涌现理论
1. 人工智能新闻 1.1. 人工智能新闻报道算法的核心是如何将未经处理的原始数据转换成新闻报道 1.2. 很少有记者为美联社决定使用机器来帮助报道这些新闻持反对意见 1.2.1. 像“Wordsmith”这样的算法,具有自动化的洞察力、科学的叙事能力,现在正被应用…...

C/C++ IPV6服务器socket绑定在::,接受ipv4链接(双栈)
先决条件: 1、 创建IPV6套接字 2、打开套接字可重用 3、禁用仅限 IPV6 BOOL bEnable FALSE; if (setsockopt(listenfd_, IPPROTO_IPV6, IPV6_V6ONLY, reinterpret_cast<char*>(&bEnable), sizeof(bEnable)) < 0) …...

【Win10设备管理器中无端口选项】
计算机疑难杂症分享002 Win10设备管理器中无端口选项1、问题现象2、问题原因3、问题解决3.1、驱动精灵(亲测的此方法)3.2、添加过时硬件3.3、官方的方法 Win10设备管理器中无端口选项 1、问题现象 当我调试串口通信时,发现打开设备管理器没有端口,打开…...

「YashanDB迁移体验官」Oracle向YashanDB迁移的丝滑体验
📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…...

实现用户个人随机salt生成jwt及鉴别用户权限的实现思路
实现用户个人随机salt生成jwt及鉴别用户权限的实现 盐值是什么? 盐值(salt)是在密码学中用于增加密码安全性的一种随机值。它通常是一个随机生成的字符串,与用户密码结合在一起,然后再进行加密处理。盐值的作用是增加…...

AI工具的热门与卓越:揭示AI技术的实际应用和影响
文章目录 每日一句正能量前言常用AI工具创新AI应用个人体验分享后记 每日一句正能量 我们在我们的劳动过程中学习思考,劳动的结果,我们认识了世界的奥妙,于是我们就真正来改变生活了。 前言 随着人工智能(AI)技术的快…...

VUE el-button指定图片背景
似乎只能通过css指定? 代码1 <el-button circleclass"stream0"click"switchToStream(0)" > </el-button> 代码2 <style>.stream0 {background-size: cover;background-image: url(~/assets/stream.png); } 如果要动态变…...

【ARM 嵌入式 C 入门及渐进 1.2 -- 是否为 n 字节对齐】
文章目录 是否为 n 字节对齐 是否为 n 字节对齐 在C语言中,你可以定义一个宏来检查一个给定地址是否是n字节对齐的。这里的n应该是2的幂(例如,2、4、8、16等)。要做到这一点,可以利用位操作的特性。具体地,…...

适配qnx和linux平台的线程管理类封装
概述 封装代码仓库: https://gitee.com/liudegui/my_thread 尝试封装一个基于C11的多线程控制与调度类,适配QNX和Linux平台,且代码符合Misra标准。它提供了以下主要功能: 线程的创建与销毁管理。线程的优先级调度。线程的CPU亲…...

【信息系统项目管理师】复习~第十五章
15.项目风险管理 每个项目都存在两个层面上的风险:①每个项目都有会影响项目达成目标的单个风险;②由单个风险和不确定性的其他来源联合导致的整体项目风险。项目风险会对项目目标产生负面或正面的影响,也就是风险与机会。项目风险管理旨在利…...

ARM单片机实现流水灯(GD32)
根据上图可知使用的引脚分别是PA8,PE6,PF6流水灯功能的实现要分别初始化这几个引脚 流水灯实现 编写流水灯代码 LED.C #include "gd32f30x.h" // Device header #include "Delay.h" // 初始化LED灯 void LED_Init(void){// 使能RCU时钟…...

操作系统基础之磁盘
概述 基本概念 磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存在扇区中。 磁头首先寻找到对应磁道,然后等到磁盘进行周期旋转到指定的扇区,才…...

【Unity Shader入门精要 第6章】基础光照(一)
1. 什么是光照模型 光照原理 在真实世界中,我们能够看到物体,是由于眼睛接收到了来自观察目标的光。这里面包括两种情况:一部分是观察目标本身发出的光(自发光)直接进入我们的眼睛,另一部分是其他物体&am…...

JavaEE概述 + Maven
文章目录 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 仓库 坐标2.2 Maven之项目构建2.3 Maven之依赖管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE: Java SE:指Java标准版,适用于各行各业,主要是Java…...

python把png转成jpg
在Python中,你可以使用PIL(Python Imaging Library,也称为Pillow)库来读取PNG图片并将其转换为JPG格式。下面是一个简单的示例代码: from PIL import Image# 打开PNG图片 png_image Image.open(input.png)# 保存为JP…...

信息系统架构基本概念及发展_2.信息系统架构的定义
1.几种架构的定义 信息系统架构仍在不断发展中,还没有形成一个公认的定义,这里举出几个定义。 定义1:软件或计算机系统的信息系统架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见…...

ctfshow SSRF 351-358
做题前,需要先学习关于ssrf漏洞的相关知识 小注意: 当使用 file_get_contents() 函数访问远程 URL 时,它会尝试获取该 URL 指向的资源的内容,并将内容以字符串的形式返回。 如果 b.php 文件是一个 PHP 文件,它包含的内容取决于该 PHP 文件…...

优化学习方法,事半功倍
学习,是人一生中必不可少的过程。在学习的道路上,我们会遇到各种各样的挑战和困难,但只要我们能够发现并优化适合自己的学习方法,就能事半功倍,取得更好的成绩。 首先,要充分了解自己的学习方式和习惯。每个…...

Spring STOMP-开启STOMP
通过Spring框架的spring-messaging和spring-websocket模块,提供了对WebSocket上STOMP的支持。一但你添加了这些依赖项,你就可以像下面这个示例一样,通过WebSocket公开一个STOMP端点: import org.springframework.web.socket.conf…...

Python 开发 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)
什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库,使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”(模型-模板-视图)的设计模式,将应用程序的不同组件分离开来&#x…...

《Python编程从入门到实践》day25
# 昨日知识点回顾 如何创建多行外星人 碰撞结束游戏 创建game_stats.py跟踪统计信息 # 今日知识点学习 第14章 记分 14.1 添加Play按钮 14.1.1 创建Button类 import pygame.font# button.py class Button:def __init__(self, ai_game, msg):"""初始化按钮…...

Unity 性能优化之光照优化(七)
提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、测试目的一、实时光源是什么?二、开始测试1.场景中只有一个光照的数值情况2.添加4个点光源后4.结果 总结 前言 实时光源数量越多&#x…...

C语言 | Leetcode C语言题解之第84题柱状图中最大的矩形
题目: 题解: int largestRectangleArea(int* heights, int heightsSize) {int st[heightsSize];int p[2];p[0]-1,p[1]heightsSize;int size0,result0;st[size]0;for(int i1;i<heightsSize;i){ while(size!0&&heights[i]<heights[st[size-1…...

AI办公自动化-用kimi批量重命名Word文档
文件夹里面有很多个word文档,标题里面都含有零代码编程,现在想将其替换为AI办公自动化。 在kimichat中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 打开文件夹&am…...