这次带来的是医学扩散模型 ,diffusion model的热浪也涌入了医学图像,这是今年MICCAI看到的几篇有意思的文章。

医学~扩散模型_建模

 https://github.com/torchDDM/DDM

任务介绍:给定起始时间心脏MR图像和终止时间图像,设计一个模型,能连续的给出中间时间点的图像。

医学~扩散模型_建模_02

思路简介:用DDMP生成latent code (其实就是噪声),另一个网络基于latent code生成形变场,把source图像形变到target图像

医学~扩散模型_输入带_03

inference阶段:

医学~扩散模型_输入带_04

随笔:

刚看这篇文章的时候挺困惑的,在inference阶段跟DDPM完全不一样,没有输入噪声也没做reverse process,DDPM在这个框架里只用来生成latent code,为啥不用更简单的VAE呢?可能这样设计的原因是DDPM的输出跟原图大小是一样的,方便生成形变场。作者说从有这个idea,到文章写完,她只画了两个月时间,圈里真是好卷

医学~扩散模型_输入带_05

任务介绍:输入有病灶的图像,设计模型输出其对应的没有病灶的图像,两者相减即可生成异常区域的map

医学~扩散模型_人工智能_06

思路简介:在包含健康和带病变的图像上训练一个DDPM,同时训练一个分类器来区分带噪声的健康和病变图像(即DDPM前向过程中的中间结果)。

inference过程中输入带病变的图像,用训练好的分类器做引导,生成对应的无病灶图像。

Note: Reverse过程用的是DDIM做采样,不是默认的DDPM,有两个好吃:速度快+结果是确定的。

医学~扩散模型_github_07

地址已经找不到~

随笔:展示的例子病变都比较清晰,不知道对不清晰的病灶检测能力怎么样;如果输入一张正常的图像,用分类器引导它生成带病变的图像,比较好奇会在什么地方生成病灶,生成病灶的这些地方是不是常见的发病区域呢?

下面两篇文章都是用扩散模型做MR重建,但思路不一样,一个是在K-space做,另一个是主要在image-space做,用K-space信息做引导。

医学~扩散模型_输入带_08

 https://github.com/Theodore-PKU/MC-DDPM 

思路简介:整体流程是基于conditional DDPM,这也是在图像转换过程中最常用的模型。整个diffusion和reverse过程定义在K-space,而不是image space;condition是under-sampling mask (不是under-sample k-space)。reverse过程可以通过不同的噪声初始化得到多个采样结果,进而可以量化重建结果的uncertainty,比如pixel-variance。

医学~扩散模型_输入带_09

医学~扩散模型_输入带_10

  https://github.com/cpeng93/DiffuseRecon 

作者提出已有工作存在两方面的不足:1)有监督学习的范式 只能处理一种情况下的下采样,不同的下采样需要训练不同的模型;2)确定性的建模过程,inference阶段模型只能给出一个结果,而不是所有可能结果的分布p(full MR|undersampling MR)

医学~扩散模型_输入带_11

思路简介:先在全采样的MR图像上训练unconditional DDMP,然后用under-sampling k-space数据来引导模型生成对应的全采样图像,引导过程如下:1)给under-sampling k-space加高斯噪声;2)同时把基于训练的好的DDMP生成的图像变到k-space;3)通过公式(5)融合1)+2)逆变换到图像空间

 

医学~扩散模型_人工智能_12

这种思路的好处是一个训练的好的模型适用于不同的undersampling的情况,不用重新训练多个模型。

医学~扩散模型_输入带_13

为了加速采样,作者提出了coarse-to-fine的策略

  • coarse:不跑完整的reverse过程,而是每隔50步采样一次
  • fine: 同时采样多个图像,最终求平均得到refine的结果

后记

个人比较喜欢后两个工作,把DDPM跟MR成像机理巧妙的结合在一起。diffusion model很适合做image-to-image translation的任务,相信接下来在medical image领域会有更多的成果出来。