基于自适应高斯混合的稀疏注释语义分割

Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures

摘要

稀疏注释语义分割(SASS)旨在通过具有稀疏标签(即点或涂鸦)的图像来学习分割模型。现有的方法主要侧重于引入低水平的亲和性或生成伪标签来加强监督,而在很大程度上忽略了标记像素和未标记像素之间的内在关系。我们观察到,在特征空间中彼此靠近的像素更有可能共享同一类。
本文方法

  1. 提出了一种新的SASS框架,该框架配备了自适应高斯混合模型(AGMM)。
  2. AGMM可以根据标记和未标记像素的分布,有效地为未标记像素提供可靠的监督。
  3. 首先使用标记像素及其相对相似的未标记像素构建高斯混合,其中标记像素充当质心,用于对每个类别的特征分布进行建模
  4. 然后,我们利用来自标记像素的可靠信息和自适应生成的GMM预测来监督未标记像素的训练,实现在线、动态和稳健的自我监督。
  5. 此外,通过捕获分类高斯混合,AGMM鼓励模型以端到端的对比学习方式学习判别类决策边界。
    代码地址
    在这里插入图片描述
    图1:
    (a) SASS任务说明。
    (b) 与现有的SASS框架不同,我们的AGMM利用标记像素的可靠信息,生成用于动态在线监督的GMM预测。f表示模型,P和G分别表示分割和GMM预测。实线和虚线分别表示模型传播和监督。
    在这里插入图片描述
    图2:
    (a) 观察标记像素和未标记像素之间的固有关系
    (b) PASCAL VOC 2012数据集的分类性能。黑线、蓝条和橙条分别表示所有未标记像素、与标记像素相似的未标记像素和与标记像素不同的未标记的像素的IoU

本文方法

在这里插入图片描述
AGMM的总体框架:
AGMM包含一个主分割分支和一个GMM分支。
给定输入图像x,分割分支直接输出分割预测P
在训练期间,提取的深度特征f(x)被馈送到GMM分支中,以根据等式生成软GMM预测G
使用分割预测P和GMM预测G进行在线自我监督
在测试过程中,GMM分支被丢弃,因为稀疏标签在推理过程中不可用

GMM Formulation

在这里插入图片描述
给定具有K个注释类的输入图像,我们构建具有K个高斯混合分量的GMM。对于第i个高斯混合分量,我们首先计算属于第i类的标记像素xli的平均特征作为平均值µi:
在这里插入图片描述
其中f(x)是像素x的深层特征,其由分割模型的分类层之前的特征产生。一旦获得µi,第i个分量的方差σi可以计算为:

在这里插入图片描述
其中Pi表示第i个类别的分割预测分数,d公式化为:
在这里插入图片描述
其测量标记的像素和未标记的像素之间的距离。类似于等式1和2,然后我们构建GMM来对标记和未标记像素的特征分布进行建模。使用GMM,我们生成GMM预测G,如下所示:
在这里插入图片描述
与典型GMM相比,我们放弃了正则化项1√2πσ2。这样,我们可以保证对于每个类,GMM预测得分gi在0到1的范围内,使我们能够对分割预测P进行自我监督。这些GMM预测G是软得分的形式,表示每个像素x属于哪个类别的高斯混合。

Training with AGMM

给定GMM预测G,我们将它们分配给具有分割预测P的自监督。我们采用交叉熵形式来公式化自我监督损失函数Lself如下:
在这里插入图片描述
然后,我们还分配稀疏标签yl来监督G,如下所示:
在这里插入图片描述
此外,为了学习判别性高斯混合,我们提出了一个对比损失Lcon来扩大不同高斯混合质心之间的距离,如下所示:
在这里插入图片描述
有了这些损失函数,我们使用GMM预测G和分割预测P来相互监督。用于GMM预测G的总损失函数LGM M可以总结如下:
在这里插入图片描述
因此,我们的GMM-SASS框架中的总体损失函数L公式如下:
在这里插入图片描述

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
适应斯滤波是一种常用的图像滤波方法,在Matlab中也可以实现。下面是一个基于Matlab的自适应斯滤波的示例代码: ```matlab % 读入原始图像 img = imread('lena.jpg'); % 将图像转换为灰度图像 img_gray = rgb2gray(img); % 定义窗口大小和标准差 ws = 11; % 窗口大小 sigma = 5; % 标准差 % 计算每个像素的权重 weights = fspecial('gaussian', [ws ws], sigma); % 对每个像素进行滤波 img_filtered = zeros(size(img_gray)); for i = 1:size(img_gray, 1) for j = 1:size(img_gray, 2) % 计算当前像素的窗口 row_start = max(1, i - floor(ws/2)); row_end = min(size(img_gray, 1), i + floor(ws/2)); col_start = max(1, j - floor(ws/2)); col_end = min(size(img_gray, 2), j + floor(ws/2)); window = img_gray(row_start:row_end, col_start:col_end); % 计算窗口中每个像素的权重 weights_window = weights((i-row_start+1):(i-row_start+1+row_end-row_start), (j-col_start+1):(j-col_start+1+col_end-col_start)); % 对窗口中的像素加权平均 img_filtered(i, j) = sum(sum(double(window).*weights_window)); end end % 将滤波后的图像显示出来 imshow(uint8(img_filtered)); ``` 在上面的代码中,我们首先读入一张彩色图像并将其转换为灰度图像。然后定义了窗口大小和标准差,并使用`fspecial`函数计算每个像素的权重。接着对每个像素的周围窗口进行处理,计算窗口中每个像素的权重,并对窗口中的像素进行加权平均。最后将滤波后的图像显示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨小杨1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值