[SS]语义分割——基础知识

语义分割前言 

一、定义

1、概念 

        语义分割(Semantic Segmentation)是计算机视觉中的一项任务,目标是将图像中的每个像素按其语义类别进行分类。与传统的目标检测不同,语义分割对图像中的每个像素都进行分类,而不是只关注物体的边界框。

        语义分割的目标是给图像中的每个像素分配一个类别标签,通常使用颜色编码来可视化不同的类别。例如,将图像中的道路像素标记为蓝色,建筑物像素标记为红色等。

        语义分割在许多计算机视觉任务中起到重要作用,如自动驾驶、智能监控、图像编辑等。它可以提供详细的场景理解,使计算机能够准确地理解图像中的不同物体和区域,并在各种应用中进行更精确的分析和决策。

        近年来,随着深度学习的快速发展,基于深度学习的语义分割方法取得了显著的进展。常用的深度学习模型包括全卷积网络(FCN)、U-Net、DeepLab等,它们能够准确地分割图像,并在各种实际场景中取得了优秀的性能。

2、 常见分割任务

语义分割、实例分割、全景分割?这些基本概念别再搞混了!

语义 VS 实例 VS 全景分割 

语义分割(Semantic Segmentation)

        语义分割是将图像分割为不同的语义区域,即将图像中的每个像素都标记为属于哪个语义类别。换句话说,它的目标是为图像中的每个像素分配一个语义标签,例如人、车、树、建筑等。语义分割关注的是图像中的每个像素的语义信息,不关心具体的实例。

实例分割(Instance Segmentation)

        实例分割是将图像中的目标物体分割为独立的实例,即为每个目标分配唯一的标识符,并进行像素级的分割。与语义分割不同,实例分割不仅关注目标的语义类别,还关注目标的个体性。因此,在实例分割中,同一类别的不同目标物体会被分配不同的标识符,以区分它们。

全景分割(Panoramic Segmentation)

        全景分割是语义分割和实例分割的融合,旨在将图像中的每个像素分配一个语义标签,并为每个目标物体分配唯一的标识符,同时区分不同的实例。全景分割可以视为将图像中的每个像素标记为语义类别和实例标识符的任务。实质上,全景分割是一种综合性的图像分割任务,旨在提供对图像中所有物体的语义信息和个体信息。

3、建筑物提取(Building Footprint Extraction)

        建筑物提取任务BFE(Building Footprint Extraction)是指从高分辨率遥感图像中准确地提取出建筑物的轮廓或边界信息。这是一项具有重要应用价值的任务,可以用于城市规划、地理信息系统(GIS)、自动驾驶、灾害评估等领域。

        BFE任务的挑战在于建筑物在图像中呈现出各种形状、大小和复杂性。为了解决这个问题,研究者们提出了各种方法和算法。以下是一些常用的BFE方法:

  1. 基于图像特征的方法:这些方法利用图像的颜色、纹理、形状等特征来区分建筑物和非建筑物。例如,可以使用边缘检测、纹理分析、形状匹配等技术来提取建筑物的边界。

  2. 基于机器学习的方法:这些方法使用机器学习算法来学习建筑物和非建筑物的分类器。常用的算法包括支持向量机(SVM)、随机森林(Random Forest)和深度学习模型等。这些方法需要大量的标注数据和特征工程。

  3. 基于分割的方法:这些方法将建筑物提取任务看作是像素级的语义分割任务,利用分割模型将每个像素分类为建筑物或非建筑物。深度学习模型如U-Net、Mask R-CNN等常被用于此类方法。

  4. 基于无监督学习的方法:这些方法通过对图像进行聚类和分割来提取建筑物。常用的技术包括基于颜色、纹理和形状的聚类分析、超像素分割等。

  5. 结合多源数据的方法:这些方法将多源数据(如高分辨率遥感图像、激光雷达数据等)结合起来,通过融合不同数据源的信息来提高建筑物提取的准确性。

        BFE是一个复杂的任务,目前仍然存在一些挑战和问题,如建筑物遮挡、复杂背景、低对比度等。未来的研究将继续致力于提高建筑物提取的准确性和鲁棒性,以满足实际应用的需求。

二、任务数据

1、数据集格式

PASCAL VOC2012数据集介绍

        PASCAL VOC数据集提供一个PNG图片(P模式),在图片中记录每个像素所属的类别信息。需要注意的是,提供的PNG图片是用调色板的模式进行存储,为1通道图片,图象呈彩色是因为针对像素0到255提供了一个调色板,针对每个像素值都对应一个颜色,所以可以将1通道的图片映射到彩色的图片上。 

notes:

        针对目标的边缘,会有特殊的颜色进行分割,或者图片特殊区域也会用特殊颜色进行填充。该特殊颜色对应的像素值是255,在训练过程中计算损失时会忽略数值为255的地方,针对目标边缘的类别划分并不容易,包括有些不容易分割的目标也可以进行填充,这样就可以忽略,在训练模型时候就不会计算这部分损失。

