深度学习语义分割算法之基础知识

news2024/12/25 1:56:39

文章目录

  • 前言
  • 一、图像分割介绍
    • 1.语义分割
    • 2.实例分割
    • 3.全景分割
  • 二、常见数据集格式
    • 1.PASCAL VOC
    • 2.MS COCO
  • 三、语义分割结果
  • 四、语义分割常见评价指标
    • 1.Pixel Accuracy
    • 2.mean Accuracy
    • 3.mean IoU
  • 五、语义分割标注工具
  • 结束语


  • 💂 个人主页:风间琉璃
  • 🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主
  • 💬 如果文章对你有帮助欢迎关注点赞收藏(一键三连)订阅专栏

前言

提示:这里可以添加本文要记录的大概内容:

一般在计算机视觉领域分割任务主要分为语义分割(Semantic Segmentation)实例分割(Instance Segmentation)全景分割(Panoramic Segmentation)这三大类。这里主要介绍语义分割相关的内容,主要介绍语义分割的定义、常见数据集格式、语义分割评价指标和语义分割标注工具。

  • 数据集(分类、目标检测、语义分割、实例分割)参考:
    PASCAL VOC数据集
    MS COCO数据集

  • 分割标注工具参考:
    Labelme(手工)
    EISeg(半自动)


一、图像分割介绍

在深度学习方面图像分割可分为语义分割(Semantic Segmentation)实例分割(Instance Segmentation)全景分割(Panoramic Segmentation)这三大类。
在这里插入图片描述

1.语义分割

语义分割(semantic segmentation)对图像中每一个像素进行分类,其目的是将图像分割成多个不同类别信息的区域,每个区域表示一个特定的物体类别或者场景元素。

如图(b),语义分割将图像中的每一个像素分配到一个预定义的语义类别,如车,人,信号灯等。不同的类别在图像中使用不同的颜色或者标签表示。

2.实例分割

实例分割(instance segmentation)在像素级别上识别和分割图像中的每个独立的实例或个体,是在语义分割的基础上将同类物体中的不同个体的像素区分开。它不仅区分不同的语义类别,而且对于同一类别的不同个体也进行了区分,即对图像中的每个物体实例进行单独的分割。因此,实例分割不仅在像素级别上标记不同类别,还为每个对象的每个像素分配独特的标签,使得每个对象都有自己唯一的标识。如图(c),实例分割将图中的每一辆汽车和行人进行分割,每一个对象都有自己的标签。

3.全景分割

全景分割(panoptic segmentation)语义分割和实例分割的结合,在提供更全面的图像分割信息,不同于实例分割只对图像中的物体进行检测和分割,全景分割是对图中的所有物体包括背景都进行检测和分割。全景分割同时考虑图像中的每个像素,并将其分为两种类型:语义类别实例对象,能够同时分类出不同类别的语义区域,并对每个对象进行个体级别的分割。如图(d),在全景分割中,图像中的每个像素不仅被标记为语义类别(汽车类和人),还会对每个实例(每辆汽车和每个人)进行独立的分割,并分配独特的标签。

通过上述对语义分割、实例分割和全景分割的描述,我们可以看出三者之间的联系与区别。它们之间的主要区别在于关注的对象和目标有所不同语义分割主要关注图像中的大类别物体,是图像级别的分割结果,不考虑实例级别的区分;实例分割更进一步关注同一类物体中的不同个体,每个像素都属于特定的实例,即对象级别的分割;而全景分割则更进一步,将背景也纳入到关注的范围内。

二、常见数据集格式

这是主要参考如下资料:
PASCAL VOC数据集
MS COCO数据集

1.PASCAL VOC

在这里插入图片描述
PASCAL VOC中提供了分割数据集,数据集中的图片对应标签存储格式为PNG (如右图所示),标签图片中记录了每一个像素所属的类别信息。需要注意的是,右图所展示的图片是使用调色板实现的彩色,不同值的像素就对应不同的颜色,它本质上是一个单通道的黑白图片

在语义分割中对应的标注图像(.png)用PIL的Image.open()函数读取时,默认是P模式,即一个单通道的图像。在背景处的像素值为0,目标边缘处用的像素值为255(训练时一般会忽略像素值为255的区域)目标区域内根据目标的类别索引信息进行填充,比如人对应的目标索引是15,所以目标区域的像素值用15填充。如下图所示
在这里插入图片描述
类别索引与名称对应关系

