Abstract
提出的方法:可逆和可变的增广网络-IVAN(invertible and variable augmented network)
作用的领域:医学图像合成和融合(medical image synthesis and fusion)
作用:
可变增广技术(variable augmentation technology)→使网络输入和输出的通道数相同,增强了数据的相关性,利于表征信息的生成
可逆网络(invertible network)→实现双向推理过程
可逆和可变增广方案(invertible and variable augmentation schemes)→可用于多输入到单输出、多输入到多输出、单输入到多输出的映射
创新点
1、可逆合成和融合
在统一框架中首次引入可逆网络,从而处理医学图像合成和融合这两个问题,进而形成一个可逆模态综合融合系统。
2、可变增广技术
使网络输入和输出的维度相同,从而降图像合成和图像融合作为单一的问题。
3、灵活性和多功能应用
不仅可用于多输入到单输出、多输入到多输出的映射,而且可用于单输入到多输出的映射。
二
对于多模态合成和融合,都属于多输入-单输出的映射,即$\hat y = f({x_1},{x_2},…,{x_n})$,其中$x$表示不同的模态图像,$\hat y$表示合成或融合图像。本文把每个输入模态视为一个通道,将它们堆叠起来作为IVAN的网络输入。
本文提出的医学合成和融合方法的基石:可逆神经网络INNs(Invertible neural networks)
公式:$\hat y = f(x)$,对于一副图像$(x_i,y_i)$,$x$表示输入图像,$f$表示一个可逆网络,$y$表示输出图像,由于可逆性,对于${\rm{x}} = {f^{ - 1}}(y)$同理。
要求:网络输入和输出的通道维度相同(可引入可变增广技术解决)
结构:
三
iVAN
维度相同的方法:添加虚拟变量(dummy variables)并将其复制到输出中
优点:
1、不会干扰模态独立特征结构,只学习模态之间的潜在相关性
2、提供了原始图像和目标图像之间的可逆连接
组成:模型设计(可逆块)是由一堆仿射耦合层(affine coupling layer)组成,在这些耦合层中,利用可逆的1X1卷积作为可学习置换函数
训练过程:
利用切片后的二维图像进行训练,对图像进行切片,并对其进行归一化处理,以获得更多的数据信息,提高数据的匹配度。
然后对输入数据进行数据增强处理(使其更加完整),
之后进入到可逆网络模型中训练。
==在训练过程中,对于图像合成:原始模态图像作为网络输入,目标模态图像为作为标签;对于图像融合,不同的模态图像作为网络输入,目标融合图像作为标签。==
B. iVAN的网络架构
目标:找到一个双射函数,使得数据点从输入数据空间X映射到输出数据空间Y
用一堆可逆和可处理的双射函数$\left{ {{f_i}} \right}_{i = 0}^k$来设计iVAN,即$y = {f_0} \cdot {f_1} \cdot {f_2} \cdots {f_k}(x)$,其中$x$表示给定的观测数据样本,$y$表示目标数据样本。$f_i$表示双射模型(即下面的可逆块)。
详细结构:
iVAN由一些可逆块(invertible block,图中橙色的方块)组成,
可逆块由可逆的1X1卷积核和仿射耦合层组成,
组成:模型设计是由一堆仿射耦合层(affine coupling layer)组成,在这些耦合层中,利用可逆的1X1卷积作为可学习置换函数
C. iVAN的训练目标(对象)
公式:
${L_{total}} = \lambda {L_1} + {L_2} = \lambda {\left| {f(X) - \left. Y \right|} \right._2} + \left| {{f^{ - 1}}(Y) - \left. X \right|} \right.$
$Y$:带标签的目标图像
$f(X)$:原始图像X经过iVAN网络后输出的图像
${\left| {\left. {} \right|} \right._2}{L_2}$的范数
${{\cal L}_1}$:合成图像和带标签的目标图像的损失函数(代码中名为rgb_loss) ${{\cal L}_2}$:输入图像和参考图像的损失函数(raw_loss) $\lambda $:超参数,用于平衡两个损失(weight) 使用欧几里得损失生成代表性特征,损失函数使输入的像素值与合成和融合图像之间的均方误差最小化。 ### D. iVAN的“对抗性学习”的解释 ![image-20221012194422367](C:\Users\Casimi_PC\AppData\Roaming\Typora\typora-user-images\image-20221012194422367.png) $x$:输入图像(T1或者PD) $G$:operator(算子) $\tilde y$:transformed synthesis image(转换后的合成图像) $Loss 1$:${\left\| {G(x) - \left. y \right\|} \right._1}$ $y$:reference synthesis image(参考的合成图像) $D$:discriminative network(判别网络) $Loss 2$:${\left\| {D(\left. {G(x)) - D(y)} \right\|} \right._1}$ 首先通过算子G获得$\tilde y$,然后在判别网络D下$\tilde y$(即为$G(x)$)和$y$进行比较,即为${\left\| {D(\left. {G(x)) - D(y)} \right\|} \right._1}$。 ![image-20221012202339497](C:\Users\Casimi_PC\AppData\Roaming\Typora\typora-user-images\image-20221012202339497.png) ## 四:实验结果 iVAN架构:使用二维轴平面切片作为网络输入 训练次数为300次,其中前50次的学习率为0.0001,之后每进行50次,学习率都减半(halved),权衡参数$\lambda $(trade-off parameter)为1。 质量指标: 在合成实验中,采用 峰值信噪比$PSNR(y,\tilde y) = 200{\log _{10}}Max(y)/{\left| {\left. {\tilde y - y} \right|} \right._2}$
结构相似性指标$SSIM(y,\tilde y) = {{(2{\mu _y}{\mu _{\tilde y}} + {c1})(2{\sigma {y\tilde y}} + {c2})} \over {(\mu _y^2 + \mu {\tilde y}^2 + c1)(\sigma y^2 + \sigma {\tilde y}^2 + c2)}}$
归一化均方误差$NMSE(y,\tilde y) = \left| {\left. {y - \tilde y} \right|_2^2} \right./\left| {\left. y \right|} \right._2^2$
其中$y$为已合成的图像,$\tilde y$为带标签的目标图像
在融合实验中,采用
平均梯度$AG = {1 \over {H \times W}}\sum\limits{h = 1}^H {\sum\limits{w = 1}^W {\sqrt {{X_h}{{(h,w)}^2} + {X_w}{{(h,w)}^2}} } } $,用于评估图像的局部对比度
空间频率$SF = \sqrt {{{(RF)}^2} + {{(CF)}^2}} $,表示融合医学图像所拥有的信息水平
(EN)熵$H(A) = - \sum\limits_{l = 0}^{L - 1} {{P_x}(l){{\log }_2}{P_x}(l)} $,用于衡量图像包含多少信息 ${Q_{MI}} = 2\left[ {{{MI({x_1},\tilde y)} \over {H({x_1}) + H(\tilde y)}} + {{MI({x_2},\tilde y)} \over {H({x_2}) + H(\tilde y)}}} \right]$,反映输入原始图像和融合图像之间的相关性
${Q{ab/f}} = {1 \over {|W|}}\sum\limits{\omega \in W}^{} {\left[ {\lambda (\omega ){Q_0}({x_1},\tilde y|\omega ) + (1 - \lambda (\omega )){Q_0}({x_2},\tilde y|\omega )} \right]} $
B. 图像合成的比较
T1=>T2:图6,尽管四种方法产生了高质量的合成T2图像,但iVAN展示出更加锋利的边缘。
T1+PD=>T2:图7,iVAN在多模态=>单模态仍比Hi-Net好,更锋利的边缘和更低的模糊伪影。
T1+T2=>PET:又拿个多模态输入实验表明,多模态输入比单模态输入好
测试
1 | python ../input/ivaninclude-data/VAN-(T1+PD)2T2-l2/train.py --task=2to1 --out_path="./kaggle/working/exps/" |
————————-杂项,可以在谷歌云跑代码了,但没必要———————————-
1 | pip install scikit-image==0.16.2 -i https://pypi.tuna.tsinghua.edu.cn/simple |
在虚拟环境的文件夹中打开终端,进入该环境,直接执行1to1,2to1训练代码
目前:xxx和NCSN++和TV
1、先连接到云盘(因为文件夹上传到谷歌云盘上)
1 | import os |
弹窗选择“允许”
2、进入要训练的文件夹内
1 | cd /content/drive/MyDrive/iVAN_Google/ |
验证是否进入到文件夹内
ls
3、直接跳到4运行下,看提示缺少什么包
1 | # 降级scikit-image包 |
训练和测试的代码,要加!
训练
1to1
1 | !python train.py --task=1to1 --out_path="./exps/" |
many to 1
1 | !python train.py --task=2to1 --out_path="./exps/" |