Zhang D., Zhang H., Tang J., Hua X. and Sun Q. Causal Intervention for Weakly-Supervised Semantic Segmentation. NIPS, 2020.

这篇文章从因果关系的角度剖析如何提升弱监督语义分割的方法.

主要内容

普通的弱监督语义分割

弱监督语义分割不似普通的语义分割一样依赖丰富的人工标注, 本文考虑的情况就是非常极限的, 仅知道每张图片的类别标签(可以是多标签, 比如: 人, 车, 表示一张图片里面有人有车).

一般的弱监督语义分割包含:

  1. 训练一个分类模型(多标签);
  2. 通过CAM确定大概的seed areas;
  3. 将seed areas进行拓展得到pseudo-masks;
  4. 训练一个分割模型(将pseudo-masks作为ground-truth);
  5. 概分割模型作为最后的模型

但是显然的是, 仅仅凭借类别标签完成复杂的语义分割任务是相当困难的, 大概有如下:

  1. 目标物体往往不是孤立的: 有可能数据集中每次出现马的时候都会有一个人, 则分类模型可能会将二者的特征混合用于分类, 那么最后的分割就很难明显的把二者的边界提取出来;
  2. 背景信息并不完全: 背景往往含有一些别的未被标注的目标, 而这些目标和我们所关心的目标有可能是相互联系甚至是同时存在的, 比如: 地板和沙发, 这导致在提取沙发的时候往往把模板也一并提取出来了;
  3. foreground, 前景的目标往往是共同变化的: 比如车和车窗, 车窗总是会反应周围的事物, 导致车窗这一属性不是用来提取车的好的特征, 分类模型很有可能会丢掉这一部分信息, 其导致的结果就是最后的分割的区域车窗少一块.

因果模型

C: context prior;

X: pixel-level image;

M: image-specific representation using the textual templates from C;

Y: labels.

作者认为, 整个流程是这样的:

  1. 确定先验背景信息\(C\);
  2. 通过先验背景信息\(C\)构建图片\(X\);
  3. 图片\(X\)和背景信息\(C\)共同确定了和背景有关的特征表示\(M\);
  4. \(X\), \(M\) 共同影响最后的类别标签\(Y\).

我们一般的分类模型, 实际上是拟合条件分布

\[\mathrm{P}[Y|X],
\]

显然这个条件分布与先验的背景信息有很大联系, 即图(a).

而我们实际上所关心的是

\[\mathrm{P}[Y|do(X)],
\]

即建立目标的出现和场景没有关系的模型.

首先我们要做的就是将其转为一般的统计估计量:

\[\tag{1}
\begin{array}{rl}
\mathrm{{P}}[Y|do(X)]
=& \sum_{c} \mathrm{P}[Y|do(X), c] \: \mathrm{P}[c|do(x)]\\
=& \sum_{c} \mathrm{P}[Y|do(X), c] \: \mathrm{P}[c]\\
=& \sum_{c} \mathrm{P}[Y|X, c, f(X;c)] \: \mathrm{P}[c]\\
=& \sum_{c} \mathrm{P}[Y|X, M=f(X;c)] \: \mathrm{P}[c].\\
\end{array}
\]

显然, 这里有一个假设, 即知道了\(X, C\)之后, \(M\)也是确定的, 其通过\(M=f(X;c)\)来拟合.

训练流程

  1. 训练以\(X, M\)为输入的多标签分类网络, 其通过
\[\mathrm{P}[Y|do(X);\Theta_t] = \prod_{i=1}^n [\mathbf{1}_{i \in Y}\frac{1}{1 + \exp(-s_i)} + \mathbf{1}_{i \not\in Y}\frac{1}{1 + \exp(s_i)} ],
\]

其中\(s_i=f(X, M_t;\theta_t^i)\), \(n\)是类别总数.

2. 利用CAM得到seed areas 并扩展为pseudo-mask;

3. 将上面的pseudo-mask作为ground-truth训练分割模型;

4. 计算

\[M_{t+1} = \sum_{i=1}^n \alpha_i c_i P(c_i), \quad \alpha_i = softmax(\frac{(W_1X_m)^T(W_2c_i)}{\sqrt{n}}).
\]

注意到, 我们本应该最小化(1), 但是注意到, 此时对于每一个\(c\), 我们都要循环一次, 这非常非常耗时, 所以作者是:

\[\sum_{c} \mathrm{P}[Y|do(X), M=f(X;c)] \mathrm{P}[c]\approx
\mathrm{P}[Y|do(X), M=\sum_{c}f(X;c)\mathrm{P}(c) ].\\
\]

一直进行\(T\)步.

注:第1步中的\(f(X, M_t;\theta_t^i)\)并不一定要让\(X, M_t\)都在同一层输入, 实际上\(M_t\)是比较抽象的信息, 故作者实验发现在后几个block加入效果更好;

注: 先验背景信息\(\{c_i\}\)是pseudo-mask的平均;

注: \(W_1, W_2\)是可训练的参数.

代码

原文代码

Causal Intervention for Weakly-Supervised Semantic Segmentation的更多相关文章

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

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

  2. [ICCV 2019] Weakly Supervised Object Detection With Segmentation Collaboration

    新在ICCV上发的弱监督物体检测文章,偷偷高兴一下,贴出我的poster,最近有点忙,话不多说,欢迎交流- https://arxiv.org/pdf/1904.00551.pdf http://op ...

  3. 论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation

    论文题目是STC,即Simple to Complex的一个框架,使用弱标签(image label)来解决密集估计(语义分割)问题. 2014年末以来,半监督的语义分割层出不穷,究其原因还是因为pi ...

  4. [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  5. [CVPR2017] Weakly Supervised Cascaded Convolutional Networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #042eee } p. ...

  6. 论文笔记:Rich feature hierarchies for accurate object detection and semantic segmentation

    在上计算机视觉这门课的时候,老师曾经留过一个作业:识别一张 A4 纸上的手写数字.按照传统的做法,这种手写体或者验证码识别的项目,都是按照定位+分割+识别的套路.但凡上网搜一下,就能找到一堆识别的教程 ...

  7. 论文笔记《Feedforward semantic segmentation with zoom-out features》

    [论文信息] <Feedforward semantic segmentation with zoom-out features> CVPR 2015 superpixel-level,f ...

  8. [Papers] Semantic Segmentation Papers(1)

    目录 FCN Abstract Introduction Related Work FCN Adapting classifiers for dense prediction Shift-and-st ...

  9. Fully Convolutional Networks for Semantic Segmentation 译文

    Fully Convolutional Networks for Semantic Segmentation 译文 Abstract   Convolutional networks are powe ...

随机推荐

  1. c学习 - 第三章:数据类型、运算符与表达式

    数据类型 基本类型 整型 短整型(short int) 基本整型(int) 长整型(long int) 字符型(char) 浮点型 单精度(float) 双精度(double) 长双精度(long d ...

  2. AOP中ProceedingJoinPoint获取目标方法,参数,注解

    private void saveLog(ProceedingJoinPoint jp,long time)throws Throwable { package com.cy.pj.common.as ...

  3. Linux学习 - 输入输出重定向,管道符,通配符

    一.键盘输入读取read read [选项] [变量名] -p [显示信息] 在等待read输入时,输出提示信息 -t [秒数] 指定read输入等待时间 -n [字符数] 指定read只接收n个字符 ...

  4. UILabel总结

    UILabel 能显示文字,不能直接通过addTarget...方法监听点击 1. 常见属性 @property(nonatomic,copy) NSString *text; 显示文字 @prope ...

  5. js中获取url参数

    function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location ...

  6. logrotate没有rotate的排查过程

    前言 背景 xxx,你过来把squid的日志检查一下,是否做了日志切割:于是乎开启了logrotate没有切割日志的排查旅程,em--.只能说过程很爽,平时疲于应付繁琐的事情,难得有点时间能一条线慢慢 ...

  7. socket通道

    一.socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 就是两个进程,跨计算机,他俩需要通讯的话,需要通过网络对接起来.这就是 socket 的作 ...

  8. Docker从入门到精通(四)——常用命令

    话不多说,本篇文章给大家介绍 docker 的常用命令,基本上会覆盖我们日常使用的命令. 1.万能帮助命令 docker 命令 --help 假设你想用某个命令,但是又不知道该命令的一些参数怎么用,这 ...

  9. 【antd】表单-单页面多表单提交功能

    需求:多个表单,我想一起校验一起提交,比如这里的上下两个部分为两个组件,两个form表单 功能点:1.所有报表需通过校验 2.通过校验后提交并带入所有参数 核心问题:form表单的validateFi ...

  10. 转:builder模式分析

    建造者模式 11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:"牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我们公司制 作了,不 ...