{
	"background": 0,
    "aeroplane": 1,
    "bicycle": 2,
    "bird": 3,
    "boat": 4,
    "bottle": 5,
    "bus": 6,
    "car": 7,
    "cat": 8,
    "chair": 9,
    "cow": 10,
    "diningtable": 11,
    "dog": 12,
    "horse": 13,
    "motorbike": 14,
    "person": 15,
    "pottedplant": 16,
    "sheep": 17,
    "sofa": 18,
    "train": 19,
    "tvmonitor": 20
}

2.MS COCO

MS COCO数据集针对图像中的每一个目标都记录了多边形坐标 (polygons)。在左边部分每两个数据组成一个坐标点,依次连接就得到目标,将一幅图像中的所有目标绘制出来就得到了右下角这幅图像。
在这里插入图片描述

三、语义分割结果

语义分割的结果是一张单通道的图片(彩色的原因是因为加上了调色板之后的效果)
在这里插入图片描述

四、语义分割常见评价指标

1.Pixel Accuracy

Pixel Accuracy(像素准确率),也称为Global Accuracy(全局准确率),是指通过预测正确的像素数量总的像素数量之间的比例来计算的,用于衡量像素级别的分类准确率,其表达式如下:
P i x e l A c c u r a c y ( G l o b a l A c c ) = ∑ i n i i ∑ i t i Pixel Accuracy(Global Acc)=\frac{\sum_{i}^{} n_{ii}}{\sum_{i}^{} t_{i}} PixelAccuracy(GlobalAcc)=itiinii

n i j n_{ij} nij:类别i被预测成类别j的像素个数
t i = ∑ j n i j t_{i}=\sum_{j}^{} n_{ij} ti=jnij:目标类别i的总像素个数(真实标签),即标注数据中类别i的像素总数量

2.mean Accuracy

mean Accuracy是指类别准确率的平均值,用于消除类别不平衡的影响。其公式如下所示:
m e a n A c c u r a c y = 1 n c l s ⋅ ∑ i n i i t i mean Accuracy = \frac{1}{n_{cls}}\cdot \sum_{i}^{}\frac{n_{ii}}{t_i} meanAccuracy=ncls1itinii

n i j n_{ij} nij:类别i被预测成类别j的像素个数
t i = ∑ j n i j t_{i}=\sum_{j}^{} n_{ij} ti=jnij:目标类别i的总像素个数(真实标签),即标注数据中类别i的像素总数量
n c l s :目标类别个数 ( 包含背景 ) n_{cls}:目标类别个数(包含背景) ncls:目标类别个数(包含背景)

3.mean IoU

mean IoU是指每个类别交并比的平均值,其公式为
M e a n I o U = 1 n c l s ⋅ ∑ i n i i t i + ∑ j n j i − n i i Mean IoU = \frac{1}{n_{cls}}\cdot \sum_{i}^{}\frac{n_{ii}}{t_i +\sum_{j}^{}n_{ji} -n_{ii}} MeanIoU=ncls1iti+jnjiniinii

n i j n_{ij} nij:类别i被预测成类别j的像素个数
t i = ∑ j n i j t_{i}=\sum_{j}^{} n_{ij} ti=jnij:目标类别i的总像素个数(真实标签),即标注数据中类别i的像素总数量
n c l s :目标类别个数 ( 包含背景 ) n_{cls}:目标类别个数(包含背景) ncls:目标类别个数(包含背景)
j:其他类别的索引

语义分割中的mean IoU和目标检测中的IoU原理是一样,先计算每个类别的IoU再求平均,如下图
在这里插入图片描述
绿色表示为真实标签的分割图,蓝色表示为预测得到的分割图。

n i i n_{ii} nii:预测正确的部分,即相交部分
KaTeX parse error: Expected 'EOF', got '}' at position 6: t_{i}}̲:目标类别i的总像素个数(真实标签),即绿色圆的面积
∑ j n j i \sum_{j}^{}n_{ji} jnji:预测的总像素,即蓝色原的面积

分母为并集部分,因为中间重复的部分计算两次,所以需要减掉中间预测正确的部分 n i i n_{ii} nii,以上就可以求出类别i的 IoU,之后计算所有的类别后除以总的类别数,就可以知道平均的IoU。

