【语义分割】语义分割概念及算法介绍
文章目录
- 一、基本概念
- 二、研究现状
- 2.1 传统算法
- 2.2 深度学习方法
- 三、数据集及评价指标
- 3.1 常用数据集
- 3.2 常用指标
- 四、经典模型
- 参考资料
一、基本概念
语义分割是计算机视觉中很重要的一个方向。不同于目标检测和识别,语义分割实现了图像像素级的分类。它能够将一张图片或者视频(视频以帧来提取的话其实就是图片),按照类别的异同,将图像分为多个块。
如下图所示:

二、研究现状
2.1 传统算法
-
灰度分割
最简单的语义分段形式涉及分配区域必须满足的硬编码规则或属性,以便为其分配特定标签。规则可以根据像素的属性(例如灰度级强度)来构建。使用此技术的一种方法是拆分(Split)和合并(Merge)算法。该算法递归地将图像分割成子区域,直到可以分配标签,然后通过合并它们将相邻的子区域与相同的标签组合。
这种方法的问题是规则必须硬编码。此外,仅用灰色级别的信息来表示复杂的类(如人)是极其困难的。因此,需要特征提取和优化技术来正确地学习这些复杂类所需的表示。 -
条件随机场
考虑通过训练模型为每个像素分配类来分割图像。如果我们的模型不完美,我们可能会得到自然界不可能得到的噪声分割结果(如图中所示,狗像素与猫像素混合)。
可以通过考虑像素之间的先验关系来避免这些问题,例如,对象是连续的,因此附近的像素往往具有相同的标签。为了模拟这些关系,我们使用条件随机场(CRF)。
CRF是一种用于结构化预测的统计建模方法。与离散分类器不同,CRF可以在进行预测之前考虑“相邻上下文”,比如像素之间的关系。这使得它成为语义分割的理想候选。
图像中的每个像素都与一组有限的可能状态相关联。在我们的示例中,目标标签是可能的状态集。将一个状态(或标签,u)分配给单个像素(x)的成本称为它的一元成本(unary cost)。为了对像素之间的关系建模,我们还考虑了将一对标签(u,v)分配给一对像素(x,y)的成本,即成对成本(pairwise cost)。我们可以考虑它的近邻像素对(Grid CRF)或者我们可以考虑图像中的所有像素对(Dense CRF)

2.2 深度学习方法
与此同时随着深度学习技术的不断发展,深度学习在语义分割任务中大放异彩,取得了骄人的成绩。从第一篇真正意义上的深度学习方法语义分割模型FCN说起,语义分割发展了不足六年的时间,经典的SegNet,Deeplab系列,DenseASPP等等,再到近些年来研究热点的NAS方法。不断的刷新各个分割数据集的Leaberboard。
三、数据集及评价指标
3.1 常用数据集
语义分割有一些常用的数据集,这些数据集在各种论文中常作为算法优劣性的一个验证(其中SUNRGBD是四维的,它还有利用深度学习相机得到了一个Deep维度,Depth类似于灰度图像,只是它的每个像素值是传感器距离物体的实际距离):

3.2 常用指标
- 像素准确率(PA):正确分类的像素数量与所有像素数量的比值。
- 像素准确率平均值(MPA):PA的变体,每个类内正确分类的像素数量和该类的所有像素点数 (Ground truth)的比值,之后求所有类的平均。
- 平均交并比(MIoU):检验语义分割效果最重要的指标。计算两个集合的交并比,两个集合分别是真实值(Ground truth)和预测值(predicted segmentation),是一个交集与并集的比值。平均交并比为对各类的交并比进行平均。

