SimLVSeg With Mamba 实验

1. 主体框架-SimLVSeg

SimLVSeg使基于视频的网络能够从稀疏注释的超声心动图视频中进行一致的LV分割。SimLVSeg包括具有时间掩蔽的自监督预训练,然后是为从稀疏注释中进行LV分割而定制的弱监督学习。我们展示了SimLVSeg如何在最大的2D+时间超声心动图数据集(EchoNet-Dynamics)上实现93.32%(95%CI 93.21-93.43%)的DICE评分,同时更高效,从而优于最先进的解决方案。SimLVSeg兼容两种类型的视频分割网络:2D超级图像和3D分割。为了展示我们方法的有效性,我们提供了广泛的消融研究,包括预训练设置和各种深度学习主干。我们进一步进行了分布外测试,以展示SimLVSeg在未见分布(CAMUS数据集)上的推广能力。该代码可在https://github.com/fadamsyah/SimLVSeg上公开获取。

SimLVSeg使基于视频的网络能够进行LV分段,从而增强性能和更高的时间一致性。SimLVSeg由两个训练阶段组成:具有时间掩蔽的自我监督预训练和LV分割的弱监督学习,专门设计用于解决稀疏注释(标记)超声心动图视频的挑战。

结构

3D U-Net架构

超声心动图视频由堆叠的2D图像组成。将时间轴视为第三维允许3D模型在超声心动图剪辑上分割LV。因此,3D U-Net被用作架构。如图4所示,我们使用具有残余单元的CNN 作为编码器,其具有5个级,其中级输出被传递到解码器。剩余单元包括两个Conv 2D层、两个实例规范层、两个PReLU激活函数和一个跳过连接。

数据集

EchoNet-Dynamics是最大的公开2D+Time心脏超声心动图,其显示了人体心脏的顶部四腔视图。提供了约10,030个心脏超声心动图视频,固定帧大小为112 x 112。

视频长度从28帧到1002帧不等,涵盖多个心跳周期,但只有两个被注释(ED和ES帧)。图1中给出了示例超声心动图序列

image-20240926151357434

实验

作者同时还做了多个消融实验,验证不同的主干网络对该框架性能的影响,实验数据如下:

Table 2 各种编码器主干的消融研究

如表2所示,实验表明性能对编码器主干是稳健的。

注意:这里torch记得用加cuda版本
1
2
#CUDA 11.6
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

2. 心脏分割模型

2.1 模型修改-SegMamba

SegMamba也是一个分析3D超声心动图的网路,不同的是原论文中实验采用的体积数据,而不是2D图像数据加时间。因此,将SegMamba移植过来作为主干网络时,将时间作为第三个轴,即输入的帧数作为,SegMamba在原论文实验中表现同样十分优异。详细的集成后代码可以在这里找到https://github.com/52HZMercury/SimLVSeg-with-SegMamba

使用的环境

py3.8 torch 1.12

通道数的变化

首先需要注意的就是原论文中,SegMamba第一层是使用的4个通道,这里需要初始化为3个通道进行输入,这里解决之后,多半会遇到tensor对不上的问题,接着往下看

tensor对不上

这里tensor对不上的主要原因就是EchoNet-Dynamics数据集是每帧112112的,而SegMamba在原论文中是长宽高为128 * 128 * 128的输入。解决的方法就是把util代码里面的读取视频的代码输出时resize一下,改为128128,至于还有一个128,在SimLVSeg中输入时将帧改为128即可,即对应的

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
30
31
32
33
34
35
def load_video(filename: str) -> np.ndarray:
"""Loads a video from a file.
Args:
filename (str): filename of video
Returns:
A np.ndarray with dimensions (channels=3, frames, height, width). The
values will be uint8's ranging from 0 to 255.
Raises:
FileNotFoundError: Could not find `filename`
ValueError: An error occurred while reading the video
"""

if not os.path.exists(filename):
raise FileNotFoundError(filename)
capture = cv2.VideoCapture(filename)

frame_count = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))
frame_width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))

# v = np.zeros((frame_count, frame_height, frame_width, 3), np.uint8)
v = np.zeros((frame_count, 128, 128, 3), np.uint8)

for count in range(frame_count):
ret, frame = capture.read()
if not ret:
raise ValueError("Failed to load frame #{} of {}.".format(count, filename))
#112*112
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

# 缩放为128
frame = cv2.resize(frame, (128,128))
v[count, :, :] = frame

return v
爆显存

在经历上面的操作后,在实验时,可能会遇到爆显存的错误(3090),这里的解决方法是,改小精度,将原来的32位改为了16位

实验结果

Table.2. DSC(Dice Similarity Coefficient)

Step DSC loss
2235 0.863 0.138
2980 0.922 0.079
4470 0.914 0.084
5689 0.923 0.078

Both SimLVSeg-3D and SimLVSeg-SI outperform the state-of-the-art,suggesting that the superior performance can be attributed to the SimLVSeg design rather than the selection of the underlying network architectures.

原作者在论文中说是SimLVSeg设计优秀所以性能较好而不是主干网络的选择,从移植SegMamba的实验结构来看确实如此。

改小参数量

具体的措施有:将通道数改为原来的1/2,并转为32位精度计算

改小参数量后

加入通道注意力模块

Squeeze-and-Excitation Networks

序言

