IVAN论文笔记
Variable Augmented Network for Invertible Modality Synthesis-Fusion
Yuhao Wang, Ruirui Liu, Zihao Li, Cailian Yang, Qiegen Liu
arXiv e-prints

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)$同理。

要求:网络输入和输出的通道维度相同(可引入可变增广技术解决)

结构:

image-20221009150735607

iVAN

维度相同的方法:添加虚拟变量(dummy variables)并将其复制到输出中

优点:

1、不会干扰模态独立特征结构,只学习模态之间的潜在相关性

2、提供了原始图像和目标图像之间的可逆连接

组成:模型设计(可逆块)是由一堆仿射耦合层(affine coupling layer)组成,在这些耦合层中,利用可逆的1X1卷积作为可学习置换函数

训练过程:

image-20221010104605385

利用切片后的二维图像进行训练,对图像进行切片,并对其进行归一化处理,以获得更多的数据信息,提高数据的匹配度。

然后对输入数据进行数据增强处理(使其更加完整),

之后进入到可逆网络模型中训练。

==在训练过程中,对于图像合成:原始模态图像作为网络输入,目标模态图像为作为标签;对于图像融合,不同的模态图像作为网络输入,目标融合图像作为标签。==

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$表示双射模型(即下面的可逆块)。

详细结构:

image-20221010193047561

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
2
3
4
5
6
7
8
9
python ../input/ivaninclude-data/VAN-(T1+PD)2T2-l2/train.py --task=2to1 --out_path="./kaggle/working/exps/"

python ../input/ivaninclude-data/VAN-(T1+PD)2T2-l2/train.py --task=1to1 --out_path="./exps/"



../input/ivancode/VAN-(T1+PD)2T2-l2

python train.py --task=1to1 --out_path="/kaggle/working/exps"

————————-杂项,可以在谷歌云跑代码了,但没必要———————————-

1
2
3
4
5
6
7
8
pip install scikit-image==0.16.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

import skimage
print(skimage.__version__)

opencv-python==4.5.3.56

pip install tensorboardX==1.7.0

在虚拟环境的文件夹中打开终端,进入该环境,直接执行1to1,2to1训练代码

目前:xxx和NCSN++和TV

1、先连接到云盘(因为文件夹上传到谷歌云盘上)

1
2
3
import os
from google.colab import drive
drive.mount('/content/drive')

弹窗选择“允许”

2、进入要训练的文件夹内

1
cd /content/drive/MyDrive/iVAN_Google/

验证是否进入到文件夹内

ls

3、直接跳到4运行下,看提示缺少什么包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 降级scikit-image包
pip uninstall scikit-image

pip install scikit-image==0.16.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

import os
os.kill(os.getpid(), 9)

import skimage
print(skimage.__version__)

# 安装tensorboardX包

pip install tensorboardX==1.7.0

import os
os.kill(os.getpid(), 9)

# 安装cv2需要的版本,之前自带的4.6,所以训练不了
pip uninstall opencv-python

pip install opencv-python==4.5.3.56

import os
os.kill(os.getpid(), 9)

import cv2
print(cv2.__version__)

训练和测试的代码,要加!

训练

1to1
1
!python train.py --task=1to1 --out_path="./exps/"
many to 1
1
!python train.py --task=2to1 --out_path="./exps/"
文章作者: CasimiBreidin
文章链接: https://blognotes.cn/posts/24112.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Casimi’Blog