Adversarial Learning forSemi-Supervised Semantic Segmentation
首先来了解一下对抗学习:
对抗样本:将真实的样本添加扰动而合成的新样本,是由深度神经网络的输入的数据和人工精心设计好的噪声合成得到的,但它不会被人类视觉系统识别错误。然而在对抗数据面前,深度神经网络却是脆弱的,可以轻易迷惑深度神经网络。
对抗训练:想要在模型训练中提升模型的对抗防御能力,识别一些对抗样本
Abstract
本文提出了一种基于对抗网络的半监督语义分割方法,设计了一个全卷积判别器来判断预测值和GT,而且可以通过将对抗损失和交叉熵损失相结合来提高准确率,判别器分析无标签图像的初步预测,识别出其中比较确定或较为可靠的部分,并将这些区域作为监督信号,进一步指导模型进行学习。现有的一些方法可能采用弱标签(如图像级标签或者不完全标注的信息)来进行训练,而这篇方法则不同,它使用无标签图像,通过判别器识别可信区域来帮助模型训练,进一步提升了无标签数据的使用效率。
Introduction
在语义分割方面,有很多方法和数据集已经被提出,但因为物体/场景外观变化、遮挡和缺乏上下文理解,这项任务仍然具有挑战性,基于CNN的全卷积网络在语义分割上表现了良好的效果,许多方法的提出也是基于FCN的。
不同于 图像分类和目标检测,语义分割需要逐像素的标注,所以成本比较高,因此提出了半监督或弱监督来降低成本。
在本论文中,将语义分割网络视为GAN框架中的生成器,并提出一个FCN的判别器。不同于传统的GAN生成器(用于生成图片),语义分割网络的“输出”是输入图像的每个像素的类别概率图(即概率地图),而不是生成图像。因此,语义分割网络的任务是输出每个像素对应的类别概率,表示该像素属于某个语义类别的可能性。通过对抗训练的方式,FCN的判别器强制要求分割网络的输出尽可能接近真实的标签地图。
在本文中结合两个半监督损失,首先,利用判别器生成的置信度给出可信区域,可以作为有效的训练信号,通过信任图作为监督信号来引导交叉熵损失(交叉熵损失一般用于监督学习),信任图可以作为掩码,使得模型只在可信区域内进行训练。在未标记数据上使用对抗损失,可以指导生成器生成逼近GT的mask。
Related Work
基于CNN的最新方法:
- 近年来,卷积神经网络(CNN)的进步使得语义分割方法得到了显著提升。例如,一些经典的分类网络(如AlexNet、VGG、ResNet等)可以通过改造为全卷积网络(FCN)来执行语义分割任务。这种改造过程的核心思想是,将分类网络中的全连接层替换为卷积层,使得网络能够输出与输入图像尺寸相同的像素级预测。
- 这种方法虽然有效,但需要大量像素级标注的真实数据,这在实际应用中是非常困难和昂贵的。
弱监督方法的不同实现:
-
多实例学习(Multiple Instance Learning, MIL):在[36]和[35]的研究中,使用了多实例学习的方法,利用图像级标签生成潜在的分割标签图。MIL是一种弱监督学习方法,它可以利用图像级标签来推断图像中不同区域(或"实例")的类别,从而生成伪标签进行训练。
-
图像级标签惩罚:Papandreou等人[33]通过图像级标签来惩罚网络对不存在的类别进行预测。这种方法的核心思想是,如果图像级标签没有标明某个类别,网络就不应该在预测中出现该类别,从而强制模型学习到更加精准的分割边界。
-
对象定位优化:Qi等人[37]通过对象定位来精细化分割结果,即通过识别物体的大致位置来优化网络的分割精度,从而减少对精确像素级标注的需求。
-
分类网络作为特征提取器:Hong等人[15]使用有标签的图像训练一个分类网络作为特征提取器,用来进行解卷积操作(即上采样)。这样,分割网络能够利用分类网络提取到的特征进行更精确的分割。
还有利用边界框、点标注、Web视频数据进行训练的。半监督学习通过结合全标注数据和弱标注数据,提升了模型在语义分割任务中的表现。具体来说,半监督学习方法不仅利用图像级标签等弱监督信号来训练网络,还结合了少量的完全标注数据(如像素级标签),从而在保证性能的同时,降低了标注成本。
Algorithm Overview