在本文中,作者研究了网络设计的一个不同方面-通道之间的关系。引入了一个新的架构单元,称之为挤压和激发(SE)块,其目标是通过显式建模其卷积特征通道之间的相互依赖性来提高网络产生的表示的质量。为此,作者提出了一种允许网络执行特征重新校准的机制,通过该机制,网络可以学习使用全局信息来选择性地强调信息特征并抑制不太有用的特征

在传统的CNN架构中,通常采用卷积层和池化层来提取图像特征。然而,这种方法并没有明确地对特征通道之间的关系进行建模,导致一些通道对于特定任务的贡献相对较小,而其他通道则更重要。SE模块旨在解决这个问题。

方法

Fig. 1. A Squeeze-and-Excitation block.

SE构建块的结构如图1所示。

Squeeze操作

这个操作对应上图中的Fsq函数。上面提到了,要找到通道之间的关系,那就是要用到所有通道的信息。论文中简单起见,把每个通道都压缩成一个点,直接求平均,相当于就是这个通道的特征值。这个求平均的过程就是所谓的Squeeze。表达为公式就是:

zc=Fsq(uc)=1H×Wi=1Hj=1Wuci,jz_c = F_{sq}(u_c)= \frac{1}{ H × W} \sum_{i=1}^H\sum_{j=1}^Wu_c(i,j)

uc表示特征图U中的某个通道,zc表示经过压缩之后的向量Z。从公式中可以看出,每个尺寸为H*W的featrue map通道,经过全局平均之后,就只剩一个像素点。所以,一个的featrue map经过squeeze之后,就变成了一个的vector, 计作Z。

Excitation

特征图经过压缩后,第二步就是综合这些通道的特征值。论文提出,这个综合方法需要满足两个条件:1.要可以表达非线性关系 2.要可以提取处非互斥的关系 所以,论文提出了一个计算方法:

s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))s = F_{ex}(z,W) = \sigma(g(z,W)) = \sigma(W_2\delta(W_1z))

从上面可以看出,这个Excitation就是两个全联接层,第一个连接层把1* 1* C的vector Z变成一个1* 1* C/r的向量。然后后面跟一个ReLU激活 层。· 第二个连接层把1* 1* C/r的vector重新恢复为一个1* 1* C的向量。然后后面跟一个Sigmod 的激活层。

Scale

最后,根据图1,作为Squeeze和Excitation操作之后,还需要和原特征图U进行合并,也就是上面提到的“重新校准特征图”。这个合并方法也特别简单,就是把这个向量直接原特征图相乘。

xc~=Fscale(uc,sc)=scuc\widetilde{x_c} = F_{scale}(u_c,s_c) = s_cu_c

从上面的excitation可以得知,s是一个的向量,与一个1* 1* C的特征图相乘的话,再从上面的公式可以看出,就是按通道数一个一个的去把s中的每个元素拿出来与特征图的对 应通道进行相乘,就是一个标量乘以矩阵,所以可以理解就是一个scale的操作,放大缩小而已。讲到这里,感觉就是SE就是提取出了通道中某些特征,或者说某些注意力特征,通过这个s’也就是表示通道的权重的向量,去把这个权重乘以对应的特征图通道,来放大或缩小这个通道的作用。从这个角度上来看,确实就叫做通道注意力机制。

下面给出了SE与Inception和ResNet合并的方式。

Fig. 2.原始Inception模块(左)和SEInception模块(右)的模式

Fig. 3.原始残差模块(左)和SEResNet模块(右)的架构。

总结

总而言之,SE模块通过引入Squeeze和Excitation操作,通过自适应地学习每个通道的权重,增强了神经网络的表达能力和性能,使网络能够更有效地学习和利用特征通道之间的关系。

通道再次降低为初始的1/3,即24M的模型,同时加入通道注意力模块,即上面的压缩激励

降低为原来的1/3

image-20241031131654163

加入MSAA模块

CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation

加入多尺度注意力聚合模块MSAA

加入MSAA后

提出CM-UNet框架:基于Mamba架构的CM-UNet框架,通过整合CNN和Mamba模块,能够在遥感图像语义分割任务中高效捕捉局部和全局信息。

设计CSMamba块:CSMamba块结合了通道和空间注意力机制,将Mamba模块扩展为能够处理图像长程依赖的组件,提升了特征选择和信息融合的精度。

多尺度注意力聚合模块(MSAA):引入MSAA模块,聚合编码器的多尺度特征,通过空间和通道的双重聚合提高特征表达能力,替代传统的跳跃连接,更好地支持解码器的多层次信息融合。

多输出监督机制:在解码器的不同层次引入多输出监督,确保各层次逐步细化分割图,从而提升最终分割精度。

整体结构

​ CM-UNet模型结构由ResNet编码器、多尺度注意力聚合模块(MSAA)和CSMamba解码器组成。编码器负责提取多层次特征,MSAA模块融合多尺度特征以增强表达,解码器则利用CSMamba块通过通道和空间注意力机制高效捕捉长程依赖关系,最终生成精细的分割图,并在各层解码器中加入多输出监督以优化分割结果。

Fig. 2. Framework of the proposed CM-UNet for remote sensing image semantic segmentation. (a) CM-UNet. (b) CSMamba Block. (c) 2D-SSM Module.

CNN编码器:采用ResNet结构作为编码器,用于提取多层次的特征信息。与传统UNet不同,CM-UNet的编码器使用的是多尺度特征提取,以便为后续模块提供更丰富的上下文信息。

