【半监督学习】CNN与Transformer的结合

news2024/12/23 22:44:41

本文介绍了几篇结合使用CNN和Transformer进行半监督学习的论文,CNN&Trans(MIDL2022),Semi-ViT(ECCV2022),Semiformer(ECCV2022).

Semi-Supervised Medical Image Segmentation via Cross Teaching between CNN and Transformer, MIDL2022

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

代码:GitHub - HiLab-git/SSL4MIS: Semi Supervised Learning for Medical Image Segmentation, a collection of literature reviews and code implementations.

论文提出一种简单而有效的CNN和Transformer之间的正则化方案,称为CNN和Transformer之间的交叉教学。该框架以标记图像和未标记图像作为输入,每个输入图像分别通过CNN和Transformer来产生预测。对于标记的数据,CNN和transformer分别由真实标签进行监督。使用由CNN/Transformer生成的未标记图像的预测来分别更新Transformer/CNN的参数。

所提出的优点有两个方面:

  • 交叉教学是隐式一致性正则化,它可以产生比显式一致性规则化更稳定、更准确的伪标签。显式一致性正则化强制最小化不同网络预测的差异,同时对其进行优化,这可能导致不同网络的预测是相同的,但预测是错误的。
  • 该框架得益于两种不同的学习范式,CNN专注于局部信息,而Transformer则对远程关系进行建模,因此交叉教学可以帮助同时学习具有这两种属性的统一分割器。

主要贡献有两方面:

  • 提出了一种简单而有效的半监督医学图像分割交叉教学方案。这个当利用CNN和Transformer的优势相互补偿以获得更好的性能时,所提出的方案隐含地鼓励了不同网络之间的一致性;
  • 据我们所知,这是首次尝试使用Transformer来执行半监督医学图像分割任务,并证明它可以在公共基准上优于现有的八种半监督方法。

有监督分支,使用真实标签监督CNN流和Transformer流的预测结果。无监督分支,CNN流和Transformer流的预测结果互为伪标签,交叉监督。

交叉教学的最初想法受到了现有三种方式的启发:深度共同训练、共同教学和交叉伪监督。

  • 深度协同训练训练具有不同视图输入的多个深度神经网络,并鼓励半监督学习的视图一致性。
  • 协同教学同时训练两个深度神经网络,并让它们在一个小批量中相互教学,以实现噪声鲁棒学习。
  • 交叉伪监督训练具有相同架构和不同初始化的两个网络,以在小批量中相互教学,用于半监督学习。

所有这些方法都引入了扰动,并鼓励预测在训练阶段保持一致。不同之处在于,深度协同训练使用输入级扰动(多视图),协同教学使用监督级扰动(噪声标签),交叉伪监督引入网络架构级别的扰动。

本文介绍了学习范式层面和输出层面的扰动。

 与一致性正则化损失不同,交叉教学损失是一个双向损失函数,一个流从CNN到Transformer,另一个流是Transformer到CNN,没有明确的约束来强制它们的预测变得相似。框架中,转换器也只是用于补充训练,而不是用于产生最终预测。

Semi-supervised Vision Transformers at Scale, ECCV2022

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

代码: GitHub - amazon-science/semi-vit: PyTorch implementation of Semi-supervised Vision Transformers

论文研究了视觉Transformer (ViT) 的半监督学习 (SSL)。

提出了一种新的SSL流程:首先是无监督/自监督的预训练,然后是有监督的微调,最后是半监督的微调。在半监督微调阶段,采用指数移动平均(EMA)-Teacher框架,而不是流行的FixMatch框架,因为前者更稳定,并且能为半监督Vision Transformer提供更高的精度。此外,提出了一种Probabilistic Pseudo Mixup机制,用于interpolate未标记样本及其伪标签,以改进正则化,这对于训练具有弱归纳偏置的ViT非常重要。本文提出的方法叫Semi-ViT。