举例:通过构建混淆矩阵计算(Pytorch官方),以下图预测标签为例
在这里插入图片描述
针对类别 0 :将所有真实标签中为 0 的位置都画成白色,非零的位置都设置为了灰色。同时将预测结果中所有预测为类别0(预测正确)的都画成绿色;预测错的位置用红色表示,如下图所示。
在这里插入图片描述
预测正确的像素值的数量即为图中绿色部分16,预测错误的数量为红色部分,其真实标签是3,所以在应该在混淆矩阵对应的位置填入16和3,如上图右边所示。依次类推,得到最终的混淆矩阵,如下图所示。
在这里插入图片描述
1.根据混淆矩阵得到像素准确度
G l o b a l A c c u r a c y = 16 + 3 + 16 + 12 + 8 64 ≈ 0.859 Global Accuracy = \frac{16+3+16+12+8}{64}\approx 0.859 GlobalAccuracy=6416+3+16+12+80.859

2.根据每一个类别算出不同类别的Accuracy
在这里插入图片描述
3.根据每一个类别算出不同类别的IoU
在这里插入图片描述

五、语义分割标注工具

分割标注工具下载:
Labelme(手工)
EISeg(半自动)

使用参考:
Labelme
EISeg

结束语

感谢阅读吾之文章,今已至此次旅程之终站 🛬。

吾望斯文献能供尔以宝贵之信息与知识也 🎉。

学习者之途,若藏于天际之星辰🍥,吾等皆当努力熠熠生辉,持续前行。

然而,如若斯文献有益于尔,何不以三连为礼?点赞、留言、收藏 - 此等皆以证尔对作者之支持与鼓励也 💞。

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

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

相关文章

FireFox 编译指南2024 Windows10篇-环境准备(一)

1. 引言 在开源浏览器项目中,Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox,开发者需要做好充分的环境准备工作。这不仅是编译成功的基础,也是后续调试、优化和二次开发的关键步骤。 编译Firefox是一个复…

硬核实力再亮,玩出梦想科技发布全球首款安卓系统空间计算机

6月25日,玩出梦想科技在新加坡召开全球新品发布会,正式发布全球首款安卓系统空间计算机——玩出梦想MR,填补了空间计算机在安卓生态的空白。 作为品牌沉淀两年的破晓之作,玩出梦想MR以业内领先软硬件配置,强大自研算法…

kafka--发布-订阅消息系统

1. Kafka概述 1. kafka是什么 kafka是分布式的、高并发的、基于发布/订阅模式的消息队列软件系统。 kafka中的重要组件 Producer:消息生产者,发布消息到Kafka集群的终端或服务Consume:消费者,从Kafka集群中消费消息的终端或服…

CAN报文的发送类型-OnChange、OnWrite、IfActive、Repetition

CAN报文的发送类型分为基本发送类型和混合发送类型两大类 CAN基本发送类型包括Cyclic周期发送、OnChange变化时发送、OnWrite写入时发送和IfActive有效时发送。基本发送类型中的Cyclic称为周期型,而其他3个类型称为事件型(Event)。发送次数是通过定义Repetition重复次数来实…

AI 编程探索- iOS动态标签控件

需求分析: 标签根据文字长度,自适应标签居中显示扩展 超过内容显示范围,需要换行显示,且保持居中显示 AI实现过程 提问: 回答: import UIKit import SnapKitclass DynamicLabelsContainerView: UIView…

python基础篇(5):None类型

1 None类型 Python中有一个特殊的字面量&#xff1a;None&#xff0c;其类型是&#xff1a;<class NoneType> 无返回值的函数&#xff0c;实际上就是返回了&#xff1a;None这个字面量 None表示&#xff1a;空的、无实际意义的意思 函数返回的None&#xff0c;就表示…

[MYSQL] MYSQL库的操作

前言 本文主要介绍MYSQL里 库 的操作 请注意 : 在MYSQL中,命令行是不区分大小写的 1.创建库 create database [if not exists] database_name [charsetutf8 collateutf8_general_ci] ...] create database 是命名语法,不可省略[if not exists] 如果不存在创建,如果存在跳过…

基于CRITIC-TOPSIS法的各地区评价