多尺度注意力聚合模块(MSAA):在编码器和解码器之间,使用MSAA模块对多尺度特征进行聚合。这个模块通过空间和通道注意力机制对不同尺度的特征进行融合,增强特征表达能力,并取代了UNet中的跳跃连接。

Fig. 3. The Multi-Scale Attention Aggregation (MSAA) module.

CSMamba解码器:解码器采用CSMamba块,该模块结合通道和空间注意力机制,以及Mamba结构的线性时间复杂度特性,能够有效捕获图像的长程依赖关系。CSMamba解码器逐步上采样特征并生成输出分割图。同时引入多输出监督,在各层解码器中加入监督信号,确保分割图在不同层次上得到精细化生成。

参数量降为24.1M

CVPR 2024 的MemSAM

Deng X, Wu H, Zeng R, et al. MemSAM: Taming Segment Anything Model for Echocardiography Video Segmentation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024: 9622-9631.

该论文实验结果

image-20241129162620958

camus-semi和camus-full

image-20250122092934985

后续实验参见后续数据集实验部分

2.2 模型修改-LightM-UNet

运行环境版本:

LightM-UNet,这是一个基于Mamba的轻量级U形分割模型,它在显著降低参数和计算成本的同时实现了最先进的性能,参数大大减小

image-20241112173154849

image-20241114135927092

所提出的LightM-UNet的总体架构如图所示。给定一个输入图像 ,其中 、、 和 分别表示3D医疗图像的通道数、高度、宽度和切片数

image-20241114140118136

LightM-UNet首先使用深度可分卷积(DWConv)层进行浅层特征提取,生成浅层特征图。随后,LightM-UNet结合三个连续的编码器块(Encoder Blocks)从图像中提取深层特征。在每个编码器块之后,特征图中的通道数翻倍,而分辨率减半。

Encoder Block

感觉encoder都差不多

为了最小化参数数量和计算成本,LightM-UNet采用了仅包含Mamba结构的编码器块来从图像中提取深层特征。

具体来说,给定一个特征图 FlRC×H×W×DF^l \in R^{C \times H \times W \times D },其中C=32×2lC = 32 \times2^lH=H/2lH = H / 2^lW=W/2lW = W / 2^lD=D/2lD = D / 2^l,以及,编码器块首先将特征图展平并转置成的形状,其中L=H×W×DL = H \times W \times D

随后,编码器块使用个连续的RVM层来捕捉全局信息,在最后一个RVM层中通道数增加。此后,编码器块重新调整并转置特征图的形状为 (C×2,H,W,D)(C \times 2,H,W,D),紧接着进行最大池化操作以降低特征图的分辨率。

最终,第l个编码器块输出新的特征图Fl+1F^{l+1},其形状为(C×2,H/2,W/2,D/2)(C \times 2,H/2,W/2,D/2)

Residual Vision Mamba Layer (RVM Layer)

LightM-UNet提出了RVM层以增强原始的SSM块,用于图像深层语义特征提取。具体来说,LightM-UNet利用先进的残差连接和调整因子进一步增强了SSM的长距离空间建模能力,几乎不引入新的参数和计算复杂性。

实验

image-20241114184622536

LightM-UNet以其极低的参数数量脱颖而出,仅使用了1.09M个参数。与nnU-Net和U-Mamba相比,参数分别减少了99.14%和99.55%

加入通道注意力特征融合

image-20241119155343122

同时实验时加入mIOU评价指标

image-20241128123310222

2.3 更改扫描方式

选择一:Right Diagonal (RD 扫描)

image-20250228152647449

选择二:Right Diagonal Two-way(RD 双向扫描)

聚焦于图的中心

选择三:使用Hilbert曲线 (Hilbert 扫描)

通过递归的分形结构,将高维空间(如二维平面)连续地映射到一维直线上,同时尽可能保持局部区域的邻近性,Hilbert曲线以及其离散近似表示方法都非常实用,因为其将多维空间转换为一维空间的方法很好地保留了空间邻近性。(x,y)是一个单元方格中的点,d代表该点在Hilbert曲线上的位置,而由于其空间的邻近性,在单元格上近似的点,其对应Hilbert的d值也比较接近。

image-20250228153319794

要想更改扫描方式,因为该曲线只支持2的幂的边长,该数据为112 * 112 的规格,最为接近的2的幂为128。因此必须先得把数据集的数据填充到128 *128的规格,尝试了两种填充方式:

  • 直接resize
  • 使用0填充图像的右边和底边

其中直接resize可能导致一定程度上标签的错位,猜测会不如第二种使用0填充的方式。具体的实验数据可参看3.3 Echo-Pediatric实验部分。

跑一轮需要三百多个小时,继续优化

image-20250313183512859

选择四:moore 曲线扫描

image-20250320133405712

和希尔伯特曲线类似,是希尔伯特曲线的循环版本,不过是从中间开始,首尾闭合

3. 数据集实验

SAM的

image-20250411150318395

3.1 EchoNet-Dynamic

小segmamba实验结果(DiceLoss)

image-20241202155209382

DICE和IOU都比该文高,其中DICE高0.11个点,IOU高0.84

其他的损失函数

segmamba-24.1M dsc iou loss
diceloss 0.9289 0.8673 0.0718
jaccard 0.9276 0.8650 0.1353
jaccard 0.9267 0.8635 0.1367
tversky 0.9272 0.8643 0.0687

效果一般

改为使用moore扫描

方向实验

