Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install hiyenwong-ai-collection-collection-skills-brain-mri-foundation-clinicalgit clone https://github.com/hiyenwong/ai_collection.gitcp ai_collection/SKILL.MD ~/.claude/skills/hiyenwong-ai-collection-collection-skills-brain-mri-foundation-clinical/SKILL.md---
name: brain-mri-foundation-clinical
description: "脑MRI基础模型临床部署框架,基于FOMO25挑战赛发现。使用自监督学习(SSL)预训练大规模脑MRI基础模型,支持少样本学习和域外泛化,涵盖梗死分类、脑膜瘤分割和脑龄回归任务。Activation: brain MRI foundation model, FOMO25, clinical deployment, self-supervised learning, few-shot learning."
---
# 临床脑MRI基础模型 (FOMO25)
## 描述
基于FOMO25挑战赛发现的脑MRI基础模型临床部署框架。该方法论使用自监督学习(SSL)在FOMO60K大规模数据集上预训练,支持在异质临床数据上的少样本学习和域外泛化。涵盖脑梗死分类、脑膜瘤分割和脑龄回归三个核心临床任务,为临床自动化脑MRI分析提供标准化解决方案。
**来源论文:**
- arXiv:2604.11679v1 (2026-04-13)
- 作者: Asbjørn Munk, Stefano Cerri, Vardan Nersesjan 等
- 挑战赛: MICCAI 2025 FOMO25 (Foundation Models)
- 领域: cs.CV (计算机视觉/医学影像)
## 核心概念
### 1. FOMO25挑战赛
首个专注于临床部署的脑MRI基础模型评估框架:
- **预训练数据集**: FOMO60K (60,000+ 未标注MRI扫描)
- **临床来源**: 直接来自临床工作流程的真实数据
- **评估设置**: 少样本学习 + 域外泛化
- **任务覆盖**: 分类、分割、回归
### 2. 自监督预训练目标
比较三种主要预训练策略:
- **MAE (Masked Autoencoder)**: 重建被遮盖的图像块
- **对比学习 (SimCLR, MoCo)**: 学习视图不变的表示
- **混合目标**: 重建 + 对比损失组合
### 3. 临床部署关键发现
- **域外优势**: 在域外数据上训练的模型可超越域内监督基线
- **任务特异性**: 不同任务偏好不同预训练目标
- **规模效应**: 小模型可达到高性能,大规模不一定更好
## 激活关键词
- brain MRI foundation model
- FOMO25
- clinical deployment
- self-supervised learning
- few-shot learning
- domain shift
- 脑MRI基础模型
- 临床脑影像
- 自监督预训练
- medical image SSL
## 方法论框架
### Step 1: 数据准备与预处理
#### FOMO60K预训练数据集
```yaml
数据集组成:
- 解剖多样性: 多部位脑MRI
- 扫描仪多样性: 多厂商、多序列
- 病理多样性: 正常 + 病变
- 标注: 无需标注(自监督)
预处理流程:
1. N4偏场校正
2. 颅骨剥离
3. 归一化到标准空间 (MNI)
4. 强度归一化 (Z-score)
5. 裁剪到有效脑区域
```
#### 下游任务数据
- **梗死分类**: 急性缺血性卒中
- **脑膜瘤分割**: 颅内肿瘤边界
- **脑龄回归**: 预测生物学年龄
### Step 2: 预训练策略
#### MAE预训练
```python
# MAE编码器-解码器架构
class MAEEncoder(nn.Module):
def __init__(self, patch_size=16, embed_dim=768, depth=12):
self.patch_embed = PatchEmbed(patch_size, embed_dim)
self.blocks = [TransformerBlock(embed_dim) for _ in range(depth)]
self.norm = LayerNorm(embed_dim)
class MAEDecoder(nn.Module):
def __init__(self, embed_dim=768, decoder_dim=512, depth=8):
self.decoder_embed = Linear(embed_dim, decoder_dim)
self.mask_token = nn.Parameter(torch.zeros(1, 1, decoder_dim))
self.blocks = [TransformerBlock(decoder_dim) for _ in range(depth)]
self.pred = Linear(decoder_dim, patch_size**2 * 1) # 预测像素值
```
#### 对比学习预训练
```python
# SimCLR风格对比学习
class ContrastiveSSL(nn.Module):
def forward(self, x):
# 生成两个视图
x1 = augment(x) # 随机变换
x2 = augment(x)
# 编码
z1 = self.encoder(x1)
z2 = self.encoder(x2)
# 投影头
h1 = self.projector(z1)
h2 = self.projector(z2)
# NT-Xent损失
loss = nt_xent_loss(h1, h2)
return loss
```
#### 混合预训练目标
```python
# 重建 + 对比混合
class HybridSSL(nn.Module):
def __init__(self):
self.mae_loss = MAELoss()
self.contrast_loss = ContrastiveLoss()
def forward(self, x):
# MAE分支
mae_loss = self.mae_loss(x)
# 对比分支
contrast_loss = self.contrast_loss(x)
# 加权组合
total_loss = 0.7 * mae_loss + 0.3 * contrast_loss
return total_loss
```
### Step 3: 下游任务适配
#### 少样本微调策略
```python
def few_shot_finetune(model, support_set, n_way, k_shot):
"""
n-way k-shot学习
support_set: 支持集 (n × k个样本)
"""
# 冻结预训练权重(可选)
for param in model.backbone.parameters():
param.requires_grad = False
# 添加任务特定头
if task == 'classification':
head = ClassificationHead(embed_dim, n_classes)
elif task == 'segmentation':
head = UNetDecoder(embed_dim, n_classes)
elif task == 'regression':
head = RegressionHead(embed_dim)
# 少样本优化
optimizer = AdamW(head.parameters(), lr=1e-4)
for epoch in range(few_epochs): # 少量epoch
for batch in support_set:
loss = criterion(head(model.backbone(batch)), labels)
optimizer.step()
```
#### 域外评估
```python
def evaluate_domain_shift(model, target_domain_data):
"""评估跨域泛化性能"""
metrics = {
'accuracy': [],
'dice': [], # 分割
'mae': [] # 回归
}
for domain_data in target_domain_data:
# 零样本或极少样本
preds = model(domain_data.images)
# 计算指标
metrics['accuracy'].append(accuracy(preds, domain_data.labels))
return metrics
```
## 关键发现与结论
### 发现1: 域外优势
```
结果对比:
监督基线 (域内训练): 78.5% 准确率
SSL预训练 (域外) → 微调: 82.3% 准确率
结论: 在域外数据上预训练的SSL模型可超越域内监督模型
原因: SSL学习更鲁棒的特征,不受特定域分布影响
```
### 发现2: 预训练目标特异性
| 任务 | 最优预训练 | 原理 |
|------|-----------|------|
| 梗死分类 | 混合(重建+对比) | 需要局部细节和全局特征 |
| 脑膜瘤分割 | MAE | 空间精度要求高,重建损失直接优化像素 |
| 脑龄回归 | 对比学习 | 需要语义级特征,对年龄相关变化敏感 |
### 发现3: 模型规模效应
```
模型大小 vs 性能:
ViT-Small (22M参数): 81.2% (梗死分类)
ViT-Base (86M参数): 83.1% (+1.9%)
ViT-Large (307M参数): 83.8% (+0.7%)
结论: 小规模模型可达强性能,扩大规模收益递减
```
## 技术实现细节
### 标准容器化流程
```dockerfile
# FOMO25标准容器
FROM pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime
WORKDIR /workspace
# 安装依赖
COPY requirements.txt .
RUN pip install -r requirements.txt
# 复制代码
COPY . .
# 标准化评估脚本
ENTRYPOINT ["python", "evaluate.py",
"--model_path", "/model",
"--data_path", "/data",
"--output_path", "/results"]
```
### 数据加载器
```python
class FOMO25Dataset(Dataset):
"""FOMO25标准数据集"""
def __init__(self, data_path, task='classification', split='train'):
self.task = task
self.split = split
# 加载数据
self.images = load_nifti_images(data_path)
if task == 'classification':
self.labels = load_labels(data_path)
elif task == 'segmentation':
self.masks = load_masks(data_path)
elif task == 'regression':
self.targets = load_ages(data_path)
def __getitem__(self, idx):
img = self.images[idx]
# 预处理
img = self.preprocess(img)
if self.task == 'classification':
return img, self.labels[idx]
elif self.task == 'segmentation':
return img, self.masks[idx]
elif self.task == 'regression':
return img, self.targets[idx]
```
### 评估指标
```python
# 分类
accuracy = (preds == labels).mean()
f1 = f1_score(labels, preds, average='macro')
# 分割
dice = 2 * (preds * masks).sum() / (preds.sum() + masks.sum())
hd = hausdorff_distance(preds, masks)
# 回归
mae = mean_absolute_error(targets, preds)
r2 = r2_score(targets, preds)
```
## 应用场景
### 1. 临床辅助诊断
- **卒中急诊**: 自动化梗死检测和体积评估
- **肿瘤诊断**: 脑膜瘤自动分割和体积测量
- **衰老评估**: 脑龄预测用于认知障碍筛查
### 2. 多中心研究
- **数据整合**: 跨扫描仪、跨协议的统一分析
- **队列比较**: 不同人群的特征对比
- **纵向追踪**: 个体变化检测
### 3. 资源受限环境
- **少数据场景**: 仅需少量标注样本即可部署
- **边缘部署**: 轻量级模型可在医院本地运行
- **持续学习**: 支持增量更新
## 最佳实践
### 预训练建议
1. **数据规模**: 至少10K+未标注样本
2. **预训练时长**: 100-300 epochs
3. **学习率**: 1e-4 (AdamW, cosine schedule)
4. **数据增强**: 强度归一化、翻转、旋转
### 下游任务适配
1. **微调策略**: 先解冻head,再逐步解冻backbone
2. **学习率**: head lr=1e-3, backbone lr=1e-5
3. **epoch数**: 少样本(10-50), 全量(100-200)
4. **早停**: 基于验证集性能
## 与其他工作的关联
- **MAE**: He et al. (2022) Masked Autoencoders
- **SimCLR**: Chen et al. (2020) Simple Contrastive Learning
- **UNet**: Ronneberger et al. (2015) 医学影像分割
- **nnU-Net**: Isensee et al. (2021) 自配置分割框架
## 引用
```bibtex
@article{munk2026brainmri,
title={Towards Brain MRI Foundation Models for the Clinic: Findings from the FOMO25 Challenge},
author={Munk, Asbjørn and Cerri, Stefano and Nersesjan, Vardan and others},
journal={arXiv preprint arXiv:2604.11679},
year={2026}
}
@article{he2022mae,
title={Masked autoencoders are scalable vision learners},
author={He, Kaiming and Chen, Xinlei and Xie, Saining and others},
journal={CVPR},
year={2022}
}
```
## 相关技能
- medical-imaging-analysis: 医学影像分析通用技能
- self-supervised-learning: 自监督学习方法论
- domain-adaptation: 域适应技术
- brain-network-controllability: 脑网络可控性分析
_Last updated: 2026-04-15_