图1:与其他半监督方法比,Semi-ViT取得更优性能;与全监督方法比,Semi-ViT使用少量标签取得类似性能。

 图2:本文模型与FixMatch的差异。半监督微调阶段,采用指数移动平均 (EMA)-Teacher 框架代替流行的 FixMatch,因为前者更稳定,并且为半监督视觉Transformer提供更高的精度。

图3:一种概率伪混合机制来插入未标记样本及其伪标签以改进正则化。
Pseudo Mixup、Pseudo Mixup+、Probabilistic Pseudo Mixup的比较。红色样本的是通过置信阈值的样本,而蓝色的不是。

实验:

表1:Semi-ViT的结果与MAE预训练ViT的微调结果的比较。
表2:FixMatch和EMA-Teacher框架的比较。x表示训练失败,精度接近0。
表3:不同Mixup方法之间的比较。
表4:MoCo-v3、DINO自监督预训练方法的Semi-ViT结果。
表6:Semi-ViT与SOTA半监督模型的比较。
表7:Semi-ViT与SOTA全监督模型的比较。

Semi-Supervised Vision Transformers, ECCV 2022

讲解:【论文阅读】《Semi-supervised Vision Transformers》 - 知乎 (zhihu.com)

论文:[2111.11067] Semi-Supervised Vision Transformers (arxiv.org)

代码:wengzejia1/Semiformer (github.com)

作者调研发现ViT在半监督ImageNet任务中表现的的不是很好。相反,卷积神经网络在一些少量标注的数据领域表现的很好。探索发现造成这种结果的原因:CNN有着较强的空间 inductive bias。于是,作者引入了一个联合半监督学习框架:Semiformer,它包含一个Transformer分支,一个卷积分支 和一个在两分支之间进行知识共享(knowledge sharing)的融合模块。卷积分支在有限的监督数据下进行训练并生成伪标签去监督Transformer分支在未标注数据上的训练。

图1。使用10%标记和90%未标记数据(绿色)的三个半监督ViT与使用10%和100%标记数据的完全监督ViT(蓝色)。Semiformer实现了具有竞争力的性能,75.5%的精度位居前1。

探索实验:

初始实验表明,使用训练策略(FixMatch)训练出来的ViT所得到的表现甚至要比不使用FixMatch训练而来的CNN表现的差得多。由此作者假设在ViT和CNN之间在小数据上的这种差距是由于CNN存在着额外的inductive bias。

CNN的inductive bias应该是locality和spatial invariance,即空间相近的grid elements有联系而远的没有,和空间不变性(kernel权重共享)。

为了验证这种假设,作者建议使用CNN来生成用于VIT的半监督学习的伪标签,如图2b所示:CNN和ViT是从半监督数据上同时进行训练,然而ViT使用的伪标签是由CNN生成的,训练两个模型使用同样的FixMatch。通过这样做,我们能够去有效的提高最终的ViT top-1 Acc 8%。结果表明CNN的inductive bias在少量标注数据的领域很有帮助。

 

 

 虽然CNN生成的伪标签是有效的,但在半监督benchmark中,最终的VIT仍然略弱于CNN。作者认为,通过伪标签来表现inductive bias是不够的,这促使他们在体系结构层面上设计一种联合知识共享机制。由此引入了一种新的ViT半监督学习框架,称之为Semiformer。新的框架由基于卷积的架构和基于transformer的架构组成,使得分支可以通过共同生成的伪标签方案和跨分支的特征交互模块来实现互补。

Semiformer框架,它为半监督学习联合融合了卷积结构和Transformer。整体框架遵循FixMatch设计,Semiformer只使用CNN的分支来产生伪标签。两个分支使用feature-level相互交流的方式进行融合。 

图3。Semiformer框架图。对于未标记的图像,将其弱增强版本(顶部)输入到模型中。CNN的预测用于生成具有置信阈值的伪标签(虚线)。然后,计算模型对同一图像的强增强版本的预测(底部)。我们期望Transformer流和CNN流通过交叉熵损失来匹配伪标签。两分支通过特征级别的模块相互补充。