1.CRITIC-TOPSIS法原理 1.1 基本理论 CRITIC-TOPSIS法是一种结合CRITIC&#xff08;Criteria Importance Through Intercriteria Correlation&#xff09;法和TOPSIS&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09;法的综合评价方法…

盲盒小程序开发:解锁未知,探索无限惊喜

一、开启新篇章 在追求独特与新颖的时代&#xff0c;盲盒以其神秘感与未知性&#xff0c;成为了年轻人热衷的购物新方式。为了满足这一市场需求&#xff0c;我们精心打造了一款全新的盲盒小程序&#xff0c;带您步入一个充满未知与惊喜的购物新领域。 二、产品亮点 精选商品&…

B端系统:日历组件设计,小组件蕴含大学问。

B端日历组件在企业级应用中具有重要作用&#xff0c;它可以用于管理和展示企业内部的日程安排、会议安排、任务分配等。 设计B端日历组件时&#xff0c;可以考虑以下几点&#xff1a; 显示方式&#xff1a;提供多种显示方式&#xff0c;例如月视图、周视图、日视图等&#xf…

FineReport聚合报表与操作

一、报表类型 模板设计是 FineReport 学习过程中的主要难题所在&#xff0c;FineReport 模板设计主要包括普通报表、聚合报表、决策报表三种设计类型。 报表类型简介- FineReport帮助文档 - 全面的报表使用教程和学习资料 二、聚合报表 2-1 介绍 聚合报表指一个报表中包含多个…

解决了!暗影精灵8 Pro酷睿版无声音,扬声器和麦克风都没有声音!

困扰好几天的问题解决了&#xff01; 暗影精灵8 Pro酷睿版无声音&#xff0c;扬声器和麦克风都没有声音&#xff01;&#xff01;方法适用于OMEN by HP Gaming Laptop 16-k0xxx&#xff08;暗影精灵8 Pro酷睿版&#xff09;的Windows 10声卡驱动&#xff01; 朋友们&#xff…

启动VMWare虚拟机报错

1. 无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。 解决办法: 解决办法: 将 Ubuntu 64 位.vmx 找到vmci0.present"TRUE"这行改成 vmci0.present "FAL…

pinia.js报patchToApply.hasOwnProperty is not a function

vue3 ts pinia.js 先看报错> patchToApply.hasOwnProperty is not a function 错误信息&#xff1a; pinia.js?v91704efd:913 Uncaught (in promise) TypeError: patchToApply.hasOwnProperty is not a functionat mergeReactiveObjects (pinia.js?v91704efd:913:23)…

【学习】软件测试中常见的文档类型及其作用

在软件开发的生命周期中&#xff0c;软件测试是确保产品质量的关键步骤。为了系统地进行测试活动&#xff0c;并保证测试结果的有效性和可追溯性&#xff0c;产生了一系列标准化的测试文档。这些文档不仅为测试人员提供了执行指南&#xff0c;而且为项目管理者和利益相关者提供…

外部建筑3D 渲染的 5个关键角度,让你的效果图更具吸引力

对于建筑师和房地产专业人士来说&#xff0c;拥有大量高质量的项目图片至关重要&#xff0c;因为这可以吸引更多的潜在客户。。在展示您的3D效果图时&#xff0c;摄像机角度是一个关键因素。不同的视角影响细微的细节、当地环境和建筑亮点&#xff0c;最终影响项目的感知。那么…

网络编程篇: HTTPS协议

一.前置知识 早期很多公司刚起步的时候&#xff0c;使用的应用层协议都是HTTP&#xff0c;而HTTP无论是用GET方法还是POST方法传参&#xff0c;都是没有经过任何加密的&#xff0c;因此早期很多的信息都是可以通过抓包工具抓到的。 为了解决这个问题&#xff0c;于是出…

创建github个人博客

文章目录 安装Hexo安装git安装Node.js安装 Hexo 安装Hexo 参考官方文档&#xff1a;https://hexo.io/zh-cn/docs/ Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他标记语言&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的…

k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】

目录 一、k8s环境配置 1.安装gpu-operator 2. 安装 rdma-shared-plugin 3. 安装volcano调度器 4. 创建research rbac认证 二、宿主机环境配置 1. 安装docker 客户端 2. 创建系统用户 3. 修改docker /etc/docker/daemon.json 文件如下 4. 修改系统 /etc/subuid 和subgi…