【论文阅读】Mutual consistency learning for semi-supervised medical image segmentation(MedIA 2022)

本文提出一种基于相互一致性学习的半监督医学图像分割方法,旨在提高模型在标注数据有限情况下的分割准确性。该方法通过使用共享编码器和多个不同解码器来识别具有挑战性的区域,并采用相互一致性约束确保这些区域的预测结果一致性。

【论文阅读】Mutual consistency learning for semi-supervised medical image segmentation(MedIA 2022)

基于相互一致性学习的半监督医学图像分割

(一)为什么要做这个研究

现在的半监督学习分为两类:基于一致性和熵最小化。本文同时运用了这两个方法。
现在的模型没有对缺点进行充分处理。对只有少量标注的深度学习模型进行观察,发现这些模型趋势是:在ambiguous的区域,容易产生高不确定性和错误的输出。解决这个问题能够使得半监督训练更有效。
作者做了观察实验,发现(1)高不确定性的地方出现在有挑战性的区域,如交界处,整体一般能分割的很好,数据越多,重点改进的地方只有高不确定区域。(2)数据越多,不确定高的区域越少。

(二)本文解决什么问题

更多的关注无标签数据的challenging regions,预测uncertainty,利用不确定性,解决ambiguous,减少不确定性。
蒙特卡洛需要多次前向传播,而本方法不需要。

(三)怎么做?

MCNet(1)一个共享encoder和多个轻微不同的decoder(不同的上采样策略),不同的decoder决定模型的不确定性,确定hard regions。

  1. transposed conv 2) linear interpolation 3) nearest interpolation
    (2)mutual consistency constraint相互一致性约束
    在一个decoder的概率输出和其他decoder的soft伪标签。让模型产在这些有挑战的区域产生一致的结果。
    soft pseudo labels通过sharpening function转化。从伪标签中学习的能够产生熵低的结果,
    p∗(ypred∗∣x;θ)=p(ypred∣x;θ)(1/T)p(ypred∣x;θ)(1/T)+(1−p(ypred∣x;θ))(1/T)p^*(y^*_{pred}|x;\theta)=\frac{p(y_{pred}|x;\theta)^{(1/T)}}{p(y_{pred}|x;\theta)^{(1/T)}+(1-p(y_{pred}|x;\theta))^{(1/T)}}p(ypredx;θ)=p(ypredx;θ)(1/T)+(1p(ypredx;θ))(1/T)p(ypredx;θ)(1/T)T为超参数,控制sharpening程度,但是同样也会带来噪声和干扰。
    Loss=λ×∑i=1nLseg(p(ypred∣xl;θsubi),yl)+β×LmcLoss=\lambda\times\sum^{n}_{i=1}L_{seg}(p(y_{pred}|x_l;\theta^i_{sub}),y_l)+\beta\times L_{mc}Loss=λ×i=1nLseg(p(ypredxlθsubi),yl)+β×Lmc有监督部分是dice无监督是MSE,无监督运用在有标签数据和无标签数据上。

(四)其他

1)dataset:LA,ACDC,pancreas-CT

2)本文是会议的extention,多增加了一个deccoder(上采样用了nearest interpolating);多用了个Pancreas 和ACDC数据集;多比较了五个方法。

在半监督医学图像分割任务中,**Aggregated Mutual Learning between CNN and Transformer** 是一种结合卷积神经网络(CNN)和Transformer架构的新型学习策略。该方法利用两种模型在图像特征提取上的互补优势,通过互学习机制,在仅有少量标注数据的情况下,实现对医学图像的高效和高精度分割。 ### 方法概述 该方法的核心思想是通过两个模型(CNN和Transformer)相互学习,从而提升分割性能。CNN擅长提取局部特征,具有较强的平移不变性,而Transformer则通过自注意力机制捕捉长距离依赖关系,能够更好地建模全局结构信息。两者的结合可以弥补彼此在局部与全局特征建模上的不足,从而提升整体性能。 ### 网络结构设计 - **双分支架构**:构建两个独立的分支,一个基于CNN,另一个基于Transformer。 - **共享特征空间**:通过设计共享的特征表示空间,使得两个模型能够相互理解对方的输出[^1]。 - **聚合机制**:引入特征聚合模块,将两个模型的输出进行融合,以增强分割结果的鲁棒性。 ### 互学习机制 - **知识蒸馏策略**:使用一个模型的输出作为“伪标签”来指导另一个模型的训练,从而实现模型间的知识迁移。 - **一致性正则化**:在未标注数据上,强制两个模型对输入图像的变换版本输出一致的分割结果,以提升模型的泛化能力[^2]。 ### 半监督训练策略 - **伪标签生成**:利用模型在少量标注数据上的初始训练结果,为未标注数据生成伪标签。 - **迭代优化**:在训练过程中不断更新伪标签,逐步提升模型对未标注数据的利用效率。 - **数据增强**:在训练过程中应用多种数据增强技术,如旋转、翻转、缩放等,以提升模型的鲁棒性和泛化能力[^2]。 ### 损失函数设计 - **监督损失**:对于标注数据,使用Dice Loss或交叉熵损失来优化模型。 - **一致性损失**:对于未标注数据,使用KL散度或MSE损失来约束两个模型输出的一致性。 - **总损失函数**:将监督损失和一致性损失加权求和,作为最终的优化目标。 ### 实验结果 实验表明,该方法在多个医学图像分割任务中均取得了优于单一模型的性能。特别是在肝脏病变分割任务中,结合CNN和Transformer的互学习策略在Dice系数和IoU等指标上均有显著提升。 ### 示例代码 以下是一个简化的模型结构示例,用于说明如何实现两个模型之间的互学习: ```python class MutualLearningModel(nn.Module): def __init__(self, cnn_model, transformer_model): super(MutualLearningModel, self).__init__() self.cnn = cnn_model self.transformer = transformer_model def forward(self, x): cnn_out = self.cnn(x) transformer_out = self.transformer(x) return cnn_out, transformer_out # 定义损失函数 def mutual_learning_loss(cnn_out, transformer_out, labels, unlabeled=False): if unlabeled: # 一致性损失 loss = F.kl_div(F.log_softmax(cnn_out, dim=1), F.softmax(transformer_out.detach(), dim=1)) else: # 监督损失 loss = F.cross_entropy(cnn_out, labels) + F.cross_entropy(transformer_out, labels) return loss ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值