CVPR 2023 | UniMatch: 重新审视半监督语义分割中的强弱一致性

2023-09-21 17:45:14

在这里和大家分享一下我们被CVPR 2023录用的工作"Revisiting Weak-to-Strong Consistency in Semi-Supervised Semantic Segmentation"。在本工作中,我们重新审视了半监督语义分割中的“强弱一致性”方法。我们首先发现,最基本的约束强弱一致性的方法FixMatch[1](proposed three years ago in 2020)即可取得与当前SOTA相当的性能。受此启发,我们进一步拓展了FixMatch的扰动空间,以及利用双路扰动更充分地探索原扰动空间。

我们最终的方法UniMatch十分简单有效,在自然图像 (Pascal VOC, Cityscapes, COCO),遥感影像变化检测 (WHU-CD, LEVIR-CD),以及医学影像 (ACDC)上均取得了远远优于以往方法的结果。我们开源了所有场景下的代码和训练日志,以方便大家更好的复现,也希望能作为大家的baseline。
在这里插入图片描述
文章链接(此为CVPR camera-ready版本,和arXiv-V1相比,我们增加并更新了部分实验结果):

https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2208.09910

代码及实验日志链接:

https://link.zhihu.com/?target=https%3A//github.com/LiheYoung/UniMatch

我们也整理了一份半监督语义分割的awesome list:

https://link.zhihu.com/?target=https%3A//github.com/LiheYoung/UniMatch/blob/main/docs/SemiSeg.md

Background

半监督语义分割希望利用尽可能少的有标注图像以及大量的无标注图像来学得一个较好的分割模型。其中,对有标注图像的学习一般类似于全监督语义分割(计算预测结果与人工标注之间的交叉熵损失),问题的关键在于如何利用无标注图像。

在这里插入图片描述

Observations

当把上述十分简单的FixMatch复现到半监督语义分割中时,我们发现在多个settings上,FixMatch都可以取得和当前的SOTA方法接近甚至明显更优的结果,对比结果如下:
在这里插入图片描述
于是我们进一步对FixMatch的核心模块,即强扰动部分,进行了消融实验,如下表所示。我们发现在半监督语义分割任务中,强扰动对于FixMatch也至关重要。我们默认采用的强扰动包括color jitter, blur, grayscale以及CutMix,当移除所有的这些强扰动时 (w/o any SP),FixMatch性能变得极差;此外,之前的一些方法如CPS[3]仅采用CutMix这单一的强扰动策略,然而我们发现当只用CutMix时 (w/ CutMix),相比于用全部的强扰动 (w/ whole SP),性能也有明显的下降。

FixMatch中强扰动 (Strong Perturbations, SP)的重要性
在这里插入图片描述

Our UniMatch

Unified Perturbations (UniPerb)
根据上述结果,强扰动可以带来极大的性能增益。然而,FixMatch只在输入空间(图像)上进行了强扰动,因此我们提出进一步去扩展FixMatch的扰动空间,增加了一个训练分支来进行特征空间上的强扰动,如下图(a)所示。
在这里插入图片描述
需要说明的是,也有一些工作如PS-MT[4]同时进行了图像和特征上的强扰动,然而他们将这些强扰动施加在了同一个分支中,导致学习的难度过大;而我们将不同性质的强扰动分离到不同的分支分别进行学习,我们在消融实验中说明了这种做法的优越性。此外我们也展示了相比于一些特征扰动的工作如VAT[5],我们的特征Dropout策略更简单有效。

Dual-stream Perturbations (DusPerb)

在这里插入图片描述

Overall UniMatch

在这里插入图片描述

Experiments

与SOTA方法的比较:Pascal VOC 2012
Pascal VOC 2012中一共包括10,582张训练图像,覆盖21个类别。其中有1,464张图像的标注质量比较高。因此有三种不同的选择标注图像的策略:(1)从1,464张精标注图像中选择;(2)从10,582张图像中随机选择;(3)优先从1,464张精标注中选择,如果需要更多的有标注图像,则从剩余的粗标注图像中选择。结果如下所示,在各种选择策略、数据划分、backbone下,我们的方法均取得了最优的性能。

第一种数据划分下的结果:

在这里插入图片描述
第二种(w/o )、第三种(w/ )数据划分下的结果:
在这里插入图片描述
与SOTA方法的比较:Cityscapes
Cityscapes中一共包含2,975张训练图像,覆盖19个类别。
在这里插入图片描述
与SOTA方法的比较:COCO
遵循已有工作PseudoSeg[8],我们这里采用的是COCO-Things数据集(不包含Stuff类别),一共包含81个类别,118,287张训练图像。
在这里插入图片描述