MS COCO数据集介绍以及pycocotools简单使用 

        MS COCO数据集中提供的是针对图片中每一个目标都给出了多边形的坐标形式,将坐标点连起来就对应了目标所在的区域。在使用中需要将多边形坐标信息解码成PNG图片。计算损失时将预测的每个像素对应的类别与真实标签的每一个类别进行对比计算,所以在计算损失时希望得到PNG图象的。

2、结果具体形式

        单通道图片,加上调色板显示彩色。如图,背景的像素值为0,对应飞机的位置像素值为1,对应人的位置像素值等于15。灰度图片显示效果远不如调色板显彩效果。每个像素的数值对应了每个类别的索引。

三、评价指标与标注

1、评价指标

Pixel Accuracy(Global Acc)

Pixel Accuracy=\frac{\sum _{i}n_{ii}}{\sum _{i}t_{i}} 

  • 在预测标签图像中所有预测正确的像素个数的总和除以这幅图片的总像素个数。 

mean Accuracy

 meanAccuracy=\frac{1}{n_{cls}}\cdot \sum _{i}\frac{n_{ii}}{t_{i}}

  •  每个类别的Accuracy计算出来,再进行求和取平均操作。

mean IoU

mIoU=\frac{1}{n_{cls}}\cdot \sum _{i}\frac{n_{ii}}{t_{i}+\sum _{j}n_{ji}-n_{ii}} 

  • 计算每个类别的IoU,然后每个类别求平均操作。目标IoU交并比计算是将两个目标的交集面积比上两个目标的并集面积,公式的含义则是该类别的正确预测像素个数比上真实标签与预测像素的并集面积,并集计算过程为真实标签面积加上错误预测面积减去正确预测面积。 

notes: 

  • n_{ij}:类别i被预测成类别j的像素个数,如n_{ii}为类别i被预测成类别i的像素个数,即正确像素个数
  • n_{cls}:目标类别个数(包含背景)
  • t_{i}=\sum _{j}n_{ij}:目标类别i的总像素个数(真实标签)

 构建混淆矩阵进行计算

  • a_{ii}表示类别i被预测为i的像素个数,即矩阵正对角线上对应的是被正确预测类别的像素数量
  • a_{ij}表示类别j被预测为i的像素个数,如a_{1,0}为类别0被预测为类别1的像素个数

2、标注工具

Labelme 

Labelme分割标注软件使用 

EISeg 

EISeg分割标注软件使用 

ArcGis

 深度学习/语义分割入门笔记(一)——遥感影像数据集及标签制作+arcgis批量矢量转栅格

语义分割—遥感影像数据标签制作(ARCGIS) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 如何把computed里的逻辑提取出来

借用一下百度的ai 项目使用&#xff1a; vue 文件引入 <sidebar-itemv-for"route in routes":key"route.menuCode":item"route":base-path"route.path"click"onColor"/>import { handleroutes } from "./handle…

牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】

文章目录 前言牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】题目及类型思路思路1&#xff1a;大顶堆思路2&#xff1a;快排二分随机基准点 前言 博主所有博客文件目录索引&#xff1a;博客目录索引(持续更新) 牛客-寻找第K大、LeetCode215. 数组中的第K个最大元…

C#: CRC8,CRC16,CRC32 校验代码

说明&#xff1a;CRC即循环冗余校验码&#xff08;Cyclic Redundancy Check&#xff09;&#xff1a;是数据通信领域中最常用的一种查错校验码&#xff0c;其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查&#xff08;CRC&#xff09;是一种数据传输检错功能&…

统计学-R语言-5.1

文章目录 前言随机性和规律性概率变量的分布离散型--二项、泊松、几何二项分布几何分布泊松分布 连续型--均匀、正态均匀分布正态分布 其它统计分布--χ2分布、t分布、F分布χ2分布t分布F分布 练习 前言 从本篇文章开始介绍有关概率与分布的介绍。 随机性和规律性 当不能预测…

嵌入式-Stm32-江科大基于标准库的GPIO的八种模式

文章目录 一&#xff1a;GPIO输入输出原理二&#xff1a;GPIO基本结构三&#xff1a;GPIO位结构四&#xff1a;GPIO的八种模式道友&#xff1a;相信别人&#xff0c;更要一百倍地相信自己。 &#xff08;推荐先看文章&#xff1a;《 嵌入式-32单片机-GPIO推挽输出和开漏输出》…

vue-cli解决跨域

