Advertisement

《Self-Supervised Difference Detection for Weakly-Supervised Semantic Segmentation》笔记

阅读量:

Intorduction

这篇论文探讨了利用弱监督方法进行语义分割器训练的技术路径。在弱监督框架下缺乏明确标注数据的情况下(没有强监督信息的情况下),本研究发现,在针对语义分割任务时所使用的样本标签仅包含图像所属类别信息。现有技术均能够基于分类数据生成相应的像素级掩膜,在此基础上提出了一种改进方案,在现有技术的基础上实现了更为精确地预测像素级别的掩膜结果。

该函数被定义为粗糙度较高的mask(input_mask),其输出被定义为精细度更高的mask(output_mask),并且被称为mapping function(映射函数)。研究表明,在实际应用中虽然反复将输出结果作为新的输入返回给该函数进行处理后通常能得到更好的结果(improved output quality)。然而需要注意的是,在实际应用中虽然反复迭代通常能提升结果质量(output quality),但并不一定能保证每次迭代后的output_mask都比input_mask更加精细(fine)或更为准确(accurate)。针对这一问题提出了一种确保收敛性的新方法(convergence guarantee)。这种方法在理论上具有一定的合理性(theoretical soundness)。

Method

将输入至mapping function的数据定义为知识域,并将其输出结果标记为建议字段;假设这些信号中包含噪声干扰的情况下开展研究方法设计;为了区分知识域与建议域之间的差异区域(如图1a所示),我们提出了差异数值检测模块;研究开发了一种自监督学习模型DD-Net(Difference Difference Net),用于检测知识域与建议域之间的差异;该模型能够动态选择使用知识域或建议域的数据进行训练;在训练过程中,模型能够通过结合知识域与建议域的数据进行优化;其中DD-Net采用的是基于数据的自监督学习策略

the concept of the proposed approach

在实际应用中,并非所有的建议都可以实现预测效果;其中一部分advice具备一定的预测能力,并且由于在训练过程中包含了大量具有代表性的样本数据,在这种情况下建议书中的某些内容往往能够相对容易地被推断出来。作者基于对高质量信息资源的信任假设:即足够多且优质的信息存在于建议书中;并提出了一种方法用于筛选关键的信息点;这些关键点不仅具有较高的准确性特征而且是建议书中的核心内容;因此这些关键点可以通过差异性检测技术获取其差异性信息;其差异性信息反映了建议书中真实存在的分类结果;通过训练好的 DD-Net 模型能够识别出知识库中出现错误的位置;这些差异性信息即为可被 DD-Net 模型识别出的知识库中的错误位置;而 DD-Net 作为一种基于数据集训练的学习模型;其能够识别出的知识区域即为知识库中最可能出现错误的位置;值得注意的是:所有的建议书均包含着噪声干扰因素;因此将整个建议书分为真实有用的真建议和存在误导性的假建议两类;真建议对应的是那些符合实际情况且值得采纳的内容;而假建议则反之;真建议所包含的真实有用信息来源于训练数据集中存在的样本特征;而 DD-Net 模型正是通过学习训练数据集中的样本特征得以建立起来的知识体系从而能够将真建议与假建议区分开来:最终得出结论:只有当模型学习到的知识与实际知识库存在一致性较高的区域时才能将知识库中存在的误判位置进行有效的修正

difference detection network

首先说明如何预测difference

接着看看DD-Net的网络结构

DD-Net

DD-网接收了backbone网络提取出的高阶特征e^h(x;\theta_e)以及低阶特征e^l(x;\theta_e),并带有对应的掩码信息\hat{m}。其输出为difference mask对应的置信度分布d。在训练过程中所使用的损失函数为:

\begin{aligned} \mathcal{L}_{\text{diff}} = \frac{1}{|S|} \sum_{u \in S}\big(&J(M^{K,A}, d^K, u; \theta_d)\\& + J(M^{K,A}, d^A, u; \theta_d)\big) \end{aligned} \tag*{(2)}

其中
J(M,d,u) = M_u \log d_u + (1 - M_u) \log (1 - d_u)

可认为其作用是对接收的输入mask中的每一个像素点所属类别进行预测是否正确。\n\n其置信度map d值越大,则该像素点被误判为其他类别的概率越高。