更多推荐

【Java 基础篇】Java 运算符宝典:Java编程的关键

在Java编程中,运算符是用于执行各种操作的特殊符号。它们可以用于操作各种数据类型,执行算术、逻辑和比较等操作。本篇博客将详细介绍Java中常见的运算符,以及它们的使用和示例。算术运算符算术运算符用于执行基本的数学运算,如加法、减法、乘法和除法。加法运算符(+)加法运算符用于将两个值相加,并返回它们的和。示例:inta

MySQL主从复制与读写分离

目录MySQL主从复制1、mysql支持的复制类型2、主从复制的工作过程3、主从复制操作1)下载时间同步工具,并配置时间源,实现slave库与master库时间同步2)、配置主master库3)配置slave库4)登录主MySQL,给从服务器授权5)登录从数据库,配置同步,并启动同步6)测试MySQL读写分离MySQL

HTTPS的传输过程

加密分为两种方式一种是对称加密,一种是非对称加密。在对称加密算法中,加密和解密使用的密钥是相同的。也就是说,加密和解密使用的是同一个密钥。因此,对称加密算法要保证安全性的话,密钥要做好保密。只能让使用的人知道,不能对外公开。在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。一把是作为公开的公钥,另一把是作为

机器学习西瓜书+南瓜书吃瓜教程学习笔记第四章决策树

1、算法原理从逻辑角度,一堆ifelse语句的组合从集合角度,根据某种准则划分特征空间最终目的:将样本越分越“纯”决策树是基于树结构来进行决策的例如,我们对“这是好瓜吗?”这样的问题进行决策时,通常会进行一系列的判断或“子决策”:我们先看“它是什么颜色?”,如果是“青绿色”,则我们再看“它的根蒂是什么形态?”,如果是“

Linux C 网络基础

为什么需要网络通信?进程间通信解决的是本机内通信网络通信解决的是任意不同机器的通信实现网络通信需要哪些支持1.通信设备:网卡(PC机自带);路由器和交换机;光纤、电缆和基站2.通信协议:2.1.操作系统自带协议栈(Linux的特点:丰富的网络协议)2.2.裸机开发需要独立的协议栈3.简单网络通信只需要学会系统APITC

Java基础(三)

前言:前面主要涉及到java的基本语法,接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。目录数据结构泛型集合分类Collection的分类collection常用方法collection遍历方式迭代器for循环Lambda表达式List集合特点增删改查List集合的遍历方式

爬虫 — Scrapy 框架(一)

目录一、介绍1、同步与异步2、阻塞与非阻塞二、工作流程三、项目结构1、安装2、项目文件夹2.1、方式一2.2、方式二3、创建项目4、项目文件组成4.1、piders/__init__.py4.2、spiders/demo.py4.3、__init__.py4.4、items.py4.5、middlewares.py4.

npm安装心得(依赖库Python及node-sass依赖环境)

在使用vue的开发环境过程中,总会遇到这样哪样的安装或者打包错误,vue运行或打包常见错误如下:1.npminstall时node-sassnpmERRcommandfailed(可能是node.js的版本和node-sass的版本不符,就是卸掉原来的node.js,下载一个符合node-sass版本的node.js)

Go - 【字符串,数组,哈希表】常用操作

一.字符串字符串长度:s:="hello"l:=len(s)fmt.Println(l)//输出5遍历字符串:s:="hello"fori,c:=ranges{fmt.Printf("%d:%c",i,c)}//输出:0:h1:e2:l3:l4:ofori:=0;i<len(s);i++{fmt.Printf("%s"

Go基础-文件、字符

文件创建导入“os”包,创建文件,读写文件的函数都在改包。指定创建的文件存放路径以及文件名。执行Create()函数,进行文件创建。关闭文件。packagemainimport("fmt""os")funcmain(){//创建文件,需要指定文件的存放路径以及文件名称//file为文件指针file,err:=os.Cr

C#控制台程序中使用log4.net来输出日志

Apachelog4net库是一个帮助程序员将日志语句输出到各种输出目标的工具。log4net是优秀的Apachelog4j™框架到Microsoft®.NE​​T运行时的端口。我喜欢他可以自定义输出,区分等级等特点。导入库我们在工程里添加NuGet的包。输入名称log4net,导入包。创建配置文件然后我们在项目根创建

热文推荐