Mamba再下一城!MedMamba:医学图像分类的视觉Mamba

研究者提出MedMamba,一种结合卷积层和状态空间模型的新型方法,用于医学图像分类。实验结果显示在多个数据集上MedMamba表现优秀,可能成为医学图像分析的新基准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mamba虽火,但把Mamba用好的工作真不多,而且医学影像的Mamba魔改工作也忒多了吧~真卷

【总结】MedMamba:一种用于医学图像分类的视觉Mamba,引入一种新的Conv-SSM模块,在多个医学数据集上性能表现出色!代码刚刚开源!

点击关注 @CVer官方知乎账号,可以第一时间看到最优质、最前沿的CV、AI、AIGC工作~

MedMamba

MedMamba: Vision Mamba for Medical Image Classification

单位:广州医科大学, 广师大

代码:https://github.com/YubiaoYue/MedMamba

论文:https://arxiv.org/abs/2403.03849

CVPR 2024 论文和开源项目合集请戳—>https://github.com/amusi/CVPR2024-Papers-with-Code

医学图像分类是计算机视觉领域中一项非常基础和关键的任务。近年来,基于CNN和Transformer的模型被广泛用于对各种医学图像进行分类。不幸的是,CNN在长期建模能力方面的局限性使其无法有效地提取医学图像中的细粒度特征,而Transformer则受到其二次计算复杂性的阻碍。

最近的研究表明,以Mamba为代表的状态空间模型(SSM)可以有效地对长程相互作用进行建模,同时保持线性计算复杂性。

受此启发,我们提出了用于医学图像分类的视觉Mamba(MedMamba)。

更具体地说,我们介绍了一种新的Conv-SSM模块,它将卷积层的局部特征提取能力与SSM捕获长程依赖性的能力相结合。

实验结果

为了证明MedMamba的潜力,我们使用三个具有不同成像技术的公开医学数据集(即Kvasir(内窥镜图像)、FETAL_PLANES_DB(超声图像)和Covid19肺炎正常胸部X射线(X射线图像))和两个自己建立的私人数据集进行了广泛的实验。实验结果表明,所提出的MedMamba在检测各种医学图像中的病变方面表现良好。据我们所知,这是第一款为医学图像分类量身定制的视觉Mamba。

这项工作的目的是为医学图像分类任务建立一个新的基线,并为未来在医学中开发更高效、更有效的基于SSM的人工智能算法和应用系统提供有价值的见解。

现在点击关注@CVer官方知乎账号,可以第一时间看到最优质、最前沿的CV、AI工作~涨点神器、LLM、AIGC(图像/视频/3D生成)、多模态、医学影像、分类、检测、分割、跟踪、扩散、CNN、Transformer、NeRF、3DGS、low-level、自动驾驶、ReID、遥感等方向通通拿下!

CVPR 2024 论文和开源项目合集请戳—>

https://github.com/amusi/CVPR2024-Papers-with-Code​github.com/amusi/CVPR2024-Papers-with-Code

### 使用 Vision Mamba 实现图像分类 Vision Mamba (Vim) 是种创新的视觉骨干网络,利用双向Mamba块来处理图像序列并进行高效的特征提取。为了实现图像分类任务,可以遵循以下方法: #### 数据预处理 在应用 Vim 进行图像分类之前,需准备输入数据。这涉及加载图像文件,并将其转换成适合模型接收的形式——通常是标准化后的张量形式。 ```python from torchvision import transforms, datasets transform = transforms.Compose([ transforms.Resize((224, 224)), # 调整图片尺寸到固定大小 transforms.ToTensor(), # 将PIL Image或numpy.ndarray转化为torch.FloatTensor. ]) dataset = datasets.ImageFolder(root='path_to_dataset', transform=transform) dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True) ``` #### 构建 Vim 模型架构 创建个基于 Vim 的神经网络结构,此过程涉及到定义层、激活函数和其他必要的组件。考虑到 Vim 特有的双向Mamba块设计,应特别注意这些模块的具体配置。 ```python import torch.nn as nn class VimModel(nn.Module): def __init__(self, num_classes=1000): super(VimModel, self).__init__() # 定义位置嵌入和双向状态空间模型压缩部分 self.position_embedding = ... # 添加适当的位置编码逻辑 self.bidirectional_ssm = ... # 初始化双向状态空间模型 # 分类头 self.classifier_head = nn.Linear(in_features=..., out_features=num_classes) def forward(self, x): positions = self.position_embedding(x.size(0)) features = self.bidirectional_ssm(x + positions) logits = self.classifier_head(features.mean(dim=(2, 3))) # 假设是二维卷积输出 return logits ``` #### 训练与评估 完成上述准备工作之后,就可以按照常规流程训练模型并对测试集做预测分析了。这里省略具体的优化器设置、损失函数选择等细节,因为它们取决于实际应用场景和个人偏好。 ```python model = VimModel(num_classes=len(dataset.classes)).cuda() criterion = nn.CrossEntropyLoss().cuda() for epoch in range(num_epochs): for inputs, labels in dataloader: optimizer.zero_grad() outputs = model(inputs.cuda()) loss = criterion(outputs, labels.cuda()) loss.backward() optimizer.step() ``` 通过这种方式,可以充分利用 Vim 提供的强大功能来进行高质量的图像分类工作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值