segmamba-MRscan dsc iou loss
dice + Adaw_4bt-4lr 32F 0 + - v191 0.9323 0.8733
- v194 0.932656 0.873810
dice + Adaw_4bt-4lr 32F 3 + - v192 0.9321 0.8729
- v199 0.9325 0.8736
dice + Adaw_4bt-4lr 32F 2 + - v193 0.9325 0.8736
- v200 0.9323 0.8732

还是 0 + - 最好

学习率实验

segmamba-MRscan dsc iou loss
dice + Adaw_16bt-4lr 32F 0 + -
-
dice + Adaw_16bt-8lr 32F 0 + -
-
dice + Adaw_16bt-16lr 32F 0 + -
-

损失实验

segmamba-MRscan 0 + - dsc iou loss
0.8 dice + 0.2 jaccard + Adaw_4bt-4lr 32F v209 0.9321 0.8729 0.0798
- v212 0.9327 0.8739 0.0792
0.4 dice + 0.3 jaccard + 0.3 focal + Adaw_4bt-4lr 32F v210 0.932578 0.873673 0.07737
- v213 0.932525 0.873580 0.07741
0.2 dice + 0.2 jaccard + 0.6 focal + Adaw_4bt-4lr 32F v211 0.932560 0.873642 0.0561
- v214 0.9324 0.8734 0.0562
mean 0.3 dice + 0.1 jaccard + 0.3 tversky + 0.3 focal v230 0.9267 0.8658

3.2 CAMUS

重写dataset改为该数据集后,DICE和IOU都出现错误:表现为大于1。

猜想:每个病人只有十几帧,但是segmamba是按128帧设计的,因此输入的是128帧,多出的帧采用零填充,导致有用数据太少。

方案:使用每个病人原始的数据,进行重复,直到填满128帧。

并不是这个原因,是因为拼接的函数有点问题,改完之后可以正常显示数据,但是还不完善,只能使用一个batchsize

下面再来测试几种填充之后的实验差别

填充方式 dsc iou loss
type1 0.9123 0.8459 0.0950
type2 0.9301 0.8708 0.0779
type3 0.9234 0.8603 0.0846
type4 0.9265 0.8650 0.0859

综合来看type2的padding效果最好,后续在type2上继续实验

将所有的消融实验做一个表格,包括

segmamba-24.1M DICE IOU loss
type1 + Adaw + diceloss 0.912 0.845 0.095
type2 + Adaw + diceloss 0.930 0.870 0.077
type3 + Adaw + diceloss 0.923 0.860 0.084
type4 + Adaw + diceloss 0.926 0.865 0.085
type5 + Adaw + diceloss 0.912 0.845 0.095
type2 + Adaw + jaccard 0.932 0.873 0.129
type2 + Adaw + jaccard+ 2lr 0.935 0.878 0.126
type3 + Adaw + hccdice 0.931 0.871 0.080
type3 + Adaw + jaccard 0.932 0.873 0.135
type3 + Adaw + jaccard + 2lr 0.934 0.877 0.125
type3 + Adaw + jaccard + 3lr 0.932 0.873 0.128
type3 + Adaw + tversky + 2lr 0.930 0.870 0.076
type3 + SGD + diceloss 0.921 0.857 0.078
type3 + SGD + jaccard 0.919 0.850 0.149
type4 + Adaw + jaccard 0.933 0.875 0.127
type6 + Adaw + jaccard + 2lr 0.928 0.866 0.140

使用CAMUS数据集官方划分的训练集,验证集和测试集

segmamba-24.1M dsc iou loss
全监督 0.9377 0.8828 0.1208
全监督_4bt-4lr 0.9406 0.8879 0.1193
弱监督A 0.9391 0.8852 0.1150
弱监督B 0.2071 0.1155 0.9697

这里的弱监督A是训练的时候只提取了两帧(舒张末期和收缩末期),在验证测试时也只测试了这两帧;弱监督B也是训练的时候只提取两帧,但是验证和测试时是全周期数据,可以看到,效果非常的垃圾。。。

使用SAM模型划分的训练集,验证集和测试集

segmamba-24.1M dsc iou loss
dice+Adaw_4bt-3lr 0.9427 0.8917 0.0681
jaccard+Adaw_4bt-4lr 0.9431 0.8924 0.1143
jaccard+Adaw_4bt-3lr 0.9414 0.8893 0.1215

在3D_UNet上

3D_UNet dsc iou loss
dice+Adaw_2lr+split_SAM 0.9430 0.8922 0.0933
dice+Adaw_4lr+split_SAM 0.9457 0.8970 0.0633
dice+Adaw_2lr+split_CAMUS 0.9351 0.8782 0.0954
dice+Adaw_4lr+split_CAMUS 0.9440 0.8940 0.0631

改进hibertScan后 使用SAM的划分方式 segmamba-HBscan