总损失:两种损失赋权重相加。

有标签数据损失:

无标签数据损失:

  

分支融合。M_T是某一层的ViT特征图,其形状 (d_T,h_T,w_T) 分别代表深度、高度和宽度。设 M_{T,i} 是形状为 ( d_T ,1,1) 的 M_T的第 i个patch特征。所以 M_{T,i} 与原始图像中的一个特定区域有关,与此同时将卷积网络中与相同区域相关的形状为 (d_C,h_C,w_C) 的子特征图标记为 M_{C,i} 。通过下式进行Transformer的patch feature和与之相关的CNN子特征图之间的信息交换。

 

 其中,align操作表示将features 映射至相同的维度空间。average pooling 与 spatial interpolation 方法被用来进行空间维度对齐。

实验:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1227373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ComText让机器人有了情节记忆

为了让人类与机器人更好地交流,MIT 计算机科学与人工智能实验室的研究员开发了一个名为 ComText 的程序。这款程序给机器人增加了情节记忆,让它们能够接受更加复杂的命令。目前,他们已经在机器人 Baxter 上测试了程序。 机器人没有情景化的记…

.babyk勒索病毒解析:恶意更新如何威胁您的数据安全

导言: 在数字时代,威胁不断进化,其中之一就是.babyk勒索病毒。这种病毒采用高级加密算法,将用户文件锁定,并要求支付赎金以获取解密密钥。本文91数据恢复将深入介绍.babyk勒索病毒的特点、如何应对被加密的数据&#…

Spring Framework IOC依赖查找 - 按名称查找解析

IoC按名称查找共分为三类: 按名称按类型按集合 按名称查找 在Spring Framework中,实时加载和延迟加载是指在容器启动时是否立即实例化bean的不同策略。下面我们将分别介绍这两种加载方式及其应用场景。 tips: 当涉及到懒加载和延时加载时&#xff0…

vue3的Watch使用详解

vue官网提到: watch 的第一个参数可以是不同形式的“数据源”:它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组: 1.监听单个Ref 2.监听一个getter函数 当然只修x或者y其中一个的值,…

阿里AoneFlow分支管理

分支模式 1.TrunkBased模式 工作方式 TrunkBased 模式是持续集成思想所崇尚的工作方式,它由单个主干分支和许多发布分支组成,每个发布分支在特定版本的提交点上从主干创建出来,用来进行上线部署和 Hotfix(补丁)。 …

类和对象(8):explicit,static成员,友元,内部类

