Adversarial Learning for Semi-Supervised Semantic Segmentation

论文原文

摘要

创新点:我们提出了一种使用对抗网络进行半监督语义分割的方法。

在传统的GAN网络中,discriminator大多是用来进行输入图像的真伪分类(Datasets里面sample的图片打高分,generator产生的图片打低分),而本文设计了一种全卷积的discriminator,用于区分输入标签图中各个像素(pixel-wise)的分类结果是ground truth或是segmentation network给出的。本文证明了所提出的discriminator可以通过耦合模型的对抗损失和标准交叉熵损失来提高语义分割的准确性。此外,全卷积鉴别器通过发现未标记图像预测结果中的可信区域,实现半监督学习,从而提供额外的监督信号。

网络模型

对于labeled images:

  1. image \(x_n\)输入segmentation network,得到分割结果 \(S(x_n)\)

  2. 分割结果\(S(x_n)\)和该图片对应真实标签\(Y_n\)比较,计算交叉熵损失\(L_{ce}\)

  3. 分割结果\(S(x_n)\)送入discriminator中求 \(L_{adv}\)

  4. 使用\(S(x_n)\)和真实标签\(Y_n\)训练discriminator:分别将\(S(x_n)\)和真实标签\(y\)输入discriminator,让discriminator分辨输入标签的每个像素是来自是ground truth还是segmentation network(即输入的每个像素为来自于\(S(x_n)\)还是真实标签\(Y_n\))

    discriminator的输入为\(S(x_n)\)或真实标签\(Y_n\),尺寸为\(HxWxC\),其中\(C\)为语义分割的类别数;输出尺寸为\(HxWx1\),像素值代表这个pixel来自于真实标签\(Y_n\)的概率(如果discriminator认为该像素100%是来自真实标签\(Y_n\),则该位置像素值为1)

    损失函数为

  • 注:上式中,当输入为\(S(x_n)\)时,\(y_n = 0\),当输入为\(Y_n\)时,\(y_n = 1\)

对于unlabeled image:

  1. 将image \(x_n\)输入segmentation network,得到输出\(S(x_n)\),尺寸为\(HxWxC\),每个维度上的值代表该像素取这个类别的概率值。对输入进行 one-hot encode,得到 \(\hat{Y_n}\)

    编码过程:

  2. 用\(\hat{Y_n}\)和\(S(x_n)\)进行交叉熵损失计算

  3. 将\(S(x_n)\)通过训练后的discriminator,得到\(D(S(x_n))\),尺寸为\(HxWx1\),并设置闸值,通过指示函数对输出进行二值化(对于输出中像素值大于闸值的像素,认为是可信的,以突出正确的区域)

    无标签部分的损失函数为:



    实际中\(T_{semi}\)的取值为0.1~0.3

训练总损失:





Tips:

  1. 在训练过程中首先用labeled image进行5000iteration的训练(segmentation network和discriminator交替update)
  2. 此后随机sample,每个batch里面都可能有labeled image和unlabeled image,各自按照自己的步骤训练
  3. discriminator只用每个batch里面的labeled image进行训练

具体网络结构

Segmentation network:

首先采用DeepLab-v2 中的ResNet-101作为backbone进行预训练,并去掉最后一个分类层,将最后两个卷积层的步幅从2修改为1,从而使输出特征图的分辨率有效地达到输入图像大小的1/8。为了扩大感受野,我们将扩展后的卷积分别应用于步幅为2和4的conv4和conv5层。此外,我们在最后一层使用了Atrous Spatial Pyramid Pooling (ASPP)。最后,我们应用一个上采样层和softmax输出来匹配输入图像的大小。

Discriminator:

实验

Table4: 训练数据集为pascal VOC标准的1464张图片,SBD中的图片作为无标签数据进行训练