segmamba-HBscan dsc iou loss
hccdice + SGD 0.9346 0.8773 0.0655
hccdice + Adaw_4bt-4lr 0.9397 0.8863 0.0690
jaccard + Adaw_4bt-4lr 0.9376 0.8825 0.1283
hccdice + Adaw_4bt-5lr 0.9421 0.8906 0.0634
hccdice + Adaw_4bt-6lr 0.9402 0.8872 0.0651
hccdice + Adaw_4bt-5.5lr 0.9394 0.8858 0.0659
tversky + Adaw_4bt-5lr 0.9385 0.8842 0.0675
tversky + Adaw_4bt-5lr type6 all 32F 0.9430 0.8923 0.0580
tversky + Adaw_4bt-5lr type2 all 32F 0.9418 0.8900 0.0642
hccdice + Adaw_4bt-5lr type6 all 32F 0.9398 0.8865 0.0637
hccdice + Adaw_8bt-7.07lr type6 32F 0.9386 0.8844 0.0673
hccdice + Adaw_12bt-8.65lr type6 32F 0.9361 0.8800 0.0706
hccdice + Adaw_4bt-5lr type2 EDES 32F 0.9408 0.8882 0.0648
hccdice + Adaw_4bt-5lr type2 all 32F 0.9424 0.8911 0.0618
hccdice + Adaw_16bt-5lr type2 all 32F 0.9368 0.8812 0.0996
hccdice + Adaw_16bt-15lr type2 all 32F 0.9397 0.8863 0.0659
hccdice + Adaw_16bt-20lr type2 all 32F 0.9410 0.8886 0.0624
hccdice + Adaw_16bt-25lr type2 all 32F 0.9390 0.8850 0.0633

segmamba-MRscan

segmamba-MRscan dsc iou loss
tversky + Adaw_4bt-5lr type2 all 32F 0.9420 0.8903 0.0612
tversky + Adaw_4bt-5lr type6 all 32F 0.9421 0,8906 0.0613
hccdice + Adaw_4bt-5lr type2 all 32F 0.9412 0.8890 0.0631
hccdice + Adaw_4bt-5lr type6 all 32F 0.9374 08823 0.0660
jaccard + Adaw_4bt-5lr type2 all 32F 0.9402 0.8872 0.1222
jaccard + Adaw_4bt-5lr type6 all 32F 0.9399 0.8866 0.1174
dice + Adaw_4bt-5lr type2 all 32F 0.9408 0.8883 0.0630
dice + Adaw_4bt-5lr type6 all 32F 0.9395 0.8859 0.0640
tversky + SGD-0.1lr type2 all 32F
tversky + SGD-0.1lr type6 all 32F
tversky + Adaw_4bt-5lr type2 all 32F 35epoch 0.9403 0.8874 0.0634
tversky + Adaw_4bt-5lr type6 all 32F 35epoch 0.9410 0.8885 0.0615

采用不同扫描方向实验这里都统一采用 tversky + Adaw_4bt-5lr type6 all 32F 60Epoch 0:西 1:北 2:东 3:南

第一轮的数据可能是没加MRscan的数据。。。

segmamba-MRscan dsc iou loss
0 + - * 0.9427 / 0.9408/0.9396/0.9413 / /
1 + - 0.9367 / 0.9401/0.9400/0.9394 0.8868 0.0635
2 + - * 0.9416 / 0.9435/0.9421/0.9426 0.8931 0.0589
3 + - * 0.9425 / 0.9418/0.9426/0.9421 0.8914 0.0602
0 - + * 0.9418 / 0.9405/0.9421/0.9416 0.8906 0.0597
1 - + 0.9385 / 0.9407/0.9405/0.9384 / /
2 - + 0.9401 / 0.9413/0.9391/0.9401 0.8892 0.0617
3 - + 0.9410 / 0.9413/0.9391/0.9410 / /

消融实验 减去MRscan 采用 tversky + Adaw_4bt-5lr type6 all 32F 60Epoch

segmamba-24.1M dsc iou loss
tversky + Adaw_4bt-5lr type2 all 32F 0.9438 / /
tversky + Adaw_4bt-5lr type6 all 32F 0.9434 0.8929 0.059
tversky + Adaw_4bt-5lr type2 all 32F 35epoch
tversky + Adaw_4bt-5lr type6 all 32F 35epoch 0.9409 0.8884 0.0636
后面统一采用tversky + Adaw_4bt-5lr type6 all 32F 60Epoch
tversky + Adaw_4bt-5lr type6 all 32F 60Epoch 0.9407 0.8881 0.0621
tversky + Adaw_4bt-5lr type6 all 32F 60Epoch 0.9409 0.8884 0.0614
tversky + Adaw_4bt-5lr type6 all 32F 60Epoch 0.9420 0.8904 0.0617
tversky + Adaw_4bt-5lr type6 all 32F 60Epoch

学习率实验

segmamba-MRscan 2 + - dsc iou loss
tversky + Adaw_4bt-4lr type6 all 32F 0.942372 0.8910 0.0631
- 0.941797 0.8899 0.0627
tversky + Adaw_4bt-5lr type6 all 32F 0.941884 0.8901 0.0606
- 0.941728 0.8898 0.0621

损失实验 mean

segmamba-MRscan 2 + - dsc iou loss
tversky 0.9391 0.8864
- 0.9392
0.3 dice + 0.1 jaccard + 0.3 tversky + 0.3 focal v228 0.9391 0.8863
- v229 0.9339 0.8772

3.3 Echo-Pediatric

该数据需要首先进行预处理,使用split列中的数字划分训练集,验证集和测试集。这里使用的是<8的数据为训练集,==8的为验证集,其余的为测试集。

除此之外,该数据集中有部分脏数据需要进行处理,比如VolumeTracings.csv中部分X,Y数据为空,Frame为No Systolic,需要删除,以及部分数据标注时有误,只有144帧,但标注时标注了序号为第144帧,导致越界错误。

先使用了jaccard的dsc只有0.9063,iou为0.8288;考虑到这个数据集和echodynamic类似。因此,接着使用diceloss进行测试,效果差不多,dsc为0.9045,iou为0.8256

