Semi-Supervised Semantic Segmentation with High- and Low-level Consistency

TPAMI 2019

论文原文

code

创新点:

利用两个分支结构分别处理low-level和high-level的特征,进行半监督语义分割

网络结构



上分支:Semi-Supervised Semantic Segmentation GAN (s4GAN)

下分支:Multi-Label Mean Teacher (MLMT)

s4GAN

训练segmentation network \(S\)

segmentation network \(S\)的损失函数由以下三部分组成:

  1. Cross-entropy loss

    输入原图到segmentation network \(S\)中,对于labeled images,输出的分割结果\(S(x^l)\)和标签\(y^l\)对比,计算交叉熵损失\(L_{ce}\)

  2. Feature matching loss

    为了使得分割结果\(S(x^l)\)和标签\(y^l\)的特征分布尽可能一致,本文计算分割结果\(S(x^l)\)和标签\(y^l\)的特征分布差异mean discrepancy,并设计Feature matching loss



    上式中\(D_k\)表示discriminator的第\(k\)层

    注:此Feature matching loss适用于有标签和无标签的数据
  3. Self-training loss

    本文认为,在训练过程中generator和discriminator需要达到某种平衡,如果discriminator过于strong,则无法给generator任何有用的学习信号。因此,对于unlabeled image,本文每次将generator产生的,可以成功欺骗discriminator的分割图当作真实标签,用于监督学习。由此可以促使segmentation network(即generator)变强,且一定程度上阻碍discriminator的进步,不希望discriminator过于强大,破坏平衡。

    具体而言,discriminator在s4GAN中用于在image-level判断一张分割图是真实标签(real label),还是segmentation network的输出(fake label),根据为真实标签的可能性输出一个0~1之间的概率值(若为真实标签,则输出1)

    文章设置闸值,对于输出大于闸值的分割图,作为高质量的预测图,当作真实标签,用于监督学习,并计算交叉熵损失

s4GAN总损失:

训练discriminator

discriminator的输入包含原图image和对应标签,训练discriminator,希望discriminator能给真实标签打高分,给fake label打低分。具体损失函数和传统的GAN相同。



(channel wise)

MLMT

该分支包含两个网络,分别为学生网络和老师网络,训练时,一张image经过微小的,不同的扰动之后分别输入学生网络和老师网络,学生网络和老师网络使用online ensemble的weight(老师网络是学生网络学习的目标,老师网络的权重在学生网络的基础上根据指数平均移动线移动,详见论文)。本文希望学生网络的输出和老师网络的输出尽可能一致,则对于所有image,使用均方误差来衡量两个网络输出的差异,对于labeled image,同时使用类交叉熵函数计算损失

Network Fusion

简单的通过deactivate segmentation networks的输出中没有出现在input image中的图片来融合两个网络的结果。

对于一张image分割图的一个类别c的mask,尺寸为\(HxWx1\),(对于每一个像素?)如果学生网络的输出(soft label)小于设定的某个闸值,则令segmentation network的输出为0,否则segmentation network的输出不变。

实验

数据集:

PASCAL VOC 2012 segmentation benchmark, the PASCAL-Context dataset, and the Cityscapes dataset.

网络具体结构:

segmentation network:

deeplab v2

discriminator:

4层卷积层,通道数分别为\({64,128,256,512}\),卷积核大小为4x4,每个卷积层后面都有一个negative slope of 0.2的Leaky-ReLU层和一个dropout概率为0.5的dropout层(该高概率的dropout layer对于GAN的稳定训练非常关键)。最后一个卷积层后面是一个全局平均池化层和全连接层,全局平均池化的输出用于Feature matching loss的计算

学生网络和老师网络:

ResNet101(在imagenet上预训练)

实验结果:

疑问:

  1. 网络融合的目的?
  2. self-train loss的设定(为阻止discriminator变强)?

