从暑假开始阅读论文的,大多数是和医学图像分割相关的,在这里做一个记录和总结。

CE-Net(CVPR)

[1903.02740] CE-Net: Context Encoder Network for 2D Medical Image Segmentation (arxiv.org)

网络框架

SLEX-Net(JBHI)

Hematoma Expansion Context Guided Intracranial Hemorrhage Segmentation and Uncertainty Estimation | IEEE Journals & Magazine | IEEE Xplore

UNet++

[1807.10165] UNet++: A Nested U-Net Architecture for Medical Image Segmentation (arxiv.org)

TransUNet(CVPR)

[2102.04306v1] TransUNet: Transformers Make Strong Encoders for Medical Image Segmentation (arxiv.org)

网络框架

特点:

  1. CNN和transformer 相结合,其中,先采用CNN进行卷积操作,得到图像浅层的特征,再输入到transformer模块中,transformer 模块(待补充,这部分存疑)

S4CVnet(ECCV)

When CNN Meet with ViT: Towards Semi-supervised Learning for Multi-class Medical Image Semantic Segmentation | SpringerLink

AAS-DCL-FSS(ECCV 小样本)

地址:Dual Contrastive Learning with Anatomical Auxiliary Supervision for Few-Shot Medical Image Segmentation | SpringerLink

code: https://github.com/cvszusparkle/AAS-DCL_FSS

网络框架

特点

  1. 采用小样本学习
  2. 提出双对比学习分割模型(原型和上下文两个角度),利用没有目标类的医学图像的解剖辅助信息来提高特征的可辨别性和数据的利用率
  3. 设计约束迭代预测模型来优化查询图像的分割

主要内容

对于无标签的图像的处理

大概过程:从所有的无标签的图像中随机抽取K个图像,对于挑选的每一个图像,从它们各自对应的超像素中选一个类别进行二值化作为它们的伪标签;同时,提取这K个图像的特征,最后将特征信息和伪标签一起送入到对比学习模块。

Encoder

image-20231121184433841

输入:一个支持查询对,支持集是图像和标签,查询集是图像;

如上图所示,有五层卷积层(提取不同尺度的特征),其中前四层的具体模块如下:

image-20231121185650736

最后一层相比于前四层,少了重复的一段

image-20231121185919786

在查询分支,还增有sSE模块,首先,叠加支持特征中的各个特征图的重要信息,得到一个挤压过的特征图,再通过sigmoid激活,得到的权重矩阵与查询特征进行点乘,最后得到了校准过的查询特征,具体内容可以查看这篇博客:[【精选】小样本医学图像]‘Squeeze & Excite’ Guided Few-Shot Segmentation of Volumetric Images_医学小样本三维分割_XL_Dylan的博客-CSDN博客

image-20231121191540524

双支路对比学习

image-20231121200052095

双对比学习模块

b:语义对比学习

c:事先嵌入

d:原型对比学习

语义对比学习

image-20231121200440391

对于无标签的切片特征图和支持集的切片特征图处理过程:首先通过ssE模块,使不同通道上的信息进行交互,再通过平均池化和重塑,最终得到无标签切片和支持集的向量。

而对于查询集,则比上面二者多了一步PE模块。最终得到的是查询集的特征向量,通过Info NCE loss,要使得查询向量与支持向量尽可能相似,与无标签的向量尽可能不相似。损失函数公式如下:

image-20231122133146643

事先嵌入(PE)模块

M:将支持特征与查询特征中的前景特征通过余弦相似度算法得到二者之间的相似度再加上归一化操作生成的相似度矩阵(即计算查询特征与支持特征标记区域的相似度)

P^s:聚合支持特征图前景区域和背景区域的信息。

最后将M、扩展过的p^s和查询特征f^q进行连接再卷积,得到前景信息增强过的查询特征f^q`

原型对比学习

image-20231122135319262

有两个部分,cpcl &ppcl

Class-level Prototypical Contrastive Learning

与PE模块中得到P^s的步骤相同,聚合支持集和无标签集各自的前后区域信息,然后查询集通过PE模块加强前景信息后,通过自适应平均池化调整好形状,再进行Info NCE loss 计算,其中支持集是正样本,无标签集是父样本。

image-20231122140944889

Patch-level Prototypical Contrastive Learning

提出PPCL有两个原因:一是由于MAP获得的类级原型会过滤掉目标类周围的其他背景信息,这些背景信息可能被用作负样本来增强目标类周围语义的判别性,二因为对比学习在很大程度上需要大量的有效学习负样本,只考虑类级原型是不够的。

没读懂论文这一部分的具体实现。大概意思是通过设置阈值来划分支持集,将低于阈值的支持集的patch 聚合的特征向量作为负样本?image-20231122143827609

Decoder

image-20231122151434350

Constrained Iterative Prediction

image-20231122160202560

优化分割结果

大致过程:首先利用通用分类器的结果作为初始预测掩码,将其与解码器尾部的查询特征融合并发送到PE模块,在PE模块后通过一系列卷积运算获得新的分割结果。PE的应用是利用支持特征的引导信息来促进预测查询掩码的融合。新的查询预测将通过SCC中的以下约束来确定更新。

代码目前还没有公布训练和测试代码,只公布了模型代码

CANet(CVPR 2019 小样本)

[1903.02351] CANet: Class-Agnostic Segmentation Networks with Iterative Refinement and Attentive Few-Shot Learning (arxiv.org)

代码:https://github.com/icoz69/CaNet

网络框架

image-20231124103524420

Dense Comparison Module

由两部分组成:表征特征提取部分(Feature Extractor)和特征对比部分(Dense Comparision)

Feature Extractor

目的:从CNN中获取不同层次的特征表示

使用ResNet-50 作为特征提取器的backbone,backbone 在Imagenet 上进行预训练

通常,较低层的特征信息与浅层的信息相关,比如边缘和颜色,对于较高层的特征则与对象及的概率相关,比如对象类别。

模型需要适应未知的类,模型在训练过程中可能学习不到未知类别对应的特征,但在中间层的特征中,这些特征可能构成未知类的部分特征。

ResNet 分为四个块,对应四个不同的表示级别,模型选择由block2和block3生成的特征进行特征比较,舍去block3 之后的模块。在block2后的层使用空洞卷积来保持特征图的空间分辨率。

支持分支和查询分支都使用相同的特征提取器,在训练过程中,将ResNet 的权重保持固定

Dense Comparision

使用前景区域的全局平均池化特征映射压缩为特征向量。从支持集获得全局特征向量后,将该向量与查询分支生成的特征图中所有的空间位置连接起来(是为了进行对比),然后通过卷积块来进行对比

Iterative Optimization Module

同一类别内的外观会存在差异,模型无法准确分割图像中的整个物体。最初始的预测是关于物体大致位置的重要线索,所以提出一个迭代优化模块,对预测结果进行迭代优化。

模块的输入是密集比较模块生成的特征图和上次迭代的预测掩码,通过拼接的方式会导致特征分布不匹配(因为第一次的时候没有预测掩码),采取的是采用残差形式的合并。

image-20231124112054813

其中,x为密集比较模块的输出特征;yt-1 为上一步迭代得到的预测掩码,Mt 为残差块的输出。使用ASPP(空间金字塔模块) 来捕获多尺度信息

Attention Mechanism for k-shot Segmentation