segmamba-24.1M dsc iou loss
jaccard+Adaw 0.9063 0.8288 0.0938
diceloss+Adaw 0.9045 0.8256 0.1748

数据集的处理有点问题,重新跑一遍:

segmamba-24.1M dsc iou loss
jaccard+Adaw_4lr 0.9039 0.8246 0.1757
jaccard+Adaw_6lr 0.9041 0.8250 0.1752
jaccard+SGD 0.9084 0.8323 0.1677
diceloss+SGD 0.9068 0.8295 0.0932
hccdice+Adaw_4lr 0.9115 0.8374 0.0892

3D_Unet模型 Adaw

3D_Unet dsc iou loss
3D_Unet+jaccard 0.9090 0.8332 0.1688
3D_Unet+diceloss 0.9112 0.8369 0.0906

其他模型 都是Adaw+DiceLoss

model name dsc iou loss
LightMUNet 0.8855 0.7946 0.1145
TMamba3D / / /
SegFormer3D 0.9123 0.8388 0.0876
UKAN3D 0.9091 0.8334 0.0910

UNet_IDC3D模型

model name dsc iou loss
UNet_IDC3D+diceLoss 0.9112 0.8368 /
UNet_IDC3D+hccdice 0.9137 0.8412 0.0866

改进为希尔伯特曲线扫描后的segmamba-HBscan

填充到128*128规格的两种方式的实验

segmamba-24.1M dsc iou loss
hccdice+Adaw_4lr (resize 128) 0.9084 0.8323 0.0923
hccdice+Adaw_4lr (padding 128) 0.9122 0.8386 0.0884
hccdice + Adaw_4bt-5lr 32F 0.9137 0.8412 0.0870
tversky + Adaw_4bt-5lr 32F 0.9105 0.8357 0.0835

segmamba-HBscan

segmamba-HBscan dsc iou loss
hccdice+Adaw_4lr 0.9126 0.8393 0.0882
jaccard+Adaw_4lr 0.9115 0.8374 0.1628
hccdice+Adaw_4bt-5lr 32F 0.9139 0.8415 0.0868
hccdice+SGD_4bt-0.1lr 0.9128 0.8396 0.0877
hccdice+SGD_16bt-0.3lr 32F / / /
tversky + Adaw_4bt-5lr 32F / / /

moore曲线的扫描方式 segmamba-MRScan

segmamba-MRscan dsc iou loss
hccdice + Adaw_4bt-5lr 32F 0.9110 0.8367 0.0898
tversky + Adaw_4bt-5lr 32F 0.9104 0.8356 0.0809

更换了不同的扫描方向

segmamba-MRscan 2 + - dsc iou loss
hccdice + Adaw_4bt-5lr 32F 0.9112 0.8370 0.0897
- 0.9119 0.8381 0.8882
- 0.9113 0.8371 0.0895
hccdice + Adaw_4bt-4lr 32F 0.913840 0.8413 0.0870
- 0.9122 0.8386 0.0886
hccdice + Adaw_4bt-6lr 32F 0.9124 0.8389 0.0884
hccdice + SGD_ 4bt-0.1lr 32F 0.913801 0.8412 0.0866
hccdice + SGD_ 4bt-0.15lr 32F 0.9085 0.8324 0.09198
segmamba-MRscan 3 + - dsc iou loss
hccdice + Adaw_4bt-4lr 32F 0.9135 0.8409 0.0871
- 0.9142 0.8420 0.0866
hccdice + SGD_ 4bt-0.1lr 32F 0.9120 0.8383 0.0884
- 0.9044 0.8255 0.0964
segmamba-MRscan 0 + - dsc iou loss
hccdice + Adaw_4bt-4lr 32F 0.9148 0.8430 0.0859
- 0.9149 0.8431 0.0859
hccdice + SGD_ 4bt-0.1lr 32F 0.9082 0.8319 0.0923
- 0.9127 0.8395 0.0876
segmamba-MRscan 0 - + dsc iou loss
hccdice + Adaw_4bt-4lr 32F 0.9126 0.8393 0.0884
- 0.9115 0.8375 0.0895
hccdice + SGD_ 4bt-0.1lr 32F 0.9131 0.8402 0.0872
- / / /
segmamba-MRscan 3 - + dsc iou loss
hccdice + Adaw_4bt-4lr 32F 0.9120 0.8383 0.0887

不同的损失测试