[论文][半监督语义分割]Adversarial Learning for Semi-Supervised Semantic Segmentation的更多相关文章

  1. [论文][半监督语义分割]Semi-Supervised Semantic Segmentation with High- and Low-level Consistency

    Semi-Supervised Semantic Segmentation with High- and Low-level Consistency TPAMI 2019 论文原文 code 创新点: ...

  2. 2018年发表论文阅读:Convolutional Simplex Projection Network for Weakly Supervised Semantic Segmentation

    记笔记目的:刻意地.有意地整理其思路,综合对比,以求借鉴.他山之石,可以攻玉. <Convolutional Simplex Projection Network for Weakly Supe ...

  3. [论文笔记][半监督语义分割]Universal Semi-Supervised Semantic Segmentation

    论文原文原文地址 Motivations 传统的训练方式需要针对不同 domain 的数据分别设计模型,十分繁琐(deploy costs) 语义分割数据集标注十分昂贵,费时费力 Contributi ...

  4. OSVOS 半监督视频分割入门论文(中文翻译)

    摘要: 本文解决了半监督视频目标分割的问题.给定第一帧的mask,将目标从视频背景中分离出来.本文提出OSVOS,基于FCN框架的,可以连续依次地将在IMAGENET上学到的信息转移到通用语义信息,实 ...

  5. 论文笔记:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    A Review on Deep Learning Techniques Applied to Semantic Segmentation 2018-02-22  10:38:12   1. Intr ...

  6. 半监督学习方法(Semi-supervised Learning)的分类

    根据模型的训练策略划分: 直推式学习(Transductive Semi-supervised Learning) 无标记数据就是最终要用来测试的数据,学习的目的就是在这些数据上取得最佳泛化能力. 归 ...

  7. [转]综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. _论文地址:htt ...

  8. 综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    近期主要在学习语义分割相关方法,计划将arXiv上的这篇综述好好翻译下,目前已完成了一部分,但仅仅是尊重原文的直译,后续将继续完成剩余的部分,并对文中提及的多个方法给出自己的理解. 论文地址:http ...

  9. 论文阅读笔记十六:DeconvNet:Learning Deconvolution Network for Semantic Segmentation(ICCV2015)

    论文源址:https://arxiv.org/abs/1505.04366 tensorflow代码:https://github.com/fabianbormann/Tensorflow-Decon ...

随机推荐

  1. Java中PO、DO、DTO、 VO、 BO、POJO 、DAO、TO的概念

    1.  PO(persistant object) 持久对象 在 O/R 映射的时候出现的概念,如果没有 O/R 映射,没有这个概念存在了. 通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的 ...

  2. Sufficient Statistic (充分统计量)

    目录 定义 充分统计量的判定 最小统计量 例子 Poisson Normal 指数分布 Gamma Sufficient statistic - Wikipedia Sufficient statis ...

  3. 使用.NET 6开发TodoList应用(12)——实现ActionFilter

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 Filter在.NET Web API项目开发中也是很重要的一个概念,它运行在执行MVC响应的Pipeline中执行,允许我们 ...

  4. 一文让你明白Redis持久化(RDB、AOF)

    为什么要持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器的数据库状态就会消失(即断电即失).为了保证数据不丢失,我们需要将 内存中的数据存储到磁盘 ...

  5. vue 传入后台的数据多了个=

    解决方法: 在前端值参时用{} 在后台接收时用Map 来自为知笔记(Wiz)

  6. [ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作

    写了一个PyQT界面的版本:https://github.com/LongchuanYu/pyqt_project PATH = r'E:\MyDocument\新しいフォルダー\' # 要搜索的目录 ...

  7. react将HTML字符串解析为HTML标签

    当后台返回的数据是字符串html的话,我们可以利用dangerouslySetInnerHTML属性来把字符串转换成html标签 function showhtml(htmlString){ var ...

  8. 简述伪共享和缓存一致性MESI

    什么是伪共享 计算机系统中为了解决主内存与CPU运行速度的差距,在CPU与主内存之间添加了一级或者多级高速缓冲存储器(Cache),这个Cache一般是集成到CPU内部的,所以也叫 CPU Cache ...

  9. vps上安装CobaltStrike服务端

    今天我在我的vps上安装CobaltStrike服务端,真的是踩坑无数,所以写这篇博客记录一下,防止后人再踩坑 安装Oracle JDK8 官方不建议使用OpenJdk,建议使用Oracle JDK的 ...

  10. Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...