[论文][半监督语义分割]Semi-Supervised Semantic Segmentation with High- and Low-level Consistency
Semi-Supervised Semantic Segmentation with High- and Low-level Consistency
创新点:
利用两个分支结构分别处理low-level和high-level的特征,进行半监督语义分割
网络结构

上分支:Semi-Supervised Semantic Segmentation GAN (s4GAN)
下分支:Multi-Label Mean Teacher (MLMT)
s4GAN
训练segmentation network \(S\)
segmentation network \(S\)的损失函数由以下三部分组成:
- Cross-entropy loss
输入原图到segmentation network \(S\)中,对于labeled images,输出的分割结果\(S(x^l)\)和标签\(y^l\)对比,计算交叉熵损失\(L_{ce}\)

- 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适用于有标签和无标签的数据 - 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上预训练)
实验结果:









疑问:
- 网络融合的目的?
- self-train loss的设定(为阻止discriminator变强)?
[论文][半监督语义分割]Semi-Supervised Semantic Segmentation with High- and Low-level Consistency的更多相关文章
- [论文笔记][半监督语义分割]Universal Semi-Supervised Semantic Segmentation
论文原文原文地址 Motivations 传统的训练方式需要针对不同 domain 的数据分别设计模型,十分繁琐(deploy costs) 语义分割数据集标注十分昂贵,费时费力 Contributi ...
- [论文][半监督语义分割]Adversarial Learning for Semi-Supervised Semantic Segmentation
Adversarial Learning for Semi-Supervised Semantic Segmentation 论文原文 摘要 创新点:我们提出了一种使用对抗网络进行半监督语义分割的方法 ...
- OSVOS 半监督视频分割入门论文(中文翻译)
摘要: 本文解决了半监督视频目标分割的问题.给定第一帧的mask,将目标从视频背景中分离出来.本文提出OSVOS,基于FCN框架的,可以连续依次地将在IMAGENET上学到的信息转移到通用语义信息,实 ...
- 2018年发表论文阅读:Convolutional Simplex Projection Network for Weakly Supervised Semantic Segmentation
记笔记目的:刻意地.有意地整理其思路,综合对比,以求借鉴.他山之石,可以攻玉. <Convolutional Simplex Projection Network for Weakly Supe ...
- 论文学习:Fully Convolutional Networks for Semantic Segmentation
发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...
- 论文笔记《Fully Convolutional Networks for Semantic Segmentation》
一.Abstract 提出了一种end-to-end的做semantic segmentation的方法,也就是FCN,是我个人觉得非常厉害的一个方法. 二.亮点 1.提出了全卷积网络的概念,将Ale ...
- 【Semantic segmentation Overview】一文概览主要语义分割网络(转)
文章来源:https://www.tinymind.cn/articles/410 本文来自 CSDN 网站,译者蓝三金 图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类 ...
- 利用NVIDIA-NGC中的MATLAB容器加速语义分割
利用NVIDIA-NGC中的MATLAB容器加速语义分割 Speeding Up Semantic Segmentation Using MATLAB Container from NVIDIA NG ...
- A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation
论文阅读笔记: A Three-Stage Self-Training Framework for Semi-Supervised Semantic Segmentation 基本信息 \1.标题:A ...
随机推荐
- mac学习Python第一天:安装、软件说明、运行python的三种方法
一.Python安装 从Python官网下载Python 3.x的安装程序,下载后双击运行并安装即可: Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的. MAC 系统一般 ...
- python极简教程01:基础变量
测试奇谭,BUG不见. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的教程,他们同大多数自学编程语言的人一样,无外乎遇到以下这些问题: 网络上的资料过多且良莠不全,不知道如 ...
- 从零开始学springboot-1.创建项目
新建一个项目 添加依赖 点击完成,项目结构如下 手动添加以下依赖 打开pom.xml文件,手动添加以下依赖,用于自动生成代码 <dependency> <groupId>com ...
- java运算符1
一:算术运算符(+, -, *, /, ++, --, ) 1.+号 :可以做加法运算(加号两边为字符和数字).正数表示 字符串连接符:只要+号两边其中有一边有字符串,输出时加号就充当连接 ...
- Python_关于python2的encode(编码)和decode(解码)的使用
在使用Python2时,我们习惯于在文件开头声明编码 # coding: utf-8 不然在文件中出现中文,运行时就会报错 SyntaxError: Non-ASCII character... 之类 ...
- Nginx 管理可视化神器!通过界面完成配置监控,一条龙
作者:Posted 来源:https://leanote.zzzmh.cn/blog/post/5cc7f63616199b068300001c https://mp.weixin.qq.com/ ...
- windows server 服务器安装jenkins 并通过git拉取代码实现自动发布到IIS
Jenkins是一个开源软件,可以通过一定的配置进行自动构建,测试,部署等功能. 首先,服务器应安装好 .NET Core环境和JDK, 下载Jenkins安装包 https://www.jenkin ...
- 【刷题-LeetCode】199 Binary Tree Right Side View
Binary Tree Right Side View Given a binary tree, imagine yourself standing on the right side of it, ...
- JUC之文章整理以及汇总
JUC文章汇总 JUC部分将学习<JUC并发编程的艺术>和<尚硅谷-大厂必备技术之JUC并发编程>进行博客的整理,各文章中也会不断的完善和丰富. JUC概述 JUC的视频学习和 ...
- jmeter - 阶梯式性能指标监听
概述 我们在进行阶梯式压力测试的时候,聚合报告生成的结果是一个汇总数据.并不会阶梯式的统计压测性能数据.这样我们就不能去对比不同阶梯压力下的性能数据变化趋势. 期望 假设现在一共会加载100个线程,我 ...