Self-supervised difference detection module (SSDD)

论文分别对知识和建议的mask进行误判分析。随后根据这两种分析结果更新mask。

overview of SSDD

知识和建议通过DD-Net分别各自获得置信度映射 d^Kd^A。进而打算将知识、建议以及对应的置信度映射 d^Kd^A 整合起来,以生成更为精确的掩码。

当知识库(knowledge)在指导方针(advice)设定的一个特定阈值以上的错误率出现时,则将mask在该位置上的数值设置为ad advice;否则维持原有的知识库状态。

w_u = -d^A_u + d^K_u + \text{bias}_u \tag{3}

更新mask

M^{D}_u = \begin{cases} m^A_u & \text{if} (w_u \ge 0) \\ m^K_u & \text{if} (w_u \lt 0) \end{cases} \tag{4}

SSDD的公式如下

m^D = SSDD(e(x), m^K, m^A; \theta_d) \tag{5}

其中e(x)=(e^l(x), e^h(x))

weakly-supervised semantic segmentation

接下来看如何把SSDD应用到语义分割的弱监督训练的过程。

训练过程分成两部分。

Seed mask generation stage with static region refinement

该流程采用PSA技术生成语义分割的起始mask m^{{K₀}}. 通过训练分割网络来获得初始mask m^{{K₀}}. 应用CRF优化算法对初始mask进行调整以获得优化后的结果 m^{{A₀}}. 将这两个mask输入到SSDD模型中以生成最终的改进版本 m^{{D₀}}

static region refinement

该网络的训练损失函数设计用于计算

m^{K0}m^{A0}的mask均不正确时,使用这样的模型进行训练将失去意义,并因此在论文中通常会剔除这类样本。但并未详细说明如何筛选这些异常样本这可能意味着需要通过人工方法进行筛选和排除。

用于建立分割网络SegNet的目标函数

\mathcal{L}_{\text{seg}}(x, m; \theta) = - \frac{1}{\sum_{k \in K} |S_k^m|} \sum_{k \in K} \sum_{u \in |S_k^m|} \log (h_u^k(\theta)) \tag{8}

就本研究而言,在该阶段所采用的损失函数为:

\mathcal{L}_{\text{static}} = \mathcal{L}_{\text{base}} + \mathcal{L}_{\text{diff0}} \tag{9}

该阶段的作用是

m^{D0} = SSDD(e(x), m^{K0}, m^{A0}; \theta_{d0}) \tag{10}

The training stage is characterized by the utilization of an entirely supervised segmentation model combined with the dynamic region refinement.

在当前阶段中,在利用SegNet技术实现分割结果的生成之后

dynamic region refinement

分割网络在该场景下的训练目标

SSDD module 1 的损失函数用于衡量...

与SSDD module1相比,SSDD module2的训练流程存在显著差异。其中m^{K1},m^{A1},m^{D1}均依赖于分割网络产生的分割结果。值得注意的是,在实际应用中可能会出现极端情况(如mask全部为0或全部为1),这会导致这些mask的实际意义受到限制。为了避免这种极端情况的发生,作者特意在该分割网络中添加了一条新的分支线路用于预测m^{D0}m^{D1}之间的差异值m^{sub}。针对SSDD module2而言,其训练损失计算方式如下:$$
\begin{aligned} \mathcal{L}{\text{diff2}} = \frac{1}{|S|} \sum{u \in S}( & J(M^{D0,sub}, d^{D0}, u; \theta_{d2}) \ & + J(M^{\text{sub}}, D^{\text{diff}}, u; \theta_{d2})) \end{aligned} \tag{13}

该子网络的训练损失由以下公式计算得出:

\mathcal{L}_{sub} = \alpha \mathcal{L}_{seg}(x, m^{D0}; \theta_{e1}, \theta_{sub}) + (1 - \alpha) \mathcal{L}_{seg} (x, m^{D1}; \theta_{e1}, \theta_{base}) \tag{14}

该阶段计算动态损失函数。

Experiment

看看该方法得到的mask的结果

mask

分割的结果,与其他方法比较

comparision with the WSS methods without additional supervision
comparision with the WSS methods with additional supervision

全部评论 (0)

还没有任何评论哟~