学习笔记:医学图像配准简介—附voxelmorph模型

VoxelMorph官方代码:GitHub - voxelmorph/voxelmorph: Unsupervised Learning for Image Registrationb

官方代码讲解:​​​​​​​本文参考了博客:基于深度学习的单模医学图像配准综述(附VoxelMorph配准实例)_深度学习图像配准_棉花糖灬的博客-CSDN博客VoxelMorph Tutorial.ipynb - Colaboratory (google.com)官方代码讲解:​​​​​​​本文参考了博客:基于深度学习的单模医学图像配准综述(附VoxelMorph配准实例)_深度学习图像配准_棉花糖灬的博客-CSDN博客

一、医学图像配准简介

配准的定义就不提了,这里主要说一下配准可以分为线性配准和非线性配准。线性配准包括刚体配准、仿射配准等,其中刚体配准是指只通过旋转和平移配准,而仿射配准则等于刚体配准+缩放。非线性配准,也就是论文里经常见到的可变形配准deformable registration,通常是说将移动图像的像素做位移,使得变形后的图像与目标图像的“差距”尽量小,当然差距这个词并不是很专业,下面会讲讲配准常见的损失函数。

一般处理的医学图像,像MRI、CT等等,都是三维图像,也就是说有长宽高三个张亮,长宽是单张切片的大小,高(深度)是说切片的多少,反应了人体内部不同深度的解剖结构。一般的数据集都挺大的,155*240*240这种?所以图像是比较大的,显存放不下怎么办?那当然是买4090啦~

废话不多说,可以采用nnUNet中的方法,去除背景保留前景,以减小图像大小。或者每次取3D图像的一个2D切片进行配准(这样就变成2维配准了)。或者采用基于patch的方法,将图像裁剪成相同大小的patch,每次对一小patch进行处理,这样减少了显存的占用,但在将输出patch拼接成完整图像的时候拼凑感会十分明显,大大增多了重叠区域。

传统的配准方法使用几何方法,基于区域或者基于特征。对大脑这类存在特征点、线的一般基于特征,而像大肠展开图这种没有什么特征的就是基于区域。缺点是对每一幅图都需要进行迭代,计算成本高。

深度学习的好处在于参数是可以共享的,后期推理的速度极快,一般用cpu计算即可。缺点是前期训练时间长,需要大量数据,且稳定性不强。

深度学习的方式又分为有监督的和无监督的。一般有监督的监督数据来自于专业人员通过传统方法先对移动图像进行配准,以获得的形变场作为ground truth。这种方法的缺点很明显,一是带标签的数据很难获得,二是这种方法的理论上限是标注的时候传统方法的上限。

无监督的方法优化图像间的相似度、平滑度、重叠度等损失。一般采用unet式的编码-解码结构,输出变形场。接着根据变形场得到一个采样网格,使用空间转换网络(Spatial transformer network,STN)利用该采样网格对浮动图像进行重采样,得到配准后的图像。

所谓的空间转换网络,可以看这篇博客:

【论文笔记】Spatial Transformer Networks(STN)-用于医学图像配准的空间变化网络_棉花糖灬的博客-CSDN博客

还可以分为单模态配准和多模态配准,目前来看两个方向都有很多人在做,总体的创新点是将视觉领域的新方法,新模型应用到配准这个领域。

图像配准的标准范式

二、常见损失函数(持续更新)

损失一般有两种,一个是相似性损失,一个是正则项损失。

这里可以看知乎:【开源计划】图像配准中常用损失函数的pytorch实现 - 知乎 (zhihu.com),虽然是20年的文章了,但其实损失函数整体的逻辑都大差不差。

2.1 相似性损失

常见的损失函数有均方差(mean squared voxel difference)、交叉互相关(cross-correlation)和互信息(mutual information)。其中,前两个通常用于单模态的图像,而第一个的鲁棒性相比于交叉互相关更差一些,比较容易受图像灰度分布与对比度等的影响。互信息通常用于多模态的图像,虽然在单模态图像的鲁棒性更好,但用的还是比较少。

