点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

作者:Charles  |  源:知乎

https://zhuanlan.zhihu.com/p/378120529

在这篇文章,我们将解读一下我们发表在CVPR 2021的工作CPS: Semi-Supervised Semantic Segmentation with Cross Pseudo Supervision. 我们提出的半监督语义分割算法,在Cityscapes数据集中,使用额外3000张无标注的图像,可以在val set达到82.4% mIoU (单尺度测试)。

作者单位:北京大学,微软亚洲研究院

代码:https://github.com/charlesCXK/TorchSemiSeg

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

在这篇论文中,我们为半监督语义分割任务设计了一种非常简洁而又性能很好的算法:cross pseudo supervision (CPS)。训练时,我们使用两个相同结构、但是不同初始化的网络,添加约束使得两个网络对同一样本的输出是相似的。具体来说,当前网络产生的one-hot pseudo label,会作为另一路网络预测的目标,这个过程可以用cross entropy loss监督,就像传统的全监督语义分割任务的监督一样。我们在两个benchmark (PASCAL VOC, Cityscapes) 都取得了SOTA的结果。

相关工作

在最开始,我们先来回顾一下半监督语义分割任务的相关工作。不同于图像分类任务,数据的标注对于语义分割任务来说是比较困难而且成本高昂的。我们需要为图像的每一个像素标注一个标签,包括一些特别细节的物体,比如下图中的电线杆 (Pole)。但是,我们可以很轻松的获得RGB数据,比如摄像头拍照。那么,如何利用大量的无标注数据去提高模型的性能,成为半监督语义分割领域研究的问题。

我们将半监督分割的工作总结为两种:self-training和consistency learning。一般来说,self-training是离线处理的过程,而consistency learning是在线处理的。

(1)Self-training

Self-training主要分为3步。第一步,我们在有标签数据上训练一个模型。第二步,我们用预训练好的模型,为无标签数据集生成伪标签。第三步,使用有标注数据集的真值标签,和无标注数据集的伪标签,重新训练一个模型。

(2)Consistency learning

Consistency learning的核心idea是:鼓励模型对经过不同变换的同一样本有相似的输出。这里“变换”包括高斯噪声、随机旋转、颜色的改变等等。

Consistency learning基于两个假设:smoothness assumption 和 cluster assumption。

  • Smoothness assumption: samples close to each other are likely to have the same label.

  • Cluster assumption: Decision boundary should lie in low-density regions of the data distribution.

Smoothness assumption就是说靠的近的样本通常有相同的类别标签。比如下图里,蓝色点内部距离小于蓝色点和棕色点的距离。Cluster assumption是说,模型预测的决策边界,通常处于样本分布密度低的区域。怎么理解这个“密度低”?我们知道,类别与类别之间的区域,样本是比较稀疏的,那么一个好的决策边界应该尽可能处于这种样本稀疏的区域,这样才能更好地区分不同类别的样本。例如下图中有三条黑线,代表三个决策边界,实线的分类效果明显好于另外两条虚线,这就是处于低密度区域的决策边界。

那么,consistency learning是如何提高模型效果的呢?在consistency learning中,我们通过对一个样本进行扰动(添加噪声等等),即改变了它在feature space中的位置。但我们希望模型对于改变之后的样本,预测出同样的类别。这个就会导致,在模型输出的特征空间中,同类别样本的特征靠的更近,而不同类别的特征离的更远。只有这样,扰动之后才不会让当前样本超出这个类别的覆盖范围。这也就导致学习出一个更加compact的特征编码。

当前,Consistency learning主要有三类做法:mean teacher,CPC,PseudoSeg。

Mean teacher是17年提出的模型。给定一个输入图像X,添加不同的高斯噪声后得到X1和X2。我们将X1输入网络f(θ)中,得到预测P1;我们对f(θ)计算EMA,得到另一个网络,然后将X2输入这个EMA模型,得到另一个输出P2。最后,我们用P2作为P1的目标,用MSE loss约束。