该模块包含两个模块:分割网络和判别器网络
分割网络用于生成类别概率分布图,可以是任何语义分割的框架,比如FCN、Deeplab等,给定一个输入图像H*W*3,输出一个H*W*C的类别概率分布图。
判别器网络:是一个基于FCN的网络,用于评估分割网络的输出(类别概率图)与真实标签(ground truth label maps)之间的差异。
输入:是类别概率分图(来自分割网络或者真实标签)
输出:输出是 H × W × 1 的空间概率图,表示每个像素是否来自真实标签图p=1,否则来自分割网络的输出p=0.
训练过程:对于有标注的数据,分割网络在训练时会受到两个损失函数(交叉熵损失和对抗损失)的监督;对于无标签数据,我们采用半监督训练的方式,首先,Unlabeled image会进入到分割网络生成一个类别概图,然后将这个类别概率图输入进入判别器网络中,生成一个置信度图,用置信度高的区域指导训练,相当于一个伪标签的作用。判别器训练:判别器网络仅使用带标签的数据进行训练,它的任务是区分分割网络输出的类别概率图和真实标签之间的差异。
Semi-Supervised Training with Adversarial Network
Network Architecture
Segmentation network.DeepLab-v2框架with ResNet-101model pre-trained on the ImageNet dataset and MSCOCO。去掉最后一个分类层,并将最后两个卷积的stride从2改为1,从而使输出特征映射的分辨率有效地为输入图像大小的1/8。为了扩大感受野,我们在conv4和conv5层分别应用扩展卷积,stride分别为2和4。在最后一层使用了ASPP方法,最后,应用一个上采样层和softmax输出来匹配输入图像的大小。
Discriminator network.它由5个卷积层组成,其中4×4内核和{64,128,256,512,1}通道,步幅为2。 每个卷积层后面都有一个Leaky-ReLU[30]参数化为0.2,最后一层除外。为了将模型转换为全卷积网络,在最后一层添加上采样层,以将输出重新缩放为输入映射的大小。没有使用任何批处理归一化层,因为它只有在批处理大小足够大时才表现良好。
Loss Function
Discriminator network. 区别真实标签和分割网络的预测标签

第一项是针对来自分割网络的标签yn=0,我们希望它越趋近于0越好,因为想要判别器更能区分生成的标签和真实标签
第二项是针对真实标签yn=1,我们希望它越趋近于1越好,因为这是表示判别器认为该输入来自真实标签。
Yn真实的标注数据,经过 one-hot 编码处理后得到的概率图,因此判别器可以很容易地区分标签是来自真实标签,还是来自分割网络生成的标签,比如:
Yn=[0,1,0,0,0]
S(Xn)=[0.1,0.7,0.1,0.05,0.05]
解决办法:
- 全卷积结构:在判别器中采用 全卷积网络(Fully Convolutional Network),这样判别器的输入不仅仅是一个全局的标签(像是一个标量值),而是包含了空间信息的 置信度图。这种设计使得判别器要根据 空间局部信息 来判断每个像素点的真实性,而不仅仅依赖于标签的全局结构。
- 扩散方案(Scale scheme):为了增加判别器的难度,论文还尝试了一种扩散方案,将真实标签的 one-hot 编码进行 轻微扩散,让标签在不同的类别通道之间稍微分布,避免判别器依赖于 one-hot 编码的明确结构
Segmentation network.
过最小化多任务损失函数来训练分割网络:

交叉熵损失:使分割网络的预测趋近于真实值

对抗损失:使判别器判断不出来是预测值,最大化判别器的输出,欺骗判别器

Training with unlabeled data.
不使用交叉熵损失,因为没有GT,但是还是使用对抗损失,因为对抗损失仅依赖于判别器。
Self-taught Learning:使用训练好的判别器来处理分割网络的预测结果,得到一个置信度图D(S(Xn)),表示判别器对于每个像素预测是否可信。通过设置一个阈值 Tsemi,将置信度图二值化,得到可信区域(即置信度高于阈值的区域)。

半监督损失:


