经典半监督医学图形分割论文分享~ BCP CPS

经典半监督医学图形分割论文分享~ BCP CPS

1、背景介绍

半监督医学图像分割是一种在医学图像处理领域中使用的方法,它结合了少量标注数据和大量未标注数据进行图像分割。传统的监督学习方法依赖大量的标注数据来训练模型,而在医学图像处理中,获取标注数据通常非常耗时且昂贵,因此半监督学习在这个领域变得尤为重要。

在半监督医学图像分割中,模型通常使用少量标注的医学图像进行初步训练,然后利用大量未标注的医学图像通过自监督、生成对抗网络(GAN)、一致性正则化或伪标签等技术进一步优化模型。这种方法既能提高分割的准确性,又能有效利用未标注数据,从而减少对大量标注数据的依赖。

2、模型分享

2.1 BCP

Bidirectional Copy-Paste for Semi-Supervised Medical Image Segmentation

2.1.1 论文地址

论文地址:https://arxiv.org/abs/2305.00673

模型地址:https://github.com/DeepMed-Lab-ECNU/BCP

2.1.2 创新点

双向CutMix:BCP模型提出一种直接的方法来缓解标记数据和未标记数据分布之间存在经验性不匹配问题,即简单的在Mean Teacher架构中,双向地复制粘贴标记数据和未标记数据。具体来说,BCP将一个标记图像(前景)中随机裁剪一部分,粘贴到未标记图像(背景)上,同时也将标记未标记图像(前景)粘贴到一个标记图像(背景)上。双向的复制粘贴鼓励未标记数据从标记数据中学习全面的共同语义,对于标记数据和未标记数据的一致性学习可以大大减少经验分布差距。

2.1.3 方法介绍

在这里插入图片描述

1、初始分割模型训练

  • 首先,使用标注数据训练一个初始的分割模型。该模型可以采用常见的分割网络架构,如U-Net或其变体。
  • 在这个阶段,模型仅基于标注数据进行训练,以学习基本的分割特征。

2、Bidirectional Copy-Paste策略:

  • 该策略包括两个主要步骤:正向复制粘贴反向复制粘贴
  • 正向复制粘贴
    • 从标注图像中选择一个感兴趣的区域(如肝脏或肿瘤),并将其复制到未标注图像的相应位置。
    • 这个复制的区域在未标注图像中保留其原始标签,而未标注图像的其他部分仍保持未标注状态。
    • 生成的新图像(带部分标注)被用来进一步训练分割模型。
  • 反向复制粘贴
    • 反向步骤与正向类似,但这次是从未标注图像中选择一个区域,复制并粘贴到标注图像上。
    • 生成的新图像同样用于训练,目标是利用未标注数据增强模型的学习效果。

3、一致性正则化:

  • 在训练过程中,论文使用了一致性正则化(consistency regularization)策略,引用均值教师模型的策略采用师生模型进行一致化处理。
  • 这一策略的目的是确保模型在面对原始图像和经过Bidirectional Copy-Paste增强的图像时,其预测结果的一致性。这种正则化有助于提高模型对不同数据分布的鲁棒性。

4、损失函数:

  • 训练过程中,使用标准的交叉熵损失函数处理标注数据。
  • 对于生成的半标注数据,损失函数会考虑标注部分和未标注部分的差异,并通过一致性正则化减少预测不确定性。

5、模型迭代优化:

  • 随着模型的训练,Bidirectional Copy-Paste生成的数据不断丰富,模型的性能逐步提升。
  • 最终,模型在标注数据和增强数据上都能表现出良好的分割能力。
2.1.4 代码复现

**数据集介绍:**LITS数据集(Liver Tumor Segmentation Dataset)是一个专门用于医学图像处理和分析的公开数据集,主要用于肝脏和肝肿瘤的分割任务。该数据集是在2017年国际医学图像计算与计算机辅助干预大会(MICCAI)的肝脏肿瘤分割挑战赛(LITS Challenge)中发布的,旨在推动医学图像分割技术的发展。

ITS数据集包含了从临床CT扫描中提取的图像数据,这些数据包括:

  1. CT扫描图像:包含131个病人的腹部CT扫描图像。每个病人的扫描图像包含多个切片,覆盖了从上腹部到盆腔的区域。
  2. 标注数据:包括由专业放射科医生标注的肝脏和肝肿瘤的掩码(mask)。这些掩码用于训练分割模型,帮助模型区分肝脏和肝脏内的病变区域(如肿瘤)

BCP在有15%的有监督数据集下的实验结果如下表所示:

在这里插入图片描述

2.1.5 论文总结

**优点:**论文揭示了在标记数据和未标记数据之间的双向复制粘贴的简单机制的实验效果是足够好的,简单且有效,这种方法通过双向复制粘贴标签和未标签数据,鼓励未标签数据从标签数据中学习全面的共同语义,解决标签和未标签数据分布的不匹配问题,大大的减少了经验分布差距。

**不足:**该方法依赖于有效地从已标注和未标注数据中复制和粘贴信息,这可能在某些情况下具有挑战性,例如当图像具有复杂或不规则的结构时。此外,该方法可能需要大量的计算资源来处理大量的医学图像数据。