segmamba-MRscan 0 + - dsc iou loss
hccdice + Adaw_4bt-4lr 32F 0.9114 0.8373 0.0895
tversky + Adaw_4bt-4lr 32F 0.9093 0.8337 0.0861
- 0.9089 0.8331 0.0848
dice + Adaw_4bt-4lr 32F 0.9151 0.8434 0.0852
- 0.9151 0.8435 0.0851
jaccard + Adaw_4bt-4lr 32F v179 0.916061 0.8451 0.1551
- 0.9158 0.8448 0.1556
focal + Adaw_4bt-4lr 32F 0.9133 0.8405 0.0096
- 0.9153 0.8439 0.0091
0.5 dice+0.5 Jaccard + Adaw_4bt-4lr 32F 0.9134 0.8407 0.1233
- 0.915999 0.8450 0.1198
0.8 dice+ 0.2 Jaccard + Adaw_4bt-4lr 32F 0.9167 0.8462 0.0976
- 0.9159 0.8448 0.0986
0.2 dice+ 0.8 Jaccard + Adaw_4bt-4lr 32F 0.9160 0.8451 0.1410
- 0.9137 0.8412 0.1446
0.4 dice + 0.3 jaccard + 0.3 focal + Adaw_4bt-4lr 32F v201 0.9165 0.8458 0.0974
- v205 0.9157 0.8445 0.0985
0.6 dice + 0.2 jaccard + 0.2 focal + Adaw_4bt-4lr 32F v202 0.9145 0.8426 0.0961
v206 0.9117 0.8378 0.0993
0.2 dice + 0.6 jaccard + 0.2 focal + Adaw_4bt-4lr 32F v203 0.9143 0.8422 0.1261
- v207 0.9152 0.8436 0.1250
0.2 dice + 0.2 jaccard + 0.6 focal + Adaw_4bt-4lr 32F v204 0.9163 0.8455 0.0719
- v208 0.9161 0.8452 0.0727
(mean)0.3 dice + 0.1jaccard + 0.3 tversky + 0.3 focal v231 0.9079 0.8359
(mean)- v232 0.9071 0.8340

4. sota实验

4.1 Echo-Dynamic

model name dsc iou assd HD95
3d u-net v304 93.22 87.30 1.12 2.74
SwinUnet 87.79 80.14 5.71 6.61
SegFormer3D v305 93.09 87.07 1.13 2.73
H2Former 90.21 82.46 5.12 3.78
LightMUNet v306 92.80 86.57 1.18 2.91
UKAN3D v322 93.24 87.34 1.14 2.79
MedSAM 86.47 79.19 4.88 7.97
SAMUS 91.79 84.32 3.22 5.35
MemSAM 92.78 85.89 2.71 4.57
ours 93.28 87.40 1.11 2.68
UKAN3D dsc iou assd HD95
v308 93.24 87.35 / /
v322 93.24 87.34 1.14 2.79
v341 93.20 87.27 1.12 2.67
v344 93.21 87.29 1.12 2.71
v345 93.26 87.37 1.11 2.70

4.1 CAMUS

model name dsc iou assd HD95
3d u-net v321 93.78 88.28 2.82 8.93
SwinUnet 88.84 80.33 2.60 6.10
SegFormer3D v312 93.46 87.72 2.13 4.27
H2Former 91.31 84.30 2.05 5.27
LightMUNet v314 92.35 85.79 1.60 3.67
UKAN3D v325 93.66 88.08 3.19 11.6
MedSAM 85.42 75.14 3.34 8.42
SAMUS 91.11 83.94 2.07 5.08
MemSAM 93.31 87.61 1.57 3.82
ours 94.30 89.21 1.36 2.93

4.3 Echo-Pediatric

model name dsc iou assd hd95 sen
3d u-net 0.9090 0.8332
LightMUNet 0.8855 0.7946
SegFormer3D 0.9123 0.8388
UKAN3D 0.9091 0.8334
ours 0.9165 0.8458 1.5507 3.8580 0.9250

v2

model name dsc iou assd hd95
3d u-net v331 91.34 84.06 1.64 4.02
SegFormer3D v328 91.23 83.87 1.60 3.91
LightMUNet v327 90.85 83.24 1.70 4.28
UKAN3D v330 91.48 84.30 1.58 3.91
ours 91.65 84.58 1.55 3.85
3d u-net dsc iou assd HD95
v326 0.9156 0.8444 / /
v331 0.9155 0.8442 1.8086 4.9218
v332 0.9158 0.8446 / /
v336 0.9134 0.8406 1.64 4.02
UKAN3D dsc iou assd HD95
v329 0.9157 0.8445 / /
v330 0.9154 0.8444 1.6026 3.9676
v337 0.9148 0.8430 1.5821 3.9149

5. 消融实验

  • 24.1 baseline
  • moore扫描模块
  • 融合损失

表格示意

+ fusionLoss: 0.4 dice + 0.3 jaccard + 0.3 focal

+ fusionLossV2: 0.4 dice + 0.1 jaccard + 0.5 focal (舍)

-fusionLoss: dice

+mooreScan: mooreScan

-mooreScan: 横向扫描resize

5.1 Echo-Dynamic

选用方向: 0 + -

扫描方式 dsc iou assd hd95 sen
- mooreScan - fusionLoss (baseline) 0.9316 0.8720 1.1216 2.7196 0.9338
+ mooreScan - fusionLoss 0.9324 0.8734 1.1086 2.6753 0.9350
- mooreScan + fusionLoss 0.9325 0.8736 1.1086 2.6940 0.9356
+ mooreScan + fusionLoss 0.9328 0.8740 1.1050 2.6789 0.9368
- mooreScan - fusionLoss dsc iou assd hd95 sen
v251 0.9321 0.8728 1.1146 2.7019 0.9347
v255 0.9320 0.8727 1.1144 2.7012 0.9345
v286 0.9316 0.8720 1.1216 2.7196 0.9338
+ mooreScan - fusionLoss dsc iou assd hd95 sen
v191 0.9323 0.8733 1.1086 2.6854 0.9337
v249 0.9324 0.8734 1.1086 2.6753 0.9350
- mooreScan + fusionLoss dsc iou assd hd95 sen
v248 0.9325 0.8737 / / /
v252 0.9317 0.8722 1.1223 2.7157 0.9380
v254 0.9325 0.8736 1.1086 2.6940 0.9356
+ mooreScan + fusionLoss dsc iou assd hd95 sen
v210 0.9326 0.8737 / / /
v246 0.9327 0.8739 1.1053 2.6756 0.9374
v253 0.9328 0.8740 1.1050 2.6789 0.9368
- mooreScan + fusionLossV2 dsc iou assd hd95 sen
v262 0.9326 0.8737 / / /
v263 0.9322 0.8731 / / /
+ mooreScan + fusionLossV2 dsc iou assd hd95 sen
v256 0.9322 0.8730 / / /
v257 0.9326 0.8737 / / /