在实验中:阈值 Tsemi通常被设置在 0.1 到 0.3 之间、
Experiment
如果分割网络不试图欺骗鉴别器,由鉴别器生成的置信度图将是无意义的,提供较弱的监督信号。
相关文章:
Adversarial Learning forSemi-Supervised Semantic Segmentation
首先来了解一下对抗学习: 对抗样本:将真实的样本添加扰动而合成的新样本,是由深度神经网络的输入的数据和人工精心设计好的噪声合成得到的,但它不会被人类视觉系统识别错误。然而在对抗数据面前,深度神经网络却是脆弱…...
UCOS-II 自学笔记
摘抄于大学期间记录在QQ空间的一篇自学笔记,当前清理空间,本来想直接删除掉的,但是感觉有些舍不得,因此先搬移过来。 一、UC/OS_II体系结构 二、UC/OS_II中的任务 1、任务的基本概念 在UCOS-II中,通常把一个大型任…...
C++ - 二叉搜索树讲解
二叉搜索树概念和定义 二叉搜索树是一个二叉树,其中每个节点的值都满足以下条件: 节点的左子树只包含小于当前节点值的节点。节点的右子树只包含大于当前节点值的节点。左右子树也必须是二叉搜索树。 二叉树搜索树性质 从上面的二叉搜索树定义中可以了…...
基于开源云原生数据仓库 ByConity 体验多种数据分析场景
基于开源云原生数据仓库 ByConity 体验多种数据分析场景 业务背景什么是 ByConity上手实测环境要求测试操作远程登录 ECS 服务器windows10 自带连接工具 执行查询 ByConity 相对于 ELT 能力的优化提升并行度任务级重试并行写入简化数据链路 业务背景 大家都知道,在…...
RabbitMQ 消息确认机制
RabbitMQ 消息确认机制 本文总结了RabbitMQ消息发送过程中的一些代码片段,详细分析了回调函数和发布确认机制的实现,以提高消息传递的可靠性。 返回回调机制的代码分析 主要用途 这个代码主要用于设置RabbitMQ消息发送过程中的回调函数,即…...
Node.js:开发和生产之间的区别
Node.js 中的开发和生产没有区别,即,你无需应用任何特定设置即可使 Node.js 在生产配置中工作。但是,npm 注册表中的一些库会识别使用 NODE_ENV 变量并将其默认为 development 设置。始终在设置了 NODE_ENVproduction 的情况下运行 Node.js。…...
【QT】背景,安装和介绍
TOC 目录 背景 GUI技术 QT的安装 使用流程 QT程序介绍 main.cpp编辑 Wiget.h Widget.cpp form file .pro文件 临时文件 C作为一门比较古老的语言,在人们的认知里始终是以底层,复杂和高性能著称,所以在很多高性能需求的场景之下…...
从0到1搭建webpack
好,上一篇文章我们说了一下在react中怎么弄这个webpack,那么现在在说一下不用react我们又该怎么配置,这些呢也都是我自己通弄过看视频自己总结的,拿来给大家分享一下。 前期准备条件 1、nvm(可以快速切换node版本&am…...
针对解决conda环境BUG的个人笔记
1-conda学习&安装 安装视频: 零基础教程:基于Anaconda和PyCharm配置Pytorch环境_哔哩哔哩_bilibili 安装过程: MX250笔记本安装Pytorch、CUDA和cuDNN-CSDN博客 Win10MX250CUDA10.1cuDNNPytorch1.4安装测试全过程(吐血)_nvidia geforc…...
读《Effective Java》笔记 - 条目13
条目13:谨慎重写clone方法 浅拷贝和深拷贝 浅拷贝(Shallow Copy) 浅拷贝 只复制对象本身,而不复制对象引用的成员。 对于引用类型的字段,浅拷贝会将原对象的引用复制到新对象中,而不会创建新对象实例。因…...
SQL 之连接查询
SQL 连接查询:深入理解 JOIN 操作 在数据库管理中,连接查询(JOIN)是一种基本而强大的操作,它允许我们从两个或多个表中检索数据。SQL 中的 JOIN 操作使得数据整合变得简单,这对于数据分析和报告至关重要。…...
vscode切换anaconda虚拟环境解释器不成功
问题: 切换解释器之后运行代码还是使用的原来的解释器 可以看到,我已经切换了“nlp”解释器,我的nltk包只在“nlp”环境下安装了,但是运行代码依然是"torch"解释器,所以找不到“nltk”包。 在网上找了各种…...
一个实用的 Maven localRepository 工具
目录 1 现状2 当前解决3 更好的解决3.1 下载 Maven localRepository 工具包3.2 上传本地 localRepository 包3.3 清理 localRepository 中指定后缀的文件 1 现状 在使用 Maven 时,我们可能会经常与本地仓库和私服仓库打交道。 例如对于本地仓库,因为某…...
目标检测,图像分割,超分辨率重建
目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…...
微信小程序 城市点击后跳转 并首页显示被点击城市
在微信小程序中,渲染出城市列表后,如何点击城市,就跳转回到首页,并在首页显示所点击的城市呢? 目录 一、定义点击城市的事件 二、首页的处理 首页:点击成都市会跳转到城市列表 城市列表:点击…...
Linux - nfs服务器
五、nfs服务器 1、基础 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统 中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。 由于NFS支持的功能比较多,而不同的功能都会使用不同的程…...
uniapp图片上传预览uni.chooseImage、uni.previewImage
文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera 微信小程序从基础库 2.21.0 开始, wx.choos…...
C++ 字符串中数字识别
【问题描述】 输入一个字符串,含有数字和非数字字符,如“sumabc234;while(abc700)tab{ass346;bssabc267;}”,将其中连续的数字作为一个整数,依次存放到一个数组nums中。例如,234放在nums[0],700放在nums[1…...
学术中常见理论归纳总结-不定期更新
1.信息传播类 1.1 扩散创新理论 创新扩散理论是传播效果研究的经典理论之一,是由美国学者埃弗雷特罗杰斯(E.M.Rogers)于20世纪60年代提出的一个关于通过媒介劝服人们接受新观念、新事物、新产品的理论,侧重大众传播对社会和文化的影响。 1927-1941年进行的“艾奥瓦杂交玉…...
ModelSim怎么修改字体及大小
点击TOOLS 选择PERFERENCES选择下一级菜单的TEXTFONT/CHOOSE/选择字体和大小最后不要忘记点apply再退出...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