2.2 CPS

Semi-Supervised Semantic Segmentation with Cross Pseudo Supervision

2.2.1 论文地址

论文地址:https://arxiv.org/abs/2106.01226

代码地址:https://github.com/charlesCXK/TorchSemiSeg

2.2.2 创新点

CPS模型提出了一种新的一致性正则化方法,称为交叉伪监督。模型的方法是在两个具有不同初始化分割网络上施加一致性,对于同一输入图像,一个分割网络输出伪标签用于监督另一个分割网络,并反之亦然。以此来解决少量标记数据和大量未标记数据的经验分布不匹配的问题。

2.2.3 方法介绍

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

CPS通过训练两个独立的分割模型,并利用每个模型的预测结果作为伪标签来监督另一个模型的训练。具体来说,两个模型分别对相同的未标注图像生成伪标签,然后互相监督彼此的学习过程,采用交叉监督的损失函数计算,以增强模型的鲁棒性和分割性能。这种交叉伪监督策略有效利用了未标注数据,提高了半监督语义分割的准确性。

2.2.4 代码复现

**数据集介绍:**LITS数据集(Liver Tumor Segmentation Dataset)是一个专门用于医学图像处理和分析的公开数据集,主要用于肝脏和肝肿瘤的分割任务。该数据集是在2017年国际医学图像计算与计算机辅助干预大会(MICCAI)的肝脏肿瘤分割挑战赛(LITS Challenge)中发布的,旨在推动医学图像分割技术的发展。

ITS数据集包含了从临床CT扫描中提取的图像数据,这些数据包括:

  1. CT扫描图像:包含131个病人的腹部CT扫描图像。每个病人的扫描图像包含多个切片,覆盖了从上腹部到盆腔的区域。
  2. 标注数据:包括由专业放射科医生标注的肝脏和肝肿瘤的掩码(mask)。这些掩码用于训练分割模型,帮助模型区分肝脏和肝脏内的病变区域(如肿瘤)

CPS在有15%的有监督数据集下的实验结果如下表所示:

在这里插入图片描述

2.2.5 论文总结

优势:CPS一致性有两个作用,一方面鼓励两个扰动网络对于同一数据图像的预测之间有高度相似性,另一方面交叉伪监督分割变得稳定且比仅在标记数据上进行正常监督训练的结果更准确,同时通过使用带有伪标记数据来扩展训练网络。

不足:同时训练两个网络,会增加网络的训练负担,需要额外的计算资源。

### 半监督学习中的BCP定义、方法与实现 #### BCP的定义 双向复制粘贴(Bidirectional Copy-Paste, BCP)是一种用于半监督医学图像分割的技术。该技术通过利用未标注数据和伪标签来增强模型的学习能力[^2]。具体而言,BCP允许在已标注样本和未标注样本之间进行特征交互,从而提升模型对复杂结构的理解。 #### 方法概述 BCP的核心思想是在训练过程中引入一种新的数据增广方式——即在不同样本间复制并粘贴目标区域。这种方法不仅能够增加数据多样性,还能帮助模型更好地理解对象之间的关系。以下是其主要机制: - **跨模态信息传递**:通过对齐已标注数据和未标注数据的空间分布,BCP能够在两者之间建立联系。这种联系有助于生成更可靠的伪标签。 - **双向操作**:不同于单向的数据增广策略,BCP支持两个方向上的复制粘贴操作。一方面是从标记良好的区域到模糊区域;另一方面则是从未标注但具有高置信度预测的部分反哺至其他部分。 #### 技术实现细节 为了有效实施BCP算法,在实际编码层面需注意以下几个方面: 1. **伪标签质量控制** 高质量的伪标签对于整个框架的成功至关重要。通常采用阈值过滤法去除不确定性强的目标像素点,并仅保留那些由当前最佳模型所认定为高度可信的结果作为最终输入给后续网络层处理。 2. **一致性正则化** 结合多种形式的一致性约束可以进一步稳定训练过程。例如,可以通过应用随机变换(如旋转、缩放等),强制要求经过这些变化后的输出仍保持一致,以此鼓励模型学到更加鲁棒的表示特性。 下面给出一段简单的Python代码片段展示如何初步构建这样一个包含基本功能模块的架构: ```python import torch.nn as nn from torchvision import transforms class BCPLoss(nn.Module): def __init__(self): super(BCPLoss, self).__init__() def forward(self, pred_labeled, pred_unlabeled, pseudo_labels): loss_consistency = (pred_unlabeled - pseudo_labels).abs().mean() # Add more terms here like classification losses etc. total_loss = loss_consistency return total_loss def apply_transforms(image_tensor): transform_list = [ transforms.RandomHorizontalFlip(), transforms.ColorJitter(brightness=0.2), # More augmentations... ] composed_transformation = transforms.Compose(transform_list) transformed_image = composed_transformation(image_tensor) return transformed_image ``` 上述代码展示了自定义损失函数类`BCPLoss`以及一些可能应用于图片张量上的转换逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值