PseudoSeg是google发表在ICLR 2021的工作。他们对输入的图像X做两次不同的数据增强,一种“弱增强”(random crop/resize/flip),一种“强增强”(color jittering)。他们将两个增强后图像输入同一个网络f(θ),得到两个不同的输出。因为“弱增强”下训练更加稳定,他们用“弱增强”后的图像作为target。

CPC是发表在ECCV 2020的工作(Guided Collaborative Training for Pixel-wise Semi-Supervised Learning)的简化版本。在这里,我只保留了他们的核心结构。他们将同一图像输入两个不同网络,然后约束两个网络的输出是相似的。这种方法虽然简单,但是效果很不错。

Motivation

从上面的介绍我们可以简单总结一下:

  • Self-training可以通过pseudo labelling扩充数据集。

  • CPC可以通过consistcency learning,鼓励网络学习到一个更加compact的特征编码。

大家近年来都focus在consistency learning上,而忽略了self-training。实际上,我们实验发现,self-training在数据量不那么小的时候,性能非常的强。那么我们很自然的就想到,为什么不把这两种方法结合起来呢?于是就有了我们提出的CPS:cross pseudo supervision。

Cross Pseudo Supervision (CPS)

我们可以看到,CPS的设计非常的简洁。训练时,我们使用两个网络f(θ1) 和 f(θ2)。这样对于同一个输入图像X,我们可以有两个不同的输出P1和P2。我们通过argmax操作得到对应的one-hot标签Y1和Y2。类似于self-training中的操作,我们将这两个伪标签作为监督信号。举例来说,我们用Y2作为P1的监督,Y1作为P2的监督,并用cross entropy loss约束。

对于这两个网络,我们使用相同的结构,但是不同的初始化。我们用PyTorch框架中的kaiming_normal进行两次随机初始化,而没有对初始化的分布做特定的约束。当然了,如果设计特定的初始化,没准CPS的效果会更好~

在测试的时候,我们只使用其中一个网络进行inference,所以不增加任何测试/部署时候的开销。

实验部分

(1)Low data setting。

首先是有标签数据比较少的情况。

我们的方法在VOC和Cityscapes两个数据集的几种不同的数据量情况下都达到了SOTA。表格中 1/16, 1/4等表示用原始训练集的 1/16, 1/4作为labeled set,剩余的 15/16, 3/4作为unlabeled set。

在跟PseudoSeg的对比中,和他们同样的数据划分list,我们也超越了他们的性能:

这是我们的方法跟self-training进行比较的结果。可以看到,我们的方法由于鼓励模型学习一个更加compact的特征编码,显著地优于self-training。

(2)High data setting。

我们还在数据量比较多的情况下进行了实验。在Cityscapes数据集,我们拿训练集的全部图片(大约3000张)作为labeled set,并从coarse set中随机采样3000张RGB图片作为unlabeled set。我们在两个模型进行了实验:DeepLabv3+和HRNet-W48。可以看到,我们的半监督算法可以在非常强的baseline上显著提高性能,最终HRNet-W48在验证集上可以达到单尺度测试下82.4%的mIoU。

可视化

(1)分割预测的定量结果。

我们在PASCAL VOC数据集上可视化了一些分割的预测结果。(c)列是仅使用labeled data进行训练的结果,(d)(e)列是我们的预测,(b)列是真值标签。可以看出,由于标注数据很少,(c)的结果不能准确识别物体的语义和边界,而我们CPS可以很好地处理这些问题。

(2)两个网络的性质分析。

我们在PASCAL VOC上可视化了双路网络的预测的标签的重合情况。我们可以看到,训练初期,overlap较小,通过约束一致性,可以防止单个网络往错误的方向去优化。随着训练迭代,overlap逐渐增大,说明两个网络的预测都变得更加准确。

CVPR和Transformer资料下载后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集
后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF
CVer-图像分割交流群成立
扫码添加CVer助手,可申请加入CVer-图像分割 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如图像分割+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加小助手微信,进交流群▲点击上方卡片,关注CVer公众号
整理不易,请给CVer点赞和在看

