STDC语义分割网络:BiSeNet的轻量化加强版(CVPR2021语义分割)

2023-11-18

今天和大家分享CVPR2021中语义分割领域的一篇论文,论文标题及作者如下图所示:
在这里插入图片描述
论文下载地址:https://arxiv.org/abs/2104.13188

代码即将开源:https://github.com/MichaelFan01/STDC-Seg

动机

深度学习促进了计算视觉领域中语义分割算法的发展;随着自动驾驶、视频监控等应用场景的迫切需求,面向终端的轻量化语义分割网络被广泛研究。

为了减少算法的耗时,一些诸如DFANet、BiSenetv1的语义分割算法使用了轻量化的backbone,但是它们都是直接使用用于分类任务设计的backbone,作者认为,专为分类任务设计的backbone不能再语义分割领域中充分发挥它们的性能。

bisenet使用了multi-path结构的网络融合低层次特征和高层次特征,然而额外增加分支增加网络的运行时间。

作者提出了stdc模块,能够使用较少的参数量提取多尺度特征,且能够很方便地集成到u-net类型的语义分割网络中;对bisenet中的multi-path结构做出了改进,在提取低层细节特征的同时减少网络计算量。

STDC(short-term dense concatenate)模块

STDC模块的结构如下图所示:
在这里插入图片描述
图中的ConvX表示卷积+bn+relu操作,M表示输入特征通道数,N表示输出特征通道数。
在STDC模块中,第1个block的卷积核尺寸为11,其余block的卷积核尺寸为33.

若STDC模块的最终输出通道数为N,除最后一个block外,该模块内第i个block的输出通道数为N/(2**i),最后一个block的输出通道数与倒数第二个block保持一致。

与传统的backbone不同的是,STDC模块中深层的特征通道数少,浅层的特征通道数多。作者认为,浅层需要更多通道的特征编码细节信息;深层更多关注高层次语义信息,过多的特征通道数量会导致信息冗余。

STDC模块最终的输出为各block输出特征的融合,即:
在这里插入图片描述
上式中的F表示融合函数,x1、x2、…,xn表示n个block的输出,xoutput表示STDC模块的输出。使用concatenation操作融合n个block的特征。

下图表示stride=2版本的STDC模块:
在这里插入图片描述
对于stride=2版本的STDC模块,在block2中进行下采样操作;为了在融合时,保证feature map尺寸一致,对大尺寸的feature map使用stride=2,3*3的average pooling操作进行下采样。

STDC模块有两个特点:
(1)随着网络加深,逐渐减少特征通道数,以减少计算量;
(2)STDC的输出融合了多个block的输出feature map,包含多尺度信息。

下面表示由STDC模块组成的STDC网络:
在这里插入图片描述
该网络包含了6个stage,stage1~stage5中都对feature map进行了步长为2的下采样,stage6输出预测结果。

为了减少计算量,stage1和stage2中只使用1个卷积层。stage3~stage5中每个stage包含若干个STDC模块,其中第1个STDC模块包含下采样操作,其余STDC模块保持feature map尺寸不变。

作者构建了2个STDC网络,分别命名为STDC1和STDC2,它们的结构如下表所示:
在这里插入图片描述
表中的ConvX表示卷积+bn+relu,stage3~stage5均由若干个STDC模块组成。上表中的KSize表示kernel表示kernel尺寸,S表示步长,R表示重复次数,C表示输出通道数。

STDC分割网络架构

使用BiSeNet中的context path提取上下文信息,使用STDC网络作为backbone,构建STDC分割网络,如下图所示。:
在这里插入图片描述
网络中的stage3、stage4和stage5均对feature map进行下采样,然后使用global average pooling提取全局上下文信息。使用U型结构上采样特征,并与Stage4、Stage5后面的ARM(Attention Refine Module,借鉴自BiSeNet)输出进行融合,融合结果作为FFM(Feature Fusion Module,借鉴自BiSeNet)的输入,为FFM提供高层次语义信息,FFM的另外一个输入为Stage3输出的特征,该特征为FFM提供低层次细节信息。FFM的输出特征通过8 × 上采样进入Seg Head,Seg Head包括1个3 × 3 的卷积、BN和ReLU操作,以及1个1 × 1卷积,最终输出N维度特征,N为分割类别数。