均方差指两个图像之间的平均灰度值差的平方;互相关(Cross-Correlation)是一种测量两个信号之间相似性的方法;互信息(Mutual Information,MI)是一种测量两个随机变量之间相关性的方法。它基于信息论中熵(entropy)和条件熵(conditional entropy)的概念。

读论文的时候还看到了一个gan损失(对抗生成的那个,可见博客多模态医学图像配准——cocycleReg论文学习(2022

2.2 正则项损失

在配准过程中,为了最大化图像的相似性测度,往往会产生不连续的变形场,而理想的形变场应该是微分同胚的,从而保证拓扑性质不被改变。所以还需要引入正则化惩罚变形场的连续性和重叠程度。

常见的正则项计算变形场梯度的L2范数的平方,叫做扩散正则性:

 需要注意的是:梯度的计算是需要函数可导的,但对图像来说,三个维度(W/H/D)都是不连续的,因此需要使用相邻体素之间的差异来近似空间梯度,也就是上图中提到的。

还有一种方法是弯曲能量,也叫折叠惩罚(bending penalty)的正则化方法,实际上就是计算变形场的二阶梯度。

以及雅可比行列式中负数的个数,这里有一个17年提出的:抗折叠损失

  它通过保持雅可比行列式为正来抑制折叠,以及 通过偏置优化以保持相同的体积,防止收缩和膨胀这有利于配准具有显着空间位移的医学图像(譬如子宫肌瘤消融期间膀胱体积的变化)。

2.3 循环一致性

除了加入正则项,还有一种方法叫循环一致性,它的想法是:不改变backbone网络的结构,而是通过增加一个从已经预测的图像中恢复原始图像的任务来实现正则化。具体内容参考博客【论文笔记】用循环一致性避免形变场重叠的医学图像配准网络_棉花糖灬的博客-CSDN博客

一代宗师__循环一致性生成对抗网络(CycleGAN)(八)_循环一致性损失_Y.Z.Y.的博客-CSDN博客

三、VoxelMorph

3.1网络结构

 这里的形变场是通过卷积神经网络g产生的。损失在图中都有。论文中的卷积网络是Unet:

蓝色区域是可以添加的功能,如果对固定图和移动图都有分割标签的话,可以将形变场应用在各个分割,并添加相应的损失。获得更好的配准结果。我看到有博客中写道这个是有监督训练,我觉得可能不是?我的理解是,对配准问题来说,有监督的训练,GT应该是人工做出来的形变场。这个分割标签是附加项。这一段是个人理解,如果有大佬看到指正。读到一篇论文,来修改下:

在论文arxiv.org/ftp/arxiv/papers/2204/2204.11341.pdf中提到:有一些研究人员将分割的信息作为配准的一部分。这种方法是“弱监督的“。

如果有像我一样的萌新,非常建议大家去看看我在本文提到的论文。注意到:几乎目前所有的配准论文都会把voxelmorph作为基线。

具体来说:模型的输入是将f、m两张图像concat后形成的2通道3D图像,the input is of size 160×192×224×2 。编码器、解码器均使用大小为3的卷积核,步长2。每次卷积后使用参数为 0.2 的 LeakyReLU 层。在编码器中,我们使用跨步卷积来将每层的空间维度减半。因此,编码器的连续层在输入的较粗表示上操作,类似于传统图像配准工作中使用的图像金字塔。

在解码阶段,我们在上采样、卷积和跳过连接之间交替,跳跃连接将在编码阶段学习的特征直接传播到生成配准的层。最小层的卷积核的感受野应该至少与f和m中对应体素之间的最大预期位移一样大。(这句话很重要,也就是说最下面一层卷积核能看到的范围应该大于等于最大的位移,大家感兴趣可以算一下每层卷积核的感受野)。

损失函数重点提一句辅助的解剖结构:​​​​​​​

 注意到:我们设计sf 和sm 要成为映像卷K 通道,其中每个通道都是指定特定结构的空间域的二进制掩码。也就是说,将每个器官单独表示成一个二进制掩码(0或1)体积。最后计算损失。

论文链接:体素形态:可变形医学图像配准的学习框架 |IEEE 期刊和杂志 |IEEE Xplore

  • 7
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值