CVPR 2021 | 北大MSRA提出CPS:基于交叉伪监督的半监督语义分割相关推荐

  1. CVPR 2020 | 北大Futurewei提出 GraphTER:无监督图变换共变表征学习

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :机器之心 计算机视觉与模式 ...

  2. *基于类平衡自我训练的无监督域自适应用于语义分割

    基于类平衡自我训练的无监督域自适应用于语义分割 摘要:最近的深度网络实现了最先进的性能在各种语义分割任务中.尽管有这样的进步,但是这些模型在现实世界中面临挑战,它们存在很大的差别在已标签训练/源文件和 ...

  3. Semi-supervised Semantic Segmentation with Error Localization Network(基于误差定位网络的半监督语义分割 )

    Semi-supervised Semantic Segmentation with Error Localization Network(基于误差定位网络的半监督语义分割 ) Abstract 本文 ...

  4. 基于深度学习的医学图像半监督分割

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 准确.鲁棒地从医学图像中分割出器官或 ...

  5. Facebook AI 提出10亿级数据规模的半监督图像分类模型,ImageNet测试精度高达81.2%!...

    译者 | linstancy 作者| I. Zeki Yanlniz, Herve Jegou, Kan Chen, Manohar Paluri, Dhruv Mahajan 编辑 | 蓝色琥珀鱼, ...

  6. 深度学习论文精读01——基于多任务学习的肿瘤医学影像语义分割与分类研究

    基于多任务学习的肿瘤医学影像语义分割与分类研究 文章目录 基于多任务学习的肿瘤医学影像语义分割与分类研究 1 背景介绍 2 主要内容 3 材料和方法 3.1卷积神经网络 多层感知模型(全连接) 3.1 ...

  7. 基于监督和半监督的文本分类

    1 背景 这是16年提出的论文Supervised and Semi-Supervised Text Categorization using LSTM for Region Embeddings. ...

  8. 【Keras】基于SegNet和U-Net的遥感图像语义分割

    from:[Keras]基于SegNet和U-Net的遥感图像语义分割 上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末projec ...

  9. Keras】基于SegNet和U-Net的遥感图像语义分割

    from:[Keras]基于SegNet和U-Net的遥感图像语义分割 上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末projec ...

最新文章

  1. Linux下安装oracle报错
  2. code第一部分数组:第二十二题 偶数次中查找单独出现一次的数
  3. JavaScriptjQuery.查询DOM元素
  4. MyEcplise中SpringBoot怎样定制启动banner?
  5. python和什么一起学_[lvog1]和小菜一起学python(零基础开始学习)
  6. 一、Vue基础语法学习笔记系列——插值操作(Mustache语法、v-once、v-html、v-text、v-pre、v-cloak)、绑定属性v-bind(绑定class、style)、计算属性
  7. docker之使用supervisor管理多个进程
  8. php mb strlen 开启,php mb_strlen是什么函数
  9. Day_2_Python_str_list_dict的使用
  10. 2018 华为软件精英挑战赛
  11. Text file busy问题解决
  12. 易企秀HTML5文件,怎么用易企秀制作h5场景秀?
  13. python彩虹图_python绘制彩虹图
  14. 代码从svn到工作空间,Myeclipse中java项目转成Web项目
  15. 汇总解决idea出现import包时报错Java:程序包xxxx不存在,但包确实存在的问题
  16. mysql上年年末_查询年初,年末,去年年初,明年年初与年末sql语句
  17. 电感啸叫的成因与解决方法
  18. 看漫画学Python 第七章代码
  19. 将unix文本文件格式转换为windows文 本文件的格式
  20. 通用计算机使用的内存条,笔记本内存和台式机内存能通用吗

热门文章

  1. 深夜十点,北京各大互联网企业的下班高峰才刚开始?
  2. 把Excel当桌面数据库使用(一)——在VBA中使用
  3. 销量300万台对乐视意味着什么?
  4. Zip文件格式解析 6.3.3版本
  5. vf的device和driver的匹配
  6. Excel根据背景颜色批量对数据求和
  7. 批量给透明图片添加纯色背景<matlab>
  8. JS逆向实战17——猿人学第七题 动态字体 随风漂移
  9. Oracle 复制表空间 (imp/exp)
  10. 记一次解决mysql进程数居高不下的问题