为了弥补去除BiSeNet中的Spatial分支造成的细节损失,作者在stage3后面插入了detail head,使得stage3能够学到细节信息。需要注意的是,detail head只在训练中使用,目的是让stage3输出的feature map包含足够多的细节特征,用于与context分支的高层次语义特征融合。

作者使用了上图中图(C)的结构得到detail head的ground truth,即对标签分别做步长为1,2,4的Laplace conv,分别对步长为2和步长为4的输出结果进行2和4的上采样,使用带有可学习参数的1*1卷积融合,通过0.1的阈值输出最终的ground truth。

上述操作生成的ground truth中,细节特征所占的像素远少于非细节所占的像素,因此Detail Head部分面临着类别不均衡问题。因此联合使用binary cross-entropy loss和dice loss,dice loss可以缓解类别不均衡问题,detail loss为:

在这里插入图片描述
在这里插入图片描述
上图中图(b)的Detail Head包括1个3 × 3 的卷积、BN和ReLU操作,以及1个1 × 1卷积。

STDC分割网络和BiSeNet在总体结构上的差异如下图所示:
在这里插入图片描述
STDC分割网络使用Detail Guidance替代BiSeNet中的Spatial分支,在保留细节特征的同时减少了计算量。

实验结果

STDC分类网络性能

在ImageNet数据集上训练STDC分类网络,并在验证集上测试,结果如下表所示:
在这里插入图片描述
从上表中可以看出,STDC系列网络兼顾性能和计算速度。

STDC分割网络性能

在Cityscapes数据集上训练STDC分割网络,分别使用512 × 1024 512 \times 1024512×1024和768 × 1536 768 \times 1536768×1536分辨率的图片作为网络输入,将输出结果上采样至1024 × 2048 1024 \times 20481024×2048。在测试集上测试的模型使用了训练集和验证集进行训练,性能和速度如下表所示:

在这里插入图片描述
上表中的Seg50表示输入图片分辨率为512 × 1024,Seg75表示输入图片分辨率为768 × 1536。

从上表中可以看出,STDC分割网络在保持高推理速度的同时有着更高的精度。

一个更直观的比较如下图所示:
在这里插入图片描述
上表中的性能是在Cityscapes测试集上的结果,FPS在1080Ti GPU上使用batch为1时测得。

Detail Guidance对细节特征的影响

下图直观地表示了使用Detail Guidance与否对Stage3特征和分割结果的影响:
在这里插入图片描述
图(a)表示输入图像,图(b)和图(d)分别表示未使用Detail Guidance时Stage3和网络预测结果,图(c)和图(e)表示使用了Detail Guidance时Stage3和网络预测结果,图(f)表示ground truth。

从图中可以看出,使用了Detail Guidance后,Stage3的feature map细节更丰富,分割结果中的细节也更好。

