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

本文介绍了几篇结合使用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 方法被用来进行空间维度对齐。

实验:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

webservice笔记

1,简介 webservice,是一种跨编程语言和跨操作系统平台的远程调用技术。 webservice三要素:soap、wsdl、uddi2,服务端 2.1创建项目 2.2 编写服务类,并发布服务 import com.test.service.impl.HelloServiceImpl; impo…

NI Package Manager创建程序包

NI Package Manager创建程序包 要使用PackageManager创建程序包,即把相关的组件都放在一个目录下,使用命令行创建程序包。 程序包是一个压缩文件,包含要安装到目标位置的所有文件。Package Manager创建的程序包扩展名为.nipkg。可以使用Pack…

linux网络——HTTPS加密原理

目录 一.HTTPS概述 二.概念准备 三.为什么要加密 四.常⻅的加密⽅式 1.对称加密 2.⾮对称加密 五.数据摘要,数字签名 六.HTTPS的加密过程探究 1.方案一——只使用对称加密 2.方案二——只使⽤⾮对称加密 3.方案三——双⽅都使⽤⾮对称加密 4.方案四——⾮…

气候更换,气运也会随之变化

天人合一,人天相应,人体与宇宙天体的运行互相感应相通,与大自然的万千变化紧密联系。阴阳转换,带来的气场和磁场的变化,对自然界万事万物和人影响很大。 蒹葭苍苍,白露为霜,所谓伊人&#xff0…

【JavaEE初阶】计算机是如何工作的

一、计算机发展史 计算的需求在⼈类的历史中是广泛存在的,发展大体经历了从⼀般计算⼯具到机械计算机到目前的电子计算机的发展历程。 人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代,发展的潮流是…

变量命名的规则与规范

变量命名的规则与规范 变量命名的规则不能使用关键字字母须区分大小写由字母、数字、_、$组成,且不能以数字开头 变量命名的规范起名须有一定的意义遵守小驼峰命名法 变量命名的规则 不能使用关键字 在JavaScript中声明变量不能使用JavaScript的常用关键字&#x…

程序员开发者神器:10个.Net开源项目

今天一起盘点下,8月份推荐的10个.Net开源项目(点击标题查看详情)。 1、基于C#开发的适合Windows开源文件管理器 该项目是一个基于C#开发、开源的文件管理器,适用于Windows,界面UI美观、方便轻松浏览文件。此外&#…

Google Earth Engine(GEE)操作

地理信息网站 Eatrth Explorer操作界面 在研究中,我们常需要遥感数据。在下面的网站中,可以得到遥感数据。 EarthExplorer (usgs.gov)https://earthexplorer.usgs.gov/登陆网站: 通常,在Additional Criteria中,可以…

被锁总时间

题目描述: 对一个事务进行加锁与解锁,其中有加锁数组,解锁数组,这两个数组长度相等,且数组内数据代表加锁与解锁的具体时间点,求给出数组中事务的总被锁时间。(其中加锁后默认在60秒后解锁&…

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

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

贝锐蒲公英助力智慧楼宇,实现自控系统远程运维、数据实时监测

在智慧楼宇系统中,存在着多套不同的系统,比如:智能照明控制、智能空调控制、智能安防监控等。在实际应用中,除了需要打通楼内各个系统实现智能联动,如何实现各地多楼宇的数据实时互通构建智慧楼宇生态系统也是需要解决…

C#入门(1):程序结构、数据类型

一、C#程序结构 第一个C#程序 using System;namespace base_01 {class Program{#region 代码折叠块static void Main(string[] args){//控制台输出Console.WriteLine("Hello World!");Console.Write("C#是微软的编程语言"); //不换行输出//Console.Rea…

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

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

辅助笔记-Jupyter Notebook的安装和使用

辅助笔记-Jupyter Notebook的安装和使用 文章目录 辅助笔记-Jupyter Notebook的安装和使用1. 安装Anaconda2. conda更换清华源3. Jupter Notebooks 使用技巧 笔记主要参考B站视频“最易上手的Python环境配置——Jupyter Notebook使用精讲”。 Jupyter Notebook (此前被称为IPyt…

mysql的行列互转

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

(动手学习深度学习)第13章 计算机视觉---微调

文章目录 微调总结 微调代码实现 微调 总结 微调通过使用在大数据上的恶道的预训练好的模型来初始化模型权重来完成提升精度。预训练模型质量很重要微调通常速度更快、精确度更高 微调代码实现 导入相关库 获取数据集 数据增强 定义和初始化模型 微调模型 训练模型

kaggle新赛:SenNet 3D肾脏分割大赛(3D语义分割)

赛题名称:SenNet HOA - Hacking the Human Vasculature in 3D 赛题链接:https://www.kaggle.com/competitions/blood-vessel-segmentation 赛题背景 目前,人类专家标注员需要手动追踪血管结构,这是一个缓慢的过程。即使有专家…

WSA子系统(一)

WSA子系统安装教程 Windows Subsystem for Android (WSA) 是微软推出的一项功能,它允许用户在 Windows 11 上运行 Android 应用程序。通过在 Windows 11 上引入 WSA,用户可以在其 PC 上轻松运行 Android 应用程序,从而扩展了用户的应用程序选…

Java内存结构

1.对象的结构 一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充 2.虚拟机存储数据的方式 2.1小端存储 : 便于数据之间的类型转换,例如:long类型转换为int类型时,高地址部分的数据可以直接截掉。 2.2大端存储 : 便于数据类型…

德迅云安全告诉您 网站被攻击怎么办-SCDN来帮您

随着互联网的发展给我们带来极大的便利,但是同时也带来一定的安全威胁,网络恶意攻击逐渐增多,很多网站饱受困扰,而其中最为常见的恶意攻击就是cc以及ddos攻击。针对网站攻击,今天为您介绍其中一种防护方式-SCDN&#x…