一、explicit class Date { public:Date(int year 2023, int month 1, int day 1):_year(year),_month(month),_day(day){}private:int _year;int _month;int _day; };int main() {// Date d1(1); // 这是正常初始化Date d1 1;return 0; }不妨猜测一下,d1的初始…

算法设计与分析复习--动态规划

文章目录 上一篇动态规划性质矩阵连乘问题凸多边形最优三角部分最长公共子序列0-1背包问题下一篇 上一篇 算法设计与分析复习–递归与分治(二) 动态规划性质 与分析法类似:将原问题分解为子问题 不同点:不是通过递归的方式&…

pytest测试框架介绍(1)

又来每天进步一点点啦~~~ 一、Pytest介绍: pytest 是一个非常成熟的全功能的Python测试框架; pytest 简单、灵活、易上手; 支持参数化 能够支持简单的单元测试和复杂的功能测试,可以做接口自动化测试(pytestrequests&…

【Qt开发流程之】窗口部件

qt类关系图 创建Qt项目时,发现提供的窗体默认 基类有:QMainWindow、QDialog、QWidget这三种。 之后,你会发现,这3中窗体在UI交互中,用的也是最多的。 以下是Qt类关系图: 基础窗口控件QWidget 由上图可以…

分享禁止Win10更新的两种方法

深恶痛绝 Windows更新简直就是毒瘤,总是在某些不需要的时候提示更新,而且关闭服务后总有办法重启。老是关不掉。 如果每次都是正常更新,好像也没啥所谓,但是总有那么一两次会蓝屏、黑屏、开不了机…… 52出品 下面是吾爱社区找…

设计模式(二)-创建者模式(2-0)-简单工厂模式

一、简单工厂模式定义 客户端不需要关注创建实例的过程。于是需要通过工厂模式,要把创建对象过程和使用对象进行分离。所以客户端只要使用对象即可,而创建对象过程由一种类来负责,该类称为工厂类。 由于创建实例的方式是在静态方法里实现的…

数睿通2.0数据接入、数据开发、系统权限、集群监控全面升级

引言 数睿通 2.0 数据中台迎来了11月份的更新,感谢大家的支持,本次更新主要包括以下内容: 数据库支持 MongoDB数据接入支持 MongoDB,支持自定义 SQL 采集,支持停止运行中的任务数据生产支持 FlinkJar 任务&#xff0…

线性变换功能块S_RTI工程上的主要应用

西门子S_RTI模拟量转换功能块算法公式和代码介绍请参考下面文章链接: PLC模拟量输出 模拟量转换FC S_RTI-CSDN博客文章浏览阅读5.3k次,点赞2次,收藏11次。1、本文主要展示西门子博途模拟量输出转换的几种方法, 方法1:先展示下自编FC:计算公式如下:intput intput Real IS…

OS 进程同步

基本概念 定义:把异步环境下的一组并发进程因直接制约而相互发送消息、相互合作、相互等待,使得各进程按一定的速度执行的过程,称为进程同步 协作进程:具有同步关系的一组并发进程 进程同步机制的主要任务:在执行次…

Linux调试器:gdb的使用

我们知道在Visual Studio2022中,我们可以对编好的代码进行调试来分析dug的位置,那Linux环境下如何进行程序的调试呢?那就是使用Linux调试器:gdb。 目录 1.背景 2. 开始使用 1.背景 程序的发布方式有两种,debug模式…

mysql的行列互转

mysql的行列互转 多行转多列思路实现代码 多列转多行思路代码 多行转多列 多行转多列,就是数据库中存在的多条具有一定相同值的行数据,通过提取相同值在列头展示来实现行数据转为列数据,一般提取的值为枚举值。 思路 转换前表样式 -> 转…

从 0 开始手写一个 Mybatis 框架,三步搞定!

MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。本文完成的Mybatis功能比较简单,代码还有许多需要改进的地方,大家可以结合Mybatis源码去动手…

打开游戏提示xapofx1_5.dll丢失如何修复?xapofx1_5.dll缺失的修复教程分享

xapofx1_5.dll是一个重要的Windows系统文件,它主要负责处理图形渲染和多媒体功能。如果在计算机中找不到xapofx1_5.dll,可能会导致程序无法正常运行。下面是关于xapofx1_5.dll丢失的4个修复方法以及xapofx1_5.dll的作用和丢失原因的介绍。 一、xapofx1_…

MySQL 教程 1.2

上期教程网友笔记整理 MySQL 重置密码 如果你忘记 MySQL 密码,可以通过修改 my.cnf 文件添加 skip-grant-tables 来重置密码,步骤如下: 1、打开 my.cnf 配置文件,找到 [mysqld] ,然后在该行下面添加以下参数&#x…

基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关

文章目录 前言1. RTC概念1.1 RTC的时钟信号源1.2 预分频器1.3 实时时钟与日历数据1.4 周期性自动唤醒1.5 可编程闹钟 2. RTC相关中断3. STM32CubeMX配置3.1 时钟配置3.2 引脚配置3.3 RTC配置3.3.1 模式选择3.3.2 RTC基本参数配置3.3 中断配置 4. 代码编写总结 前言 RTC的功能有…