4.总结
作者提出了STDC轻量化backbone用于分割任务;使用Detail Guidance替代BiSeNet中的Spatial分支,保留低层次细节特征的同时有效地减少了网络计算量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STDC语义分割网络:BiSeNet的轻量化加强版(CVPR2021语义分割) 的相关文章

  • Mass-Bruter:一款功能强大的网络常用服务爆破枚举工具

    关于Mass Bruter Mass Bruter是一款功能强大的网络常用服务爆破枚举工具 该工具本质上是一个简单的PoC项目 可以帮助广大研究人员快速在大规模网络系统中执行常见服务爆破枚举 该工具专为红队研究人员设计 支持检测FTP SS
  • 第八章 确认访问用户身份的认证

    第八章 确认访问用户身份的认证 8 1 何为认证 在计算机安全和网络通信的背景下 认证是 确认实体 如用户 计算机系统 服务 身份真实性的过程 认证是确保系统只对合法用户或实体开放访问权限的一种关键机制 在网络通信中 认证通常涉及验证用户或
  • 论文查重部分算不算重复率呢

    大家好 今天来聊聊论文查重部分算不算重复率呢 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 论文查重部分算不算重复率呢 在论文查重过程中 查重部分是否计入重复率是一个关键问题 本文将从七个
  • 广告竞价策略:激发广告变现潜能的关键

    在数字化时代 广告已经成为企业推广品牌 产品和服务的关键手段之一 为了最大程度地发挥广告的效果 广告竞价策略成为广告主和数字营销专业人士关注的焦点 通过巧妙运用竞价策略 广告主可以在激烈的市场竞争中脱颖而出 实现广告变现的潜能 admaoy
  • 【一份老网工珍藏多年的网络配置笔记,很重要!】

    01 交换机 路由器的几种配置模式及模式转换 1 用户模式 登录到交换机 路由器 时会自动进入用户模式 提示符为 switchname gt 在该模式下只能够查看相关信息 对 IOS的运行不产生任何影响 2 特权模式 用户模式下 键入 en
  • 【OCR】实战使用 - 如何提高识别文字的精准度?

    实战使用 如何提高文字识别的精准度 我们在平常使用OCR的时候 经常会出现文字识别不精准的情况 我们改如何提高文字识别的精度呢 以下是一些提高OCR Optical Character Recognition 光学字符识别 文字识别精准度的
  • 基于机器学习的投资组合推荐系统+源代码+文档说明+演示视频

    文章目录 源码下载地址 项目介绍 界面预览 项目备注 毕设定制 咨询 源码下载地址 源码下载地址 点击这里下载源码 项目介绍 界面预览
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 【图像融合】基于联合双边滤波和局部梯度能量的多模态医学图像融合研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 图像 文章
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 毕业设计:基于深度学习的微博谣言检测系统 人工智能

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 三 检测的实现 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有
  • 作物叶片病害识别系统

    介绍 由于植物疾病的检测在农业领域中起着重要作用 因为植物疾病是相当自然的现象 如果在这个领域不采取适当的护理措施 就会对植物产生严重影响 进而影响相关产品的质量 数量或产量 植物疾病会引起疾病的周期性爆发 导致大规模死亡 这些问题需要在初
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作

