前言
按照开源计划的预告,我们首先从基于深度学习的图像配准任务中常用的损失函数的代码实现开始。从我最开始的那一篇博客,即基于深度学习的医学图像配准综述,可以看出,目前基于无监督学习的图像非刚性配准模型成为了一个比较流行的研究方向。这是因为基于监督学习的方法过分依赖传统方法或者模拟变形的方法来提供监督信息,这样既吃力又不讨好。以我的探索经验来讲,以传统配准方法产生的变形场作为监督信息,对网络进行训练,很容易造成过拟合问题。因此,我综合文献综述的结论与探索的经验(有兴趣的话,我可以总结一下我的探索经历以及经验教训),最终选择了基于无监督学习的配准模型,则本文主要介绍这种模型框架下常用的损失函数。实际上,监督学习的损失函数也比较简单,只需要使用深度学习框架(如TensorFlow、PyTorch)提供的函数计算误差即可,本文使用PyTorch进行实现。
损失函数
基于无监督学习的图像非刚性配准模型的损失函数通常是由两部分组成,一个是参考图像与变形后的浮动图像的相似性测度,一个是网络预测变形场的空间正则化。以比较有名的VoxelMorph为例,它的GitHub仓库可以点击此链接。按照他最早的发表在CVPR上的论文,损失函数如下:
其中第一项就是相似性测度,后面一项就是空间正则化项,用以约束变形场的空间平滑性。下面我们分别对其进行介绍。
相似性测度
常用于测量图像的相似性测度有三个,一个是图像灰度的均方差(mean squared voxel differece),一个是交叉互相关(cross-correlation),一个是互信息(mutual information)。前两个通常用于单模态的图像,而第一个的鲁棒性相比于交叉互相关更差一些,比较容易受图像灰度分布与对比度等的影响。互信息通常用于多模态的图像,在单模态图像的鲁棒性更好,但是到目前为止还没有发现它被用于深度学习网络训练的损失函数中,我的猜想是互信息的计算是基于统计的,不方便进行梯度计算,与反向传播原则相违背。(该看法亟待进一步的考证。好久没看Voxelmorph的开源代码,现在已经有互信息的实现了,有时间可以研究一下)
因此,主要是]使用交叉互相关作为图像配准的损失函数。交叉互相关的公式为:(摘自VoxelMorph)
他们的代码实现-TensorFlow版请查看链接中的NCC。需要指出的是,在他们的实现版本当中,他们对于三维图像使用了