[论文][半监督语义分割]Semi-Supervised Semantic Segmentation with High- and Low-level Consistency的更多相关文章

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

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

  2. [论文][半监督语义分割]Adversarial Learning for Semi-Supervised Semantic Segmentation

    Adversarial Learning for Semi-Supervised Semantic Segmentation 论文原文 摘要 创新点:我们提出了一种使用对抗网络进行半监督语义分割的方法 ...

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

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

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

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

  5. 论文学习:Fully Convolutional Networks for Semantic Segmentation

    发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...

  6. 论文笔记《Fully Convolutional Networks for Semantic Segmentation》

    一.Abstract 提出了一种end-to-end的做semantic segmentation的方法,也就是FCN,是我个人觉得非常厉害的一个方法. 二.亮点 1.提出了全卷积网络的概念,将Ale ...

  7. 【Semantic segmentation Overview】一文概览主要语义分割网络(转)

    文章来源:https://www.tinymind.cn/articles/410 本文来自 CSDN 网站,译者蓝三金 图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类 ...

  8. 利用NVIDIA-NGC中的MATLAB容器加速语义分割

    利用NVIDIA-NGC中的MATLAB容器加速语义分割 Speeding Up Semantic Segmentation Using MATLAB Container from NVIDIA NG ...

  9. A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation

    论文阅读笔记: A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation 基本信息 \1.标题:A ...

随机推荐

  1. Mysql数据库体系

    Mysql数据库体系如下(手绘): 描述: 1.DBMS:database system management是数据库管理软件,平时我们使用的数据库的全称,是C/S架构(client/server)工 ...

  2. Java,JDK安装及环境配置

    jdk安装及环境配置 一.jdk安装 1.找到jdk安装包 2.安装jdk 3.安装jre 二.环境变量配置          1.JAVA_HOME JAVA_HOME C:\Program Fil ...

  3. Roslyn+T4+EnvDTE项目完全自动化(3) ——生成c++代码

    C++语法复杂,写一个示例通过T4可生成c++代码 需求:数据库,生成c++增,删,改,查代码 数据生成c++类,包含所有字段 自动识别数据的主键Key 查询生成赋值类字段,类型转换 通过类自动生成s ...

  4. 2.HTML5基本标签

    一.标题标签  h1-->h6 h1最大 h6最小   <body>   <h1>一级标题</h1>   <h2>二级标题</h2> ...

  5. Ubuntu18.04升级内核后修改grub文件启动顺序

    采坑:之前线上的服务器内核是4.15.0,后面有的服务跑不起来,说是要升级内核,于是就升级了,然后改了/etc/default/grub的启动顺序,改错了就启动不起来了,哈哈.后面多次尝试还是改成功了 ...

  6. EasySharding.EFCore 如何设计使用一套代码完成的EFCore Migration 构建Saas系统多租户不同业务需求且满足租户自定义分库分表、数据迁移能力?

    下面用一篇文章来完成这些事情 多租户系统的设计单纯的来说业务,一套Saas多租户的系统,面临很多业务复杂性,不同的租户存在不同的业务需求,大部分相同的表结构,那么如何使用EFCore来完成这样的设计呢 ...

  7. Servlet全局信息共享域对象ServletContext

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512672630875619853/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...

  8. Vue项目中使用websocket

    <template> <div class="test"> </div> </template> <script> ex ...

  9. 关于APP设计规范和一些图层命名

    首先,本人大学计算机专业出身,学过编程,工作的时候做过 产品经理,设计师,前端工程师,对工作的流程都有一些见解. 现在主攻前端工程师,做Web APP.今天收到设计师的设计稿,一看图层分类,这让我感觉 ...

  10. WAFW00F waf识别工具 源码学习

    我实习工作的第一个任务根据已有的java waf识别工具 实现了一个python的waf识别工具 代码结构非常乱 仅仅达到了能用的水平. 顶头svp推荐这个项目当时我已经写好了开始用了自己的 稍微看了 ...