5.2 CAMUS

选用方向:0 + -

扫描方式 dsc iou assd hd95 sen
- mooreScan - fusionLoss (baseline) 0.9376 0.8824 1.4344 3.1161 0.9690
+ mooreScan - fusionLoss 0.9416 0.8896 1.3347 2.8828 0.9708
- mooreScan + fusionLoss 0.9402 0.8871 1.3599 2.9843 0.9688
+ mooreScan + fusionLoss (ours) 0.9430 0.8921 1.3594 2.9324 0.9732
- mooreScan - fusionLoss (baseline) dsc iou assd hd95 sen
v271 0.9416 0.8897 / / /
v273 0.9412 0.8890 / / /
V284 0.9376 0.8824 1.4344 3.1161 0.9690
v285 0.9392 0.8853 1.4322 3.1237 0.9731
+ mooreScan - fusionLoss dsc iou assd hd95 sen
v274 0.9404 0.8875 / / /
v275 0.9410 0.8885 / / /
v276 0.9416 0.8896 1.3347 2.8828 0.9708
v280 0.9415 0.8895 1.3756 3.1272 0.9717
- mooreScan + fusionLoss dsc iou assd hd95 sen
v277 0.9428 0.8918 / / /
v278 0.9393 0.8855 1.3134 2.9897 0.9644
v281 0.9428 0.8918 1.3577 2.8974 0.9456
v283 0.9402 0.8871 1.3599 2.9843 0.9688
+ mooreScan + fusionLoss (ours) dsc iou assd hd95 sen
v233 0.9394 0.8859 1.3565 2.9882 0.9674
v234 0.9423 0.8909 1.3285 2.8963 0.9715
v270 0.9419 0.8902 / / /
v268 0.9430 0.8921 1.3594 2.9324 0.9732
v269 0.9424 0.8912 1.3493 2.9682 0.9729

5.3 Echo-Pediatric

选用方向0 + -

扫描方式 dsc iou assd hd95 sen
- mooreScan - fusionLoss (baseline) 0.9137 0.8411 1.6047 3.9345 0.9204
+ mooreScan - fusionLoss 0.9151 0.8436 1.5794 3.9623 0.9247
- mooreScan + fusionLoss 0.9150 0.8433 1.5740 3.8816 0.9266
+ mooreScan + fusionLoss 0.9165 0.8458 1.5507 3.8580 0.9250
- mooreScan - fusionLoss (baseline) dsc iou assd hd95 sen
v241 / / / / /
v242 0.9145 0.8425 1.5811 3.9611 0.9178
v245 0.9137 0.8411 1.6047 3.9345 0.9204
+ mooreScan - fusionLoss dsc iou assd hd95 sen
v235 0.9138 0.8413 1.6069 3.9439 0.9303
v236 0.9151 0.8436 1.5794 3.9623 0.9247
- mooreScan + fusionLoss dsc iou assd hd95 sen
v239 0.9150 0.8433 1.5740 3.8816 0.9266
v240 0.9151 0.8435 / / /
v243 0.9148 0.8430 1.5646 3.8466 0.9229
+ mooreScan + fusionLoss dsc iou assd hd95 sen
v216 0.9084 0.8367 / / /
v217 0.9073 0.8352 / / /
v201 0.9165 0.8458 1.5507 3.8580 0.9250
v266 0.9141 0.8418 / / /
v267 0.9137 0.8411 / / /
- mooreScan + fusionLossV2 dsc iou assd hd95 sen
v260 0.9160 0.8450 1.5611 3.8918 0.9167
v261 0.9163 0.8455 1.5586 3.8783 0.9237
V264 0.9154 0.8440 / / /
V265 0.9162 0.8454 / / /
+ mooreScan + fusionLossV2 dsc iou assd hd95 sen
v258 0.9161 0.8451 / / /
v259 0.9148 0.8430 1.5939 3.9800 0.9208

6. 对比实验

  • 八种扫描方式
  • 不同曲线的扫描

儿科数据集

横线

image-20250512153518940

Scan dsc iou assd hd95 sen
v242 0.9145 0.8425 1.5811 3.9611 0.9178
v245 0.9137 0.8411 1.6047 3.9345 0.9204

竖线

image-20250512154129170

Scan dsc iou assd hd95 sen
v288 0.9149 0.8432 1.5771 3.9424 0.9224
v292 0.9138 0.8413 1.6080 3.9769 0.9190

斜线

image-20250512153546250

Scan dsc iou assd hd95 sen
v290 0.9149 0.8431 1.5956 3.9276 0.9250
v298 0.9135 0.8408 1.6367 4.1488 0.9254
v302 0.9121 0.8384 1.6534 4.1673 0.9204
v303 0.9145 0.8425 1.5952 3.9662 0.9183

SimLVSeg With Mamba 实验
http://example.com/2024/09/26/SimLVSegWithMamba/
作者
Mercury
发布于
2024年9月26日
许可协议