随机推荐

  • 线程安全分析

    1 成员变量和静态变量是否线程安全 如果它们没有被共享 则线程安全 如果它们被共享了 根据它们的状态是否能够改变 又分两种情况 如果只有读操作 则线程安全 如果有读写操作 则这段代码是临界区 需要考虑线程安全 2 局部变量是否线程安全 局部
  • 编译工具Make

    文章目录 make指令 指定目标 隐藏指令 通配符 伪目标 多目标 Makefile的命令 变量 变量的基础 赋值变量 函数调用 字符串操作函数 文件名操作函数 循环函数 条件判断函数 条件判断语句 隐式规则 隐式规则举例 隐式规则中的变量
  • Linux性能监控 -- vmstat命令

    文章目录 示例 字段说明 示例 输入vmstat命令后 第一个参数表示每1秒获取一次服务器资源 第二个参数表示总共获取10次 若第二个参数不设置 则表示持续获取服务器资源 字段说明 数据项 含义 r 表示有多少任务需要CPU执行 通常与后5
  • Button与ImageButton的点击监听事件-onClick

    Button与ImageButton自身都有一个onClick点击事件 通过自身的 setOnClickListener OnClickListener 的方法添加点击事件 所有控件都有一个OnClick事件 通过点击事件的监听可以实现点击
  • 吐血总结《Mysql从入门到入魔》,图文并茂

    文章目录 1 数据库操作 1 1显示数据库 1 2 创建数据库 1 3 使用数据库 1 4 查看当前数据库 1 5 删除数据库 2 表操作 2 1 创建表 2 2 更新表 2 2 1 添加列 2 2 2 删除列 2 3 查看表结构 2 4
  • CTF基本赛制与题型

    CTF简介 CTF的全称为Capture The Flag 即夺旗赛 CTF竞赛活动蓬勃发展 已成为了锻炼信息安全技术 展现安全能力和水平的绝佳平台 CTF号称计算机界的奥林匹克 CTF目标 CTF参赛队伍的目标为获取尽可能多的flag 参
  • 随机抽样一致性算法(RANSAC)示例及源代码

    作者 王先荣 大约在两年前翻译了 随机抽样一致性算法RANSAC 在文章的最后承诺写该算法的C 示例程序 可惜光阴似箭 转眼许久才写出来 实在抱歉 本文将使用随机抽样一致性算法来来检测直线和圆 并提供源代码下载 一 RANSAC检测流程 在
  • maven死活下载不了jar包的问题

    对应 问题6 选择适合自己的更新方式 通过排除法排除过的问题 1 idea版本问题 换了4个版本都有问题 2 电脑问题 差点重装 3 网络问题 换了手机网络一样不行 4 仓库 xml配置 或者maven插件版本的问题 试了很多版本 包括id
  • Spring Boot整合fastjson

    SpringBoot在构建RESTful风格的web服务时 默认使用的是Jackson作为JSON解析器 个人使用比较习惯的 json 框架是 fastjson 所以 spring boot 默认的 json 使用起来就很陌生了 所以很自然
  • Dynamics CRM: 使用setFilterXml来过滤需要在表单的Subgrid控件中进行展示的记录

    我们经常在表单中会用到subgrid控件 通常在一个表单中插入subgrid用来显示另外一个实体中的记录 而显示的内容我们是通过定义不同的视图来进行显示的 也可以通过javascript来进行一些控制 今天这篇博文我们使用另外一种方法来实现
  • KDUpdater 入门 (Qt5)

    KDTools 2 3 0 是KDAB公司的一个Qt4工具包 采用商业 GPL LGPL 三重授权 http www kdab com kdab products kd tools 该工具包中包含一个KDUpdater的组件 为Qt程序的自
  • t-SNE降维算法详解(附matlab代码)

    什么是t SNE t SNE的主要用途是可视化和探索高维数据 它由Laurens van der Maatens和Geoffrey Hinton在JMLR第九卷 2008年 中开发并出版 t SNE的主要目标是将多维数据集转换为低维数据集
  • 计算机视觉目标检测流程

    个人接触机器视觉的时间不长 对于机器学习在目标检测的大体的框架和过程有了一个初步的了解 不知道对不对 如有错误 请各位大牛不吝指点 目标的检测大体框架 目标检测分为以下几个步骤 1 训练分类器所需训练样本的创建 训练样本包括正样本和负样本
  • 线程池面试题

    线程池面试题 1 Executor 框架三大组成部分 2 ThreadPoolExecutor 类 线程池执行器 核心 2 1 ThreadPoolExecutor 3 个最重要的参数 2 2 ThreadPoolExecutor 饱和策略
  • 电机四象限运行

    电机四象限模式 前言 电机单象限模式 电机四象限模式 电机控制中的两象限和四象限程序 两象限程序 四象限程序 前言 在主机厂工作中常常提到四象限和两象限程序 对于电驱运行方式的四象限运行不是很熟悉 学习一下 做下笔记 以防止遗忘 个人理解
  • 成功解决 XXX--1.0-SNAPSHOT.jar中没有主清单属性

    问题描述 在运行使用maven打包的项目之后 运行项目发现主类没有找到 提示XXX 1 0 SNAPSHOT jar中没有主清单属性 问题原因 maven在打包时没有配置主类 解决方案 如果您使用的是Springboot框架 那么只需要在p
  • elasticsearch7.8.0 win指定jdk版本

    修改 elasticsearch env bat 文件 set JAVA HOME D elasticsearch 7 8 0 jdk if JAVA HOME set JAVA ES HOME jdk bin java exe set J
  • Python学习6.1类与对象

    一 类的定义 1 类的组成 类属性 实例方法 静态方法 类方法 eg 输入 class Student native place 云南 类属性 def init self name age self name name self age a
  • JUC之ReentrantLock

    一 背景 随着java内卷越来越厉害 校招经常会问一些源码知识 例如Synchronized的实现原理 ReentrantLock的实现原理 AQS的实现原理 ConCurrentHashMap的实现原理等等 如何能够灵活的应对呢 解决方案
  • STDC语义分割网络:BiSeNet的轻量化加强版(CVPR2021语义分割)

    今天和大家分享CVPR2021中语义分割领域的一篇论文 论文标题及作者如下图所示 论文下载地址 https arxiv org abs 2104 13188 代码即将开源 https github com MichaelFan01 STDC