在vue.config.js中 找到devServer 在devServer中创建proxy代理 proxy:{ path&#xff08;路径中包含这个path就会导航到target的目标接口&#xff09;&#xff1a;{ target:"目标接口" } } 例&#xff1a; 1 同源策略只针对于浏览器&#xff0c;代理服务器到后端接…

操作系统课程设计-Linux 进程控制

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 进程的创建 3.1.1 步骤 3.1.2 关键代码 3.2 子进程执行新任务 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 4.1 进程的创建 4.2 子进程执行新任务 5 代码 5.1 进程的创建 5.2 子进程执行新任务 前言 本实验为课…

Electron+React项目打包踩坑记录

首先&#xff0c;如何打包 写下本文的时间是 2024/01/16&#xff0c;搜索了网络上 ElectronReact 的打包方式&#xff0c;中间行不通&#xff0c;本文采用的方式是记录本文时 Electron 快速入门(https://www.electronjs.org/zh/docs/latest/tutorial/quick-start)记录的打包方式…

Stream API 函数式编程 - 告别for循环,代码竟能写的如此优雅?

目录 一、Stream API 函数式编程 1.1、Stream 简介 a&#xff09;为什么引入 Stream&#xff1f;Stream 的出现就是为了让关于集合的操作更加简单&#xff1a; b&#xff09;Stream 的特性&#xff1a; c&#xff09;对stream的操作分为为两类&#xff0c;中间操作 和 结束…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-3 textarea

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>textarea</title> </head><body> <h2>多行文本框:</h2> <!--textarea&#xff08;文本域&#xff09;cols(列) rows(行)--> …

Template Engine-06-模板引擎 Handlebars 入门介绍

拓展阅读 java 表达式引擎 logstash 日志加工处理-08-表达式执行引擎 AviatorScriptMVELOGNLSpELJEXLJUELJanino QLExpress 阿里表达式引擎系统学习 什么是 Handlebars&#xff1f; Handlebars 是一种简单的模板语言。 它使用模板和输入对象生成 HTML 或其他文本格式。Ha…

go语言(一)----声明常量

package mainimport ("fmt""time" )func main() {fmt.Print("hello go!")time.Sleep(1 * time.Second)}运行后&#xff0c;结果如下&#xff1a; 1、golang表达式中&#xff0c;加&#xff1b;和不加&#xff1b;都可以 2、函数的{和函数名一…

【Qt之模型视图】1. 模型和视图架构

1. 模型/视图架构是什么及有什么用 MVC&#xff08;Model-View-Control&#xff09;是一种源自Smalltalk的设计模式&#xff0c;通常用于构建用户界面。 MVC由三种类型的对象组成。模型是应用对象&#xff0c;用来表示数据&#xff1b;视图是模型的用户界面&#xff0c;用来显…

【征服redis5】redis的Redisson客户端

目录 1 Redisson介绍 2. 与其他Java Redis客户端的比较 3.基本的配置与连接池 3.1 依赖和SDK 3.2 配置内容解析 4 实战案例&#xff1a;优雅的让Hash的某个Field过期 5 Redisson的强大功能 1 Redisson介绍 Redisson 最初由 GitHub 用户 “mrniko” 创建&#xff0c;并在…

瑞_Java开发手册_(七)设计规约

文章目录 设计规约的意义设计规约 &#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的设计规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约&#xff0c;所以本系列专栏主要以这本书进行讲解和拓展&#xff0c;有需要的小伙伴可以点击链接…

Java数据结构实现数组(配套习题)

数据结构 数组 一组相同数据类型的集合 特点 数组在内存中是连续分配的创建时要指明数组的大小数组名代表首地址,索引从0开始,到数组的长度-1数组一旦创建好,大小不可以改变使用索引 获取索引位置的值 arr[index]修改 arr[index] val删除 (假删除)遍历,将数组中的元素,依次…

在全志T113-i平台上实现H.265视频解码步骤详解

H.265&#xff0c;也被称为HEVC(HighEfficiency Video Coding)&#xff0c;作为H.264的继任者&#xff0c;提供了更好的视频压缩和更高的视频质。H.265通过引入更多先进的编码技术&#xff0c;如更强大的运动估计和更高效的变换编码&#xff0c;对比H.264进行了改进。这些改进使…

【latex】参考文献排版前移,在最前面引用\usepackage{url}

【LaTeX】参考文献排版前移&#xff0c;在最前面引用\usepackage{url} 写在最前面完整解决步骤请教申申latex编译报错解决方案 写在最前面 参考文献从21开始排版前移了 解决方案&#xff1a;在最前面加一行 \usepackage{url}完整解决步骤 请教申申 申申yyds&#xff01;&am…

Java NIO (一)简介

1 NIO简介 在1.4版本之前&#xff0c;Java NIO类库是阻塞IO&#xff0c;从1.4版本开始&#xff0c;引进了新的异步IO库&#xff0c;被称为Java New IO类库&#xff0c;简称为Java NIO。New IO类库的目的 就是要让Java支持非阻塞IO。 Java NIO类库包含三个核心组件&#xff1a; …

Python 算术运算符:解码数字世界的算术密码

算术运算是计算机编程中最基本和常见的运算之一。在 Python 中&#xff0c;算术运算符提供了一组功能强大的操作符&#xff0c;使得我们能够对数字进行加减乘除等各种数学计算。本文将深入探讨 Python 中的算术运算符&#xff0c;包括常见的算术运算符、使用注意事项以及在实际…