四、经典模型
-
FCN网络(CVPR 2015):图像分割领域的开山之作
将端到端的卷积网络推广到语义分割中;
重新将预训练好的Imagenet网络用于分割问题中;
使用反卷积层进行上采样;
提出了跳跃连接来改善上采样的粗糙程度。
论文讲解博客: -
UNet网络
-
SegNet网络
-
空洞卷积(Dilated Convolution)
-
Deeplab(V1 V2)
-
RefineNet
-
PSPNet
-
大内核(Large Kernel Matters)
-
Deeplab v3
-
EncNet
-
DenseASPP
-
ResNet_DUC
-
Deeplab v3+
-
DFANet
-
DANet
-
Auto_Deeplab
-
APCNet
-
CANet
…… -
BiSeNet(ECCV 2018)
-
STDC(CVPR 2021):BiSeNet的轻量化。
一些轻量化语义分割算法,如DFANet、BiSeNetV1,采用了轻量化backbone来减少计算量,但它们都是直接使用为分类任务设计的backbone,无法充分发挥在语义分割领域中的性能。
BiSeNet使用了multi-path结构,融合低层次特征和高层次特征,但增加分支会增加网络的运行时间。
STDC对BiSeNet中的multi-path结构进行了改进,可以在提取底层细节特征的同时减少网络计算量。
参考资料
- 语义分割-概念、问题和指标
- 史上最全语义分割综述(FCN,UNet,SegNet,Deeplab,ASPP…)
相关文章:
【语义分割】语义分割概念及算法介绍
文章目录 一、基本概念二、研究现状2.1 传统算法2.2 深度学习方法 三、数据集及评价指标3.1 常用数据集3.2 常用指标 四、经典模型参考资料 一、基本概念 语义分割是计算机视觉中很重要的一个方向。不同于目标检测和识别,语义分割实现了图像像素级的分类。它能够将…...
基于RK3568高性价比全国产EMS储能解决方案(一)概述
储能产业链框架 储能产业链可分为上游“原材料及生产设备”、中游“储能系统”、下游“储能场景应用及后市场服务”。 图1 储能产业链框架图 产业链中游的“储能电池系统”主要包括“能量管理系统(EMS)”、“电池管理系统(BMS)”、“储能逆变器(PCS)”、“电池组”四个部分。…...
3 Go的基础语法
概述 在上一节的内容中,我们介绍了第一个Go程序,包括:安装Go环境、编写第一个Go程序、编译并运行程序等。在本节中,我们将介绍Go的基础语法。Go是一门简洁和优雅的语言,有自己特殊的一些语法规则。因此,在介…...
Redis之Lua脚本讲解
这里写自定义目录标题 1 Lua1.1 简介1.1.1 注释1.1.2 变量1.1.3 数据类型1.1.4 控制结构1.1.5 函数1.1.6 模块1.1.7 字符串操作1.1.8 错误处理1.1.9 标准库 1.2 Redis和Lua脚本结合优点1.3 Lua脚本应用和调试1.3.1 缓存更新1.3.2 原子操作1.3.3 数据处理1.3.4 分布式锁1.3.5 Re…...
redis archive github
https://github.com/redis/redis/releases/tag/7.2.2https://github.com/redis/redis/releases/tag/7.2.2...
3台Centos7快速部署Kafka集群
首先,我要说,Kafka 是强依赖于 ZooKeeper 的,所以在设置 Kafka 集群之前,我们首先需要设置一个 ZooKeeper 集群。 部署ZooKeeper需要安装jdk yum install java-1.8.0-openjdk 安装完以后 下面是详细的步骤: 1. 安装和…...
最小栈(C++解法)
题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…...
Python 算法高级篇:堆排序的优化与应用
Python 算法高级篇:堆排序的优化与应用 引言 1. 什么是堆?2. 堆的性质3. 堆排序的基本原理4. 堆排序的 Python 实现5. 堆排序的性能和优化6. 堆排序的实际应用7. 总结 引言 堆排序是一种高效的排序算法,它基于数据结构中的堆这一概念。堆排序…...
视频下载软件 Downie4 mac中文介绍
Downie mac是一款Mac平台上非常实用的视频下载工具。它支持下载各种视频网站上的视频,并且具有快速、稳定、易于使用的特点。 Downie支持下载各种视频网站上的视频,包括YouTube、Vimeo、Netflix、Hulu、Amazon等等。它具有快速、稳定的下载速度ÿ…...
计算机操作系统重点概念整理-第一章 计算机系统概述【期末复习|考研复习】
第一章 计算机系统概述 【期末复习|考研复习】 计算机操作系统系列文章传送门: 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 文章目录 第一章 计算机系统概述 【期末复习|考研复习】前言一、计…...
树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统
树莓派基金会(Raspberry Pi Foundation)近日发布了新版基于 Debian 的树莓派操作系统(Raspberry Pi OS),为树莓派单板电脑带来了新的书虫基础和一些重大变化。 新版 Raspberry Pi OS 的最大变化是它现在基于最新的 Deb…...
Web项目如何做单元测试
你可能会用单元测试框架,python的unittest、pytest,Java的Junit、testNG等。 那么你会做单元测试么!当然了,这有什么难的? test_demo.py def inc(x):return x 1def test_answer():assert inc(3) 4 inc() 是定义的…...
MySQL主从复制(基于GTID--事务ID方式)
目录 一、GTID相关概念1.GTID 是什么?2.GTID主从复制方式概念3.GTID的优缺点 二、GTID工作原理三、部署主从复制四、测试同步1.主库上新建数据库2.从库上查看是否同步成功 五、重设从库六、常见故障七、故障切换八、GTID的一些疑问1.为什么基于GTID的同步也要打开bi…...
3.72 Command Buffer及URP概述
一、Command Buffer 1.概念 CommandBuffer携带一系列的渲染命令,依赖相机,用来拓展渲染管线的渲染效果。而且可以指定在相机渲染的某个点执行本身的拓展渲染。Command buffers也可以结合屏幕后期效果使用。 简单来说就是可以在渲染流程中插入一些自定…...
分布式理论和分布式锁知识点总结
文章目录 (一) 分布式理论算法和协议1)CAP理论总结 2)BASE理论BASE 理论的核心思想基本可用软状态最终一致性 3)Paxos算法Basic Paxos 算法4) Raft算法1 拜占庭将军 5)Gossip协议 (二) 分布式锁分布式锁应该具备哪些条…...
IOC课程整理-17 Spring事件
1. Java 事件/监听器编程模型 2. 面向接口的事件/监听器设计模式 3. 面向注解的事件/监听器设计模式 4. Spring 标准事件-ApplicationEvent 5. 基于接口的 Spring 事件监听器 6. 基于注解的 Spring 事件监听器 7. 注册 Spring ApplicationListener 8. Spring 事件发布器 9. Spr…...
大数据Flink(一百零五):SQL性能调优
文章目录 SQL性能调优 一、 MiniBatch 聚合...
ESP8266,手机与电脑之间的TCP通讯
电脑端运行通讯猫调试助手,作为服务端: 电脑端 电脑的IP地址是: 192.168.2.232 手机与电脑之间的TCP通讯 手机端运行网络调试精灵,作为客户端: 手机端 如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端). ESP8266作为客户…...
vue的数据监听是如何实现的?
Vue的数据监听是通过数据劫持和发布订阅模式来实现的。 数据劫持:Vue通过使用Object.defineProperty()方法来劫持数据对象的属性,并使用getter和setter来监听属性的变化。当属性被修改时,setter方法会被调用,从而触发相应的监听函…...
埋点日志解决方案——Golang+Gin+Sarama VS Java+SpringCloudGateway+ReactorKafka
埋点日志解决方案——GolangGinSarama VS JavaSpringCloudGatewayReactorKafka 之前我就写过几篇OpenRestylua-kafka-client将埋点数据写入Kafka的文章,如下: Lua将Nginx请求数据写入Kafka——埋点日志解决方案 python定时任务执行shell脚本切割Nginx…...
如何用A_B测试优化AI模型的业务指标?
如何用A/B测试优化AI模型的业务指标? 关键词:A/B测试、AI模型优化、业务指标、实验设计、数据驱动决策、模型迭代、统计显著性 摘要:本文深入探讨如何利用A/B测试方法来优化AI模型的业务指标。我们将从基础概念出发,通过生活化的比喻解释A/B测试原理,详细分析其在AI模型优…...
从‘虚拟’到‘物理’:程序员视角下的内存块、页框与页到底是怎么协作的?
从‘虚拟’到‘物理’:程序员视角下的内存块、页框与页到底是怎么协作的? 当你调试程序时遇到"Segmentation fault"或"Page fault"错误,是否好奇这些术语背后究竟发生了什么?作为开发者,我们每天都…...
微信小程序自动化测试:自定义测试(Minium)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快录制回放支持输入,文本查找,断言等自动化测试基础操作,无需编写代码,用例生成效率高,但是部分操作不支持…...
**NPU设计新范式:基于RISC-V的可配置计算单元实现与性能优化实践**在人工智能加速领域,
NPU设计新范式:基于RISC-V的可配置计算单元实现与性能优化实践 在人工智能加速领域,NPU(神经网络处理单元) 正从专用硬件向灵活可编程架构演进。本文将深入探讨一种基于 RISC-V指令集扩展 的轻量级NPU设计方案,并通过实…...
cronos:嵌入式C++17零依赖chrono时间抽象库
1. 项目概述cronos是一个轻量级、零依赖的 C17 头文件库,其核心目标是为嵌入式系统提供std::chrono兼容的、与硬件原生滴答计数器(native tick counter)无缝对接的时间抽象层。它并非实现一个独立的定时器驱动,而是作为“适配器”…...
小白程序员必看:收藏这份RAG大模型核心技术原理详解,轻松入门智能Agent
1. 核心流程全景图RAG 的生命周期可以严格划分为两个平行的工作流:离线数据处理流(Data Pipeline) 和 在线检索生成流(Query Pipeline)。RAG 核心工作流 1.1 离线数据处理流(Data Ingestion) 这…...
ILI9341 TFT驱动库:裸机SPI显示驱动设计与优化
1. SPI_TFT_ILI9341 库概述SPI_TFT_ILI9341 是一个面向嵌入式平台的轻量级图形驱动库,专为基于 ILI9341 显示控制器的 2.4 英寸、240320 分辨率 SPI 接口 TFT-LCD 模块设计。该库不依赖操作系统,可直接运行于裸机环境(Bare Metal)…...
自动驾驶避障算法实战:从动态规划(DP)到模型预测控制(MPC)的Matlab代码详解
自动驾驶避障算法实战:从动态规划到模型预测控制的Matlab实现 自动驾驶技术的核心挑战之一是如何在复杂环境中实现安全避障。本文将深入探讨两种主流算法——动态规划(DP)与模型预测控制(MPC)的代码级实现,通过Matlab示例展示它们如何协同工作来解决这一…...
GHelper深度解析:重新定义华硕笔记本性能控制体验
GHelper深度解析:重新定义华硕笔记本性能控制体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: h…...
从HC-SR04到智能报警:手把手教你用51单片机做个超声波倒车雷达原型
从HC-SR04到智能报警:手把手教你用51单片机做个超声波倒车雷达原型 在汽车电子和智能硬件领域,倒车雷达作为基础安全配置已经普及多年。但对于电子爱好者和嵌入式开发者来说,用最基础的51单片机搭配HC-SR04超声波模块实现一个具备三级报警功能…...
